|  | #!/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 | 
|  | } |