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