2 13f7391e 2004-05-15 devnull % Encoding vector, operator and procedure redefinitions for Plan 9 UTF
3 13f7391e 2004-05-15 devnull % encoding. Prologues are expected to take steps to ensure operator
4 13f7391e 2004-05-15 devnull % redefinitions given here are actually used. Current implementation
5 13f7391e 2004-05-15 devnull % assumes UTF byte streams that represent ASCII or Latin1 text.
8 13f7391e 2004-05-15 devnull /UTFLatin1Encoding [
43 13f7391e 2004-05-15 devnull /quotedbl
44 13f7391e 2004-05-15 devnull /numbersign
47 13f7391e 2004-05-15 devnull /ampersand
48 13f7391e 2004-05-15 devnull /quoteright
49 13f7391e 2004-05-15 devnull /parenleft
50 13f7391e 2004-05-15 devnull /parenright
51 13f7391e 2004-05-15 devnull /asterisk
68 13f7391e 2004-05-15 devnull /semicolon
72 13f7391e 2004-05-15 devnull /question
100 13f7391e 2004-05-15 devnull /bracketleft
101 13f7391e 2004-05-15 devnull /backslash
102 13f7391e 2004-05-15 devnull /bracketright
103 13f7391e 2004-05-15 devnull /asciicircum
104 13f7391e 2004-05-15 devnull /underscore
105 13f7391e 2004-05-15 devnull /quoteleft
132 13f7391e 2004-05-15 devnull /braceleft
134 13f7391e 2004-05-15 devnull /braceright
135 13f7391e 2004-05-15 devnull /asciitilde
136 13f7391e 2004-05-15 devnull /.notdef
137 13f7391e 2004-05-15 devnull /.notdef
138 13f7391e 2004-05-15 devnull /.notdef
139 13f7391e 2004-05-15 devnull /.notdef
140 13f7391e 2004-05-15 devnull /.notdef
141 13f7391e 2004-05-15 devnull /.notdef
142 13f7391e 2004-05-15 devnull /.notdef
143 13f7391e 2004-05-15 devnull /.notdef
144 13f7391e 2004-05-15 devnull /.notdef
145 13f7391e 2004-05-15 devnull /.notdef
146 13f7391e 2004-05-15 devnull /.notdef
147 13f7391e 2004-05-15 devnull /.notdef
148 13f7391e 2004-05-15 devnull /.notdef
149 13f7391e 2004-05-15 devnull /.notdef
150 13f7391e 2004-05-15 devnull /.notdef
151 13f7391e 2004-05-15 devnull /.notdef
152 13f7391e 2004-05-15 devnull /.notdef
153 13f7391e 2004-05-15 devnull /dotlessi
156 13f7391e 2004-05-15 devnull /circumflex
160 13f7391e 2004-05-15 devnull /dotaccent
161 13f7391e 2004-05-15 devnull /dieresis
162 13f7391e 2004-05-15 devnull /.notdef
164 13f7391e 2004-05-15 devnull /cedilla
165 13f7391e 2004-05-15 devnull /.notdef
166 13f7391e 2004-05-15 devnull /hungarumlaut
169 13f7391e 2004-05-15 devnull /.notdef % was space
170 13f7391e 2004-05-15 devnull /exclamdown
172 13f7391e 2004-05-15 devnull /sterling
173 13f7391e 2004-05-15 devnull /currency
175 13f7391e 2004-05-15 devnull /brokenbar
176 13f7391e 2004-05-15 devnull /section
177 13f7391e 2004-05-15 devnull /dieresis
178 13f7391e 2004-05-15 devnull /copyright
179 13f7391e 2004-05-15 devnull /ordfeminine
180 13f7391e 2004-05-15 devnull /guillemotleft
181 13f7391e 2004-05-15 devnull /logicalnot
183 13f7391e 2004-05-15 devnull /registered
186 13f7391e 2004-05-15 devnull /plusminus
187 13f7391e 2004-05-15 devnull /twosuperior
188 13f7391e 2004-05-15 devnull /threesuperior
191 13f7391e 2004-05-15 devnull /paragraph
192 13f7391e 2004-05-15 devnull /periodcentered
193 13f7391e 2004-05-15 devnull /cedilla
194 13f7391e 2004-05-15 devnull /onesuperior
195 13f7391e 2004-05-15 devnull /ordmasculine
196 13f7391e 2004-05-15 devnull /guillemotright
197 13f7391e 2004-05-15 devnull /onequarter
198 13f7391e 2004-05-15 devnull /onehalf
199 13f7391e 2004-05-15 devnull /threequarters
200 13f7391e 2004-05-15 devnull /questiondown
203 13f7391e 2004-05-15 devnull /Acircumflex
205 13f7391e 2004-05-15 devnull /Adieresis
208 13f7391e 2004-05-15 devnull /Ccedilla
211 13f7391e 2004-05-15 devnull /Ecircumflex
212 13f7391e 2004-05-15 devnull /Edieresis
215 13f7391e 2004-05-15 devnull /Icircumflex
216 13f7391e 2004-05-15 devnull /Idieresis
221 13f7391e 2004-05-15 devnull /Ocircumflex
223 13f7391e 2004-05-15 devnull /Odieresis
224 13f7391e 2004-05-15 devnull /multiply
228 13f7391e 2004-05-15 devnull /Ucircumflex
229 13f7391e 2004-05-15 devnull /Udieresis
232 13f7391e 2004-05-15 devnull /germandbls
235 13f7391e 2004-05-15 devnull /acircumflex
237 13f7391e 2004-05-15 devnull /adieresis
240 13f7391e 2004-05-15 devnull /ccedilla
243 13f7391e 2004-05-15 devnull /ecircumflex
244 13f7391e 2004-05-15 devnull /edieresis
247 13f7391e 2004-05-15 devnull /icircumflex
248 13f7391e 2004-05-15 devnull /idieresis
253 13f7391e 2004-05-15 devnull /ocircumflex
255 13f7391e 2004-05-15 devnull /odieresis
260 13f7391e 2004-05-15 devnull /ucircumflex
261 13f7391e 2004-05-15 devnull /udieresis
264 13f7391e 2004-05-15 devnull /ydieresis
267 13f7391e 2004-05-15 devnull /NewFontDirectory FontDirectory maxlength dict def
270 13f7391e 2004-05-15 devnull % Apparently no guarantee findfont is defined in systemdict so the obvious
272 13f7391e 2004-05-15 devnull % systemdict /findfont get exec
274 13f7391e 2004-05-15 devnull % can generate an error. So far the only exception is a VT600 (version 48.0).
277 13f7391e 2004-05-15 devnull userdict /@RealFindfont known not {
278 13f7391e 2004-05-15 devnull userdict begin
279 13f7391e 2004-05-15 devnull /@RealFindfont systemdict begin /findfont load end def
283 13f7391e 2004-05-15 devnull /findfont {
284 13f7391e 2004-05-15 devnull dup NewFontDirectory exch known not {
286 13f7391e 2004-05-15 devnull %dup systemdict /findfont get exec % not always in systemdict
287 13f7391e 2004-05-15 devnull dup userdict /@RealFindfont get exec
288 13f7391e 2004-05-15 devnull dup /Encoding get StandardEncoding eq {
289 13f7391e 2004-05-15 devnull dup length 1 add dict begin
290 13f7391e 2004-05-15 devnull {1 index /FID ne {def}{pop pop} ifelse} forall
291 13f7391e 2004-05-15 devnull /Encoding UTFLatin1Encoding def
292 13f7391e 2004-05-15 devnull /Metrics 1 dict def
293 13f7391e 2004-05-15 devnull Metrics /.notdef 0 put
294 13f7391e 2004-05-15 devnull currentdict
296 13f7391e 2004-05-15 devnull /DummyFontName exch definefont
298 13f7391e 2004-05-15 devnull NewFontDirectory 3 1 roll put
300 13f7391e 2004-05-15 devnull NewFontDirectory exch get
301 13f7391e 2004-05-15 devnull } bind def
304 13f7391e 2004-05-15 devnull % Assume A0, except for A0A0 which is replaced by 20A0, can be ignored.
305 13f7391e 2004-05-15 devnull % Works with ASCII or Latin1 because A0 has been re-encoded as a zero
306 13f7391e 2004-05-15 devnull % width non-printing character.
309 13f7391e 2004-05-15 devnull /UTFstring {
311 13f7391e 2004-05-15 devnull (\240\240) search {
313 13f7391e 2004-05-15 devnull 0 16#20 put
314 13f7391e 2004-05-15 devnull }{pop exit} ifelse
316 13f7391e 2004-05-15 devnull } bind def
318 13f7391e 2004-05-15 devnull /ashow {mark 4 1 roll UTFstring //ashow cvx exec cleartomark} bind def
319 13f7391e 2004-05-15 devnull /awidthshow {mark 7 1 roll UTFstring //awidthshow cvx exec cleartomark} bind def
320 13f7391e 2004-05-15 devnull /show {mark exch UTFstring //show cvx exec cleartomark} bind def
321 13f7391e 2004-05-15 devnull /stringwidth {UTFstring //stringwidth cvx exec} bind def
322 13f7391e 2004-05-15 devnull /widthshow {mark 5 1 roll UTFstring //widthshow cvx exec cleartomark} bind def
325 13f7391e 2004-05-15 devnull % kshow is harder - stack can't change because of the procedure.
328 13f7391e 2004-05-15 devnull /kshow dup load type /operatortype eq
329 13f7391e 2004-05-15 devnull {{UTFstring kshow} bind}
330 13f7391e 2004-05-15 devnull {{UTFstring //kshow cvx exec} bind}
331 13f7391e 2004-05-15 devnull ifelse def