pic: use troff drawing commands for filling objects
[troff.git] / home / ps / UTF.enc
blob234764e3439166a3a68062ef6c9224361b84ea92
2 % Encoding vector, operator and procedure redefinitions for Plan 9 UTF
3 % encoding. Prologues are expected to take steps to ensure operator
4 % redefinitions given here are actually used. Current implementation
5 % assumes UTF byte streams that represent ASCII or Latin1 text.
8 /UTFLatin1Encoding [
9         /.notdef
10         /.notdef
11         /.notdef
12         /.notdef
13         /.notdef
14         /.notdef
15         /.notdef
16         /.notdef
17         /.notdef
18         /.notdef
19         /.notdef
20         /.notdef
21         /.notdef
22         /.notdef
23         /.notdef
24         /.notdef
25         /.notdef
26         /.notdef
27         /.notdef
28         /.notdef
29         /.notdef
30         /.notdef
31         /.notdef
32         /.notdef
33         /.notdef
34         /.notdef
35         /.notdef
36         /.notdef
37         /.notdef
38         /.notdef
39         /.notdef
40         /.notdef
41         /space
42         /exclam
43         /quotedbl
44         /numbersign
45         /dollar
46         /percent
47         /ampersand
48         /quoteright
49         /parenleft
50         /parenright
51         /asterisk
52         /plus
53         /comma
54         /minus
55         /period
56         /slash
57         /zero
58         /one
59         /two
60         /three
61         /four
62         /five
63         /six
64         /seven
65         /eight
66         /nine
67         /colon
68         /semicolon
69         /less
70         /equal
71         /greater
72         /question
73         /at
74         /A
75         /B
76         /C
77         /D
78         /E
79         /F
80         /G
81         /H
82         /I
83         /J
84         /K
85         /L
86         /M
87         /N
88         /O
89         /P
90         /Q
91         /R
92         /S
93         /T
94         /U
95         /V
96         /W
97         /X
98         /Y
99         /Z
100         /bracketleft
101         /backslash
102         /bracketright
103         /asciicircum
104         /underscore
105         /quoteleft
106         /a
107         /b
108         /c
109         /d
110         /e
111         /f
112         /g
113         /h
114         /i
115         /j
116         /k
117         /l
118         /m
119         /n
120         /o
121         /p
122         /q
123         /r
124         /s
125         /t
126         /u
127         /v
128         /w
129         /x
130         /y
131         /z
132         /braceleft
133         /bar
134         /braceright
135         /asciitilde
136         /.notdef
137         /.notdef
138         /.notdef
139         /.notdef
140         /.notdef
141         /.notdef
142         /.notdef
143         /.notdef
144         /.notdef
145         /.notdef
146         /.notdef
147         /.notdef
148         /.notdef
149         /.notdef
150         /.notdef
151         /.notdef
152         /.notdef
153         /dotlessi
154         /grave
155         /acute
156         /circumflex
157         /tilde
158         /macron
159         /breve
160         /dotaccent
161         /dieresis
162         /.notdef
163         /ring
164         /cedilla
165         /.notdef
166         /hungarumlaut
167         /ogonek
168         /caron
169         /.notdef                % was space
170         /exclamdown
171         /cent
172         /sterling
173         /currency
174         /yen
175         /brokenbar
176         /section
177         /dieresis
178         /copyright
179         /ordfeminine
180         /guillemotleft
181         /logicalnot
182         /hyphen
183         /registered
184         /macron
185         /degree
186         /plusminus
187         /twosuperior
188         /threesuperior
189         /acute
190         /mu
191         /paragraph
192         /periodcentered
193         /cedilla
194         /onesuperior
195         /ordmasculine
196         /guillemotright
197         /onequarter
198         /onehalf
199         /threequarters
200         /questiondown
201         /Agrave
202         /Aacute
203         /Acircumflex
204         /Atilde
205         /Adieresis
206         /Aring
207         /AE
208         /Ccedilla
209         /Egrave
210         /Eacute
211         /Ecircumflex
212         /Edieresis
213         /Igrave
214         /Iacute
215         /Icircumflex
216         /Idieresis
217         /Eth
218         /Ntilde
219         /Ograve
220         /Oacute
221         /Ocircumflex
222         /Otilde
223         /Odieresis
224         /multiply
225         /Oslash
226         /Ugrave
227         /Uacute
228         /Ucircumflex
229         /Udieresis
230         /Yacute
231         /Thorn
232         /germandbls
233         /agrave
234         /aacute
235         /acircumflex
236         /atilde
237         /adieresis
238         /aring
239         /ae
240         /ccedilla
241         /egrave
242         /eacute
243         /ecircumflex
244         /edieresis
245         /igrave
246         /iacute
247         /icircumflex
248         /idieresis
249         /eth
250         /ntilde
251         /ograve
252         /oacute
253         /ocircumflex
254         /otilde
255         /odieresis
256         /divide
257         /oslash
258         /ugrave
259         /uacute
260         /ucircumflex
261         /udieresis
262         /yacute
263         /thorn
264         /ydieresis
265 ] def
267 /NewFontDirectory FontDirectory maxlength dict def
270 % Apparently no guarantee findfont is defined in systemdict so the obvious
272 %       systemdict /findfont get exec
274 % can generate an error. So far the only exception is a VT600 (version 48.0).
277 userdict /@RealFindfont known not {
278         userdict begin
279                 /@RealFindfont systemdict begin /findfont load end def
280         end
281 } if
283 /findfont {
284         dup NewFontDirectory exch known not {
285                 dup
286                 %dup systemdict /findfont get exec      % not always in systemdict
287                 dup userdict /@RealFindfont get exec
288                 dup /Encoding get StandardEncoding eq {
289                         dup length 1 add dict begin
290                                 {1 index /FID ne {def}{pop pop} ifelse} forall
291                                 /Encoding UTFLatin1Encoding def
292                                 /Metrics 1 dict def
293                                 Metrics /.notdef 0 put
294                                 currentdict
295                         end
296                         /DummyFontName exch definefont
297                 } if
298                 NewFontDirectory 3 1 roll put
299         } if
300         NewFontDirectory exch get
301 } bind def
304 % Assume A0, except for A0A0 which is replaced by 20A0, can be ignored.
305 % Works with ASCII or Latin1 because A0 has been re-encoded as a zero
306 % width non-printing character. 
309 /UTFstring {
310         dup {
311                 (\240\240) search {
312                         pop
313                         0 16#20 put
314                 }{pop exit} ifelse
315         } loop
316 } bind def
318 /ashow {mark 4 1 roll UTFstring //ashow cvx exec cleartomark} bind def
319 /awidthshow {mark 7 1 roll UTFstring //awidthshow cvx exec cleartomark} bind def
320 /show {mark exch UTFstring //show cvx exec cleartomark} bind def
321 /stringwidth {UTFstring //stringwidth cvx exec} bind def
322 /widthshow {mark 5 1 roll UTFstring //widthshow cvx exec cleartomark} bind def
325 % kshow is harder - stack can't change because of the procedure.
328 /kshow dup load type /operatortype eq
329         {{UTFstring kshow} bind}
330         {{UTFstring //kshow cvx exec} bind}
331 ifelse def