1
2
3
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
===============================================================
Design principles of `texnansi.vec':
===============================================================
* Make all 228 glyphs in typical plain vanilla text fonts accessible.
(Avoid need for second copy of font with different encoding)
* Provide access to `extra' f-ligatures (ff, ffi, ffl) and dotlessj
if the font has these.
* Make 58 accented / composite `standard' characters directly accessible
(so don't have to use TeX's \accent mechanism - improved hyphenation)
* Follow ISO Latin 1 in 160 - 255 range --- which matches Windows ANSI.
(And matches Cork T1 encoding for accented characters in 192 - 255)
* Fill in from Windows ANSI in 128 -- 159 range
(which means one can use a Windows editor for the source file)
* Have special characters where plain TeX (OT1) has them hard-wired.
(ae, oe, oslash, AE, OE, Oslash, germandbls)
* Have accents (grave, acute, caron, breve. macron, ring, cedilla,
circumflex, tilde, dieresis) mostly where plain TeX (OT1) has them
hard-wired.
* Follow `TeX typewriter' in 32 -- 127 as much as reasonable
(so verbatim environment works as expected)
* Fortunately, glyphs accessed only via ligature mechanism in TFM can
be anywhere: ff/fi/fl/ffi/ffl
exclamdown/questiondown, quotedblleft/quotedblright, endash/emdash
* Avoid character codes 0, 9, 10, 13, and perhaps 127, since much brain
dead software has trouble with those.
We use `control characters' (0 -- 31 and 127), since we need space for more
than 224 slots, and since we want to match some aspects of `TeX typewriter'.
Overall layout:
0 Avoid since some buggy software uses null-terminated string ops
4 -- 8 `fraction', `dotaccent', `hungarumlaut', `ogonek', `fl'
9 Avoid (tab - which is treated as white space by some software)
10 Avoid - some applications have hard-wired for `newline'
11 -- 12 ff, fi could actually be anywhere (accessed via ligs)
13 Avoid - some applications have hard-wired for `return'
14 -- 15 ffi, ffl could actually be anywhere (accessed via ligs)
16 -- 17 dotlessi/dotlessj \i, \j
18 -- 24 grave/acute/caron/breve/macron/ring/cedilla accents.
Some accents occur again higher up:
(96), 180, *, *, 175, *, 184
25 -- 31 germandbls/ae/oe/oslash/AE/OE/Oslash.
All special characters occur again higher up:
223, 230, 156, 248, 198, 140, 216
32 space. Any sane font should have this! And have it here!
% NO: 34 quotedblright (148) keep: quotedbl
39 quoteright (146) *not* quotesingle
% NO: 60 exclamdown (161) keep: less
% NO: 62 questiondown (191) keep: greater
NOTE: exclamdown and questiondown can go anywhere (via pseudo ligature)
% NO: 92 quotedblleft (147) keep: backslash
NOTE: quotedblleft and quotedblright can go anywhere (via pseudo ligature)
94 circumflex (136) *not* asciicircum
% NO: 95 dotaccent (*) keep: underscore
96 quoteleft (145) *not* grave accent
% NO: 123 endash (150) keep: braceleft
% NO: 124 emdash (151) keep: bar
NOTE: endash/emdash can go anywhere (via pseudo ligature)
% NO: 125 hungarumlaut (*) keep: braceright
126 tilde (152) *not* asciitilde
127 dieresis (168) but use the one in 168 instead
So we have displaced 5 characters (out of 12 possibles) from Windows ANSI:
quotesingle (39), asciicircum (94), asciitilde (126),
underscore (95), grave (96).
but not: quotedbl (34), less (60), greater (62),
but not: backslash (92), bar (124), braceleft (123), braceright (125)
The five above then need to be patched in higher up.
Conversely, we have moved down from Windows ANSI accents and special chars:
grave (96), acute (180), macron (175), cedilla (184),
circumflex (136), tilde (152), dieresis (168),
quoteleft (145), quoteright (146),
germandbls (223), ae (230), oe (156), oslash (248),
AE (198), OE (140), Oslash (216).
but not: quotedblleft (147), quotedblright (148),
but not: exclamdown (161), questiondown (191)
but not: endash (150), emdash (151),
(This opens up some slots higher up that could be filled with other things).
There are eight gaps in Windows ANSI: 128, 129, 141, 142, 143, 144, 157, 158,
we need four for characters displaced from lower down:
quotesingle (39), asciicircum (94), asciitilde (126), grave (96),
Actually, we can omit grave, because it appears at 18 now.
Finally, fill in the gaps, and adding minus, Lslash, lslash, Zcaron, zcaron
128 Lslash
129 quotesingle
141 Zcaron
142 asciicircum
143 minus
144 lslash
157 zcaron
158 asciitilde
The rest (160 and above) is ISO Latin 1 / Windows ANSI
|