Blob


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