#!/usr/lib/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/lib/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/lib/plan9/troff/font/devutf/$font
	cp $font.tpost /usr/lib/plan9/postscript/troff/$font
}
