| #!/usr/local/plan9/bin/rc |
| |
| rm *.tpost *.troff *.pfb *.pfa *.afm map.sfd |
| |
| hex1=(0 1 2 3 4 5 6 7 8 9 A B C D E F) |
| hex=() |
| for(i in $hex1) for(j in $hex1) hex=($hex $i$j) |
| { |
| for(h in $hex) |
| echo $h 0x$h^00_0x$h^FF |
| } >map.sfd |
| for(font){ |
| f0=$font |
| if(~ $font *.ttf) |
| font=`{9 basename $font .ttf} |
| if not if(~ $font *.sfd) |
| font=`{9 basename $font .sfd} |
| echo ' |
| import fontforge |
| f = fontforge.open("'$f0'") |
| ff = fontforge.open("./'$f0'") |
| changed = True |
| while changed: |
| changed = False |
| for i in range(0, len(f)): |
| try: |
| f[i].temporary = [ ] |
| except: |
| pass |
| |
| for i in range(0, len(f)): |
| try: |
| f[i].temporary.append(i) |
| except: |
| pass |
| |
| for i in range(0, len(f)): |
| try: |
| g = f[i] |
| codes = g.temporary |
| if len(codes) > 1: |
| print "Doubled: ", g.temporary |
| gg = ff[i] |
| f.removeGlyph(g) |
| for j in range(1, len(codes)): |
| f.createMappedChar(codes[j]) |
| f.createInterpolatedGlyph(gg, gg, 0) |
| changed = True |
| except: |
| pass |
| |
| f.generate("'$font^%s.pfb'", "", ("afm",), 72, "map.sfd") |
| ' >fontforge.in |
| fontforge '-lang=py' -script fontforge.in |
| { |
| echo name $font |
| echo fontname $font |
| } >$font.troff |
| >$font.tpost |
| for(h in $hex){ |
| if(test -f $font$h.pfb){ |
| pfb2pfa $font$h.pfb |
| mv $font$h.pfa /usr/local/plan9/postscript/font/$font$h |
| afm2troff -h -o 0x$h^00 $font$h.afm >>$font.troff |
| echo 0x$h^00 0x$h^FF $font$h >>$font.tpost |
| } |
| } |
| { |
| echo '0x0027 0x0027 0x19 '$font'20 # map apostrophe to right quote' |
| echo '0x0060 0x0060 0x18 '$font'20 # map grave to left quote' |
| } >>$font.tpost |
| |
| sam -d $font.troff <$PLAN9/dist/troff/devutf.sam |
| if(~ $font *Mono*) |
| sam -d $font.troff <$PLAN9/dist/troff/mono.sam |
| cp $font.troff /usr/local/plan9/troff/font/devutf/$font |
| cp $font.tpost /usr/local/plan9/postscript/troff/$font |
| } |