|
|
1.1 root 1: #
2: # Shell library - for building devLatin1 tables.
3: #
4: # The full ISO Latin1 alphabet appeared in Adobe's interpreter sometime
5: # around Version 50.0. Prior to that ROM resident Type 1 text fonts were
6: # missing 18 characters that are now part of the Latin1 standard. Width
7: # tables will not build on printers that lack full Latin1 support. Error
8: # message will likely reflect a missing ISOLatin1Encoding array.
9: #
10:
11: RESOLUTION=720
12: UNITWIDTH=10
13:
14: OCTALESCAPES=${OCTALESCAPES:-160} # <= code means add \0ddd names
15: DOWNLOADVECTOR=FALSE # TRUE can mean incomplete tables
16:
17: #
18: # BuiltinTables returns command lines that generate PostScript programs
19: # for building a typesetter description file and font width tables for
20: # a relatively standard collection of fonts. Use awk to select a command
21: # line or modify an existing command to build a width table for a new
22: # font.
23: #
24:
25: BuiltinTables() {
26: cat <<-'//End of BuiltinTables'
27: Proportional R Times-Roman
28: Proportional I Times-Italic
29: Proportional B Times-Bold
30: Proportional BI Times-BoldItalic
31: Proportional AB AvantGarde-Demi
32: Proportional AI AvantGarde-BookOblique
33: Proportional AR AvantGarde-Book
34: Proportional AX AvantGarde-DemiOblique
35: Proportional H Helvetica
36: Proportional HB Helvetica-Bold
37: Proportional HI Helvetica-Oblique
38: Proportional HX Helvetica-BoldOblique
39: Proportional Hb Helvetica-Narrow-Bold
40: Proportional Hi Helvetica-Narrow-Oblique
41: Proportional Hr Helvetica-Narrow
42: Proportional Hx Helvetica-Narrow-BoldOblique
43: Proportional KB Bookman-Demi
44: Proportional KI Bookman-LightItalic
45: Proportional KR Bookman-Light
46: Proportional KX Bookman-DemiItalic
47: Proportional NB NewCenturySchlbk-Bold
48: Proportional NI NewCenturySchlbk-Italic
49: Proportional NR NewCenturySchlbk-Roman
50: Proportional NX NewCenturySchlbk-BoldItalic
51: Proportional PA Palatino-Roman
52: Proportional PB Palatino-Bold
53: Proportional PI Palatino-Italic
54: Proportional PX Palatino-BoldItalic
55: Proportional ZI ZapfChancery-MediumItalic
56: FixedWidth C Courier
57: FixedWidth CB Courier-Bold
58: FixedWidth CI Courier-Oblique
59: FixedWidth CO Courier
60: FixedWidth CW Courier
61: FixedWidth CX Courier-BoldOblique
62: Dingbats ZD ZapfDingbats
63: Greek GR Symbol
64: Symbol S Symbol
65: Special S1 Times-Roman
66: Description DESC ---
67: //End of BuiltinTables
68: }
69:
70: #
71: # AllTables prints the complete list of builtin font names.
72: #
73:
74: AllTables() {
75: BuiltinTables | awk '{print $2}'
76: }
77:
78: #
79: # Charset functions generate keyword/value pairs (as PostScript objects)
80: # that describe the character set available in a font. The keyword is a
81: # PostScript string that represents troff's name for the character. The
82: # value is usually the literal name (i.e. begins with a /) assigned to
83: # the character in the PostScript font. The value can also be an integer
84: # or a PostScript string. An integer value is used as an index in the
85: # current font's Encoding array. A string value is returned to the host
86: # unchanged when the entry for the character is constructed. Entries that
87: # have (") as their value are synonyms for the preceeding character.
88: #
89: # The 18 characters missing from ROM resident fonts on older printers are
90: # flagged with the PostScript comment "% missing".
91: #
92:
93: StandardCharset() {
94: cat <<-'//End of StandardCharset'
95: (!) /exclam
96: (") /quotedbl
97: (#) /numbersign
98: ($) /dollar
99: (%) /percent
100: (&) /ampersand
101: (') /quoteright
102: (\() /parenleft
103: (\)) /parenright
104: (*) /asterisk
105: (+) /plus
106: (,) /comma
107: (-) /hyphen % changed from minus by request
108: (.) /period
109: (/) /slash
110: (0) /zero
111: (1) /one
112: (2) /two
113: (3) /three
114: (4) /four
115: (5) /five
116: (6) /six
117: (7) /seven
118: (8) /eight
119: (9) /nine
120: (:) /colon
121: (;) /semicolon
122: (<) /less
123: (=) /equal
124: (>) /greater
125: (?) /question
126: (@) /at
127: (A) /A
128: (B) /B
129: (C) /C
130: (D) /D
131: (E) /E
132: (F) /F
133: (G) /G
134: (H) /H
135: (I) /I
136: (J) /J
137: (K) /K
138: (L) /L
139: (M) /M
140: (N) /N
141: (O) /O
142: (P) /P
143: (Q) /Q
144: (R) /R
145: (S) /S
146: (T) /T
147: (U) /U
148: (V) /V
149: (W) /W
150: (X) /X
151: (Y) /Y
152: (Z) /Z
153: ([) /bracketleft
154: (\\) /backslash
155: (]) /bracketright
156: (^) /asciicircum
157: (_) /underscore
158: (`) /quoteleft
159: (a) /a
160: (b) /b
161: (c) /c
162: (d) /d
163: (e) /e
164: (f) /f
165: (g) /g
166: (h) /h
167: (i) /i
168: (j) /j
169: (k) /k
170: (l) /l
171: (m) /m
172: (n) /n
173: (o) /o
174: (p) /p
175: (q) /q
176: (r) /r
177: (s) /s
178: (t) /t
179: (u) /u
180: (v) /v
181: (w) /w
182: (x) /x
183: (y) /y
184: (z) /z
185: ({) /braceleft
186: (|) /bar
187: (}) /braceright
188: (~) /asciitilde
189: (\\`) /grave % devpost character
190: (ga) (") % synonym
191: (!!) /exclamdown
192: (c|) /cent
193: (ct) (") % devpost synonym
194: (L-) /sterling
195: (ps) (") % devpost synonym
196: (xo) /currency
197: (cr) (") % devpost synonym
198: (Y-) /yen
199: (yn) (") % devpost synonym
200: (||) /brokenbar % missing
201: (so) /section
202: (sc) (") % devpost synonym
203: ("") /dieresis
204: (:a) (") % devpost synonym
205: (co) /copyright
206: (a_) /ordfeminine
207: (<<) /guillemotleft
208: (-,) /logicalnot
209: (hy) /hyphen
210: (--) (") % synonym
211: (ro) /registered
212: (rg) (") % devpost synonym
213: (-^) /macron
214: (-a) (") % devpost synonym
215: (0^) /degree % missing
216: (+-) /plusminus % missing
217: (2^) /twosuperior % missing
218: (3^) /threesuperior % missing
219: (\\') /acute
220: (aa) (") % devpost synonym
221: (/u) /mu % missing
222: (P!) /paragraph
223: (pg) (") % devpost synonym
224: (.^) /periodcentered
225: (,,) /cedilla
226: (,a) (") % devpost synonym
227: (1^) /onesuperior % missing
228: (o_) /ordmasculine
229: (>>) /guillemotright
230: (14) /onequarter % missing
231: (12) /onehalf % missing
232: (34) /threequarters % missing
233: (??) /questiondown
234: (A`) /Agrave
235: (A') /Aacute
236: (A^) /Acircumflex
237: (A~) /Atilde
238: (A") /Adieresis
239: (A*) /Aring
240: (AE) /AE
241: (C,) /Ccedilla
242: (E`) /Egrave
243: (E') /Eacute
244: (E^) /Ecircumflex
245: (E") /Edieresis
246: (I`) /Igrave
247: (I') /Iacute
248: (I^) /Icircumflex
249: (I") /Idieresis
250: (D-) /Eth % missing
251: (N~) /Ntilde
252: (O`) /Ograve
253: (O') /Oacute
254: (O^) /Ocircumflex
255: (O~) /Otilde
256: (O") /Odieresis
257: (xx) /multiply % missing
258: (O/) /Oslash
259: (U`) /Ugrave
260: (U') /Uacute
261: (U^) /Ucircumflex
262: (U") /Udieresis
263: (Y') /Yacute % missing
264: (TH) /Thorn % missing
265: (ss) /germandbls
266: (a`) /agrave
267: (a') /aacute
268: (a^) /acircumflex
269: (a~) /atilde
270: (a") /adieresis
271: (a*) /aring
272: (ae) /ae
273: (c,) /ccedilla
274: (e`) /egrave
275: (e') /eacute
276: (e^) /ecircumflex
277: (e") /edieresis
278: (i`) /igrave
279: (i') /iacute
280: (i^) /icircumflex
281: (i") /idieresis
282: (d-) /eth % missing
283: (n~) /ntilde
284: (o`) /ograve
285: (o') /oacute
286: (o^) /ocircumflex
287: (o~) /otilde
288: (o") /odieresis
289: (-:) /divide % missing
290: (o/) /oslash
291: (u`) /ugrave
292: (u') /uacute
293: (u^) /ucircumflex
294: (u") /udieresis
295: (y') /yacute % missing
296: (th) /thorn % missing
297: (y") /ydieresis
298: (^a) /circumflex % devpost accent
299: (~a) /tilde % devpost accent
300: (Ua) /breve % devpost accent
301: (.a) /dotaccent % devpost accent
302: (oa) /ring % devpost accent
303: ("a) /hungarumlaut % devpost accent
304: (Ca) /ogonek % devpost accent
305: (va) /caron % devpost accent
306: //End of StandardCharset
307: }
308:
309: #
310: # DingbatsCharset guarantees changes in StandardCharset don't show up in ZD.
311: #
312:
313: DingbatsCharset() {
314: cat <<-'//End of DingbatsCharset'
315: (!) /exclam
316: (") /quotedbl
317: (#) /numbersign
318: ($) /dollar
319: (%) /percent
320: (&) /ampersand
321: (') /quoteright
322: (\() /parenleft
323: (\)) /parenright
324: (*) /asterisk
325: (+) /plus
326: (,) /comma
327: (-) /minus % also hyphen in devpost
328: (.) /period
329: (/) /slash
330: (0) /zero
331: (1) /one
332: (2) /two
333: (3) /three
334: (4) /four
335: (5) /five
336: (6) /six
337: (7) /seven
338: (8) /eight
339: (9) /nine
340: (:) /colon
341: (;) /semicolon
342: (<) /less
343: (=) /equal
344: (>) /greater
345: (?) /question
346: (@) /at
347: (A) /A
348: (B) /B
349: (C) /C
350: (D) /D
351: (E) /E
352: (F) /F
353: (G) /G
354: (H) /H
355: (I) /I
356: (J) /J
357: (K) /K
358: (L) /L
359: (M) /M
360: (N) /N
361: (O) /O
362: (P) /P
363: (Q) /Q
364: (R) /R
365: (S) /S
366: (T) /T
367: (U) /U
368: (V) /V
369: (W) /W
370: (X) /X
371: (Y) /Y
372: (Z) /Z
373: ([) /bracketleft
374: (\\) /backslash
375: (]) /bracketright
376: (^) /asciicircum
377: (_) /underscore
378: (`) /quoteleft
379: (a) /a
380: (b) /b
381: (c) /c
382: (d) /d
383: (e) /e
384: (f) /f
385: (g) /g
386: (h) /h
387: (i) /i
388: (j) /j
389: (k) /k
390: (l) /l
391: (m) /m
392: (n) /n
393: (o) /o
394: (p) /p
395: (q) /q
396: (r) /r
397: (s) /s
398: (t) /t
399: (u) /u
400: (v) /v
401: (w) /w
402: (x) /x
403: (y) /y
404: (z) /z
405: ({) /braceleft
406: (|) /bar
407: (}) /braceright
408: (~) /asciitilde
409: (\\`) /grave % devpost character
410: (ga) (") % synonym
411: (!!) /exclamdown
412: (c|) /cent
413: (ct) (") % devpost synonym
414: (L-) /sterling
415: (ps) (") % devpost synonym
416: (xo) /currency
417: (cr) (") % devpost synonym
418: (Y-) /yen
419: (yn) (") % devpost synonym
420: (||) /brokenbar % missing
421: (so) /section
422: (sc) (") % devpost synonym
423: ("") /dieresis
424: (co) /copyright
425: (a_) /ordfeminine
426: (<<) /guillemotleft
427: (-,) /logicalnot
428: (hy) /hyphen
429: (--) (") % synonym
430: (ro) /registered
431: (rg) (") % devpost synonym
432: (-^) /macron
433: (0^) /degree % missing
434: (+-) /plusminus % missing
435: (2^) /twosuperior % missing
436: (3^) /threesuperior % missing
437: (\\') /acute
438: (aa) (") % devpost synonym
439: (/u) /mu % missing
440: (P!) /paragraph
441: (pg) (") % devpost synonym
442: (.^) /periodcentered
443: (,,) /cedilla
444: (1^) /onesuperior % missing
445: (o_) /ordmasculine
446: (>>) /guillemotright
447: (14) /onequarter % missing
448: (12) /onehalf % missing
449: (34) /threequarters % missing
450: (??) /questiondown
451: (A`) /Agrave
452: (A') /Aacute
453: (A^) /Acircumflex
454: (A~) /Atilde
455: (A") /Adieresis
456: (A*) /Aring
457: (AE) /AE
458: (C,) /Ccedilla
459: (E`) /Egrave
460: (E') /Eacute
461: (E^) /Ecircumflex
462: (E") /Edieresis
463: (I`) /Igrave
464: (I') /Iacute
465: (I^) /Icircumflex
466: (I") /Idieresis
467: (D-) /Eth % missing
468: (N~) /Ntilde
469: (O`) /Ograve
470: (O') /Oacute
471: (O^) /Ocircumflex
472: (O~) /Otilde
473: (O") /Odieresis
474: (xx) /multiply % missing
475: (O/) /Oslash
476: (U`) /Ugrave
477: (U') /Uacute
478: (U^) /Ucircumflex
479: (U") /Udieresis
480: (Y') /Yacute % missing
481: (TH) /Thorn % missing
482: (ss) /germandbls
483: (a`) /agrave
484: (a') /aacute
485: (a^) /acircumflex
486: (a~) /atilde
487: (a") /adieresis
488: (a*) /aring
489: (ae) /ae
490: (c,) /ccedilla
491: (e`) /egrave
492: (e') /eacute
493: (e^) /ecircumflex
494: (e") /edieresis
495: (i`) /igrave
496: (i') /iacute
497: (i^) /icircumflex
498: (i") /idieresis
499: (d-) /eth % missing
500: (n~) /ntilde
501: (o`) /ograve
502: (o') /oacute
503: (o^) /ocircumflex
504: (o~) /otilde
505: (o") /odieresis
506: (-:) /divide % missing
507: (o/) /oslash
508: (u`) /ugrave
509: (u') /uacute
510: (u^) /ucircumflex
511: (u") /udieresis
512: (y') /yacute % missing
513: (th) /thorn % missing
514: (y") /ydieresis
515: //End of DingbatsCharset
516: }
517:
518: SymbolCharset() {
519: cat <<-'//End of SymbolCharset'
520: (---) /exclam
521: (fa) /universal
522: (---) /numbersign
523: (te) /existential
524: (---) /percent
525: (---) /ampersand
526: (st) /suchthat
527: (---) /parenleft
528: (---) /parenright
529: (**) /asteriskmath
530: (pl) /plus
531: (---) /comma
532: (mi) /minus
533: (---) /period
534: (sl) /slash
535: (---) /zero
536: (---) /one
537: (---) /two
538: (---) /three
539: (---) /four
540: (---) /five
541: (---) /six
542: (---) /seven
543: (---) /eight
544: (---) /nine
545: (---) /colon
546: (---) /semicolon
547: (<) /less
548: (eq) /equal
549: (>) /greater
550: (---) /question
551: (cg) /congruent
552: (*A) /Alpha
553: (*B) /Beta
554: (*X) /Chi
555: (*D) /Delta
556: (*E) /Epsilon
557: (*F) /Phi
558: (*G) /Gamma
559: (*Y) /Eta
560: (*I) /Iota
561: (---) /theta1
562: (*K) /Kappa
563: (*L) /Lambda
564: (*M) /Mu
565: (*N) /Nu
566: (*O) /Omicron
567: (*P) /Pi
568: (*H) /Theta
569: (*R) /Rho
570: (*S) /Sigma
571: (*T) /Tau
572: (*U) /Upsilon
573: (ts) /sigma1
574: (*W) /Omega
575: (*C) /Xi
576: (*Q) /Psi
577: (*Z) /Zeta
578: (---) /bracketleft
579: (tf) /therefore
580: (---) /bracketright
581: (pp) /perpendicular
582: (ul) /underscore
583: (_) (") % synonym
584: (rn) /radicalex
585: (*a) /alpha
586: (*b) /beta
587: (*x) /chi
588: (*d) /delta
589: (*e) /epsilon
590: (*f) /phi
591: (*g) /gamma
592: (*y) /eta
593: (*i) /iota
594: (---) /phi1
595: (*k) /kappa
596: (*l) /lambda
597: (*m) /mu
598: (*n) /nu
599: (*o) /omicron
600: (*p) /pi
601: (*h) /theta
602: (*r) /rho
603: (*s) /sigma
604: (*t) /tau
605: (*u) /upsilon
606: (---) /omega1
607: (*w) /omega
608: (*c) /xi
609: (*q) /psi
610: (*z) /zeta
611: (---) /braceleft
612: (or) /bar
613: (---) /braceright
614: (ap) /similar
615: (---) /Upsilon1
616: (fm) /minute
617: (<=) /lessequal
618: (fr) /fraction % devpost character
619: (if) /infinity
620: (fn) /florin % devpost character
621: (---) /club
622: (---) /diamond
623: (---) /heart
624: (---) /spade
625: (ab) /arrowboth
626: (<-) /arrowleft
627: (ua) /arrowup
628: (->) /arrowright
629: (da) /arrowdown
630: (de) /degree
631: (+-) /plusminus
632: (---) /second
633: (>=) /greaterequal
634: (mu) /multiply
635: (pt) /proportional
636: (pd) /partialdiff
637: (bu) /bullet
638: (di) /divide
639: (!=) /notequal
640: (==) /equivalence
641: (~~) /approxequal
642: (el) /ellipsis
643: (av) /arrowvertex
644: (ah) /arrowhorizex
645: (CR) /carriagereturn
646: (af) /aleph
647: (If) /Ifraktur
648: (Rf) /Rfraktur
649: (ws) /weierstrass
650: (Ox) /circlemultiply
651: (O+) /circleplus
652: (es) /emptyset
653: (ca) /intersection
654: (cu) /union
655: (sp) /propersuperset
656: (ip) /reflexsuperset
657: (!b) /notsubset
658: (sb) /propersubset
659: (ib) /reflexsubset
660: (mo) /element
661: (!m) /notelement
662: (an) /angle
663: (gr) /gradient
664: (rg) /registerserif
665: (co) /copyrightserif
666: (tm) /trademarkserif
667: (---) /product
668: (sr) /radical
669: (c.) /dotmath
670: (no) /logicalnot
671: (l&) /logicaland
672: (l|) /logicalor
673: (---) /arrowdblboth
674: (---) /arrowdblleft
675: (---) /arrowdblup
676: (---) /arrowdblright
677: (---) /arrowdbldown
678: (lz) /lozenge
679: (b<) /angleleft
680: (RG) /registersans
681: (CO) /copyrightsans
682: (TM) /trademarksans
683: (---) /summation
684: (LT) /parenlefttp
685: (br) /parenleftex
686: (LX) (") % synonym
687: (LB) /parenleftbt
688: (lc) /bracketlefttp
689: (lx) /bracketleftex
690: (lf) /bracketleftbt
691: (lt) /bracelefttp
692: (lk) /braceleftmid
693: (lb) /braceleftbt
694: (bv) /braceex
695: (|) (") % synonym
696: (b>) /angleright
697: (is) /integral
698: (---) /integraltp
699: (---) /integralex
700: (---) /integralbt
701: (RT) /parenrighttp
702: (RX) /parenrightex
703: (RB) /parenrightbt
704: (rc) /bracketrighttp
705: (rx) /bracketrightex
706: (rf) /bracketrightbt
707: (rt) /bracerighttp
708: (rk) /bracerightmid
709: (rb) /bracerightbt
710: (~=) (55 0 1) % charlib
711: //End of SymbolCharset
712: }
713:
714: SpecialCharset() {
715: cat <<-'//End of SpecialCharset'
716: (ru) /underscore
717: ('') /quotedblright % devpost character
718: (``) /quotedblleft % devpost character
719: (dg) /dagger % devpost character
720: (dd) /daggerdbl % devpost character
721: (en) /endash % devpost character
722: (\\-) (") % synonym
723: (em) /emdash
724: % (ff) (60 2 1) % charlib
725: % (Fi) (84 2 1) % charlib
726: % (Fl) (84 2 1) % charlib
727: (14) (75 2 1) % charlib
728: (12) (75 2 1) % charlib
729: (34) (75 2 1) % charlib
730: (bx) (50 2 1) % charlib
731: (ob) (38 2 1) % charlib
732: (ci) (75 0 1) % charlib
733: (sq) (50 2 1) % charlib
734: (Sl) (50 2 1) % charlib
735: (L1) (110 1 2) % charlib
736: (LA) (110 1 2) % charlib
737: (LV) (110 3 1) % charlib
738: (LH) (210 1 1) % charlib
739: (lh) (100 0 1) % charlib
740: (rh) (100 0 1) % charlib
741: (lH) (100 0 1) % charlib
742: (rH) (100 0 1) % charlib
743: (PC) (220 2 1) % charlib
744: (DG) (185 2 1) % charlib
745: //End of SpecialCharset
746: }
747:
748: #
749: # Latin1 ensures a font uses the ISOLatin1Encoding vector, although only
750: # text fonts should be re-encoded. Downloading the Encoding vector doesn't
751: # often make sense. No ISOLatin1Encoding array likely means ROM based fonts
752: # on your printer are incomplete. Type 1 fonts with a full Latin1 character
753: # set appeared sometime after Version 50.0.
754: #
755:
756: Latin1() {
757: if [ "$DOWNLOADVECTOR" = TRUE ]; then
758: cat <<-'//End of ISOLatin1Encoding'
759: /ISOLatin1Encoding [
760: /.notdef
761: /.notdef
762: /.notdef
763: /.notdef
764: /.notdef
765: /.notdef
766: /.notdef
767: /.notdef
768: /.notdef
769: /.notdef
770: /.notdef
771: /.notdef
772: /.notdef
773: /.notdef
774: /.notdef
775: /.notdef
776: /.notdef
777: /.notdef
778: /.notdef
779: /.notdef
780: /.notdef
781: /.notdef
782: /.notdef
783: /.notdef
784: /.notdef
785: /.notdef
786: /.notdef
787: /.notdef
788: /.notdef
789: /.notdef
790: /.notdef
791: /.notdef
792: /space
793: /exclam
794: /quotedbl
795: /numbersign
796: /dollar
797: /percent
798: /ampersand
799: /quoteright
800: /parenleft
801: /parenright
802: /asterisk
803: /plus
804: /comma
805: /minus
806: /period
807: /slash
808: /zero
809: /one
810: /two
811: /three
812: /four
813: /five
814: /six
815: /seven
816: /eight
817: /nine
818: /colon
819: /semicolon
820: /less
821: /equal
822: /greater
823: /question
824: /at
825: /A
826: /B
827: /C
828: /D
829: /E
830: /F
831: /G
832: /H
833: /I
834: /J
835: /K
836: /L
837: /M
838: /N
839: /O
840: /P
841: /Q
842: /R
843: /S
844: /T
845: /U
846: /V
847: /W
848: /X
849: /Y
850: /Z
851: /bracketleft
852: /backslash
853: /bracketright
854: /asciicircum
855: /underscore
856: /quoteleft
857: /a
858: /b
859: /c
860: /d
861: /e
862: /f
863: /g
864: /h
865: /i
866: /j
867: /k
868: /l
869: /m
870: /n
871: /o
872: /p
873: /q
874: /r
875: /s
876: /t
877: /u
878: /v
879: /w
880: /x
881: /y
882: /z
883: /braceleft
884: /bar
885: /braceright
886: /asciitilde
887: /.notdef
888: /.notdef
889: /.notdef
890: /.notdef
891: /.notdef
892: /.notdef
893: /.notdef
894: /.notdef
895: /.notdef
896: /.notdef
897: /.notdef
898: /.notdef
899: /.notdef
900: /.notdef
901: /.notdef
902: /.notdef
903: /.notdef
904: /dotlessi
905: /grave
906: /acute
907: /circumflex
908: /tilde
909: /macron
910: /breve
911: /dotaccent
912: /dieresis
913: /.notdef
914: /ring
915: /cedilla
916: /.notdef
917: /hungarumlaut
918: /ogonek
919: /caron
920: /space
921: /exclamdown
922: /cent
923: /sterling
924: /currency
925: /yen
926: /brokenbar
927: /section
928: /dieresis
929: /copyright
930: /ordfeminine
931: /guillemotleft
932: /logicalnot
933: /hyphen
934: /registered
935: /macron
936: /degree
937: /plusminus
938: /twosuperior
939: /threesuperior
940: /acute
941: /mu
942: /paragraph
943: /periodcentered
944: /cedilla
945: /onesuperior
946: /ordmasculine
947: /guillemotright
948: /onequarter
949: /onehalf
950: /threequarters
951: /questiondown
952: /Agrave
953: /Aacute
954: /Acircumflex
955: /Atilde
956: /Adieresis
957: /Aring
958: /AE
959: /Ccedilla
960: /Egrave
961: /Eacute
962: /Ecircumflex
963: /Edieresis
964: /Igrave
965: /Iacute
966: /Icircumflex
967: /Idieresis
968: /Eth
969: /Ntilde
970: /Ograve
971: /Oacute
972: /Ocircumflex
973: /Otilde
974: /Odieresis
975: /multiply
976: /Oslash
977: /Ugrave
978: /Uacute
979: /Ucircumflex
980: /Udieresis
981: /Yacute
982: /Thorn
983: /germandbls
984: /agrave
985: /aacute
986: /acircumflex
987: /atilde
988: /adieresis
989: /aring
990: /ae
991: /ccedilla
992: /egrave
993: /eacute
994: /ecircumflex
995: /edieresis
996: /igrave
997: /iacute
998: /icircumflex
999: /idieresis
1000: /eth
1001: /ntilde
1002: /ograve
1003: /oacute
1004: /ocircumflex
1005: /otilde
1006: /odieresis
1007: /divide
1008: /oslash
1009: /ugrave
1010: /uacute
1011: /ucircumflex
1012: /udieresis
1013: /yacute
1014: /thorn
1015: /ydieresis
1016: ] def
1017: //End of ISOLatin1Encoding
1018: fi
1019:
1020: echo "ISOLatin1Encoding /$1 ReEncode"
1021: }
1022:
1023: #
1024: # Generating functions output PostScript programs that build font width
1025: # tables or a typesetter description file. Send the program to a printer
1026: # and the complete table will come back on the serial port. All write on
1027: # stdout and assume the prologue and other required PostScript files are
1028: # all available.
1029: #
1030:
1031: Proportional() {
1032: echo "/unitwidth $UNITWIDTH def"
1033: echo "/resolution $RESOLUTION def"
1034: echo "/octalescapes $OCTALESCAPES def"
1035: echo "/charset ["
1036: # Get <>_ and | from S. Use accents for ascii ^ and ~.
1037: StandardCharset | awk '
1038: $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
1039: $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
1040: $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
1041: $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
1042: $1 == "(^)" && $2 == "/asciicircum" {
1043: printf "(^)\t/circumflex\n"
1044: $1 = "(---)"
1045: }
1046: $1 == "(~)" && $2 == "/asciitilde" {
1047: printf "(~)\t/tilde\n"
1048: $1 = "(---)"
1049: }
1050: {printf "%s\t%s\n", $1, $2}
1051: '
1052: echo "] def"
1053:
1054: Latin1 $2
1055: echo "/$2 SelectFont"
1056: echo "(opO) SetAscender"
1057:
1058: echo "(name $1\\\\n) Print"
1059: echo "(fontname $2\\\\n) Print"
1060: echo "/$1 NamedInPrologue"
1061: echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
1062: echo "(charset\\\\n) Print"
1063: echo "BuildFontCharset"
1064: }
1065:
1066: FixedWidth() {
1067: echo "/unitwidth $UNITWIDTH def"
1068: echo "/resolution $RESOLUTION def"
1069: echo "/octalescapes $OCTALESCAPES def"
1070: echo "/charset ["
1071: StandardCharset
1072: echo "] def"
1073:
1074: Latin1 $2
1075: echo "/$2 SelectFont"
1076: echo "(opO) SetAscender"
1077:
1078: echo "(name $1\\\\n) Print"
1079: echo "(fontname $2\\\\n) Print"
1080: echo "/$1 NamedInPrologue"
1081: echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
1082: echo "(charset\\\\n) Print"
1083: echo "BuildFontCharset"
1084: }
1085:
1086: Dingbats() {
1087: echo "/unitwidth $UNITWIDTH def"
1088: echo "/resolution $RESOLUTION def"
1089: echo "/octalescapes $OCTALESCAPES def"
1090: echo "/charset ["
1091: DingbatsCharset | awk '$1 != "(---)" && $2 ~ /^\/[a-zA-Z]/ {
1092: printf "%s\tISOLatin1Encoding %s GetCode\n", $1, $2
1093: }'
1094: echo "] def"
1095:
1096: echo "/$2 SelectFont"
1097: echo "( ) SetAscender"
1098:
1099: echo "(name $1\\\\n) Print"
1100: echo "(fontname $2\\\\n) Print"
1101: echo "/$1 NamedInPrologue"
1102: echo "(charset\\\\n) Print"
1103: echo "BuildFontCharset"
1104: }
1105:
1106: Greek() {
1107: echo "/unitwidth $UNITWIDTH def"
1108: echo "/resolution $RESOLUTION def"
1109: echo "/charset ["
1110: SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
1111: echo "] def"
1112:
1113: echo "/$2 SelectFont"
1114: echo "(orO) SetAscender"
1115:
1116: echo "(name $1\\\\n) Print"
1117: echo "(fontname $2\\\\n) Print"
1118: echo "/$1 NamedInPrologue"
1119: echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
1120: echo "(charset\\\\n) Print"
1121: echo "BuildFontCharset"
1122: }
1123:
1124: Symbol() {
1125: echo "/unitwidth $UNITWIDTH def"
1126: echo "/resolution $RESOLUTION def"
1127: echo "/charset ["
1128: SymbolCharset
1129: echo "] def"
1130:
1131: echo "ChangeMetrics"
1132: echo "/S SelectFont"
1133: echo "(orO) SetAscender"
1134:
1135: echo "(name $1\\\\n) Print"
1136: echo "(fontname $2\\\\n) Print"
1137: echo "/$1 NamedInPrologue"
1138: echo "(special\\\\n) Print"
1139: echo "(charset\\\\n) Print"
1140: echo "BuildFontCharset"
1141: }
1142:
1143: Special() {
1144: echo "/unitwidth $UNITWIDTH def"
1145: echo "/resolution $RESOLUTION def"
1146: echo "/charset ["
1147: SpecialCharset
1148: echo "] def"
1149:
1150: echo "ChangeMetrics"
1151: echo "/S1 SelectFont"
1152:
1153: echo "(# Times-Roman special font\\\\n) Print"
1154: echo "(name $1\\\\n) Print"
1155: echo "(fontname $2\\\\n) Print"
1156: echo "/$1 NamedInPrologue"
1157: echo "(special\\\\n) Print"
1158: echo "(charset\\\\n) Print"
1159: echo "BuildFontCharset"
1160: }
1161:
1162: #
1163: # The DESC file doesn't have to be built on a printer. It's only here for
1164: # consistency.
1165: #
1166:
1167: Description() {
1168: echo "/charset [" # awk - so the stack doesn't overflow
1169: StandardCharset | awk '{print $1}'
1170: SymbolCharset | awk '{print $1}'
1171: SpecialCharset | awk '{print $1}'
1172: echo "] def"
1173:
1174: cat <<-//DESC
1175: (#Device Description - Latin1 character set
1176:
1177: PDL PostScript
1178: Encoding Latin1
1179:
1180: fonts 10 R I B BI CW H HI HB S1 S
1181: sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
1182: 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
1183: 48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
1184: 120 125 130 135 140 145 150 155 160 0
1185: res $RESOLUTION
1186: hor 1
1187: vert 1
1188: unitwidth $UNITWIDTH
1189:
1190: ) Print
1191: //DESC
1192: echo "(charset\\\\n) Print"
1193: echo "BuildDescCharset"
1194: echo "(\\\\n) Print"
1195: }
1196:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.