fc4f02d50d91ea9bacd8a950fb888b7216ad32d8
[unifont.git] / src / hex2bdf
1 #!/usr/bin/perl
2 #
3 # Copyright (C) 1998, 2013 Roman Czyborra, Paul Hardy
4 #
5 # LICENSE:
6 #
7 #    This program is free software: you can redistribute it and/or modify
8 #    it under the terms of the GNU General Public License as published by
9 #    the Free Software Foundation, either version 2 of the License, or
10 #    (at your option) any later version.
11 #  
12 #    This program is distributed in the hope that it will be useful,
13 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
15 #    GNU General Public License for more details.
16 #  
17 #    You should have received a copy of the GNU General Public License
18 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 #
20
21 while (<>) { $glyph{$1} = $2 if /(....):(.+)\n/; }
22 @chars = sort keys %glyph;
23 $nchars = $#chars + 1;
24 # dbmopen (%charname, "/usr/share/unicode/unidata/charname.db", 0);
25
26 print "STARTFONT 2.1
27 FONT -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1
28 SIZE 16 75 75
29 FONTBOUNDINGBOX 16 16 0 -2
30 STARTPROPERTIES 3
31 FONT_ASCENT 14
32 FONT_DESCENT 2
33 DEFAULT_CHAR 65533
34 ENDPROPERTIES
35 CHARS $nchars\n";
36
37 foreach $character (@chars)
38 {
39         $encoding = hex($character); $glyph = $glyph{$character};
40         $width = length ($glyph) > 32 ? 2 : 1;
41         $dwidth = $width * 8; $swidth= $width * 500;
42         $glyph =~ s/((..){$width})/\n$1/g;
43         $character = "$character $charname"
44             if $charname = $charname{pack("n",hex($character))};
45
46         print "STARTCHAR U+$character
47 ENCODING $encoding
48 SWIDTH $swidth 0
49 DWIDTH $dwidth 0
50 BBX $dwidth 16 0 -2
51 BITMAP $glyph
52 ENDCHAR\n";
53 }
54
55 print "ENDFONT\n";