File:  [Research Unix] / researchv10no / cmd / post.src / devLatin1 / shell.lib
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:35 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv10, HEAD
researchv10 Norman

#
# Shell library - for building devLatin1 tables.
#
# The full ISO Latin1 alphabet appeared in Adobe's interpreter sometime
# around Version 50.0. Prior to that ROM resident Type 1 text fonts were
# missing 18 characters that are now part of the Latin1 standard. Width
# tables will not build on printers that lack full Latin1 support. Error
# message will likely reflect a missing ISOLatin1Encoding array.
#

RESOLUTION=720
UNITWIDTH=10

OCTALESCAPES=${OCTALESCAPES:-160}	# <= code means add \0ddd names
DOWNLOADVECTOR=FALSE			# TRUE can mean incomplete tables

#
# BuiltinTables returns command lines that generate PostScript programs
# for building a typesetter description file and font width tables for
# a relatively standard collection of fonts. Use awk to select a command
# line or modify an existing command to build a width table for a new
# 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
}

#
# AllTables prints the complete list of builtin font names.
#

AllTables() {
	BuiltinTables | awk '{print $2}'
}

#
# Charset functions generate keyword/value pairs (as PostScript objects)
# that describe the character set available in a font. The keyword is a
# PostScript string that represents troff's name for the character. The
# value is usually the literal name (i.e. begins with a /) assigned to
# the character in the PostScript font. The value can also be an integer
# or a PostScript string. An integer value is used as an index in the
# current font's Encoding array. A string value is returned to the host
# unchanged when the entry for the character is constructed. Entries that
# have (") as their value are synonyms for the preceeding character.
#
# The 18 characters missing from ROM resident fonts on older printers are
# 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
}

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

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
		(*B)	/Beta
		(*X)	/Chi
		(*D)	/Delta
		(*E)	/Epsilon
		(*F)	/Phi
		(*G)	/Gamma
		(*Y)	/Eta
		(*I)	/Iota
		(---)	/theta1
		(*K)	/Kappa
		(*L)	/Lambda
		(*M)	/Mu
		(*N)	/Nu
		(*O)	/Omicron
		(*P)	/Pi
		(*H)	/Theta
		(*R)	/Rho
		(*S)	/Sigma
		(*T)	/Tau
		(*U)	/Upsilon
		(ts)	/sigma1
		(*W)	/Omega
		(*C)	/Xi
		(*Q)	/Psi
		(*Z)	/Zeta
		(---)	/bracketleft
		(tf)	/therefore
		(---)	/bracketright
		(pp)	/perpendicular
		(ul)	/underscore
		(_)	(")			% synonym
		(rn)	/radicalex
		(*a)	/alpha
		(*b)	/beta
		(*x)	/chi
		(*d)	/delta
		(*e)	/epsilon
		(*f)	/phi
		(*g)	/gamma
		(*y)	/eta
		(*i)	/iota
		(---)	/phi1
		(*k)	/kappa
		(*l)	/lambda
		(*m)	/mu
		(*n)	/nu
		(*o)	/omicron
		(*p)	/pi
		(*h)	/theta
		(*r)	/rho
		(*s)	/sigma
		(*t)	/tau
		(*u)	/upsilon
		(---)	/omega1
		(*w)	/omega
		(*c)	/xi
		(*q)	/psi
		(*z)	/zeta
		(---)	/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
}

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
%		(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
}

#
# Latin1 ensures a font uses the ISOLatin1Encoding vector, although only
# text fonts should be re-encoded. Downloading the Encoding vector doesn't
# often make sense. No ISOLatin1Encoding array likely means ROM based fonts
# on your printer are incomplete. Type 1 fonts with a full Latin1 character
# 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

	echo "ISOLatin1Encoding /$1 ReEncode"
}

#
# Generating functions output PostScript programs that build font width
# tables or a typesetter description file. Send the program to a printer
# and the complete table will come back on the serial port. All write on
# stdout and assume the prologue and other required PostScript files are
# all available.
#

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 = "(---)"}
			$1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
			$1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
			$1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
			$1 == "(^)" && $2 == "/asciicircum" {
				printf "(^)\t/circumflex\n"
				$1 = "(---)"
			}
			$1 == "(~)" && $2 == "/asciitilde" {
				printf "(~)\t/tilde\n"
				$1 = "(---)"
			}
			{printf "%s\t%s\n", $1, $2}
		'
	echo "] def"

	Latin1 $2
	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"
}

FixedWidth() {
	echo "/unitwidth $UNITWIDTH def"
	echo "/resolution $RESOLUTION def"
	echo "/octalescapes $OCTALESCAPES def"
	echo "/charset ["
		StandardCharset
	echo "] def"

	Latin1 $2
	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"
}

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 "/$2 SelectFont"
	echo "(   ) SetAscender"

	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 ["
		SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
	echo "] def"

	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"
}

Symbol() {
	echo "/unitwidth $UNITWIDTH def"
	echo "/resolution $RESOLUTION def"
	echo "/charset ["
		SymbolCharset
	echo "] def"

	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"
}

Special() {
	echo "/unitwidth $UNITWIDTH def"
	echo "/resolution $RESOLUTION def"
	echo "/charset ["
		SpecialCharset
	echo "] def"

	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"
}

#
# The DESC file doesn't have to be built on a printer. It's only here for
# consistency.
#

Description() {
	echo "/charset ["	# awk - so the stack doesn't overflow
		StandardCharset | awk '{print $1}'
		SymbolCharset | awk '{print $1}'
		SpecialCharset | awk '{print $1}'
	echo "] def"

	cat <<-//DESC
		(#Device Description - Latin1 character set

		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

		) Print
	//DESC
	echo "(charset\\\\n) Print"
	echo "BuildDescCharset"
	echo "(\\\\n) Print"
}


unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.