code: plan9front

Download patch

ref: a0997f38c468d728ad5178fcdb203f1486be669b
parent: 1b4758d596b70384d7f6389171030611a0f97f7c
author: Humm <hummsmith42@gmail.com>
date: Fri Apr 9 12:05:30 EDT 2021

trofftable.rc: make work

--- a/sys/lib/troff/font/devutf/shell.lib
+++ b/sys/lib/troff/font/devutf/shell.lib
@@ -5,7 +5,8 @@
 RESOLUTION=720
 UNITWIDTH=10
 
-OCTALESCAPES=${OCTALESCAPES:-160}	# <= code means add \0ddd names
+if(~ $#OCTALESCAPES 0)
+	OCTALESCAPES=160		# <= code means add \0ddd names
 DOWNLOADVECTOR=FALSE			# TRUE can mean incomplete tables
 
 #
@@ -16,49 +17,48 @@
 # font.
 #
 
-BuiltinTables() {
-	cat <<-'//End of BuiltinTables'
-		Proportional	R	Times-Roman
-		Proportional	I	Times-Italic
-		Proportional	B	Times-Bold
-		Proportional	BI	Times-BoldItalic
-		Proportional	AB	AvantGarde-Demi
-		Proportional	AI	AvantGarde-BookOblique
-		Proportional	AR	AvantGarde-Book
-		Proportional	AX	AvantGarde-DemiOblique
-		Proportional	H	Helvetica
-		Proportional	HB	Helvetica-Bold
-		Proportional	HI	Helvetica-Oblique
-		Proportional	HX	Helvetica-BoldOblique
-		Proportional	Hb	Helvetica-Narrow-Bold
-		Proportional	Hi	Helvetica-Narrow-Oblique
-		Proportional	Hr	Helvetica-Narrow
-		Proportional	Hx	Helvetica-Narrow-BoldOblique
-		Proportional	KB	Bookman-Demi
-		Proportional	KI	Bookman-LightItalic
-		Proportional	KR	Bookman-Light
-		Proportional	KX	Bookman-DemiItalic
-		Proportional	NB	NewCenturySchlbk-Bold
-		Proportional	NI	NewCenturySchlbk-Italic
-		Proportional	NR	NewCenturySchlbk-Roman
-		Proportional	NX	NewCenturySchlbk-BoldItalic
-		Proportional	PA	Palatino-Roman
-		Proportional	PB	Palatino-Bold
-		Proportional	PI	Palatino-Italic
-		Proportional	PX	Palatino-BoldItalic
-		Proportional	ZI	ZapfChancery-MediumItalic
-		FixedWidth	C	Courier
-		FixedWidth	CB	Courier-Bold
-		FixedWidth	CI	Courier-Oblique
-		FixedWidth	CO	Courier
-		FixedWidth	CW	Courier
-		FixedWidth	CX	Courier-BoldOblique
-		Dingbats	ZD	ZapfDingbats
-		Greek		GR	Symbol
-		Symbol		S	Symbol
-		Special		S1	Times-Roman
-		Description	DESC	---
-	//End of BuiltinTables
+fn BuiltinTables {
+	echo 'Proportional	R	Times-Roman
+Proportional	I	Times-Italic
+Proportional	B	Times-Bold
+Proportional	BI	Times-BoldItalic
+Proportional	AB	AvantGarde-Demi
+Proportional	AI	AvantGarde-BookOblique
+Proportional	AR	AvantGarde-Book
+Proportional	AX	AvantGarde-DemiOblique
+Proportional	H	Helvetica
+Proportional	HB	Helvetica-Bold
+Proportional	HI	Helvetica-Oblique
+Proportional	HX	Helvetica-BoldOblique
+Proportional	Hb	Helvetica-Narrow-Bold
+Proportional	Hi	Helvetica-Narrow-Oblique
+Proportional	Hr	Helvetica-Narrow
+Proportional	Hx	Helvetica-Narrow-BoldOblique
+Proportional	KB	Bookman-Demi
+Proportional	KI	Bookman-LightItalic
+Proportional	KR	Bookman-Light
+Proportional	KX	Bookman-DemiItalic
+Proportional	NB	NewCenturySchlbk-Bold
+Proportional	NI	NewCenturySchlbk-Italic
+Proportional	NR	NewCenturySchlbk-Roman
+Proportional	NX	NewCenturySchlbk-BoldItalic
+Proportional	PA	Palatino-Roman
+Proportional	PB	Palatino-Bold
+Proportional	PI	Palatino-Italic
+Proportional	PX	Palatino-BoldItalic
+Proportional	ZI	ZapfChancery-MediumItalic
+FixedWidth	C	Courier
+FixedWidth	CB	Courier-Bold
+FixedWidth	CI	Courier-Oblique
+FixedWidth	CO	Courier
+FixedWidth	CW	Courier
+FixedWidth	CX	Courier-BoldOblique
+Dingbats	ZD	ZapfDingbats
+Greek		GR	Symbol
+Symbol		S	Symbol
+Special		S1	Times-Roman
+Proportional	CMR12	CMR12
+Description	DESC	---'
 }
 
 #
@@ -65,7 +65,7 @@
 # AllTables prints the complete list of builtin font names.
 #
 
-AllTables() {
+fn AllTables {
 	BuiltinTables | awk '{print $2}'
 }
 
@@ -84,222 +84,220 @@
 # flagged with the PostScript comment "% missing".
 #
 
-StandardCharset() {
-	cat <<-'//End of StandardCharset'
-		(!)	/exclam
-		(")	/quotedbl
-		(dq)	(")			% synonym
-		(#)	/numbersign
-		($)	/dollar
-		(%)	/percent
-		(&)	/ampersand
-		(')	/quoteright
-		(\()	/parenleft
-		(\))	/parenright
-		(*)	/asterisk
-		(+)	/plus
-		(,)	/comma
-		(-)	/hyphen			% changed from minus by request
-		(.)	/period
-		(/)	/slash
-		(0)	/zero
-		(1)	/one
-		(2)	/two
-		(3)	/three
-		(4)	/four
-		(5)	/five
-		(6)	/six
-		(7)	/seven
-		(8)	/eight
-		(9)	/nine
-		(:)	/colon
-		(;)	/semicolon
-		(<)	/less
-		(=)	/equal
-		(>)	/greater
-		(?)	/question
-		(@)	/at
-		(A)	/A
-		(B)	/B
-		(C)	/C
-		(D)	/D
-		(E)	/E
-		(F)	/F
-		(G)	/G
-		(H)	/H
-		(I)	/I
-		(J)	/J
-		(K)	/K
-		(L)	/L
-		(M)	/M
-		(N)	/N
-		(O)	/O
-		(P)	/P
-		(Q)	/Q
-		(R)	/R
-		(S)	/S
-		(T)	/T
-		(U)	/U
-		(V)	/V
-		(W)	/W
-		(X)	/X
-		(Y)	/Y
-		(Z)	/Z
-		([)	/bracketleft
-		(\\)	/backslash
-		(bs)	(")			% synonym
-		(])	/bracketright
-		(^)	/asciicircum
-		(_)	/underscore
-		(`)	/quoteleft
-		(a)	/a
-		(b)	/b
-		(c)	/c
-		(d)	/d
-		(e)	/e
-		(f)	/f
-		(g)	/g
-		(h)	/h
-		(i)	/i
-		(j)	/j
-		(k)	/k
-		(l)	/l
-		(m)	/m
-		(n)	/n
-		(o)	/o
-		(p)	/p
-		(q)	/q
-		(r)	/r
-		(s)	/s
-		(t)	/t
-		(u)	/u
-		(v)	/v
-		(w)	/w
-		(x)	/x
-		(y)	/y
-		(z)	/z
-		({)	/braceleft
-		(|)	/bar
-		(})	/braceright
-		(~)	/asciitilde
-		(\\`)	/grave			% devpost character
-		(ga)	(")			% synonym
-		(!!)	/exclamdown
-		(c|)	/cent
-		(ct)	(")			% devpost synonym
-		(L-)	/sterling
-		(ps)	(")			% devpost synonym
-		(xo)	/currency
-		(cr)	(")			% devpost synonym
-		(Y-)	/yen
-		(yn)	(")			% devpost synonym
-		(||)	/brokenbar		% missing
-		(so)	/section
-		(sc)	(")			% devpost synonym
-		("")	/dieresis
-		(:a)	(")			% devpost synonym
-		(co)	/copyright
-		(a_)	/ordfeminine
-		(<<)	/guillemotleft
-		(-,)	/logicalnot
-		(hy)	/hyphen
-		(--)	/minus
-		(ro)	/registered
-		(rg)	(")			% devpost synonym
-		(-^)	/macron
-		(-a)	(")			% devpost synonym
-		(0^)	/degree			% missing
-		(+-)	/plusminus		% missing
-		(2^)	/twosuperior		% missing
-		(3^)	/threesuperior		% missing
-		(\\')	/acute
-		(aa)	(")			% devpost synonym
-		(/u)	/mu			% missing
-		(P!)	/paragraph
-		(pg)	(")			% devpost synonym
-		(.^)	/periodcentered
-		(,,)	/cedilla
-		(,a)	(")			% devpost synonym
-		(1^)	/onesuperior		% missing
-		(o_)	/ordmasculine
-		(>>)	/guillemotright
-		(14)	/onequarter		% missing
-		(12)	/onehalf		% missing
-		(34)	/threequarters		% missing
-		(??)	/questiondown
-		(A`)	/Agrave
-		(A')	/Aacute
-		(A^)	/Acircumflex
-		(A~)	/Atilde
-		(A")	/Adieresis
-		(A*)	/Aring
-		(AE)	/AE
-		(C,)	/Ccedilla
-		(E`)	/Egrave
-		(E')	/Eacute
-		(E^)	/Ecircumflex
-		(E")	/Edieresis
-		(I`)	/Igrave
-		(I')	/Iacute
-		(I^)	/Icircumflex
-		(I")	/Idieresis
-		(D-)	/Eth			% missing
-		(N~)	/Ntilde
-		(O`)	/Ograve
-		(O')	/Oacute
-		(O^)	/Ocircumflex
-		(O~)	/Otilde
-		(O")	/Odieresis
-		(xx)	/multiply		% missing
-		(O/)	/Oslash
-		(U`)	/Ugrave
-		(U')	/Uacute
-		(U^)	/Ucircumflex
-		(U")	/Udieresis
-		(Y')	/Yacute			% missing
-		(TH)	/Thorn			% missing
-		(ss)	/germandbls
-		(a`)	/agrave
-		(a')	/aacute
-		(a^)	/acircumflex
-		(a~)	/atilde
-		(a")	/adieresis
-		(a*)	/aring
-		(ae)	/ae
-		(c,)	/ccedilla
-		(e`)	/egrave
-		(e')	/eacute
-		(e^)	/ecircumflex
-		(e")	/edieresis
-		(i`)	/igrave
-		(i')	/iacute
-		(i^)	/icircumflex
-		(i")	/idieresis
-		(d-)	/eth			% missing
-		(n~)	/ntilde
-		(o`)	/ograve
-		(o')	/oacute
-		(o^)	/ocircumflex
-		(o~)	/otilde
-		(o")	/odieresis
-		(-:)	/divide			% missing
-		(o/)	/oslash
-		(u`)	/ugrave
-		(u')	/uacute
-		(u^)	/ucircumflex
-		(u")	/udieresis
-		(y')	/yacute			% missing
-		(th)	/thorn			% missing
-		(y")	/ydieresis
-		(^a)	/circumflex		% devpost accent
-		(~a)	/tilde			% devpost accent
-		(Ua)	/breve			% devpost accent
-		(.a)	/dotaccent		% devpost accent
-		(oa)	/ring			% devpost accent
-		("a)	/hungarumlaut		% devpost accent
-		(Ca)	/ogonek			% devpost accent
-		(va)	/caron			% devpost accent
-	//End of StandardCharset
+fn StandardCharset {
+	echo '(!)	/exclam
+(")	/quotedbl
+(dq)	(")			% synonym
+(#)	/numbersign
+($)	/dollar
+(%)	/percent
+(&)	/ampersand
+('')	/quoteright
+(\()	/parenleft
+(\))	/parenright
+(*)	/asterisk
+(+)	/plus
+(,)	/comma
+(-)	/hyphen			% changed from minus by request
+(.)	/period
+(/)	/slash
+(0)	/zero
+(1)	/one
+(2)	/two
+(3)	/three
+(4)	/four
+(5)	/five
+(6)	/six
+(7)	/seven
+(8)	/eight
+(9)	/nine
+(:)	/colon
+(;)	/semicolon
+(<)	/less
+(=)	/equal
+(>)	/greater
+(?)	/question
+(@)	/at
+(A)	/A
+(B)	/B
+(C)	/C
+(D)	/D
+(E)	/E
+(F)	/F
+(G)	/G
+(H)	/H
+(I)	/I
+(J)	/J
+(K)	/K
+(L)	/L
+(M)	/M
+(N)	/N
+(O)	/O
+(P)	/P
+(Q)	/Q
+(R)	/R
+(S)	/S
+(T)	/T
+(U)	/U
+(V)	/V
+(W)	/W
+(X)	/X
+(Y)	/Y
+(Z)	/Z
+([)	/bracketleft
+(\\)	/backslash
+(bs)	(")			% synonym
+(])	/bracketright
+(^)	/asciicircum
+(_)	/underscore
+(`)	/quoteleft
+(a)	/a
+(b)	/b
+(c)	/c
+(d)	/d
+(e)	/e
+(f)	/f
+(g)	/g
+(h)	/h
+(i)	/i
+(j)	/j
+(k)	/k
+(l)	/l
+(m)	/m
+(n)	/n
+(o)	/o
+(p)	/p
+(q)	/q
+(r)	/r
+(s)	/s
+(t)	/t
+(u)	/u
+(v)	/v
+(w)	/w
+(x)	/x
+(y)	/y
+(z)	/z
+({)	/braceleft
+(|)	/bar
+(})	/braceright
+(~)	/asciitilde
+(\\`)	/grave			% devpost character
+(ga)	(")			% synonym
+(!!)	/exclamdown
+(c|)	/cent
+(ct)	(")			% devpost synonym
+(L-)	/sterling
+(ps)	(")			% devpost synonym
+(xo)	/currency
+(cr)	(")			% devpost synonym
+(Y-)	/yen
+(yn)	(")			% devpost synonym
+(||)	/brokenbar		% missing
+(so)	/section
+(sc)	(")			% devpost synonym
+("")	/dieresis
+(:a)	(")			% devpost synonym
+(co)	/copyright
+(a_)	/ordfeminine
+(<<)	/guillemotleft
+(-,)	/logicalnot
+(hy)	/hyphen
+(--)	/minus
+(ro)	/registered
+(rg)	(")			% devpost synonym
+(-^)	/macron
+(-a)	(")			% devpost synonym
+(0^)	/degree			% missing
+(+-)	/plusminus		% missing
+(2^)	/twosuperior		% missing
+(3^)	/threesuperior		% missing
+(\\'')	/acute
+(aa)	(")			% devpost synonym
+(/u)	/mu			% missing
+(P!)	/paragraph
+(pg)	(")			% devpost synonym
+(.^)	/periodcentered
+(,,)	/cedilla
+(,a)	(")			% devpost synonym
+(1^)	/onesuperior		% missing
+(o_)	/ordmasculine
+(>>)	/guillemotright
+(14)	/onequarter		% missing
+(12)	/onehalf		% missing
+(34)	/threequarters		% missing
+(??)	/questiondown
+(A`)	/Agrave
+(A'')	/Aacute
+(A^)	/Acircumflex
+(A~)	/Atilde
+(A")	/Adieresis
+(A*)	/Aring
+(AE)	/AE
+(C,)	/Ccedilla
+(E`)	/Egrave
+(E'')	/Eacute
+(E^)	/Ecircumflex
+(E")	/Edieresis
+(I`)	/Igrave
+(I'')	/Iacute
+(I^)	/Icircumflex
+(I")	/Idieresis
+(D-)	/Eth			% missing
+(N~)	/Ntilde
+(O`)	/Ograve
+(O'')	/Oacute
+(O^)	/Ocircumflex
+(O~)	/Otilde
+(O")	/Odieresis
+(xx)	/multiply		% missing
+(O/)	/Oslash
+(U`)	/Ugrave
+(U'')	/Uacute
+(U^)	/Ucircumflex
+(U")	/Udieresis
+(Y'')	/Yacute			% missing
+(TH)	/Thorn			% missing
+(ss)	/germandbls
+(a`)	/agrave
+(a'')	/aacute
+(a^)	/acircumflex
+(a~)	/atilde
+(a")	/adieresis
+(a*)	/aring
+(ae)	/ae
+(c,)	/ccedilla
+(e`)	/egrave
+(e'')	/eacute
+(e^)	/ecircumflex
+(e")	/edieresis
+(i`)	/igrave
+(i'')	/iacute
+(i^)	/icircumflex
+(i")	/idieresis
+(d-)	/eth			% missing
+(n~)	/ntilde
+(o`)	/ograve
+(o'')	/oacute
+(o^)	/ocircumflex
+(o~)	/otilde
+(o")	/odieresis
+(-:)	/divide			% missing
+(o/)	/oslash
+(u`)	/ugrave
+(u'')	/uacute
+(u^)	/ucircumflex
+(u")	/udieresis
+(y'')	/yacute			% missing
+(th)	/thorn			% missing
+(y")	/ydieresis
+(^a)	/circumflex		% devpost accent
+(~a)	/tilde			% devpost accent
+(Ua)	/breve			% devpost accent
+(.a)	/dotaccent		% devpost accent
+(oa)	/ring			% devpost accent
+("a)	/hungarumlaut		% devpost accent
+(Ca)	/ogonek			% devpost accent
+(va)	/caron			% devpost accent'
 }
 
 #
@@ -306,481 +304,475 @@
 # DingbatsCharset guarantees changes in StandardCharset don't show up in ZD.
 #
 
-DingbatsCharset() {
-	cat <<-'//End of DingbatsCharset'
-		(!)	/exclam
-		(")	/quotedbl
-		(#)	/numbersign
-		($)	/dollar
-		(%)	/percent
-		(&)	/ampersand
-		(')	/quoteright
-		(\()	/parenleft
-		(\))	/parenright
-		(*)	/asterisk
-		(+)	/plus
-		(,)	/comma
-		(-)	/minus		% also hyphen in devpost
-		(.)	/period
-		(/)	/slash
-		(0)	/zero
-		(1)	/one
-		(2)	/two
-		(3)	/three
-		(4)	/four
-		(5)	/five
-		(6)	/six
-		(7)	/seven
-		(8)	/eight
-		(9)	/nine
-		(:)	/colon
-		(;)	/semicolon
-		(<)	/less
-		(=)	/equal
-		(>)	/greater
-		(?)	/question
-		(@)	/at
-		(A)	/A
-		(B)	/B
-		(C)	/C
-		(D)	/D
-		(E)	/E
-		(F)	/F
-		(G)	/G
-		(H)	/H
-		(I)	/I
-		(J)	/J
-		(K)	/K
-		(L)	/L
-		(M)	/M
-		(N)	/N
-		(O)	/O
-		(P)	/P
-		(Q)	/Q
-		(R)	/R
-		(S)	/S
-		(T)	/T
-		(U)	/U
-		(V)	/V
-		(W)	/W
-		(X)	/X
-		(Y)	/Y
-		(Z)	/Z
-		([)	/bracketleft
-		(\\)	/backslash
-		(])	/bracketright
-		(^)	/asciicircum
-		(_)	/underscore
-		(`)	/quoteleft
-		(a)	/a
-		(b)	/b
-		(c)	/c
-		(d)	/d
-		(e)	/e
-		(f)	/f
-		(g)	/g
-		(h)	/h
-		(i)	/i
-		(j)	/j
-		(k)	/k
-		(l)	/l
-		(m)	/m
-		(n)	/n
-		(o)	/o
-		(p)	/p
-		(q)	/q
-		(r)	/r
-		(s)	/s
-		(t)	/t
-		(u)	/u
-		(v)	/v
-		(w)	/w
-		(x)	/x
-		(y)	/y
-		(z)	/z
-		({)	/braceleft
-		(|)	/bar
-		(})	/braceright
-		(~)	/asciitilde
-		(\\`)	/grave			% devpost character
-		(!!)	/exclamdown
-		(c|)	/cent
-		(L-)	/sterling
-		(xo)	/currency
-		(Y-)	/yen
-		(||)	/brokenbar		% missing
-		(so)	/section
-		("")	/dieresis
-		(co)	/copyright
-		(a_)	/ordfeminine
-		(<<)	/guillemotleft
-		(-,)	/logicalnot
-		(hy)	/hyphen
-		(ro)	/registered
-		(-^)	/macron
-		(0^)	/degree			% missing
-		(+-)	/plusminus		% missing
-		(2^)	/twosuperior		% missing
-		(3^)	/threesuperior		% missing
-		(\\')	/acute
-		(/u)	/mu			% missing
-		(P!)	/paragraph
-		(.^)	/periodcentered
-		(,,)	/cedilla
-		(1^)	/onesuperior		% missing
-		(o_)	/ordmasculine
-		(>>)	/guillemotright
-		(14)	/onequarter		% missing
-		(12)	/onehalf		% missing
-		(34)	/threequarters		% missing
-		(??)	/questiondown
-		(A`)	/Agrave
-		(A')	/Aacute
-		(A^)	/Acircumflex
-		(A~)	/Atilde
-		(A")	/Adieresis
-		(A*)	/Aring
-		(AE)	/AE
-		(C,)	/Ccedilla
-		(E`)	/Egrave
-		(E')	/Eacute
-		(E^)	/Ecircumflex
-		(E")	/Edieresis
-		(I`)	/Igrave
-		(I')	/Iacute
-		(I^)	/Icircumflex
-		(I")	/Idieresis
-		(D-)	/Eth			% missing
-		(N~)	/Ntilde
-		(O`)	/Ograve
-		(O')	/Oacute
-		(O^)	/Ocircumflex
-		(O~)	/Otilde
-		(O")	/Odieresis
-		(xx)	/multiply		% missing
-		(O/)	/Oslash
-		(U`)	/Ugrave
-		(U')	/Uacute
-		(U^)	/Ucircumflex
-		(U")	/Udieresis
-		(Y')	/Yacute			% missing
-		(TH)	/Thorn			% missing
-		(ss)	/germandbls
-		(a`)	/agrave
-		(a')	/aacute
-		(a^)	/acircumflex
-		(a~)	/atilde
-		(a")	/adieresis
-		(a*)	/aring
-		(ae)	/ae
-		(c,)	/ccedilla
-		(e`)	/egrave
-		(e')	/eacute
-		(e^)	/ecircumflex
-		(e")	/edieresis
-		(i`)	/igrave
-		(i')	/iacute
-		(i^)	/icircumflex
-		(i")	/idieresis
-		(d-)	/eth			% missing
-		(n~)	/ntilde
-		(o`)	/ograve
-		(o')	/oacute
-		(o^)	/ocircumflex
-		(o~)	/otilde
-		(o")	/odieresis
-		(-:)	/divide			% missing
-		(o/)	/oslash
-		(u`)	/ugrave
-		(u')	/uacute
-		(u^)	/ucircumflex
-		(u")	/udieresis
-		(y')	/yacute			% missing
-		(th)	/thorn			% missing
-		(y")	/ydieresis
-	//End of DingbatsCharset
+fn DingbatsCharset {
+	echo '(!)	/exclam
+(")	/quotedbl
+(#)	/numbersign
+($)	/dollar
+(%)	/percent
+(&)	/ampersand
+('')	/quoteright
+(\()	/parenleft
+(\))	/parenright
+(*)	/asterisk
+(+)	/plus
+(,)	/comma
+(-)	/minus		% also hyphen in devpost
+(.)	/period
+(/)	/slash
+(0)	/zero
+(1)	/one
+(2)	/two
+(3)	/three
+(4)	/four
+(5)	/five
+(6)	/six
+(7)	/seven
+(8)	/eight
+(9)	/nine
+(:)	/colon
+(;)	/semicolon
+(<)	/less
+(=)	/equal
+(>)	/greater
+(?)	/question
+(@)	/at
+(A)	/A
+(B)	/B
+(C)	/C
+(D)	/D
+(E)	/E
+(F)	/F
+(G)	/G
+(H)	/H
+(I)	/I
+(J)	/J
+(K)	/K
+(L)	/L
+(M)	/M
+(N)	/N
+(O)	/O
+(P)	/P
+(Q)	/Q
+(R)	/R
+(S)	/S
+(T)	/T
+(U)	/U
+(V)	/V
+(W)	/W
+(X)	/X
+(Y)	/Y
+(Z)	/Z
+([)	/bracketleft
+(\\)	/backslash
+(])	/bracketright
+(^)	/asciicircum
+(_)	/underscore
+(`)	/quoteleft
+(a)	/a
+(b)	/b
+(c)	/c
+(d)	/d
+(e)	/e
+(f)	/f
+(g)	/g
+(h)	/h
+(i)	/i
+(j)	/j
+(k)	/k
+(l)	/l
+(m)	/m
+(n)	/n
+(o)	/o
+(p)	/p
+(q)	/q
+(r)	/r
+(s)	/s
+(t)	/t
+(u)	/u
+(v)	/v
+(w)	/w
+(x)	/x
+(y)	/y
+(z)	/z
+({)	/braceleft
+(|)	/bar
+(})	/braceright
+(~)	/asciitilde
+(\\`)	/grave			% devpost character
+(!!)	/exclamdown
+(c|)	/cent
+(L-)	/sterling
+(xo)	/currency
+(Y-)	/yen
+(||)	/brokenbar		% missing
+(so)	/section
+("")	/dieresis
+(co)	/copyright
+(a_)	/ordfeminine
+(<<)	/guillemotleft
+(-,)	/logicalnot
+(hy)	/hyphen
+(ro)	/registered
+(-^)	/macron
+(0^)	/degree			% missing
+(+-)	/plusminus		% missing
+(2^)	/twosuperior		% missing
+(3^)	/threesuperior		% missing
+(\\'')	/acute
+(/u)	/mu			% missing
+(P!)	/paragraph
+(.^)	/periodcentered
+(,,)	/cedilla
+(1^)	/onesuperior		% missing
+(o_)	/ordmasculine
+(>>)	/guillemotright
+(14)	/onequarter		% missing
+(12)	/onehalf		% missing
+(34)	/threequarters		% missing
+(??)	/questiondown
+(A`)	/Agrave
+(A'')	/Aacute
+(A^)	/Acircumflex
+(A~)	/Atilde
+(A")	/Adieresis
+(A*)	/Aring
+(AE)	/AE
+(C,)	/Ccedilla
+(E`)	/Egrave
+(E'')	/Eacute
+(E^)	/Ecircumflex
+(E")	/Edieresis
+(I`)	/Igrave
+(I'')	/Iacute
+(I^)	/Icircumflex
+(I")	/Idieresis
+(D-)	/Eth			% missing
+(N~)	/Ntilde
+(O`)	/Ograve
+(O'')	/Oacute
+(O^)	/Ocircumflex
+(O~)	/Otilde
+(O")	/Odieresis
+(xx)	/multiply		% missing
+(O/)	/Oslash
+(U`)	/Ugrave
+(U'')	/Uacute
+(U^)	/Ucircumflex
+(U")	/Udieresis
+(Y'')	/Yacute			% missing
+(TH)	/Thorn			% missing
+(ss)	/germandbls
+(a`)	/agrave
+(a'')	/aacute
+(a^)	/acircumflex
+(a~)	/atilde
+(a")	/adieresis
+(a*)	/aring
+(ae)	/ae
+(c,)	/ccedilla
+(e`)	/egrave
+(e'')	/eacute
+(e^)	/ecircumflex
+(e")	/edieresis
+(i`)	/igrave
+(i'')	/iacute
+(i^)	/icircumflex
+(i")	/idieresis
+(d-)	/eth			% missing
+(n~)	/ntilde
+(o`)	/ograve
+(o'')	/oacute
+(o^)	/ocircumflex
+(o~)	/otilde
+(o")	/odieresis
+(-:)	/divide			% missing
+(o/)	/oslash
+(u`)	/ugrave
+(u'')	/uacute
+(u^)	/ucircumflex
+(u")	/udieresis
+(y'')	/yacute			% missing
+(th)	/thorn			% missing
+(y")	/ydieresis'
 }
 
-SymbolCharset() {
-	cat <<-'//End of SymbolCharset'
-		(---)		/exclam
-		(fa)		/universal
-		(---)		/numbersign
-		(te)		/existential
-		(---)		/percent
-		(---)		/ampersand
-		(st)		/suchthat
-		(---)		/parenleft
-		(---)		/parenright
-		(**)		/asteriskmath
-		(pl)		/plus
-		(---)		/comma
-		(mi)		/minus
-		(---)		/period
-		(sl)		/slash
-		(---)		/zero
-		(---)		/one
-		(---)		/two
-		(---)		/three
-		(---)		/four
-		(---)		/five
-		(---)		/six
-		(---)		/seven
-		(---)		/eight
-		(---)		/nine
-		(---)		/colon
-		(---)		/semicolon
-		(<)		/less
-		(eq)		/equal
-		(>)		/greater
-		(---)		/question
-		(cg)		/congruent
-		(*A)		/Alpha
-		(\244x)		(")
-		(*B)		/Beta
-		(\244y)		(")
-		(*X)		/Chi
-		(\244\257)	(")
-		(*D)		/Delta
-		(\244{)		(")
-		(*E)		/Epsilon
-		(\244|)		(")
-		(*F)		/Phi
-		(\244\256)	(")
-		(*G)		/Gamma
-		(\244z)		(")
-		(*Y)		/Eta
-		(\244~)		(")
-		(*I)		/Iota
-		(\244\241)	(")
-		(---)		/theta1
-		(\244\331)	(")
-		(*K)		/Kappa
-		(\244\242)	(")
-		(*L)		/Lambda
-		(\244\243)	(")
-		(*M)		/Mu
-		(\244\244)	(")
-		(*N)		/Nu
-		(\244\245)	(")
-		(*O)		/Omicron
-		(\244\247)	(")
-		(*P)		/Pi
-		(\244\250)	(")
-		(*H)		/Theta
-		(\244\240)	(")
-		(*R)		/Rho
-		(\244\251)	(")
-		(*S)		/Sigma
-		(\244\253)	(")
-		(*T)		/Tau
-		(\244\254)	(")
-		(*U)		/Upsilon
-		(\244\255)	(")
-		(ts)		/sigma1
-		(\244\312)	(")
-		(*W)		/Omega
-		(\244\261)	(")
-		(*C)		/Xi
-		(\244\246)	(")
-		(*Q)		/Psi
-		(\244\260)	(")
-		(*Z)		/Zeta
-		(\244})		(")
-		(---)		/bracketleft
-		(tf)		/therefore
-		(---)		/bracketright
-		(pp)		/perpendicular
-		(ul)		/underscore
-		(_)		(")			% synonym
-		(rn)		/radicalex
-		(*a)		/alpha
-		(\244\271)	(")
-		(*b)		/beta
-		(\244\272)	(")
-		(*x)		/chi
-		(\244\317)	(")
-		(*d)		/delta
-		(\244\274)	(")
-		(*e)		/epsilon
-		(\244\275)	(")
-		(*f)		/phi
-		(\244\316)	(")
-		(*g)		/gamma
-		(\244\273)	(")
-		(*y)		/eta
-		(\244\277)	(")
-		(*i)		/iota
-		(\244\301)	(")
-		(---)		/phi1
-		(\244\335)	(")
-		(*k)		/kappa
-		(\244\302)	(")
-		(*l)		/lambda
-		(\244\303)	(")
-		(*m)		/mu
-		(\244\304)	(")
-		(*n)		/nu
-		(\244\305)	(")
-		(*o)		/omicron
-		(\244\307)	(")
-		(*p)		/pi
-		(\244\310)	(")
-		(*h)		/theta
-		(\244\300)	(")
-		(*r)		/rho
-		(\244\311)	(")
-		(*s)		/sigma
-		(\244\313)	(")
-		(*t)		/tau
-		(\244\314)	(")
-		(*u)		/upsilon
-		(\244\315)	(")
-		(---)		/omega1
-		(\244\336)	(")
-		(*w)		/omega
-		(\244\321)	(")
-		(*c)		/xi
-		(\244\306)	(")
-		(*q)		/psi
-		(\244\320)	(")
-		(*z)		/zeta
-		(\244\276)	(")
-		(---)		/braceleft
-		(or)		/bar
-		(---)		/braceright
-		(ap)		/similar
-		(---)		/Upsilon1
-		(fm)		/minute
-		(<=)		/lessequal
-		(fr)		/fraction		% devpost character
-		(if)		/infinity
-		(fn)		/florin			% devpost character
-		(---)		/club
-		(---)		/diamond
-		(---)		/heart
-		(---)		/spade
-		(ab)		/arrowboth
-		(<-)		/arrowleft
-		(ua)		/arrowup
-		(->)		/arrowright
-		(da)		/arrowdown
-		(de)		/degree
-		(+-)		/plusminus
-		(---)		/second
-		(>=)		/greaterequal
-		(mu)		/multiply
-		(pt)		/proportional
-		(pd)		/partialdiff
-		(bu)		/bullet
-		(di)		/divide
-		(!=)		/notequal
-		(==)		/equivalence
-		(~~)		/approxequal
-		(el)		/ellipsis
-		(av)		/arrowvertex
-		(ah)		/arrowhorizex
-		(CR)		/carriagereturn
-		(af)		/aleph
-		(If)		/Ifraktur
-		(Rf)		/Rfraktur
-		(ws)		/weierstrass
-		(Ox)		/circlemultiply
-		(O+)		/circleplus
-		(es)		/emptyset
-		(ca)		/intersection
-		(cu)		/union
-		(sp)		/propersuperset
-		(ip)		/reflexsuperset
-		(!b)		/notsubset
-		(sb)		/propersubset
-		(ib)		/reflexsubset
-		(mo)		/element
-		(!m)		/notelement
-		(an)		/angle
-		(gr)		/gradient
-		(rg)		/registerserif
-		(co)		/copyrightserif
-		(tm)		/trademarkserif
-		(---)		/product
-		(sr)		/radical
-		(c.)		/dotmath
-		(no)		/logicalnot
-		(l&)		/logicaland
-		(l|)		/logicalor
-		(---)		/arrowdblboth
-		(---)		/arrowdblleft
-		(---)		/arrowdblup
-		(---)		/arrowdblright
-		(---)		/arrowdbldown
-		(lz)		/lozenge
-		(b<)		/angleleft
-		(RG)		/registersans
-		(CO)		/copyrightsans
-		(TM)		/trademarksans
-		(---)		/summation
-		(LT)		/parenlefttp
-		(br)		/parenleftex
-		(LX)		(")			% synonym
-		(LB)		/parenleftbt
-		(lc)		/bracketlefttp
-		(lx)		/bracketleftex
-		(lf)		/bracketleftbt
-		(lt)		/bracelefttp
-		(lk)		/braceleftmid
-		(lb)		/braceleftbt
-		(bv)		/braceex
-		(|)		(")			% synonym
-		(b>)		/angleright
-		(is)		/integral
-		(---)		/integraltp
-		(---)		/integralex
-		(---)		/integralbt
-		(RT)		/parenrighttp
-		(RX)		/parenrightex
-		(RB)		/parenrightbt
-		(rc)		/bracketrighttp
-		(rx)		/bracketrightex
-		(rf)		/bracketrightbt
-		(rt)		/bracerighttp
-		(rk)		/bracerightmid
-		(rb)		/bracerightbt
-		(~=)		(55	0	1)	% charlib
-	//End of SymbolCharset
+fn SymbolCharset {
+	echo '(---)		/exclam
+(fa)		/universal
+(---)		/numbersign
+(te)		/existential
+(---)		/percent
+(---)		/ampersand
+(st)		/suchthat
+(---)		/parenleft
+(---)		/parenright
+(**)		/asteriskmath
+(pl)		/plus
+(---)		/comma
+(mi)		/minus
+(---)		/period
+(sl)		/slash
+(---)		/zero
+(---)		/one
+(---)		/two
+(---)		/three
+(---)		/four
+(---)		/five
+(---)		/six
+(---)		/seven
+(---)		/eight
+(---)		/nine
+(---)		/colon
+(---)		/semicolon
+(<)		/less
+(eq)		/equal
+(>)		/greater
+(---)		/question
+(cg)		/congruent
+(*A)		/Alpha
+(\244x)		(")
+(*B)		/Beta
+(\244y)		(")
+(*X)		/Chi
+(\244\257)	(")
+(*D)		/Delta
+(\244{)		(")
+(*E)		/Epsilon
+(\244|)		(")
+(*F)		/Phi
+(\244\256)	(")
+(*G)		/Gamma
+(\244z)		(")
+(*Y)		/Eta
+(\244~)		(")
+(*I)		/Iota
+(\244\241)	(")
+(---)		/theta1
+(\244\331)	(")
+(*K)		/Kappa
+(\244\242)	(")
+(*L)		/Lambda
+(\244\243)	(")
+(*M)		/Mu
+(\244\244)	(")
+(*N)		/Nu
+(\244\245)	(")
+(*O)		/Omicron
+(\244\247)	(")
+(*P)		/Pi
+(\244\250)	(")
+(*H)		/Theta
+(\244\240)	(")
+(*R)		/Rho
+(\244\251)	(")
+(*S)		/Sigma
+(\244\253)	(")
+(*T)		/Tau
+(\244\254)	(")
+(*U)		/Upsilon
+(\244\255)	(")
+(ts)		/sigma1
+(\244\312)	(")
+(*W)		/Omega
+(\244\261)	(")
+(*C)		/Xi
+(\244\246)	(")
+(*Q)		/Psi
+(\244\260)	(")
+(*Z)		/Zeta
+(\244})		(")
+(---)		/bracketleft
+(tf)		/therefore
+(---)		/bracketright
+(pp)		/perpendicular
+(ul)		/underscore
+(_)		(")			% synonym
+(rn)		/radicalex
+(*a)		/alpha
+(\244\271)	(")
+(*b)		/beta
+(\244\272)	(")
+(*x)		/chi
+(\244\317)	(")
+(*d)		/delta
+(\244\274)	(")
+(*e)		/epsilon
+(\244\275)	(")
+(*f)		/phi
+(\244\316)	(")
+(*g)		/gamma
+(\244\273)	(")
+(*y)		/eta
+(\244\277)	(")
+(*i)		/iota
+(\244\301)	(")
+(---)		/phi1
+(\244\335)	(")
+(*k)		/kappa
+(\244\302)	(")
+(*l)		/lambda
+(\244\303)	(")
+(*m)		/mu
+(\244\304)	(")
+(*n)		/nu
+(\244\305)	(")
+(*o)		/omicron
+(\244\307)	(")
+(*p)		/pi
+(\244\310)	(")
+(*h)		/theta
+(\244\300)	(")
+(*r)		/rho
+(\244\311)	(")
+(*s)		/sigma
+(\244\313)	(")
+(*t)		/tau
+(\244\314)	(")
+(*u)		/upsilon
+(\244\315)	(")
+(---)		/omega1
+(\244\336)	(")
+(*w)		/omega
+(\244\321)	(")
+(*c)		/xi
+(\244\306)	(")
+(*q)		/psi
+(\244\320)	(")
+(*z)		/zeta
+(\244\276)	(")
+(---)		/braceleft
+(or)		/bar
+(---)		/braceright
+(ap)		/similar
+(---)		/Upsilon1
+(fm)		/minute
+(<=)		/lessequal
+(fr)		/fraction		% devpost character
+(if)		/infinity
+(fn)		/florin			% devpost character
+(---)		/club
+(---)		/diamond
+(---)		/heart
+(---)		/spade
+(ab)		/arrowboth
+(<-)		/arrowleft
+(ua)		/arrowup
+(->)		/arrowright
+(da)		/arrowdown
+(de)		/degree
+(+-)		/plusminus
+(---)		/second
+(>=)		/greaterequal
+(mu)		/multiply
+(pt)		/proportional
+(pd)		/partialdiff
+(bu)		/bullet
+(di)		/divide
+(!=)		/notequal
+(==)		/equivalence
+(~~)		/approxequal
+(el)		/ellipsis
+(av)		/arrowvertex
+(ah)		/arrowhorizex
+(CR)		/carriagereturn
+(af)		/aleph
+(If)		/Ifraktur
+(Rf)		/Rfraktur
+(ws)		/weierstrass
+(Ox)		/circlemultiply
+(O+)		/circleplus
+(es)		/emptyset
+(ca)		/intersection
+(cu)		/union
+(sp)		/propersuperset
+(ip)		/reflexsuperset
+(!b)		/notsubset
+(sb)		/propersubset
+(ib)		/reflexsubset
+(mo)		/element
+(!m)		/notelement
+(an)		/angle
+(gr)		/gradient
+(rg)		/registerserif
+(co)		/copyrightserif
+(tm)		/trademarkserif
+(---)		/product
+(sr)		/radical
+(c.)		/dotmath
+(no)		/logicalnot
+(l&)		/logicaland
+(l|)		/logicalor
+(---)		/arrowdblboth
+(---)		/arrowdblleft
+(---)		/arrowdblup
+(---)		/arrowdblright
+(---)		/arrowdbldown
+(lz)		/lozenge
+(b<)		/angleleft
+(RG)		/registersans
+(CO)		/copyrightsans
+(TM)		/trademarksans
+(---)		/summation
+(LT)		/parenlefttp
+(br)		/parenleftex
+(LX)		(")			% synonym
+(LB)		/parenleftbt
+(lc)		/bracketlefttp
+(lx)		/bracketleftex
+(lf)		/bracketleftbt
+(lt)		/bracelefttp
+(lk)		/braceleftmid
+(lb)		/braceleftbt
+(bv)		/braceex
+(|)		(")			% synonym
+(b>)		/angleright
+(is)		/integral
+(---)		/integraltp
+(---)		/integralex
+(---)		/integralbt
+(RT)		/parenrighttp
+(RX)		/parenrightex
+(RB)		/parenrightbt
+(rc)		/bracketrighttp
+(rx)		/bracketrightex
+(rf)		/bracketrightbt
+(rt)		/bracerighttp
+(rk)		/bracerightmid
+(rb)		/bracerightbt
+(~=)		(55	0	1)	% charlib'
 }
 
-SpecialCharset() {
-	cat <<-'//End of SpecialCharset'
-		(ru)	/underscore
-		('')	/quotedblright		% devpost character
-		(``)	/quotedblleft		% devpost character
-		(dg)	/dagger			% devpost character
-		(dd)	/daggerdbl		% devpost character
-		(en)	/endash			% devpost character
-		(\\-)	(")			% synonym
-		(em)	/emdash
+fn SpecialCharset {
+	echo '(ru)	/underscore
+('''')	/quotedblright		% devpost character
+(``)	/quotedblleft		% devpost character
+(dg)	/dagger			% devpost character
+(dd)	/daggerdbl		% devpost character
+(en)	/endash			% devpost character
+(\\-)	(")			% synonym
+(em)	/emdash
 %		(ff)	(60	2	1)	% charlib
 %		(Fi)	(84	2	1)	% charlib
 %		(Fl)	(84	2	1)	% charlib
-		(14)	(75	2	1)	% charlib
-		(12)	(75	2	1)	% charlib
-		(34)	(75	2	1)	% charlib
-		(bx)	(50	2	1)	% charlib
-		(ob)	(38	2	1)	% charlib
-		(ci)	(75	0	1)	% charlib
-		(sq)	(50	2	1)	% charlib
-		(Sl)	(50	2	1)	% charlib
-		(L1)	(110	1	1)	% charlib
-		(LA)	(110	1	1)	% charlib
-		(LV)	(110	3	1)	% charlib
-		(LH)	(210	1	1)	% charlib
-		(lh)	(100	0	1)	% charlib
-		(rh)	(100	0	1)	% charlib
-		(lH)	(100	0	1)	% charlib
-		(rH)	(100	0	1)	% charlib
-		(PC)	(220	2	1)	% charlib
-		(DG)	(185	2	1)	% charlib
-	//End of SpecialCharset
+(14)	(75	2	1)	% charlib
+(12)	(75	2	1)	% charlib
+(34)	(75	2	1)	% charlib
+(bx)	(50	2	1)	% charlib
+(ob)	(38	2	1)	% charlib
+(ci)	(75	0	1)	% charlib
+(sq)	(50	2	1)	% charlib
+(Sl)	(50	2	1)	% charlib
+(L1)	(110	1	1)	% charlib
+(LA)	(110	1	1)	% charlib
+(LV)	(110	3	1)	% charlib
+(LH)	(210	1	1)	% charlib
+(lh)	(100	0	1)	% charlib
+(rh)	(100	0	1)	% charlib
+(lH)	(100	0	1)	% charlib
+(rH)	(100	0	1)	% charlib
+(PC)	(220	2	1)	% charlib
+(DG)	(185	2	1)	% charlib'
 }
 
 #
@@ -791,271 +783,269 @@
 # set appeared sometime after Version 50.0.
 #
 
-Latin1() {
-	if [ "$DOWNLOADVECTOR" = TRUE ]; then
-		cat <<-'//End of ISOLatin1Encoding'
-			/ISOLatin1Encoding [
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/space
-				/exclam
-				/quotedbl
-				/numbersign
-				/dollar
-				/percent
-				/ampersand
-				/quoteright
-				/parenleft
-				/parenright
-				/asterisk
-				/plus
-				/comma
-				/minus
-				/period
-				/slash
-				/zero
-				/one
-				/two
-				/three
-				/four
-				/five
-				/six
-				/seven
-				/eight
-				/nine
-				/colon
-				/semicolon
-				/less
-				/equal
-				/greater
-				/question
-				/at
-				/A
-				/B
-				/C
-				/D
-				/E
-				/F
-				/G
-				/H
-				/I
-				/J
-				/K
-				/L
-				/M
-				/N
-				/O
-				/P
-				/Q
-				/R
-				/S
-				/T
-				/U
-				/V
-				/W
-				/X
-				/Y
-				/Z
-				/bracketleft
-				/backslash
-				/bracketright
-				/asciicircum
-				/underscore
-				/quoteleft
-				/a
-				/b
-				/c
-				/d
-				/e
-				/f
-				/g
-				/h
-				/i
-				/j
-				/k
-				/l
-				/m
-				/n
-				/o
-				/p
-				/q
-				/r
-				/s
-				/t
-				/u
-				/v
-				/w
-				/x
-				/y
-				/z
-				/braceleft
-				/bar
-				/braceright
-				/asciitilde
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/.notdef
-				/dotlessi
-				/grave
-				/acute
-				/circumflex
-				/tilde
-				/macron
-				/breve
-				/dotaccent
-				/dieresis
-				/.notdef
-				/ring
-				/cedilla
-				/.notdef
-				/hungarumlaut
-				/ogonek
-				/caron
-				/space
-				/exclamdown
-				/cent
-				/sterling
-				/currency
-				/yen
-				/brokenbar
-				/section
-				/dieresis
-				/copyright
-				/ordfeminine
-				/guillemotleft
-				/logicalnot
-				/hyphen
-				/registered
-				/macron
-				/degree
-				/plusminus
-				/twosuperior
-				/threesuperior
-				/acute
-				/mu
-				/paragraph
-				/periodcentered
-				/cedilla
-				/onesuperior
-				/ordmasculine
-				/guillemotright
-				/onequarter
-				/onehalf
-				/threequarters
-				/questiondown
-				/Agrave
-				/Aacute
-				/Acircumflex
-				/Atilde
-				/Adieresis
-				/Aring
-				/AE
-				/Ccedilla
-				/Egrave
-				/Eacute
-				/Ecircumflex
-				/Edieresis
-				/Igrave
-				/Iacute
-				/Icircumflex
-				/Idieresis
-				/Eth
-				/Ntilde
-				/Ograve
-				/Oacute
-				/Ocircumflex
-				/Otilde
-				/Odieresis
-				/multiply
-				/Oslash
-				/Ugrave
-				/Uacute
-				/Ucircumflex
-				/Udieresis
-				/Yacute
-				/Thorn
-				/germandbls
-				/agrave
-				/aacute
-				/acircumflex
-				/atilde
-				/adieresis
-				/aring
-				/ae
-				/ccedilla
-				/egrave
-				/eacute
-				/ecircumflex
-				/edieresis
-				/igrave
-				/iacute
-				/icircumflex
-				/idieresis
-				/eth
-				/ntilde
-				/ograve
-				/oacute
-				/ocircumflex
-				/otilde
-				/odieresis
-				/divide
-				/oslash
-				/ugrave
-				/uacute
-				/ucircumflex
-				/udieresis
-				/yacute
-				/thorn
-				/ydieresis
-			] def
-		//End of ISOLatin1Encoding
-	fi
+fn Latin1 {
+	if(~ $"DOWNLOADVECTOR TRUE){
+		echo '			/ISOLatin1Encoding [
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/exclam
+/quotedbl
+/numbersign
+/dollar
+/percent
+/ampersand
+/quoteright
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/minus
+/period
+/slash
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+/eight
+/nine
+/colon
+/semicolon
+/less
+/equal
+/greater
+/question
+/at
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+/X
+/Y
+/Z
+/bracketleft
+/backslash
+/bracketright
+/asciicircum
+/underscore
+/quoteleft
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+/x
+/y
+/z
+/braceleft
+/bar
+/braceright
+/asciitilde
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/dotlessi
+/grave
+/acute
+/circumflex
+/tilde
+/macron
+/breve
+/dotaccent
+/dieresis
+/.notdef
+/ring
+/cedilla
+/.notdef
+/hungarumlaut
+/ogonek
+/caron
+/space
+/exclamdown
+/cent
+/sterling
+/currency
+/yen
+/brokenbar
+/section
+/dieresis
+/copyright
+/ordfeminine
+/guillemotleft
+/logicalnot
+/hyphen
+/registered
+/macron
+/degree
+/plusminus
+/twosuperior
+/threesuperior
+/acute
+/mu
+/paragraph
+/periodcentered
+/cedilla
+/onesuperior
+/ordmasculine
+/guillemotright
+/onequarter
+/onehalf
+/threequarters
+/questiondown
+/Agrave
+/Aacute
+/Acircumflex
+/Atilde
+/Adieresis
+/Aring
+/AE
+/Ccedilla
+/Egrave
+/Eacute
+/Ecircumflex
+/Edieresis
+/Igrave
+/Iacute
+/Icircumflex
+/Idieresis
+/Eth
+/Ntilde
+/Ograve
+/Oacute
+/Ocircumflex
+/Otilde
+/Odieresis
+/multiply
+/Oslash
+/Ugrave
+/Uacute
+/Ucircumflex
+/Udieresis
+/Yacute
+/Thorn
+/germandbls
+/agrave
+/aacute
+/acircumflex
+/atilde
+/adieresis
+/aring
+/ae
+/ccedilla
+/egrave
+/eacute
+/ecircumflex
+/edieresis
+/igrave
+/iacute
+/icircumflex
+/idieresis
+/eth
+/ntilde
+/ograve
+/oacute
+/ocircumflex
+/otilde
+/odieresis
+/divide
+/oslash
+/ugrave
+/uacute
+/ucircumflex
+/udieresis
+/yacute
+/thorn
+/ydieresis
+] def'
+	}
 
-	echo "ISOLatin1Encoding /$1 ReEncode"
+	echo 'ISOLatin1Encoding /'^$1^' ReEncode'
 }
 
 #
@@ -1066,11 +1056,11 @@
 # all available.
 #
 
-Proportional() {
-	echo "/unitwidth $UNITWIDTH def"
-	echo "/resolution $RESOLUTION def"
-	echo "/octalescapes $OCTALESCAPES def"
-	echo "/charset ["
+fn Proportional {
+	echo /unitwidth $UNITWIDTH def
+	echo /resolution $RESOLUTION def
+	echo /octalescapes $OCTALESCAPES def
+	echo '/charset ['
 		# Get <>_ and | from S. Use accents for ascii ^ and ~.
 		StandardCharset | awk '
 			$1 == "(<)" && $2 == "/less" {$1 = "(---)"}
@@ -1087,118 +1077,118 @@
 			}
 			{printf "%s\t%s\n", $1, $2}
 		'
-	echo "] def"
+	echo '] def'
 
 	Latin1 $2
-	echo "/$2 SelectFont"
-	echo "(opO) SetAscender"
+	echo /$2 SelectFont
+	echo '(opO) SetAscender'
 
-	echo "(name $1\\\\n) Print"
-	echo "(fontname $2\\\\n) Print"
-	echo "/$1 NamedInPrologue"
-	echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
-	echo "(charset\\\\n) Print"
-	echo "BuildFontCharset"
+	echo '(name '^$1^'\n) Print'
+	echo '(fontname '^$2^'\n) Print'
+	echo /$1 NamedInPrologue
+	echo '(spacewidth ) Print 32 GetWidth Print (\n) Print'
+	echo '(charset\n) Print'
+	echo BuildFontCharset
 }
 
-FixedWidth() {
-	echo "/unitwidth $UNITWIDTH def"
-	echo "/resolution $RESOLUTION def"
-	echo "/octalescapes $OCTALESCAPES def"
-	echo "/charset ["
+fn FixedWidth {
+	echo '/unitwidth $UNITWIDTH def'
+	echo '/resolution $RESOLUTION def'
+	echo '/octalescapes $OCTALESCAPES def'
+	echo '/charset ['
 		StandardCharset
-	echo "] def"
+	echo '] def'
 
 	Latin1 $2
-	echo "/$2 SelectFont"
-	echo "(opO) SetAscender"
+	echo /$2 SelectFont
+	echo '(opO) SetAscender'
 
-	echo "(name $1\\\\n) Print"
-	echo "(fontname $2\\\\n) Print"
-	echo "/$1 NamedInPrologue"
-	echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
-	echo "(charset\\\\n) Print"
-	echo "BuildFontCharset"
+	echo '(name '^$1^'\n) Print'
+	echo '(fontname '^$2^'\n) Print'
+	echo /$1 NamedInPrologue
+	echo '(spacewidth ) Print 32 GetWidth Print (\n) Print'
+	echo '(charset\n) Print'
+	echo BuildFontCharset
 }
 
-Dingbats() {
-	echo "/unitwidth $UNITWIDTH def"
-	echo "/resolution $RESOLUTION def"
-	echo "/octalescapes $OCTALESCAPES def"
-	echo "/charset ["
+fn Dingbats {
+	echo '/unitwidth $UNITWIDTH def'
+	echo '/resolution $RESOLUTION def'
+	echo '/octalescapes $OCTALESCAPES def'
+	echo '/charset ['
 		DingbatsCharset | awk '$1 != "(---)" && $2 ~ /^\/[a-zA-Z]/ {
 			printf "%s\tISOLatin1Encoding %s GetCode\n", $1, $2
 		}'
-	echo "] def"
+	echo '] def'
 
-	echo "/$2 SelectFont"
-	echo "(   ) SetAscender"
+	echo /$2 SelectFont
+	echo '(   ) SetAscender'
 
-	echo "(name $1\\\\n) Print"
-	echo "(fontname $2\\\\n) Print"
-	echo "/$1 NamedInPrologue"
-	echo "(charset\\\\n) Print"
-	echo "BuildFontCharset"
+	echo '(name '^$1^'\n) Print'
+	echo '(fontname '^$2^'\n) Print'
+	echo /$1 NamedInPrologue
+	echo '(charset\n) Print'
+	echo BuildFontCharset
 }
 
-Greek() {
-	echo "/unitwidth $UNITWIDTH def"
-	echo "/resolution $RESOLUTION def"
-	echo "/charset ["
+fn Greek {
+	echo /unitwidth $UNITWIDTH def
+	echo /resolution $RESOLUTION def
+	echo /charset [
 		SymbolCharset | awk '
 			BEGIN {hit = -1}
 			$1 ~ /\(\*[a-zA-Z]\)/ {print; hit = NR}
 			$2 == "(\")" && hit == NR-1 {print; hit = NR}
 		'
-	echo "] def"
+	echo ] def
 
-	echo "/$2 SelectFont"
-	echo "(orO) SetAscender"
+	echo /$2 SelectFont
+	echo '(orO) SetAscender'
 
-	echo "(name $1\\\\n) Print"
-	echo "(fontname $2\\\\n) Print"
-	echo "/$1 NamedInPrologue"
-	echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
-	echo "(charset\\\\n) Print"
-	echo "BuildFontCharset"
+	echo '(name '^$1^'\n) Print'
+	echo '(fontname '^$2^'\n) Print'
+	echo /$1 NamedInPrologue
+	echo '(spacewidth ) Print 32 GetWidth Print (\n) Print'
+	echo '(charset\n) Print'
+	echo BuildFontCharset
 }
 
-Symbol() {
-	echo "/unitwidth $UNITWIDTH def"
-	echo "/resolution $RESOLUTION def"
-	echo "/charset ["
+fn Symbol {
+	echo /unitwidth $UNITWIDTH def
+	echo /resolution $RESOLUTION def
+	echo /charset [
 		SymbolCharset
-	echo "] def"
+	echo ] def
 
-	echo "ChangeMetrics"
-	echo "/S SelectFont"
-	echo "(orO) SetAscender"
+	echo ChangeMetrics
+	echo /S SelectFont
+	echo '(orO) SetAscender'
 
-	echo "(name $1\\\\n) Print"
-	echo "(fontname $2\\\\n) Print"
-	echo "/$1 NamedInPrologue"
-	echo "(special\\\\n) Print"
-	echo "(charset\\\\n) Print"
-	echo "BuildFontCharset"
+	echo '(name '^$1^'\n) Print'
+	echo '(fontname '^$2^'\n) Print'
+	echo /$1 NamedInPrologue
+	echo '(special\n) Print'
+	echo '(charset\n) Print'
+	echo BuildFontCharset
 }
 
-Special() {
-	echo "/unitwidth $UNITWIDTH def"
-	echo "/resolution $RESOLUTION def"
-	echo "/charset ["
+fn Special {
+	echo /unitwidth $UNITWIDTH def
+	echo /resolution $RESOLUTION def
+	echo /charset [
 		SpecialCharset
-	echo "] def"
+	echo ] def
 
-	echo "ChangeMetrics"
-	echo "/S1 SelectFont"
+	echo ChangeMetrics
+	echo /S1 SelectFont
 
-	echo "(# Times-Roman special font\\\\n) Print"
-	echo "(name $1\\\\n) Print"
-	echo "(fontname $2\\\\n) Print"
-	echo "/$1 NamedInPrologue"
-	echo "(special\\\\n) Print"
-	echo "(charset\\\\n) Print"
-	echo "BuildFontCharset"
+	echo '(# Times-Roman special font\n) Print'
+	echo '(name '^$1^'\n) Print'
+	echo '(fontname '^$2^'\n) Print'
+	echo /$1 NamedInPrologue
+	echo '(special\n) Print'
+	echo '(charset\n) Print'
+	echo BuildFontCharset
 }
 
 #
@@ -1206,33 +1196,31 @@
 # consistency.
 #
 
-Description() {
-	echo "/charset ["	# awk - so the stack doesn't overflow
+fn Description {
+	echo /charset [	# awk - so the stack doesn't overflow
 		StandardCharset | awk '$1 !~ /\(\\[0-9]/ {print $1}'
 		SymbolCharset | awk '$1 !~ /\(\\[0-9]/ {print $1}'
 		SpecialCharset | awk '$1 !~ /\(\\[0-9]/ {print $1}'
-	echo "] def"
+	echo ] def
 
-	cat <<-//DESC
-		(#Device Description - utf character set
+	echo '(#Device Description - utf character set
 
-		PDL PostScript
-		Encoding Latin1
+PDL PostScript
+Encoding Latin1
 
-		fonts 10 R I B BI CW H HI HB S1 S
-		sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
-		23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
-		48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
-		120 125 130 135 140 145 150 155 160 0
-		res $RESOLUTION
-		hor 1
-		vert 1
-		unitwidth $UNITWIDTH
+fonts 10 R I B BI CW H HI HB S1 S
+sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
+23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
+48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
+120 125 130 135 140 145 150 155 160 0
+res $RESOLUTION
+hor 1
+vert 1
+unitwidth $UNITWIDTH
 
-		) Print
-	//DESC
-	echo "(charset\\\\n) Print"
-	echo "BuildDescCharset"
-	echo "(\\\\n) Print"
+) Print'
+	echo '(charset\n) Print'
+	echo BuildDescCharset
+	echo '(\n) Print'
 }
 
--- a/sys/src/cmd/postscript/trofftable/trofftable.1.man
+++ b/sys/src/cmd/postscript/trofftable/trofftable.1.man
@@ -1,46 +1,63 @@
-.ds dF /usr/lib/font
-.ds dQ /usr/lib/postscript
-.TH TROFFTABLE 1 "DWB 3.2"
+.ds dF /sys/lib/troff/font
+.ds dQ /sys/lib/postscript/prologues
+.TH TROFFTABLE 1
 .SH NAME
-.B trofftable
-\- output a PostScript program that builds a font width table
+trofftable \- output a PostScript program that builds a font width table
 .SH SYNOPSIS
-\*(mBtrofftable\f1
-.OP "" options []
-.OP "" shortname
-.OP "" longname []
-.SH DESCRIPTION
 .B trofftable
+[
+.B -t
+.I name
+] [
+.B -C
+.I file
+] [
+.B -H
+.I hostdir
+] [
+.B -L
+.I file
+] [
+.B -S
+.I file
+] [
+.B -T
+.I name
+]
+.I shortname
+[
+.I longname
+]
+.SH DESCRIPTION
+.I Trofftable
 writes a PostScript program on the standard output that builds a
 font width table or typesetter description file.
-The following
-.I options
-are understood:
-.TP 1.0i
-.OP \-t name
+The following options are understood:
+.TP
+.BI -t " name"
 Use
 .I name
 as the template for fonts not in the default set.
 Choose
-.MW R
+.B R
 for proportionally spaced fonts and
-.MW CW
+.B CW
 for fixed width fonts.
 Try
-.MW ZD
+.B ZD
 (ZapfDingbats) if the font has a non-standard
 character set.
 The default is
-.MR R .
-.TP 1.0i
-.OP \-C file
+.BR R .
+.TP
+.BI -C " file"
 Copy
 .I file
 into each PostScript table program;
 .I file
 must contain legitimate PostScript.
-.TP 1.0i
-.OP \-H hostdir
+.TP
+.BI -H " hostdir"
 Use
 .I hostdir
 as the host resident font directory.
@@ -50,24 +67,24 @@
 resident font program and is included in the PostScript width
 table program.
 There is no default.
-.TP 1.0i
-.OP \-L file
+.TP
+.BI -L " file"
 Use
 .I file
 as the PostScript prologue.
 .br
 The default is
-.MW \*(dQ/trofftable.ps
-.TP 1.0i
-.OP \-S file
+.B \*(dQ/trofftable.ps
+.TP
+.BI -S " file"
 Use
 .I file
 as the shell library file.
 Overrides the choice made with the
-.OP \-T
+.B -T
 option.
-.TP 1.0i
-.OP \-T name
+.TP
+.BI -T " name"
 Set the target device to
 .IR name .
 Device
@@ -74,31 +91,31 @@
 .I name
 means
 .br
-.MI \*(dF/dev name /shell.lib
+.BI \*(dF/dev name /shell.lib
 is the shell library file.
 There is no default.
 .PP
 One of
-.OP \-T
+.B -T
 or
-.OP \-S
+.B -S
 is required.
 If both are given
-.OP \-S
+.B -S
 wins.
 Either
-.OP \-H
+.B -H
 or
-.OP \-C
+.B -C
 can be used to include a host resident font.
 .PP
 The shell library file defines a collection of functions used to
 build troff tables.
 The default set of tables is the list of names returned by the
-.MW AllTables
+.B AllTables
 function.
 Changes to the default list can be made by updating the
-.MW BuiltinTables
+.B BuiltinTables
 function.
 .PP
 .I Shortname
@@ -112,16 +129,16 @@
 .I shortname
 is a default table name.
 PostScript table programs created by
-.B trofftable
+.I trofftable
 return data to the host computer using PostScript's
-.MW print
+.B print
 operator.
 See
-.BR hardcopy (1)
+.IR hardcopy (1)
 if you don't have access to the printer's serial port.
 .SH EXAMPLES
 Get the PostScript program that builds a width table for font
-.MR R :
+.BR R :
 .EX
 trofftable -Tpost R >R.ps
 .EE
@@ -133,9 +150,9 @@
 .EE
 A font must be available on the printer when the table is built.
 Use
-.OP \-H
+.B -H
 or
-.OP \-C
+.B -C
 to include host resident fonts.
 .SH WARNINGS
 A width table will not build properly if the printer cannot access
@@ -142,23 +159,23 @@
 the PostScript font.
 .PP
 The
-.OP -TLatin1
+.B -TLatin1
 option only works on PostScript printers that support the full
 .SM ISO
 Latin-1 character set.
 The error message from older printers will likely indicate a missing
-.MW ISOLatin1Encoding
+.B ISOLatin1Encoding
 array.
 .SH FILES
-.MW \*(dF/dev*/shell.lib
+.B \*(dF/dev*/shell.lib
 .br
-.MW \*(dQ/dpost.ps
+.B \*(dQ/dpost.ps
 .br
-.MW \*(dQ/trofftable.ps
+.B \*(dQ/trofftable.ps
 .SH SEE ALSO
-.BR dpost (1),
-.BR hardcopy (1),
-.BR postio (1),
-.BR troff (1),
-.BR buildtables (1),
-.BR font (5)
+.IR dpost (1),
+.IR hardcopy (1),
+.IR postio (1),
+.IR troff (1),
+.IR buildtables (1),
+.IR font (5)
--- a/sys/src/cmd/postscript/trofftable/trofftable.rc
+++ b/sys/src/cmd/postscript/trofftable/trofftable.rc
@@ -5,6 +5,8 @@
 # serial port. Try hardcopy if you don't have access to the port.
 #
 
+rfork e
+
 POSTLIB=/sys/lib/postscript/prologues
 FONTDIR=/sys/lib/troff/font
 
@@ -15,7 +17,7 @@
 HOSTFONTDIR=()
 DEVICE=()
 LIBRARY=()
-TEMPLATE=-R
+TEMPLATE=R
 
 SLOWDOWN=25
 STARTCOMMENTS=256
@@ -28,8 +30,8 @@
 
 while (! ~ $#* 0 && ~ $1 -*) {
 	switch ($1) {
-	case -C;  shift; COPYFILE=$COPYFILE' '$1
-	case -C*; COPYFILE=$COPYFILE' '`{echo $1 | sed s/-C//}
+	case -C;  shift; COPYFILE=($COPYFILE $1)
+	case -C*; COPYFILE=($COPYFILE `{echo $1 | sed s/-C//})
 
 	case -F;  shift; FONTDIR=$1
 	case -F*; FONTDIR=`{echo $1 | sed s/-F//}
@@ -63,7 +65,7 @@
 	shift
 }
 
-if (! ~ $#DEVICE 0  && ! ~ $#LIBRARY 0) {
+if (~ $#DEVICE 0  && ~ $#LIBRARY 0) {
     echo $0: no device or shell library >[1=2]
     exit 1
 }
@@ -73,8 +75,8 @@
     exit 1
 }
 
-if (test -d $HOSTFONTDIR -a -f $HOSTFONTDIR/$1) {
-    COPYFILE=$COPYFILE' '$HOSTFONTDIR/$1
+if (! ~ $#HOSTFONTDIR 0 && test -d $HOSTFONTDIR -a -f $HOSTFONTDIR/$1) {
+    COPYFILE=($COPYFILE $HOSTFONTDIR/$1)
 }
 
 #
@@ -81,20 +83,23 @@
 # Include the shell library and get the command used to build the table.
 # Make awk call a separate library function??
 #
-if (~ $#LIBRARY 0 || ~ $LIBRARY '') LIBRARY=$FONTDIR/dev$DEVICE/shell.lib
+if (~ $#LIBRARY 0) LIBRARY=$FONTDIR/dev$DEVICE/shell.lib
 
 . $LIBRARY
 
 if (~ $#* 1) TEMPLATE=$1
 
+if (~ $#* 2) pname=$2
+if not pname=''
+
 CMD=`{BuiltinTables | awk '$2 == template"" {
 	if ( pname == "" )
 		pname = $3
 	printf "%s %s %s", $1, tname, pname
 	exit 0
-}' template=$TEMPLATE tname=$1 pname=$2}
+}' 'template='$TEMPLATE 'tname='$1 'pname='$pname}
 
-if (! $CMD) {
+if (~ $#CMD 0) {
     echo $0: $TEMPLATE not found >[1=2]
     exit 1
 }
@@ -111,8 +116,8 @@
 echo $ENDPROLOG
 
 echo $BEGINSETUP
-if (~ $COPYFILE '') COPYFILE=/dev/null
-cat $COPYFILE
+if (! ~ $#COPYFILE 0)
+	cat $COPYFILE
 echo /slowdown $SLOWDOWN def
 echo /startcomments $STARTCOMMENTS def
 echo $ENDSETUP
@@ -120,4 +125,3 @@
 $CMD
 
 echo $TRAILER
-