Blame


1 eaec1e5a 2006-03-19 devnull #!/usr/local/plan9/bin/rc
2 eaec1e5a 2006-03-19 devnull
3 eaec1e5a 2006-03-19 devnull rm *.tpost *.troff *.pfb *.pfa *.afm map.sfd
4 eaec1e5a 2006-03-19 devnull
5 eaec1e5a 2006-03-19 devnull hex1=(0 1 2 3 4 5 6 7 8 9 A B C D E F)
6 eaec1e5a 2006-03-19 devnull hex=()
7 eaec1e5a 2006-03-19 devnull for(i in $hex1) for(j in $hex1) hex=($hex $i$j)
8 eaec1e5a 2006-03-19 devnull {
9 eaec1e5a 2006-03-19 devnull for(h in $hex)
10 eaec1e5a 2006-03-19 devnull echo $h 0x$h^00_0x$h^FF
11 eaec1e5a 2006-03-19 devnull } >map.sfd
12 eaec1e5a 2006-03-19 devnull for(font){
13 eaec1e5a 2006-03-19 devnull f0=$font
14 eaec1e5a 2006-03-19 devnull if(~ $font *.ttf)
15 eaec1e5a 2006-03-19 devnull font=`{9 basename $font .ttf}
16 eaec1e5a 2006-03-19 devnull if not if(~ $font *.sfd)
17 eaec1e5a 2006-03-19 devnull font=`{9 basename $font .sfd}
18 2af649f9 2008-07-10 rsc echo '
19 390c870c 2008-07-10 rsc import fontforge
20 390c870c 2008-07-10 rsc f = fontforge.open("'$f0'")
21 390c870c 2008-07-10 rsc ff = fontforge.open("./'$f0'")
22 390c870c 2008-07-10 rsc changed = True
23 390c870c 2008-07-10 rsc while changed:
24 390c870c 2008-07-10 rsc changed = False
25 390c870c 2008-07-10 rsc for i in range(0, len(f)):
26 390c870c 2008-07-10 rsc try:
27 390c870c 2008-07-10 rsc f[i].temporary = [ ]
28 390c870c 2008-07-10 rsc except:
29 390c870c 2008-07-10 rsc pass
30 390c870c 2008-07-10 rsc
31 390c870c 2008-07-10 rsc for i in range(0, len(f)):
32 390c870c 2008-07-10 rsc try:
33 390c870c 2008-07-10 rsc f[i].temporary.append(i)
34 390c870c 2008-07-10 rsc except:
35 390c870c 2008-07-10 rsc pass
36 390c870c 2008-07-10 rsc
37 390c870c 2008-07-10 rsc for i in range(0, len(f)):
38 390c870c 2008-07-10 rsc try:
39 390c870c 2008-07-10 rsc g = f[i]
40 390c870c 2008-07-10 rsc codes = g.temporary
41 390c870c 2008-07-10 rsc if len(codes) > 1:
42 390c870c 2008-07-10 rsc print "Doubled: ", g.temporary
43 390c870c 2008-07-10 rsc gg = ff[i]
44 390c870c 2008-07-10 rsc f.removeGlyph(g)
45 390c870c 2008-07-10 rsc for j in range(1, len(codes)):
46 390c870c 2008-07-10 rsc f.createMappedChar(codes[j])
47 390c870c 2008-07-10 rsc f.createInterpolatedGlyph(gg, gg, 0)
48 390c870c 2008-07-10 rsc changed = True
49 390c870c 2008-07-10 rsc except:
50 390c870c 2008-07-10 rsc pass
51 390c870c 2008-07-10 rsc
52 390c870c 2008-07-10 rsc f.generate("'$font^%s.pfb'", "", ("afm",), 72, "map.sfd")
53 390c870c 2008-07-10 rsc ' >fontforge.in
54 390c870c 2008-07-10 rsc fontforge '-lang=py' -script fontforge.in
55 eaec1e5a 2006-03-19 devnull {
56 eaec1e5a 2006-03-19 devnull echo name $font
57 eaec1e5a 2006-03-19 devnull echo fontname $font
58 eaec1e5a 2006-03-19 devnull } >$font.troff
59 eaec1e5a 2006-03-19 devnull >$font.tpost
60 eaec1e5a 2006-03-19 devnull for(h in $hex){
61 eaec1e5a 2006-03-19 devnull if(test -f $font$h.pfb){
62 390c870c 2008-07-10 rsc pfb2pfa $font$h.pfb
63 2af649f9 2008-07-10 rsc mv $font$h.pfa /usr/local/plan9/postscript/font/$font$h
64 eaec1e5a 2006-03-19 devnull afm2troff -h -o 0x$h^00 $font$h.afm >>$font.troff
65 eaec1e5a 2006-03-19 devnull echo 0x$h^00 0x$h^FF $font$h >>$font.tpost
66 eaec1e5a 2006-03-19 devnull }
67 eaec1e5a 2006-03-19 devnull }
68 eaec1e5a 2006-03-19 devnull {
69 eaec1e5a 2006-03-19 devnull echo '0x0027 0x0027 0x19 '$font'20 # map apostrophe to right quote'
70 eaec1e5a 2006-03-19 devnull echo '0x0060 0x0060 0x18 '$font'20 # map grave to left quote'
71 eaec1e5a 2006-03-19 devnull } >>$font.tpost
72 eaec1e5a 2006-03-19 devnull
73 eaec1e5a 2006-03-19 devnull sam -d $font.troff <$PLAN9/dist/troff/devutf.sam
74 eaec1e5a 2006-03-19 devnull if(~ $font *Mono*)
75 eaec1e5a 2006-03-19 devnull sam -d $font.troff <$PLAN9/dist/troff/mono.sam
76 eaec1e5a 2006-03-19 devnull cp $font.troff /usr/local/plan9/troff/font/devutf/$font
77 eaec1e5a 2006-03-19 devnull cp $font.tpost /usr/local/plan9/postscript/troff/$font
78 eaec1e5a 2006-03-19 devnull }