Blame


1 08708877 2003-11-25 devnull #include <u.h>
2 08708877 2003-11-25 devnull #include <libc.h>
3 08708877 2003-11-25 devnull #include <bio.h>
4 08708877 2003-11-25 devnull #include "dict.h"
5 08708877 2003-11-25 devnull
6 08708877 2003-11-25 devnull enum {
7 08708877 2003-11-25 devnull Buflen=1000,
8 cbeb0b26 2006-04-01 devnull Maxaux=5
9 08708877 2003-11-25 devnull };
10 08708877 2003-11-25 devnull
11 08708877 2003-11-25 devnull /* Possible tags */
12 08708877 2003-11-25 devnull enum {
13 08708877 2003-11-25 devnull A, /* author in quote (small caps) */
14 08708877 2003-11-25 devnull B, /* bold */
15 08708877 2003-11-25 devnull Ba, /* author inside bib */
16 08708877 2003-11-25 devnull Bch, /* builtup chem component */
17 08708877 2003-11-25 devnull Bib, /* surrounds word 'in' for bibliographic ref */
18 08708877 2003-11-25 devnull Bl, /* bold */
19 08708877 2003-11-25 devnull Bo, /* bond over */
20 08708877 2003-11-25 devnull Bu, /* bond under */
21 08708877 2003-11-25 devnull Cb, /* ? block of stuff (indent) */
22 08708877 2003-11-25 devnull Cf, /* cross ref to another entry (italics) */
23 08708877 2003-11-25 devnull Chem, /* chemistry formula */
24 08708877 2003-11-25 devnull Co, /* over (preceding sum, integral, etc.) */
25 08708877 2003-11-25 devnull Col, /* column of table (aux just may be r) */
26 08708877 2003-11-25 devnull Cu, /* under (preceding sum, integral, etc.) */
27 08708877 2003-11-25 devnull Dat, /* date */
28 08708877 2003-11-25 devnull Db, /* def block? indent */
29 08708877 2003-11-25 devnull Dn, /* denominator of fraction */
30 08708877 2003-11-25 devnull E, /* main entry */
31 08708877 2003-11-25 devnull Ed, /* editor's comments (in [...]) */
32 08708877 2003-11-25 devnull Etym, /* etymology (in [...]) */
33 08708877 2003-11-25 devnull Fq, /* frequency count (superscript) */
34 08708877 2003-11-25 devnull Form, /* formula */
35 08708877 2003-11-25 devnull Fr, /* fraction (contains <nu>, then <dn>) */
36 08708877 2003-11-25 devnull Gk, /* greek (transliteration) */
37 08708877 2003-11-25 devnull Gr, /* grammar? (e.g., around 'pa.' in 'pa. pple.') */
38 08708877 2003-11-25 devnull Hg, /* headword group */
39 08708877 2003-11-25 devnull Hm, /* homonym (superscript) */
40 08708877 2003-11-25 devnull Hw, /* headword (bold) */
41 08708877 2003-11-25 devnull I, /* italics */
42 08708877 2003-11-25 devnull Il, /* italic list? */
43 08708877 2003-11-25 devnull In, /* inferior (subscript) */
44 08708877 2003-11-25 devnull L, /* row of col of table */
45 08708877 2003-11-25 devnull La, /* status or usage label (italic) */
46 08708877 2003-11-25 devnull Lc, /* chapter/verse sort of thing for works */
47 08708877 2003-11-25 devnull N, /* note (smaller type) */
48 08708877 2003-11-25 devnull Nu, /* numerator of fraction */
49 08708877 2003-11-25 devnull Ov, /* needs overline */
50 08708877 2003-11-25 devnull P, /* paragraph (indent) */
51 08708877 2003-11-25 devnull Ph, /* pronunciation (transliteration) */
52 08708877 2003-11-25 devnull Pi, /* pile (frac without line) */
53 08708877 2003-11-25 devnull Pqp, /* subblock of quote */
54 08708877 2003-11-25 devnull Pr, /* pronunciation (in (...)) */
55 08708877 2003-11-25 devnull Ps, /* position (e.g., adv.) (italic) */
56 08708877 2003-11-25 devnull Pt, /* part (in lc) */
57 08708877 2003-11-25 devnull Q, /* quote in quote block */
58 08708877 2003-11-25 devnull Qd, /* quote date (bold) */
59 08708877 2003-11-25 devnull Qig, /* quote number (greek) */
60 08708877 2003-11-25 devnull Qla, /* status or usage label in quote (italic) */
61 08708877 2003-11-25 devnull Qp, /* quote block (small type, indent) */
62 08708877 2003-11-25 devnull Qsn, /* quote number */
63 08708877 2003-11-25 devnull Qt, /* quote words */
64 08708877 2003-11-25 devnull R, /* roman type style */
65 08708877 2003-11-25 devnull Rx, /* relative cross reference (e.g., next) */
66 08708877 2003-11-25 devnull S, /* another form? (italic) */
67 08708877 2003-11-25 devnull S0, /* sense (sometimes surrounds several sx's) */
68 08708877 2003-11-25 devnull S1, /* sense (aux num: indented bold letter) */
69 08708877 2003-11-25 devnull S2, /* sense (aux num: indented bold capital rom num) */
70 08708877 2003-11-25 devnull S3, /* sense (aux num: indented number of asterisks) */
71 08708877 2003-11-25 devnull S4, /* sense (aux num: indented bold number) */
72 08708877 2003-11-25 devnull S5, /* sense (aux num: indented number of asterisks) */
73 08708877 2003-11-25 devnull S6, /* subsense (aux num: bold letter) */
74 08708877 2003-11-25 devnull S7a, /* subsense (aux num: letter) */
75 08708877 2003-11-25 devnull S7n, /* subsense (aux num: roman numeral) */
76 08708877 2003-11-25 devnull Sc, /* small caps */
77 08708877 2003-11-25 devnull Sgk, /* subsense (aux num: transliterated greek) */
78 08708877 2003-11-25 devnull Sn, /* sense of subdefinition (aux num: roman letter) */
79 08708877 2003-11-25 devnull Ss, /* sans serif */
80 08708877 2003-11-25 devnull Ssb, /* sans serif bold */
81 08708877 2003-11-25 devnull Ssi, /* sans serif italic */
82 08708877 2003-11-25 devnull Su, /* superior (superscript) */
83 08708877 2003-11-25 devnull Sub, /* subdefinition */
84 08708877 2003-11-25 devnull Table, /* table (aux cols=number of columns) */
85 08708877 2003-11-25 devnull Tt, /* title? (italics) */
86 08708877 2003-11-25 devnull Vd, /* numeric label for variant form */
87 08708877 2003-11-25 devnull Ve, /* variant entry */
88 08708877 2003-11-25 devnull Vf, /* variant form (light bold) */
89 08708877 2003-11-25 devnull Vfl, /* list of vf's (starts with Also or Forms) */
90 08708877 2003-11-25 devnull W, /* work (e.g., Beowulf) (italics) */
91 08708877 2003-11-25 devnull X, /* cross reference to main word (small caps) */
92 08708877 2003-11-25 devnull Xd, /* cross reference to quotation by date */
93 08708877 2003-11-25 devnull Xi, /* internal cross reference ? (italic) */
94 08708877 2003-11-25 devnull Xid, /* cross reference identifer, in quote ? */
95 08708877 2003-11-25 devnull Xs, /* cross reference sense (lower number) */
96 08708877 2003-11-25 devnull Xr, /* list of x's */
97 08708877 2003-11-25 devnull Ntag /* end of tags */
98 08708877 2003-11-25 devnull };
99 08708877 2003-11-25 devnull
100 08708877 2003-11-25 devnull /* Assoc tables must be sorted on first field */
101 08708877 2003-11-25 devnull
102 08708877 2003-11-25 devnull static Assoc tagtab[] = {
103 08708877 2003-11-25 devnull {"a", A},
104 08708877 2003-11-25 devnull {"b", B},
105 08708877 2003-11-25 devnull {"ba", Ba},
106 08708877 2003-11-25 devnull {"bch", Bch},
107 08708877 2003-11-25 devnull {"bib", Bib},
108 08708877 2003-11-25 devnull {"bl", Bl},
109 08708877 2003-11-25 devnull {"bo", Bo},
110 08708877 2003-11-25 devnull {"bu", Bu},
111 08708877 2003-11-25 devnull {"cb", Cb},
112 08708877 2003-11-25 devnull {"cf", Cf},
113 08708877 2003-11-25 devnull {"chem", Chem},
114 08708877 2003-11-25 devnull {"co", Co},
115 08708877 2003-11-25 devnull {"col", Col},
116 08708877 2003-11-25 devnull {"cu", Cu},
117 08708877 2003-11-25 devnull {"dat", Dat},
118 08708877 2003-11-25 devnull {"db", Db},
119 08708877 2003-11-25 devnull {"dn", Dn},
120 08708877 2003-11-25 devnull {"e", E},
121 08708877 2003-11-25 devnull {"ed", Ed},
122 08708877 2003-11-25 devnull {"et", Etym},
123 08708877 2003-11-25 devnull {"etym", Etym},
124 08708877 2003-11-25 devnull {"form", Form},
125 08708877 2003-11-25 devnull {"fq", Fq},
126 08708877 2003-11-25 devnull {"fr", Fr},
127 08708877 2003-11-25 devnull {"frac", Fr},
128 08708877 2003-11-25 devnull {"gk", Gk},
129 08708877 2003-11-25 devnull {"gr", Gr},
130 08708877 2003-11-25 devnull {"hg", Hg},
131 08708877 2003-11-25 devnull {"hm", Hm},
132 08708877 2003-11-25 devnull {"hw", Hw},
133 08708877 2003-11-25 devnull {"i", I},
134 08708877 2003-11-25 devnull {"il", Il},
135 08708877 2003-11-25 devnull {"in", In},
136 08708877 2003-11-25 devnull {"l", L},
137 08708877 2003-11-25 devnull {"la", La},
138 08708877 2003-11-25 devnull {"lc", Lc},
139 08708877 2003-11-25 devnull {"n", N},
140 08708877 2003-11-25 devnull {"nu", Nu},
141 08708877 2003-11-25 devnull {"ov", Ov},
142 08708877 2003-11-25 devnull {"p", P},
143 08708877 2003-11-25 devnull {"ph", Ph},
144 08708877 2003-11-25 devnull {"pi", Pi},
145 08708877 2003-11-25 devnull {"pqp", Pqp},
146 08708877 2003-11-25 devnull {"pr", Pr},
147 08708877 2003-11-25 devnull {"ps", Ps},
148 08708877 2003-11-25 devnull {"pt", Pt},
149 08708877 2003-11-25 devnull {"q", Q},
150 08708877 2003-11-25 devnull {"qd", Qd},
151 08708877 2003-11-25 devnull {"qig", Qig},
152 08708877 2003-11-25 devnull {"qla", Qla},
153 08708877 2003-11-25 devnull {"qp", Qp},
154 08708877 2003-11-25 devnull {"qsn", Qsn},
155 08708877 2003-11-25 devnull {"qt", Qt},
156 08708877 2003-11-25 devnull {"r", R},
157 08708877 2003-11-25 devnull {"rx", Rx},
158 08708877 2003-11-25 devnull {"s", S},
159 08708877 2003-11-25 devnull {"s0", S0},
160 08708877 2003-11-25 devnull {"s1", S1},
161 08708877 2003-11-25 devnull {"s2", S2},
162 08708877 2003-11-25 devnull {"s3", S3},
163 08708877 2003-11-25 devnull {"s4", S4},
164 08708877 2003-11-25 devnull {"s5", S5},
165 08708877 2003-11-25 devnull {"s6", S6},
166 08708877 2003-11-25 devnull {"s7a", S7a},
167 08708877 2003-11-25 devnull {"s7n", S7n},
168 08708877 2003-11-25 devnull {"sc", Sc},
169 08708877 2003-11-25 devnull {"sgk", Sgk},
170 08708877 2003-11-25 devnull {"sn", Sn},
171 08708877 2003-11-25 devnull {"ss", Ss,},
172 08708877 2003-11-25 devnull {"ssb", Ssb},
173 08708877 2003-11-25 devnull {"ssi", Ssi},
174 08708877 2003-11-25 devnull {"su", Su},
175 08708877 2003-11-25 devnull {"sub", Sub},
176 08708877 2003-11-25 devnull {"table", Table},
177 08708877 2003-11-25 devnull {"tt", Tt},
178 08708877 2003-11-25 devnull {"vd", Vd},
179 08708877 2003-11-25 devnull {"ve", Ve},
180 08708877 2003-11-25 devnull {"vf", Vf},
181 08708877 2003-11-25 devnull {"vfl", Vfl},
182 08708877 2003-11-25 devnull {"w", W},
183 08708877 2003-11-25 devnull {"x", X},
184 08708877 2003-11-25 devnull {"xd", Xd},
185 08708877 2003-11-25 devnull {"xi", Xi},
186 08708877 2003-11-25 devnull {"xid", Xid},
187 08708877 2003-11-25 devnull {"xr", Xr},
188 cbeb0b26 2006-04-01 devnull {"xs", Xs}
189 08708877 2003-11-25 devnull };
190 08708877 2003-11-25 devnull
191 08708877 2003-11-25 devnull /* Possible tag auxilliary info */
192 08708877 2003-11-25 devnull enum {
193 08708877 2003-11-25 devnull Cols, /* number of columns in a table */
194 08708877 2003-11-25 devnull Num, /* letter or number, for a sense */
195 08708877 2003-11-25 devnull St, /* status (e.g., obs) */
196 08708877 2003-11-25 devnull Naux
197 08708877 2003-11-25 devnull };
198 08708877 2003-11-25 devnull
199 08708877 2003-11-25 devnull static Assoc auxtab[] = {
200 08708877 2003-11-25 devnull {"cols", Cols},
201 08708877 2003-11-25 devnull {"num", Num},
202 08708877 2003-11-25 devnull {"st", St}
203 08708877 2003-11-25 devnull };
204 08708877 2003-11-25 devnull
205 08708877 2003-11-25 devnull static Assoc spectab[] = {
206 08708877 2003-11-25 devnull {"3on4", 0xbe},
207 08708877 2003-11-25 devnull {"Aacu", 0xc1},
208 08708877 2003-11-25 devnull {"Aang", 0xc5},
209 08708877 2003-11-25 devnull {"Abarab", 0x100},
210 08708877 2003-11-25 devnull {"Acirc", 0xc2},
211 08708877 2003-11-25 devnull {"Ae", 0xc6},
212 08708877 2003-11-25 devnull {"Agrave", 0xc0},
213 08708877 2003-11-25 devnull {"Alpha", 0x391},
214 08708877 2003-11-25 devnull {"Amac", 0x100},
215 08708877 2003-11-25 devnull {"Asg", 0x1b7}, /* Unicyle. Cf "Sake" */
216 08708877 2003-11-25 devnull {"Auml", 0xc4},
217 08708877 2003-11-25 devnull {"Beta", 0x392},
218 08708877 2003-11-25 devnull {"Cced", 0xc7},
219 08708877 2003-11-25 devnull {"Chacek", 0x10c},
220 08708877 2003-11-25 devnull {"Chi", 0x3a7},
221 08708877 2003-11-25 devnull {"Chirho", 0x2627}, /* Chi Rho U+2627 */
222 08708877 2003-11-25 devnull {"Csigma", 0x3da},
223 08708877 2003-11-25 devnull {"Delta", 0x394},
224 08708877 2003-11-25 devnull {"Eacu", 0xc9},
225 08708877 2003-11-25 devnull {"Ecirc", 0xca},
226 08708877 2003-11-25 devnull {"Edh", 0xd0},
227 08708877 2003-11-25 devnull {"Epsilon", 0x395},
228 08708877 2003-11-25 devnull {"Eta", 0x397},
229 08708877 2003-11-25 devnull {"Gamma", 0x393},
230 08708877 2003-11-25 devnull {"Iacu", 0xcd},
231 08708877 2003-11-25 devnull {"Icirc", 0xce},
232 08708877 2003-11-25 devnull {"Imac", 0x12a},
233 08708877 2003-11-25 devnull {"Integ", 0x222b},
234 08708877 2003-11-25 devnull {"Iota", 0x399},
235 08708877 2003-11-25 devnull {"Kappa", 0x39a},
236 08708877 2003-11-25 devnull {"Koppa", 0x3de},
237 08708877 2003-11-25 devnull {"Lambda", 0x39b},
238 08708877 2003-11-25 devnull {"Lbar", 0x141},
239 08708877 2003-11-25 devnull {"Mu", 0x39c},
240 08708877 2003-11-25 devnull {"Naira", 0x4e}, /* should have bar through */
241 08708877 2003-11-25 devnull {"Nplus", 0x4e}, /* should have plus above */
242 08708877 2003-11-25 devnull {"Ntilde", 0xd1},
243 08708877 2003-11-25 devnull {"Nu", 0x39d},
244 08708877 2003-11-25 devnull {"Oacu", 0xd3},
245 08708877 2003-11-25 devnull {"Obar", 0xd8},
246 08708877 2003-11-25 devnull {"Ocirc", 0xd4},
247 08708877 2003-11-25 devnull {"Oe", 0x152},
248 08708877 2003-11-25 devnull {"Omega", 0x3a9},
249 08708877 2003-11-25 devnull {"Omicron", 0x39f},
250 08708877 2003-11-25 devnull {"Ouml", 0xd6},
251 08708877 2003-11-25 devnull {"Phi", 0x3a6},
252 08708877 2003-11-25 devnull {"Pi", 0x3a0},
253 08708877 2003-11-25 devnull {"Psi", 0x3a8},
254 08708877 2003-11-25 devnull {"Rho", 0x3a1},
255 08708877 2003-11-25 devnull {"Sacu", 0x15a},
256 08708877 2003-11-25 devnull {"Sigma", 0x3a3},
257 08708877 2003-11-25 devnull {"Summ", 0x2211},
258 08708877 2003-11-25 devnull {"Tau", 0x3a4},
259 08708877 2003-11-25 devnull {"Th", 0xde},
260 08708877 2003-11-25 devnull {"Theta", 0x398},
261 08708877 2003-11-25 devnull {"Tse", 0x426},
262 08708877 2003-11-25 devnull {"Uacu", 0xda},
263 08708877 2003-11-25 devnull {"Ucirc", 0xdb},
264 08708877 2003-11-25 devnull {"Upsilon", 0x3a5},
265 08708877 2003-11-25 devnull {"Uuml", 0xdc},
266 08708877 2003-11-25 devnull {"Wyn", 0x1bf}, /* wynn U+01BF */
267 08708877 2003-11-25 devnull {"Xi", 0x39e},
268 08708877 2003-11-25 devnull {"Ygh", 0x1b7}, /* Yogh U+01B7 */
269 08708877 2003-11-25 devnull {"Zeta", 0x396},
270 08708877 2003-11-25 devnull {"Zh", 0x1b7}, /* looks like Yogh. Cf "Sake" */
271 08708877 2003-11-25 devnull {"a", 0x61}, /* ante */
272 08708877 2003-11-25 devnull {"aacu", 0xe1},
273 08708877 2003-11-25 devnull {"aang", 0xe5},
274 08708877 2003-11-25 devnull {"aasper", MAAS},
275 08708877 2003-11-25 devnull {"abreve", 0x103},
276 08708877 2003-11-25 devnull {"acirc", 0xe2},
277 08708877 2003-11-25 devnull {"acu", LACU},
278 08708877 2003-11-25 devnull {"ae", 0xe6},
279 08708877 2003-11-25 devnull {"agrave", 0xe0},
280 08708877 2003-11-25 devnull {"ahook", 0x105},
281 08708877 2003-11-25 devnull {"alenis", MALN},
282 08708877 2003-11-25 devnull {"alpha", 0x3b1},
283 08708877 2003-11-25 devnull {"amac", 0x101},
284 08708877 2003-11-25 devnull {"amp", 0x26},
285 08708877 2003-11-25 devnull {"and", MAND},
286 08708877 2003-11-25 devnull {"ang", LRNG},
287 08708877 2003-11-25 devnull {"angle", 0x2220},
288 08708877 2003-11-25 devnull {"ankh", 0x2625}, /* ankh U+2625 */
289 08708877 2003-11-25 devnull {"ante", 0x61}, /* before (year) */
290 08708877 2003-11-25 devnull {"aonq", MAOQ},
291 08708877 2003-11-25 devnull {"appreq", 0x2243},
292 08708877 2003-11-25 devnull {"aquar", 0x2652},
293 08708877 2003-11-25 devnull {"arDadfull", 0x636}, /* Dad U+0636 */
294 08708877 2003-11-25 devnull {"arHa", 0x62d}, /* haa U+062D */
295 08708877 2003-11-25 devnull {"arTa", 0x62a}, /* taa U+062A */
296 08708877 2003-11-25 devnull {"arain", 0x639}, /* ain U+0639 */
297 08708877 2003-11-25 devnull {"arainfull", 0x639}, /* ain U+0639 */
298 08708877 2003-11-25 devnull {"aralif", 0x627}, /* alef U+0627 */
299 08708877 2003-11-25 devnull {"arba", 0x628}, /* baa U+0628 */
300 08708877 2003-11-25 devnull {"arha", 0x647}, /* ha U+0647 */
301 08708877 2003-11-25 devnull {"aries", 0x2648},
302 08708877 2003-11-25 devnull {"arnun", 0x646}, /* noon U+0646 */
303 08708877 2003-11-25 devnull {"arnunfull", 0x646}, /* noon U+0646 */
304 08708877 2003-11-25 devnull {"arpa", 0x647}, /* ha U+0647 */
305 08708877 2003-11-25 devnull {"arqoph", 0x642}, /* qaf U+0642 */
306 08708877 2003-11-25 devnull {"arshinfull", 0x634}, /* sheen U+0634 */
307 08708877 2003-11-25 devnull {"arta", 0x62a}, /* taa U+062A */
308 08708877 2003-11-25 devnull {"artafull", 0x62a}, /* taa U+062A */
309 08708877 2003-11-25 devnull {"artha", 0x62b}, /* thaa U+062B */
310 08708877 2003-11-25 devnull {"arwaw", 0x648}, /* waw U+0648 */
311 08708877 2003-11-25 devnull {"arya", 0x64a}, /* ya U+064A */
312 08708877 2003-11-25 devnull {"aryafull", 0x64a}, /* ya U+064A */
313 08708877 2003-11-25 devnull {"arzero", 0x660}, /* indic zero U+0660 */
314 08708877 2003-11-25 devnull {"asg", 0x292}, /* unicycle character. Cf "hallow" */
315 08708877 2003-11-25 devnull {"asper", LASP},
316 08708877 2003-11-25 devnull {"assert", 0x22a2},
317 08708877 2003-11-25 devnull {"astm", 0x2042}, /* asterism: should be upside down */
318 08708877 2003-11-25 devnull {"at", 0x40},
319 08708877 2003-11-25 devnull {"atilde", 0xe3},
320 08708877 2003-11-25 devnull {"auml", 0xe4},
321 08708877 2003-11-25 devnull {"ayin", 0x639}, /* arabic ain U+0639 */
322 08708877 2003-11-25 devnull {"b1", 0x2d}, /* single bond */
323 08708877 2003-11-25 devnull {"b2", 0x3d}, /* double bond */
324 08708877 2003-11-25 devnull {"b3", 0x2261}, /* triple bond */
325 08708877 2003-11-25 devnull {"bbar", 0x180}, /* b with bar U+0180 */
326 08708877 2003-11-25 devnull {"beta", 0x3b2},
327 08708877 2003-11-25 devnull {"bigobl", 0x2f},
328 08708877 2003-11-25 devnull {"blC", 0x43}, /* should be black letter */
329 08708877 2003-11-25 devnull {"blJ", 0x4a}, /* should be black letter */
330 08708877 2003-11-25 devnull {"blU", 0x55}, /* should be black letter */
331 08708877 2003-11-25 devnull {"blb", 0x62}, /* should be black letter */
332 08708877 2003-11-25 devnull {"blozenge", 0x25ca}, /* U+25CA; should be black */
333 08708877 2003-11-25 devnull {"bly", 0x79}, /* should be black letter */
334 08708877 2003-11-25 devnull {"bra", MBRA},
335 08708877 2003-11-25 devnull {"brbl", LBRB},
336 08708877 2003-11-25 devnull {"breve", LBRV},
337 e2d62fb9 2005-07-13 devnull {"bslash", '\\'},
338 08708877 2003-11-25 devnull {"bsquare", 0x25a0}, /* black square U+25A0 */
339 08708877 2003-11-25 devnull {"btril", 0x25c0}, /* U+25C0 */
340 08708877 2003-11-25 devnull {"btrir", 0x25b6}, /* U+25B6 */
341 08708877 2003-11-25 devnull {"c", 0x63}, /* circa */
342 08708877 2003-11-25 devnull {"cab", 0x232a},
343 08708877 2003-11-25 devnull {"cacu", 0x107},
344 08708877 2003-11-25 devnull {"canc", 0x264b},
345 08708877 2003-11-25 devnull {"capr", 0x2651},
346 08708877 2003-11-25 devnull {"caret", 0x5e},
347 08708877 2003-11-25 devnull {"cb", 0x7d},
348 08708877 2003-11-25 devnull {"cbigb", 0x7d},
349 08708877 2003-11-25 devnull {"cbigpren", 0x29},
350 08708877 2003-11-25 devnull {"cbigsb", 0x5d},
351 08708877 2003-11-25 devnull {"cced", 0xe7},
352 08708877 2003-11-25 devnull {"cdil", LCED},
353 08708877 2003-11-25 devnull {"cdsb", 0x301b}, /* ]] U+301b */
354 08708877 2003-11-25 devnull {"cent", 0xa2},
355 08708877 2003-11-25 devnull {"chacek", 0x10d},
356 08708877 2003-11-25 devnull {"chi", 0x3c7},
357 08708877 2003-11-25 devnull {"circ", LRNG},
358 08708877 2003-11-25 devnull {"circa", 0x63}, /* about (year) */
359 08708877 2003-11-25 devnull {"circbl", 0x325}, /* ring below accent U+0325 */
360 08708877 2003-11-25 devnull {"circle", 0x25cb}, /* U+25CB */
361 08708877 2003-11-25 devnull {"circledot", 0x2299},
362 08708877 2003-11-25 devnull {"click", 0x296},
363 08708877 2003-11-25 devnull {"club", 0x2663},
364 08708877 2003-11-25 devnull {"comtime", 0x43},
365 08708877 2003-11-25 devnull {"conj", 0x260c},
366 08708877 2003-11-25 devnull {"cprt", 0xa9},
367 08708877 2003-11-25 devnull {"cq", '\''},
368 08708877 2003-11-25 devnull {"cqq", 0x201d},
369 08708877 2003-11-25 devnull {"cross", 0x2720}, /* maltese cross U+2720 */
370 08708877 2003-11-25 devnull {"crotchet", 0x2669},
371 08708877 2003-11-25 devnull {"csb", 0x5d},
372 08708877 2003-11-25 devnull {"ctilde", 0x63}, /* +tilde */
373 08708877 2003-11-25 devnull {"ctlig", MLCT},
374 08708877 2003-11-25 devnull {"cyra", 0x430},
375 08708877 2003-11-25 devnull {"cyre", 0x435},
376 08708877 2003-11-25 devnull {"cyrhard", 0x44a},
377 08708877 2003-11-25 devnull {"cyrjat", 0x463},
378 08708877 2003-11-25 devnull {"cyrm", 0x43c},
379 08708877 2003-11-25 devnull {"cyrn", 0x43d},
380 08708877 2003-11-25 devnull {"cyrr", 0x440},
381 08708877 2003-11-25 devnull {"cyrsoft", 0x44c},
382 08708877 2003-11-25 devnull {"cyrt", 0x442},
383 08708877 2003-11-25 devnull {"cyry", 0x44b},
384 08708877 2003-11-25 devnull {"dag", 0x2020},
385 08708877 2003-11-25 devnull {"dbar", 0x111},
386 08708877 2003-11-25 devnull {"dblar", 0x21cb},
387 08708877 2003-11-25 devnull {"dblgt", 0x226b},
388 08708877 2003-11-25 devnull {"dbllt", 0x226a},
389 08708877 2003-11-25 devnull {"dced", 0x64}, /* +cedilla */
390 08708877 2003-11-25 devnull {"dd", MDD},
391 08708877 2003-11-25 devnull {"ddag", 0x2021},
392 08708877 2003-11-25 devnull {"ddd", MDDD},
393 08708877 2003-11-25 devnull {"decr", 0x2193},
394 08708877 2003-11-25 devnull {"deg", 0xb0},
395 08708877 2003-11-25 devnull {"dele", 0x64}, /* should be dele */
396 08708877 2003-11-25 devnull {"delta", 0x3b4},
397 08708877 2003-11-25 devnull {"descnode", 0x260b}, /* descending node U+260B */
398 08708877 2003-11-25 devnull {"diamond", 0x2662},
399 08708877 2003-11-25 devnull {"digamma", 0x3dd},
400 08708877 2003-11-25 devnull {"div", 0xf7},
401 08708877 2003-11-25 devnull {"dlessi", 0x131},
402 08708877 2003-11-25 devnull {"dlessj1", 0x6a}, /* should be dotless */
403 08708877 2003-11-25 devnull {"dlessj2", 0x6a}, /* should be dotless */
404 08708877 2003-11-25 devnull {"dlessj3", 0x6a}, /* should be dotless */
405 08708877 2003-11-25 devnull {"dollar", 0x24},
406 08708877 2003-11-25 devnull {"dotab", LDOT},
407 08708877 2003-11-25 devnull {"dotbl", LDTB},
408 08708877 2003-11-25 devnull {"drachm", 0x292},
409 08708877 2003-11-25 devnull {"dubh", 0x2d},
410 08708877 2003-11-25 devnull {"eacu", 0xe9},
411 08708877 2003-11-25 devnull {"earth", 0x2641},
412 08708877 2003-11-25 devnull {"easper", MEAS},
413 08708877 2003-11-25 devnull {"ebreve", 0x115},
414 08708877 2003-11-25 devnull {"ecirc", 0xea},
415 08708877 2003-11-25 devnull {"edh", 0xf0},
416 08708877 2003-11-25 devnull {"egrave", 0xe8},
417 08708877 2003-11-25 devnull {"ehacek", 0x11b},
418 08708877 2003-11-25 devnull {"ehook", 0x119},
419 08708877 2003-11-25 devnull {"elem", 0x220a},
420 08708877 2003-11-25 devnull {"elenis", MELN},
421 08708877 2003-11-25 devnull {"em", 0x2014},
422 08708877 2003-11-25 devnull {"emac", 0x113},
423 08708877 2003-11-25 devnull {"emem", MEMM},
424 08708877 2003-11-25 devnull {"en", 0x2013},
425 08708877 2003-11-25 devnull {"epsilon", 0x3b5},
426 08708877 2003-11-25 devnull {"equil", 0x21cb},
427 08708877 2003-11-25 devnull {"ergo", 0x2234},
428 08708877 2003-11-25 devnull {"es", MES},
429 08708877 2003-11-25 devnull {"eszett", 0xdf},
430 08708877 2003-11-25 devnull {"eta", 0x3b7},
431 08708877 2003-11-25 devnull {"eth", 0xf0},
432 08708877 2003-11-25 devnull {"euml", 0xeb},
433 08708877 2003-11-25 devnull {"expon", 0x2191},
434 08708877 2003-11-25 devnull {"fact", 0x21},
435 08708877 2003-11-25 devnull {"fata", 0x251},
436 08708877 2003-11-25 devnull {"fatpara", 0xb6}, /* should have fatter, filled in bowl */
437 08708877 2003-11-25 devnull {"female", 0x2640},
438 08708877 2003-11-25 devnull {"ffilig", MLFFI},
439 08708877 2003-11-25 devnull {"fflig", MLFF},
440 08708877 2003-11-25 devnull {"ffllig", MLFFL},
441 08708877 2003-11-25 devnull {"filig", MLFI},
442 08708877 2003-11-25 devnull {"flat", 0x266d},
443 08708877 2003-11-25 devnull {"fllig", MLFL},
444 08708877 2003-11-25 devnull {"frE", 0x45}, /* should be curly */
445 e2d62fb9 2005-07-13 devnull {"frL", 'L'}, /* should be curly */
446 08708877 2003-11-25 devnull {"frR", 0x52}, /* should be curly */
447 08708877 2003-11-25 devnull {"frakB", 0x42}, /* should have fraktur style */
448 08708877 2003-11-25 devnull {"frakG", 0x47},
449 08708877 2003-11-25 devnull {"frakH", 0x48},
450 08708877 2003-11-25 devnull {"frakI", 0x49},
451 08708877 2003-11-25 devnull {"frakM", 0x4d},
452 08708877 2003-11-25 devnull {"frakU", 0x55},
453 08708877 2003-11-25 devnull {"frakX", 0x58},
454 08708877 2003-11-25 devnull {"frakY", 0x59},
455 08708877 2003-11-25 devnull {"frakh", 0x68},
456 08708877 2003-11-25 devnull {"frbl", LFRB},
457 08708877 2003-11-25 devnull {"frown", LFRN},
458 08708877 2003-11-25 devnull {"fs", 0x20},
459 08708877 2003-11-25 devnull {"fsigma", 0x3c2},
460 08708877 2003-11-25 devnull {"gAacu", 0xc1}, /* should be Α+acute */
461 08708877 2003-11-25 devnull {"gaacu", 0x3b1}, /* +acute */
462 08708877 2003-11-25 devnull {"gabreve", 0x3b1}, /* +breve */
463 08708877 2003-11-25 devnull {"gafrown", 0x3b1}, /* +frown */
464 08708877 2003-11-25 devnull {"gagrave", 0x3b1}, /* +grave */
465 08708877 2003-11-25 devnull {"gamac", 0x3b1}, /* +macron */
466 08708877 2003-11-25 devnull {"gamma", 0x3b3},
467 08708877 2003-11-25 devnull {"gauml", 0x3b1}, /* +umlaut */
468 08708877 2003-11-25 devnull {"ge", 0x2267},
469 08708877 2003-11-25 devnull {"geacu", 0x3b5}, /* +acute */
470 08708877 2003-11-25 devnull {"gegrave", 0x3b5}, /* +grave */
471 08708877 2003-11-25 devnull {"ghacu", 0x3b7}, /* +acute */
472 08708877 2003-11-25 devnull {"ghfrown", 0x3b7}, /* +frown */
473 08708877 2003-11-25 devnull {"ghgrave", 0x3b7}, /* +grave */
474 08708877 2003-11-25 devnull {"ghmac", 0x3b7}, /* +macron */
475 08708877 2003-11-25 devnull {"giacu", 0x3b9}, /* +acute */
476 08708877 2003-11-25 devnull {"gibreve", 0x3b9}, /* +breve */
477 08708877 2003-11-25 devnull {"gifrown", 0x3b9}, /* +frown */
478 08708877 2003-11-25 devnull {"gigrave", 0x3b9}, /* +grave */
479 08708877 2003-11-25 devnull {"gimac", 0x3b9}, /* +macron */
480 08708877 2003-11-25 devnull {"giuml", 0x3b9}, /* +umlaut */
481 08708877 2003-11-25 devnull {"glagjat", 0x467},
482 08708877 2003-11-25 devnull {"glots", 0x2c0},
483 08708877 2003-11-25 devnull {"goacu", 0x3bf}, /* +acute */
484 08708877 2003-11-25 devnull {"gobreve", 0x3bf}, /* +breve */
485 08708877 2003-11-25 devnull {"grave", LGRV},
486 08708877 2003-11-25 devnull {"gt", 0x3e},
487 08708877 2003-11-25 devnull {"guacu", 0x3c5}, /* +acute */
488 08708877 2003-11-25 devnull {"gufrown", 0x3c5}, /* +frown */
489 08708877 2003-11-25 devnull {"gugrave", 0x3c5}, /* +grave */
490 08708877 2003-11-25 devnull {"gumac", 0x3c5}, /* +macron */
491 08708877 2003-11-25 devnull {"guuml", 0x3c5}, /* +umlaut */
492 08708877 2003-11-25 devnull {"gwacu", 0x3c9}, /* +acute */
493 08708877 2003-11-25 devnull {"gwfrown", 0x3c9}, /* +frown */
494 08708877 2003-11-25 devnull {"gwgrave", 0x3c9}, /* +grave */
495 08708877 2003-11-25 devnull {"hacek", LHCK},
496 08708877 2003-11-25 devnull {"halft", 0x2308},
497 08708877 2003-11-25 devnull {"hash", 0x23},
498 08708877 2003-11-25 devnull {"hasper", MHAS},
499 08708877 2003-11-25 devnull {"hatpath", 0x5b2}, /* hataf patah U+05B2 */
500 08708877 2003-11-25 devnull {"hatqam", 0x5b3}, /* hataf qamats U+05B3 */
501 08708877 2003-11-25 devnull {"hatseg", 0x5b1}, /* hataf segol U+05B1 */
502 08708877 2003-11-25 devnull {"hbar", 0x127},
503 08708877 2003-11-25 devnull {"heart", 0x2661},
504 08708877 2003-11-25 devnull {"hebaleph", 0x5d0}, /* aleph U+05D0 */
505 08708877 2003-11-25 devnull {"hebayin", 0x5e2}, /* ayin U+05E2 */
506 08708877 2003-11-25 devnull {"hebbet", 0x5d1}, /* bet U+05D1 */
507 08708877 2003-11-25 devnull {"hebbeth", 0x5d1}, /* bet U+05D1 */
508 08708877 2003-11-25 devnull {"hebcheth", 0x5d7}, /* bet U+05D7 */
509 08708877 2003-11-25 devnull {"hebdaleth", 0x5d3}, /* dalet U+05D3 */
510 08708877 2003-11-25 devnull {"hebgimel", 0x5d2}, /* gimel U+05D2 */
511 08708877 2003-11-25 devnull {"hebhe", 0x5d4}, /* he U+05D4 */
512 08708877 2003-11-25 devnull {"hebkaph", 0x5db}, /* kaf U+05DB */
513 08708877 2003-11-25 devnull {"heblamed", 0x5dc}, /* lamed U+05DC */
514 08708877 2003-11-25 devnull {"hebmem", 0x5de}, /* mem U+05DE */
515 08708877 2003-11-25 devnull {"hebnun", 0x5e0}, /* nun U+05E0 */
516 08708877 2003-11-25 devnull {"hebnunfin", 0x5df}, /* final nun U+05DF */
517 08708877 2003-11-25 devnull {"hebpe", 0x5e4}, /* pe U+05E4 */
518 08708877 2003-11-25 devnull {"hebpedag", 0x5e3}, /* final pe? U+05E3 */
519 08708877 2003-11-25 devnull {"hebqoph", 0x5e7}, /* qof U+05E7 */
520 08708877 2003-11-25 devnull {"hebresh", 0x5e8}, /* resh U+05E8 */
521 08708877 2003-11-25 devnull {"hebshin", 0x5e9}, /* shin U+05E9 */
522 08708877 2003-11-25 devnull {"hebtav", 0x5ea}, /* tav U+05EA */
523 08708877 2003-11-25 devnull {"hebtsade", 0x5e6}, /* tsadi U+05E6 */
524 08708877 2003-11-25 devnull {"hebwaw", 0x5d5}, /* vav? U+05D5 */
525 08708877 2003-11-25 devnull {"hebyod", 0x5d9}, /* yod U+05D9 */
526 08708877 2003-11-25 devnull {"hebzayin", 0x5d6}, /* zayin U+05D6 */
527 08708877 2003-11-25 devnull {"hgz", 0x292}, /* ??? Cf "alet" */
528 08708877 2003-11-25 devnull {"hireq", 0x5b4}, /* U+05B4 */
529 08708877 2003-11-25 devnull {"hlenis", MHLN},
530 08708877 2003-11-25 devnull {"hook", LOGO},
531 08708877 2003-11-25 devnull {"horizE", 0x45}, /* should be on side */
532 08708877 2003-11-25 devnull {"horizP", 0x50}, /* should be on side */
533 08708877 2003-11-25 devnull {"horizS", 0x223d},
534 08708877 2003-11-25 devnull {"horizT", 0x22a3},
535 08708877 2003-11-25 devnull {"horizb", 0x7b}, /* should be underbrace */
536 08708877 2003-11-25 devnull {"ia", 0x3b1},
537 08708877 2003-11-25 devnull {"iacu", 0xed},
538 08708877 2003-11-25 devnull {"iasper", MIAS},
539 08708877 2003-11-25 devnull {"ib", 0x3b2},
540 08708877 2003-11-25 devnull {"ibar", 0x268},
541 08708877 2003-11-25 devnull {"ibreve", 0x12d},
542 08708877 2003-11-25 devnull {"icirc", 0xee},
543 08708877 2003-11-25 devnull {"id", 0x3b4},
544 08708877 2003-11-25 devnull {"ident", 0x2261},
545 08708877 2003-11-25 devnull {"ie", 0x3b5},
546 08708877 2003-11-25 devnull {"ifilig", MLFI},
547 08708877 2003-11-25 devnull {"ifflig", MLFF},
548 08708877 2003-11-25 devnull {"ig", 0x3b3},
549 08708877 2003-11-25 devnull {"igrave", 0xec},
550 08708877 2003-11-25 devnull {"ih", 0x3b7},
551 08708877 2003-11-25 devnull {"ii", 0x3b9},
552 08708877 2003-11-25 devnull {"ik", 0x3ba},
553 08708877 2003-11-25 devnull {"ilenis", MILN},
554 08708877 2003-11-25 devnull {"imac", 0x12b},
555 08708877 2003-11-25 devnull {"implies", 0x21d2},
556 08708877 2003-11-25 devnull {"index", 0x261e},
557 08708877 2003-11-25 devnull {"infin", 0x221e},
558 08708877 2003-11-25 devnull {"integ", 0x222b},
559 08708877 2003-11-25 devnull {"intsec", 0x2229},
560 08708877 2003-11-25 devnull {"invpri", 0x2cf},
561 08708877 2003-11-25 devnull {"iota", 0x3b9},
562 08708877 2003-11-25 devnull {"iq", 0x3c8},
563 08708877 2003-11-25 devnull {"istlig", MLST},
564 08708877 2003-11-25 devnull {"isub", 0x3f5}, /* iota below accent */
565 08708877 2003-11-25 devnull {"iuml", 0xef},
566 08708877 2003-11-25 devnull {"iz", 0x3b6},
567 08708877 2003-11-25 devnull {"jup", 0x2643},
568 08708877 2003-11-25 devnull {"kappa", 0x3ba},
569 08708877 2003-11-25 devnull {"koppa", 0x3df},
570 08708877 2003-11-25 devnull {"lambda", 0x3bb},
571 08708877 2003-11-25 devnull {"lar", 0x2190},
572 08708877 2003-11-25 devnull {"lbar", 0x142},
573 08708877 2003-11-25 devnull {"le", 0x2266},
574 08708877 2003-11-25 devnull {"lenis", LLEN},
575 08708877 2003-11-25 devnull {"leo", 0x264c},
576 08708877 2003-11-25 devnull {"lhalfbr", 0x2308},
577 08708877 2003-11-25 devnull {"lhshoe", 0x2283},
578 08708877 2003-11-25 devnull {"libra", 0x264e},
579 08708877 2003-11-25 devnull {"llswing", MLLS},
580 08708877 2003-11-25 devnull {"lm", 0x2d0},
581 08708877 2003-11-25 devnull {"logicand", 0x2227},
582 08708877 2003-11-25 devnull {"logicor", 0x2228},
583 08708877 2003-11-25 devnull {"longs", 0x283},
584 08708877 2003-11-25 devnull {"lrar", 0x2194},
585 08708877 2003-11-25 devnull {"lt", 0x3c},
586 08708877 2003-11-25 devnull {"ltappr", 0x227e},
587 08708877 2003-11-25 devnull {"ltflat", 0x2220},
588 08708877 2003-11-25 devnull {"lumlbl", 0x6c}, /* +umlaut below */
589 08708877 2003-11-25 devnull {"mac", LMAC},
590 08708877 2003-11-25 devnull {"male", 0x2642},
591 08708877 2003-11-25 devnull {"mc", 0x63}, /* should be raised */
592 08708877 2003-11-25 devnull {"merc", 0x263f}, /* mercury U+263F */
593 08708877 2003-11-25 devnull {"min", 0x2212},
594 08708877 2003-11-25 devnull {"moonfq", 0x263d}, /* first quarter moon U+263D */
595 08708877 2003-11-25 devnull {"moonlq", 0x263e}, /* last quarter moon U+263E */
596 08708877 2003-11-25 devnull {"msylab", 0x6d}, /* +sylab (ˌ) */
597 08708877 2003-11-25 devnull {"mu", 0x3bc},
598 08708877 2003-11-25 devnull {"nacu", 0x144},
599 08708877 2003-11-25 devnull {"natural", 0x266e},
600 08708877 2003-11-25 devnull {"neq", 0x2260},
601 08708877 2003-11-25 devnull {"nfacu", 0x2032},
602 08708877 2003-11-25 devnull {"nfasper", 0x2bd},
603 08708877 2003-11-25 devnull {"nfbreve", 0x2d8},
604 08708877 2003-11-25 devnull {"nfced", 0xb8},
605 08708877 2003-11-25 devnull {"nfcirc", 0x2c6},
606 08708877 2003-11-25 devnull {"nffrown", 0x2322},
607 08708877 2003-11-25 devnull {"nfgra", 0x2cb},
608 08708877 2003-11-25 devnull {"nfhacek", 0x2c7},
609 08708877 2003-11-25 devnull {"nfmac", 0xaf},
610 08708877 2003-11-25 devnull {"nftilde", 0x2dc},
611 08708877 2003-11-25 devnull {"nfuml", 0xa8},
612 08708877 2003-11-25 devnull {"ng", 0x14b},
613 08708877 2003-11-25 devnull {"not", 0xac},
614 08708877 2003-11-25 devnull {"notelem", 0x2209},
615 08708877 2003-11-25 devnull {"ntilde", 0xf1},
616 08708877 2003-11-25 devnull {"nu", 0x3bd},
617 08708877 2003-11-25 devnull {"oab", 0x2329},
618 08708877 2003-11-25 devnull {"oacu", 0xf3},
619 08708877 2003-11-25 devnull {"oasper", MOAS},
620 08708877 2003-11-25 devnull {"ob", 0x7b},
621 08708877 2003-11-25 devnull {"obar", 0xf8},
622 08708877 2003-11-25 devnull {"obigb", 0x7b}, /* should be big */
623 08708877 2003-11-25 devnull {"obigpren", 0x28},
624 08708877 2003-11-25 devnull {"obigsb", 0x5b}, /* should be big */
625 08708877 2003-11-25 devnull {"obreve", 0x14f},
626 08708877 2003-11-25 devnull {"ocirc", 0xf4},
627 08708877 2003-11-25 devnull {"odsb", 0x301a}, /* [[ U+301A */
628 08708877 2003-11-25 devnull {"oe", 0x153},
629 08708877 2003-11-25 devnull {"oeamp", 0x26},
630 08708877 2003-11-25 devnull {"ograve", 0xf2},
631 08708877 2003-11-25 devnull {"ohook", 0x6f}, /* +hook */
632 08708877 2003-11-25 devnull {"olenis", MOLN},
633 08708877 2003-11-25 devnull {"omac", 0x14d},
634 08708877 2003-11-25 devnull {"omega", 0x3c9},
635 08708877 2003-11-25 devnull {"omicron", 0x3bf},
636 08708877 2003-11-25 devnull {"ope", 0x25b},
637 08708877 2003-11-25 devnull {"opp", 0x260d},
638 08708877 2003-11-25 devnull {"oq", 0x60},
639 08708877 2003-11-25 devnull {"oqq", 0x201c},
640 08708877 2003-11-25 devnull {"or", MOR},
641 08708877 2003-11-25 devnull {"osb", 0x5b},
642 08708877 2003-11-25 devnull {"otilde", 0xf5},
643 08708877 2003-11-25 devnull {"ouml", 0xf6},
644 08708877 2003-11-25 devnull {"ounce", 0x2125}, /* ounce U+2125 */
645 08708877 2003-11-25 devnull {"ovparen", 0x2322}, /* should be sideways ( */
646 08708877 2003-11-25 devnull {"p", 0x2032},
647 08708877 2003-11-25 devnull {"pa", 0x2202},
648 08708877 2003-11-25 devnull {"page", 0x50},
649 08708877 2003-11-25 devnull {"pall", 0x28e},
650 08708877 2003-11-25 devnull {"paln", 0x272},
651 08708877 2003-11-25 devnull {"par", PAR},
652 08708877 2003-11-25 devnull {"para", 0xb6},
653 08708877 2003-11-25 devnull {"pbar", 0x70}, /* +bar */
654 08708877 2003-11-25 devnull {"per", 0x2118}, /* per U+2118 */
655 08708877 2003-11-25 devnull {"phi", 0x3c6},
656 08708877 2003-11-25 devnull {"phi2", 0x3d5},
657 08708877 2003-11-25 devnull {"pi", 0x3c0},
658 08708877 2003-11-25 devnull {"pisces", 0x2653},
659 08708877 2003-11-25 devnull {"planck", 0x127},
660 08708877 2003-11-25 devnull {"plantinJ", 0x4a}, /* should be script */
661 08708877 2003-11-25 devnull {"pm", 0xb1},
662 08708877 2003-11-25 devnull {"pmil", 0x2030},
663 08708877 2003-11-25 devnull {"pp", 0x2033},
664 08708877 2003-11-25 devnull {"ppp", 0x2034},
665 08708877 2003-11-25 devnull {"prop", 0x221d},
666 08708877 2003-11-25 devnull {"psi", 0x3c8},
667 08708877 2003-11-25 devnull {"pstlg", 0xa3},
668 08708877 2003-11-25 devnull {"q", 0x3f}, /* should be raised */
669 08708877 2003-11-25 devnull {"qamets", 0x5b3}, /* U+05B3 */
670 08708877 2003-11-25 devnull {"quaver", 0x266a},
671 08708877 2003-11-25 devnull {"rar", 0x2192},
672 08708877 2003-11-25 devnull {"rasper", MRAS},
673 08708877 2003-11-25 devnull {"rdot", 0xb7},
674 08708877 2003-11-25 devnull {"recipe", 0x211e}, /* U+211E */
675 08708877 2003-11-25 devnull {"reg", 0xae},
676 08708877 2003-11-25 devnull {"revC", 0x186}, /* open O U+0186 */
677 08708877 2003-11-25 devnull {"reva", 0x252},
678 08708877 2003-11-25 devnull {"revc", 0x254},
679 08708877 2003-11-25 devnull {"revope", 0x25c},
680 08708877 2003-11-25 devnull {"revr", 0x279},
681 08708877 2003-11-25 devnull {"revsc", 0x2d2}, /* upside-down semicolon */
682 08708877 2003-11-25 devnull {"revv", 0x28c},
683 08708877 2003-11-25 devnull {"rfa", 0x6f}, /* +hook (Cf "goal") */
684 08708877 2003-11-25 devnull {"rhacek", 0x159},
685 08708877 2003-11-25 devnull {"rhalfbr", 0x2309},
686 08708877 2003-11-25 devnull {"rho", 0x3c1},
687 08708877 2003-11-25 devnull {"rhshoe", 0x2282},
688 08708877 2003-11-25 devnull {"rlenis", MRLN},
689 08708877 2003-11-25 devnull {"rsylab", 0x72}, /* +sylab */
690 08708877 2003-11-25 devnull {"runash", 0x46}, /* should be runic 'ash' */
691 08708877 2003-11-25 devnull {"rvow", 0x2d4},
692 08708877 2003-11-25 devnull {"sacu", 0x15b},
693 08708877 2003-11-25 devnull {"sagit", 0x2650},
694 08708877 2003-11-25 devnull {"sampi", 0x3e1},
695 08708877 2003-11-25 devnull {"saturn", 0x2644},
696 08708877 2003-11-25 devnull {"sced", 0x15f},
697 08708877 2003-11-25 devnull {"schwa", 0x259},
698 08708877 2003-11-25 devnull {"scorpio", 0x264f},
699 08708877 2003-11-25 devnull {"scrA", 0x41}, /* should be script */
700 08708877 2003-11-25 devnull {"scrC", 0x43},
701 08708877 2003-11-25 devnull {"scrE", 0x45},
702 08708877 2003-11-25 devnull {"scrF", 0x46},
703 08708877 2003-11-25 devnull {"scrI", 0x49},
704 08708877 2003-11-25 devnull {"scrJ", 0x4a},
705 e2d62fb9 2005-07-13 devnull {"scrL", 'L'},
706 08708877 2003-11-25 devnull {"scrO", 0x4f},
707 08708877 2003-11-25 devnull {"scrP", 0x50},
708 08708877 2003-11-25 devnull {"scrQ", 0x51},
709 08708877 2003-11-25 devnull {"scrS", 0x53},
710 08708877 2003-11-25 devnull {"scrT", 0x54},
711 08708877 2003-11-25 devnull {"scrb", 0x62},
712 08708877 2003-11-25 devnull {"scrd", 0x64},
713 08708877 2003-11-25 devnull {"scrh", 0x68},
714 08708877 2003-11-25 devnull {"scrl", 0x6c},
715 08708877 2003-11-25 devnull {"scruple", 0x2108}, /* U+2108 */
716 08708877 2003-11-25 devnull {"sdd", 0x2d0},
717 08708877 2003-11-25 devnull {"sect", 0xa7},
718 08708877 2003-11-25 devnull {"semE", 0x2203},
719 08708877 2003-11-25 devnull {"sh", 0x283},
720 08708877 2003-11-25 devnull {"shacek", 0x161},
721 08708877 2003-11-25 devnull {"sharp", 0x266f},
722 08708877 2003-11-25 devnull {"sheva", 0x5b0}, /* U+05B0 */
723 08708877 2003-11-25 devnull {"shti", 0x26a},
724 08708877 2003-11-25 devnull {"shtsyll", 0x222a},
725 08708877 2003-11-25 devnull {"shtu", 0x28a},
726 08708877 2003-11-25 devnull {"sidetri", 0x22b2},
727 08708877 2003-11-25 devnull {"sigma", 0x3c3},
728 08708877 2003-11-25 devnull {"since", 0x2235},
729 08708877 2003-11-25 devnull {"slge", 0x2265}, /* should have slanted line under */
730 08708877 2003-11-25 devnull {"slle", 0x2264}, /* should have slanted line under */
731 08708877 2003-11-25 devnull {"sm", 0x2c8},
732 08708877 2003-11-25 devnull {"smm", 0x2cc},
733 08708877 2003-11-25 devnull {"spade", 0x2660},
734 08708877 2003-11-25 devnull {"sqrt", 0x221a},
735 08708877 2003-11-25 devnull {"square", 0x25a1}, /* U+25A1 */
736 08708877 2003-11-25 devnull {"ssChi", 0x3a7}, /* should be sans serif */
737 08708877 2003-11-25 devnull {"ssIota", 0x399},
738 08708877 2003-11-25 devnull {"ssOmicron", 0x39f},
739 08708877 2003-11-25 devnull {"ssPi", 0x3a0},
740 08708877 2003-11-25 devnull {"ssRho", 0x3a1},
741 08708877 2003-11-25 devnull {"ssSigma", 0x3a3},
742 08708877 2003-11-25 devnull {"ssTau", 0x3a4},
743 08708877 2003-11-25 devnull {"star", 0x2a},
744 08708877 2003-11-25 devnull {"stlig", MLST},
745 08708877 2003-11-25 devnull {"sup2", 0x2072},
746 08708877 2003-11-25 devnull {"supgt", 0x2c3},
747 08708877 2003-11-25 devnull {"suplt", 0x2c2},
748 08708877 2003-11-25 devnull {"sur", 0x2b3},
749 08708877 2003-11-25 devnull {"swing", 0x223c},
750 08708877 2003-11-25 devnull {"tau", 0x3c4},
751 08708877 2003-11-25 devnull {"taur", 0x2649},
752 08708877 2003-11-25 devnull {"th", 0xfe},
753 08708877 2003-11-25 devnull {"thbar", 0xfe}, /* +bar */
754 08708877 2003-11-25 devnull {"theta", 0x3b8},
755 08708877 2003-11-25 devnull {"thinqm", 0x3f}, /* should be thinner */
756 08708877 2003-11-25 devnull {"tilde", LTIL},
757 08708877 2003-11-25 devnull {"times", 0xd7},
758 08708877 2003-11-25 devnull {"tri", 0x2206},
759 08708877 2003-11-25 devnull {"trli", 0x2016},
760 08708877 2003-11-25 devnull {"ts", 0x2009},
761 08708877 2003-11-25 devnull {"uacu", 0xfa},
762 08708877 2003-11-25 devnull {"uasper", MUAS},
763 08708877 2003-11-25 devnull {"ubar", 0x75}, /* +bar */
764 08708877 2003-11-25 devnull {"ubreve", 0x16d},
765 08708877 2003-11-25 devnull {"ucirc", 0xfb},
766 08708877 2003-11-25 devnull {"udA", 0x2200},
767 08708877 2003-11-25 devnull {"udT", 0x22a5},
768 08708877 2003-11-25 devnull {"uda", 0x250},
769 08708877 2003-11-25 devnull {"udh", 0x265},
770 08708877 2003-11-25 devnull {"udqm", 0xbf},
771 08708877 2003-11-25 devnull {"udpsi", 0x22d4},
772 08708877 2003-11-25 devnull {"udtr", 0x2207},
773 08708877 2003-11-25 devnull {"ugrave", 0xf9},
774 08708877 2003-11-25 devnull {"ulenis", MULN},
775 08708877 2003-11-25 devnull {"umac", 0x16b},
776 08708877 2003-11-25 devnull {"uml", LUML},
777 08708877 2003-11-25 devnull {"undl", 0x2cd}, /* underline accent */
778 08708877 2003-11-25 devnull {"union", 0x222a},
779 08708877 2003-11-25 devnull {"upsilon", 0x3c5},
780 08708877 2003-11-25 devnull {"uuml", 0xfc},
781 08708877 2003-11-25 devnull {"vavpath", 0x5d5}, /* vav U+05D5 (+patah) */
782 08708877 2003-11-25 devnull {"vavsheva", 0x5d5}, /* vav U+05D5 (+sheva) */
783 08708877 2003-11-25 devnull {"vb", 0x7c},
784 08708877 2003-11-25 devnull {"vddd", 0x22ee},
785 08708877 2003-11-25 devnull {"versicle2", 0x2123}, /* U+2123 */
786 08708877 2003-11-25 devnull {"vinc", 0xaf},
787 08708877 2003-11-25 devnull {"virgo", 0x264d},
788 08708877 2003-11-25 devnull {"vpal", 0x25f},
789 08708877 2003-11-25 devnull {"vvf", 0x263},
790 08708877 2003-11-25 devnull {"wasper", MWAS},
791 08708877 2003-11-25 devnull {"wavyeq", 0x2248},
792 08708877 2003-11-25 devnull {"wlenis", MWLN},
793 08708877 2003-11-25 devnull {"wyn", 0x1bf}, /* wynn U+01BF */
794 08708877 2003-11-25 devnull {"xi", 0x3be},
795 08708877 2003-11-25 devnull {"yacu", 0xfd},
796 08708877 2003-11-25 devnull {"ycirc", 0x177},
797 08708877 2003-11-25 devnull {"ygh", 0x292},
798 08708877 2003-11-25 devnull {"ymac", 0x79}, /* +macron */
799 08708877 2003-11-25 devnull {"yuml", 0xff},
800 08708877 2003-11-25 devnull {"zced", 0x7a}, /* +cedilla */
801 08708877 2003-11-25 devnull {"zeta", 0x3b6},
802 08708877 2003-11-25 devnull {"zh", 0x292},
803 cbeb0b26 2006-04-01 devnull {"zhacek", 0x17e}
804 08708877 2003-11-25 devnull };
805 08708877 2003-11-25 devnull /*
806 08708877 2003-11-25 devnull The following special characters don't have close enough
807 08708877 2003-11-25 devnull equivalents in Unicode, so aren't in the above table.
808 08708877 2003-11-25 devnull 22n 2^(2^n) Cf Fermat
809 08708877 2003-11-25 devnull 2on4 2/4
810 08708877 2003-11-25 devnull 3on8 3/8
811 08708877 2003-11-25 devnull Bantuo Bantu O. Cf Otshi-herero
812 08708877 2003-11-25 devnull Car C with circular arrow on top
813 08708877 2003-11-25 devnull albrtime cut-time: C with vertical line
814 08708877 2003-11-25 devnull ardal Cf dental
815 08708877 2003-11-25 devnull bantuo Bantu o. Cf Otshi-herero
816 08708877 2003-11-25 devnull bbc1 single chem bond below
817 08708877 2003-11-25 devnull bbc2 double chem bond below
818 08708877 2003-11-25 devnull bbl1 chem bond like /
819 fa325e9b 2020-01-10 cross bbl2 chem bond like //
820 08708877 2003-11-25 devnull bbr1 chem bond like \
821 08708877 2003-11-25 devnull bbr2 chem bond \\
822 08708877 2003-11-25 devnull bcop1 copper symbol. Cf copper
823 08708877 2003-11-25 devnull bcop2 copper symbol. Cf copper
824 08708877 2003-11-25 devnull benchm Cf benchmark
825 08708877 2003-11-25 devnull btc1 single chem bond above
826 08708877 2003-11-25 devnull btc2 double chem bond above
827 08708877 2003-11-25 devnull btl1 chem bond like \
828 08708877 2003-11-25 devnull btl2 chem bond like \\
829 08708877 2003-11-25 devnull btr1 chem bond like /
830 08708877 2003-11-25 devnull btr2 chem bond line //
831 08708877 2003-11-25 devnull burman Cf Burman
832 08708877 2003-11-25 devnull devph sanskrit letter. Cf ph
833 08708877 2003-11-25 devnull devrfls sanskrit letter. Cf cerebral
834 08708877 2003-11-25 devnull duplong[12] musical note
835 08708877 2003-11-25 devnull egchi early form of chi
836 08708877 2003-11-25 devnull eggamma[12] early form of gamma
837 08708877 2003-11-25 devnull egiota early form of iota
838 08708877 2003-11-25 devnull egkappa early form of kappa
839 08708877 2003-11-25 devnull eglambda early form of lambda
840 08708877 2003-11-25 devnull egmu[12] early form of mu
841 08708877 2003-11-25 devnull egnu[12] early form of nu
842 08708877 2003-11-25 devnull egpi[123] early form of pi
843 08708877 2003-11-25 devnull egrho[12] early form of rho
844 08708877 2003-11-25 devnull egsampi early form of sampi
845 08708877 2003-11-25 devnull egsan early form of san
846 08708877 2003-11-25 devnull egsigma[12] early form of sigma
847 08708877 2003-11-25 devnull egxi[123] early form of xi
848 08708877 2003-11-25 devnull elatS early form of S
849 08708877 2003-11-25 devnull elatc[12] early form of C
850 08708877 2003-11-25 devnull elatg[12] early form of G
851 08708877 2003-11-25 devnull glagjeri Slavonic Glagolitic jeri
852 08708877 2003-11-25 devnull glagjeru Slavonic Glagolitic jeru
853 08708877 2003-11-25 devnull hypolem hypolemisk (line with underdot)
854 08708877 2003-11-25 devnull lhrbr lower half }
855 08708877 2003-11-25 devnull longmord long mordent
856 08708877 2003-11-25 devnull mbwvow backwards scretched C. Cf retract.
857 08708877 2003-11-25 devnull mord music symbol. Cf mordent
858 08708877 2003-11-25 devnull mostra Cf direct
859 08708877 2003-11-25 devnull ohgcirc old form of circumflex
860 08708877 2003-11-25 devnull oldbeta old form of β. Cf perturbate
861 08708877 2003-11-25 devnull oldsemibr[12] old forms of semibreve. Cf prolation
862 08708877 2003-11-25 devnull ormg old form of g. Cf G
863 08708877 2003-11-25 devnull para[12345] form of ¶
864 08708877 2003-11-25 devnull pauseo musical pause sign
865 08708877 2003-11-25 devnull pauseu musical pause sign
866 08708877 2003-11-25 devnull pharyng Cf pharyngal
867 08708877 2003-11-25 devnull ragr Black letter ragged r
868 08708877 2003-11-25 devnull repetn musical repeat. Cf retort
869 08708877 2003-11-25 devnull segno musical segno sign
870 08708877 2003-11-25 devnull semain[12] semitic ain
871 08708877 2003-11-25 devnull semhe semitic he
872 08708877 2003-11-25 devnull semheth semitic heth
873 08708877 2003-11-25 devnull semkaph semitic kaph
874 08708877 2003-11-25 devnull semlamed[12] semitic lamed
875 08708877 2003-11-25 devnull semmem semitic mem
876 08708877 2003-11-25 devnull semnum semitic nun
877 08708877 2003-11-25 devnull sempe semitic pe
878 08708877 2003-11-25 devnull semqoph[123] semitic qoph
879 08708877 2003-11-25 devnull semresh semitic resh
880 08708877 2003-11-25 devnull semtav[1234] semitic tav
881 08708877 2003-11-25 devnull semyod semitic yod
882 08708877 2003-11-25 devnull semzayin[123] semitic zayin
883 08708877 2003-11-25 devnull shtlong[12] U with underbar. Cf glyconic
884 08708877 2003-11-25 devnull sigmatau σ,τ combination
885 08708877 2003-11-25 devnull squaver sixteenth note
886 08708877 2003-11-25 devnull sqbreve square musical breve note
887 08708877 2003-11-25 devnull swast swastika
888 08708877 2003-11-25 devnull uhrbr upper half of big }
889 08708877 2003-11-25 devnull versicle1 Cf versicle
890 08708877 2003-11-25 devnull */
891 08708877 2003-11-25 devnull
892 08708877 2003-11-25 devnull
893 08708877 2003-11-25 devnull static Rune normtab[128] = {
894 08708877 2003-11-25 devnull /*0*/ /*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/
895 08708877 2003-11-25 devnull /*00*/ NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
896 08708877 2003-11-25 devnull NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
897 08708877 2003-11-25 devnull /*10*/ NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
898 08708877 2003-11-25 devnull NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
899 08708877 2003-11-25 devnull /*20*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, SPCS, '\'',
900 08708877 2003-11-25 devnull 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
901 08708877 2003-11-25 devnull /*30*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
902 08708877 2003-11-25 devnull 0x38, 0x39, 0x3a, 0x3b, TAGS, 0x3d, TAGE, 0x3f,
903 08708877 2003-11-25 devnull /*40*/ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
904 e2d62fb9 2005-07-13 devnull 0x48, 0x49, 0x4a, 0x4b, 'L', 0x4d, 0x4e, 0x4f,
905 08708877 2003-11-25 devnull /*50*/ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
906 e2d62fb9 2005-07-13 devnull 0x58, 0x59, 0x5a, 0x5b, '\\', 0x5d, 0x5e, 0x5f,
907 08708877 2003-11-25 devnull /*60*/ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
908 08708877 2003-11-25 devnull 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
909 08708877 2003-11-25 devnull /*70*/ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
910 cbeb0b26 2006-04-01 devnull 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, NONE
911 08708877 2003-11-25 devnull };
912 08708877 2003-11-25 devnull static Rune phtab[128] = {
913 08708877 2003-11-25 devnull /*0*/ /*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/
914 08708877 2003-11-25 devnull /*00*/ NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
915 08708877 2003-11-25 devnull NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
916 08708877 2003-11-25 devnull /*10*/ NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
917 08708877 2003-11-25 devnull NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
918 08708877 2003-11-25 devnull /*20*/ 0x20, 0x21, 0x2c8, 0x23, 0x24, 0x2cc, 0xe6, '\'',
919 08708877 2003-11-25 devnull 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
920 08708877 2003-11-25 devnull /*30*/ 0x30, 0x31, 0x32, 0x25c, 0x34, 0x35, 0x36, 0x37,
921 08708877 2003-11-25 devnull 0x38, 0xf8, 0x2d0, 0x3b, TAGS, 0x3d, TAGE, 0x3f,
922 08708877 2003-11-25 devnull /*40*/ 0x259, 0x251, 0x42, 0x43, 0xf0, 0x25b, 0x46, 0x47,
923 e2d62fb9 2005-07-13 devnull 0x48, 0x26a, 0x4a, 0x4b, 'L', 0x4d, 0x14b, 0x254,
924 08708877 2003-11-25 devnull /*50*/ 0x50, 0x252, 0x52, 0x283, 0x3b8, 0x28a, 0x28c, 0x57,
925 e2d62fb9 2005-07-13 devnull 0x58, 0x59, 0x292, 0x5b, '\\', 0x5d, 0x5e, 0x5f,
926 08708877 2003-11-25 devnull /*60*/ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
927 08708877 2003-11-25 devnull 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
928 08708877 2003-11-25 devnull /*70*/ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
929 cbeb0b26 2006-04-01 devnull 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, NONE
930 08708877 2003-11-25 devnull };
931 08708877 2003-11-25 devnull static Rune grtab[128] = {
932 08708877 2003-11-25 devnull /*0*/ /*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/
933 08708877 2003-11-25 devnull /*00*/ NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
934 08708877 2003-11-25 devnull NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
935 08708877 2003-11-25 devnull /*10*/ NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
936 08708877 2003-11-25 devnull NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
937 08708877 2003-11-25 devnull /*20*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, SPCS, '\'',
938 08708877 2003-11-25 devnull 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
939 08708877 2003-11-25 devnull /*30*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
940 08708877 2003-11-25 devnull 0x38, 0x39, 0x3a, 0x3b, TAGS, 0x3d, TAGE, 0x3f,
941 08708877 2003-11-25 devnull /*40*/ 0x40, 0x391, 0x392, 0x39e, 0x394, 0x395, 0x3a6, 0x393,
942 08708877 2003-11-25 devnull 0x397, 0x399, 0x3da, 0x39a, 0x39b, 0x39c, 0x39d, 0x39f,
943 08708877 2003-11-25 devnull /*50*/ 0x3a0, 0x398, 0x3a1, 0x3a3, 0x3a4, 0x3a5, 0x56, 0x3a9,
944 e2d62fb9 2005-07-13 devnull 0x3a7, 0x3a8, 0x396, 0x5b, '\\', 0x5d, 0x5e, 0x5f,
945 08708877 2003-11-25 devnull /*60*/ 0x60, 0x3b1, 0x3b2, 0x3be, 0x3b4, 0x3b5, 0x3c6, 0x3b3,
946 08708877 2003-11-25 devnull 0x3b7, 0x3b9, 0x3c2, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3bf,
947 08708877 2003-11-25 devnull /*70*/ 0x3c0, 0x3b8, 0x3c1, 0x3c3, 0x3c4, 0x3c5, 0x76, 0x3c9,
948 cbeb0b26 2006-04-01 devnull 0x3c7, 0x3c8, 0x3b6, 0x7b, 0x7c, 0x7d, 0x7e, NONE
949 08708877 2003-11-25 devnull };
950 08708877 2003-11-25 devnull static Rune subtab[128] = {
951 08708877 2003-11-25 devnull /*0*/ /*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/
952 08708877 2003-11-25 devnull /*00*/ NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
953 08708877 2003-11-25 devnull NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
954 08708877 2003-11-25 devnull /*10*/ NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
955 08708877 2003-11-25 devnull NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
956 08708877 2003-11-25 devnull /*20*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, SPCS, '\'',
957 08708877 2003-11-25 devnull 0x208d, 0x208e, 0x2a, 0x208a, 0x2c, 0x208b, 0x2e, 0x2f,
958 08708877 2003-11-25 devnull /*30*/ 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087,
959 08708877 2003-11-25 devnull 0x2088, 0x2089, 0x3a, 0x3b, TAGS, 0x208c, TAGE, 0x3f,
960 08708877 2003-11-25 devnull /*40*/ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
961 e2d62fb9 2005-07-13 devnull 0x48, 0x49, 0x4a, 0x4b, 'L', 0x4d, 0x4e, 0x4f,
962 08708877 2003-11-25 devnull /*50*/ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
963 e2d62fb9 2005-07-13 devnull 0x58, 0x59, 0x5a, 0x5b, '\\', 0x5d, 0x5e, 0x5f,
964 08708877 2003-11-25 devnull /*60*/ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
965 08708877 2003-11-25 devnull 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
966 08708877 2003-11-25 devnull /*70*/ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
967 cbeb0b26 2006-04-01 devnull 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, NONE
968 08708877 2003-11-25 devnull };
969 08708877 2003-11-25 devnull static Rune suptab[128] = {
970 08708877 2003-11-25 devnull /*0*/ /*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/
971 08708877 2003-11-25 devnull /*00*/ NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
972 08708877 2003-11-25 devnull NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
973 08708877 2003-11-25 devnull /*10*/ NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
974 08708877 2003-11-25 devnull NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
975 08708877 2003-11-25 devnull /*20*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, SPCS, '\'',
976 08708877 2003-11-25 devnull 0x207d, 0x207e, 0x2a, 0x207a, 0x2c, 0x207b, 0x2e, 0x2f,
977 08708877 2003-11-25 devnull /*30*/ 0x2070, 0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077,
978 08708877 2003-11-25 devnull 0x2078, 0x2079, 0x3a, 0x3b, TAGS, 0x207c, TAGE, 0x3f,
979 08708877 2003-11-25 devnull /*40*/ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
980 e2d62fb9 2005-07-13 devnull 0x48, 0x49, 0x4a, 0x4b, 'L', 0x4d, 0x4e, 0x4f,
981 08708877 2003-11-25 devnull /*50*/ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
982 e2d62fb9 2005-07-13 devnull 0x58, 0x59, 0x5a, 0x5b, '\\', 0x5d, 0x5e, 0x5f,
983 08708877 2003-11-25 devnull /*60*/ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
984 08708877 2003-11-25 devnull 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
985 08708877 2003-11-25 devnull /*70*/ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
986 cbeb0b26 2006-04-01 devnull 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, NONE
987 08708877 2003-11-25 devnull };
988 08708877 2003-11-25 devnull
989 08708877 2003-11-25 devnull static int tagstarts;
990 08708877 2003-11-25 devnull static char tag[Buflen];
991 08708877 2003-11-25 devnull static int naux;
992 08708877 2003-11-25 devnull static char auxname[Maxaux][Buflen];
993 08708877 2003-11-25 devnull static char auxval[Maxaux][Buflen];
994 08708877 2003-11-25 devnull static char spec[Buflen];
995 be22ae2d 2004-03-26 devnull static char *auxstate[Naux]; /* vals for most recent tag */
996 08708877 2003-11-25 devnull static Entry curentry;
997 08708877 2003-11-25 devnull #define cursize (curentry.end-curentry.start)
998 08708877 2003-11-25 devnull
999 08708877 2003-11-25 devnull static char *getspec(char *, char *);
1000 08708877 2003-11-25 devnull static char *gettag(char *, char *);
1001 08708877 2003-11-25 devnull static void dostatus(void);
1002 08708877 2003-11-25 devnull
1003 08708877 2003-11-25 devnull /*
1004 08708877 2003-11-25 devnull * cmd is one of:
1005 08708877 2003-11-25 devnull * 'p': normal print
1006 08708877 2003-11-25 devnull * 'h': just print headwords
1007 08708877 2003-11-25 devnull * 'P': print raw
1008 08708877 2003-11-25 devnull */
1009 08708877 2003-11-25 devnull void
1010 08708877 2003-11-25 devnull oedprintentry(Entry e, int cmd)
1011 08708877 2003-11-25 devnull {
1012 08708877 2003-11-25 devnull char *p, *pe;
1013 08708877 2003-11-25 devnull int t, a, i;
1014 08708877 2003-11-25 devnull long r, rprev, rlig;
1015 08708877 2003-11-25 devnull Rune *transtab;
1016 08708877 2003-11-25 devnull
1017 08708877 2003-11-25 devnull p = e.start;
1018 08708877 2003-11-25 devnull pe = e.end;
1019 08708877 2003-11-25 devnull transtab = normtab;
1020 08708877 2003-11-25 devnull rprev = NONE;
1021 08708877 2003-11-25 devnull changett(0, 0, 0);
1022 08708877 2003-11-25 devnull curentry = e;
1023 08708877 2003-11-25 devnull if(cmd == 'h')
1024 08708877 2003-11-25 devnull outinhibit = 1;
1025 08708877 2003-11-25 devnull while(p < pe) {
1026 08708877 2003-11-25 devnull if(cmd == 'r') {
1027 08708877 2003-11-25 devnull outchar(*p++);
1028 08708877 2003-11-25 devnull continue;
1029 08708877 2003-11-25 devnull }
1030 08708877 2003-11-25 devnull r = transtab[(*p++)&0x7F];
1031 08708877 2003-11-25 devnull if(r < NONE) {
1032 08708877 2003-11-25 devnull /* Emit the rune, but buffer in case of ligature */
1033 08708877 2003-11-25 devnull if(rprev != NONE)
1034 08708877 2003-11-25 devnull outrune(rprev);
1035 08708877 2003-11-25 devnull rprev = r;
1036 08708877 2003-11-25 devnull } else if(r == SPCS) {
1037 08708877 2003-11-25 devnull /* Start of special character name */
1038 08708877 2003-11-25 devnull p = getspec(p, pe);
1039 08708877 2003-11-25 devnull r = lookassoc(spectab, asize(spectab), spec);
1040 08708877 2003-11-25 devnull if(r == -1) {
1041 08708877 2003-11-25 devnull if(debug)
1042 08708877 2003-11-25 devnull err("spec %ld %d %s",
1043 08708877 2003-11-25 devnull e.doff, cursize, spec);
1044 08708877 2003-11-25 devnull r = 0xfffd;
1045 08708877 2003-11-25 devnull }
1046 08708877 2003-11-25 devnull if(r >= LIGS && r < LIGE) {
1047 08708877 2003-11-25 devnull /* handle possible ligature */
1048 08708877 2003-11-25 devnull rlig = liglookup(r, rprev);
1049 08708877 2003-11-25 devnull if(rlig != NONE)
1050 08708877 2003-11-25 devnull rprev = rlig; /* overwrite rprev */
1051 08708877 2003-11-25 devnull else {
1052 08708877 2003-11-25 devnull /* could print accent, but let's not */
1053 08708877 2003-11-25 devnull if(rprev != NONE) outrune(rprev);
1054 08708877 2003-11-25 devnull rprev = NONE;
1055 08708877 2003-11-25 devnull }
1056 08708877 2003-11-25 devnull } else if(r >= MULTI && r < MULTIE) {
1057 08708877 2003-11-25 devnull if(rprev != NONE) {
1058 08708877 2003-11-25 devnull outrune(rprev);
1059 08708877 2003-11-25 devnull rprev = NONE;
1060 08708877 2003-11-25 devnull }
1061 08708877 2003-11-25 devnull outrunes(multitab[r-MULTI]);
1062 08708877 2003-11-25 devnull } else if(r == PAR) {
1063 08708877 2003-11-25 devnull if(rprev != NONE) {
1064 08708877 2003-11-25 devnull outrune(rprev);
1065 08708877 2003-11-25 devnull rprev = NONE;
1066 08708877 2003-11-25 devnull }
1067 08708877 2003-11-25 devnull outnl(1);
1068 08708877 2003-11-25 devnull } else {
1069 08708877 2003-11-25 devnull if(rprev != NONE) outrune(rprev);
1070 08708877 2003-11-25 devnull rprev = r;
1071 08708877 2003-11-25 devnull }
1072 08708877 2003-11-25 devnull } else if(r == TAGS) {
1073 08708877 2003-11-25 devnull /* Start of tag name */
1074 08708877 2003-11-25 devnull if(rprev != NONE) {
1075 08708877 2003-11-25 devnull outrune(rprev);
1076 08708877 2003-11-25 devnull rprev = NONE;
1077 08708877 2003-11-25 devnull }
1078 08708877 2003-11-25 devnull p = gettag(p, pe);
1079 08708877 2003-11-25 devnull t = lookassoc(tagtab, asize(tagtab), tag);
1080 08708877 2003-11-25 devnull if(t == -1) {
1081 08708877 2003-11-25 devnull if(debug)
1082 08708877 2003-11-25 devnull err("tag %ld %d %s",
1083 08708877 2003-11-25 devnull e.doff, cursize, tag);
1084 08708877 2003-11-25 devnull continue;
1085 08708877 2003-11-25 devnull }
1086 08708877 2003-11-25 devnull for(i = 0; i < Naux; i++)
1087 08708877 2003-11-25 devnull auxstate[i] = 0;
1088 08708877 2003-11-25 devnull for(i = 0; i < naux; i++) {
1089 08708877 2003-11-25 devnull a = lookassoc(auxtab, asize(auxtab), auxname[i]);
1090 08708877 2003-11-25 devnull if(a == -1) {
1091 08708877 2003-11-25 devnull if(debug)
1092 08708877 2003-11-25 devnull err("aux %ld %d %s",
1093 08708877 2003-11-25 devnull e.doff, cursize, auxname[i]);
1094 08708877 2003-11-25 devnull } else
1095 08708877 2003-11-25 devnull auxstate[a] = auxval[i];
1096 08708877 2003-11-25 devnull }
1097 08708877 2003-11-25 devnull switch(t){
1098 08708877 2003-11-25 devnull case E:
1099 08708877 2003-11-25 devnull case Ve:
1100 08708877 2003-11-25 devnull outnl(0);
1101 08708877 2003-11-25 devnull if(tagstarts)
1102 08708877 2003-11-25 devnull dostatus();
1103 08708877 2003-11-25 devnull break;
1104 08708877 2003-11-25 devnull case Ed:
1105 08708877 2003-11-25 devnull case Etym:
1106 08708877 2003-11-25 devnull outchar(tagstarts? '[' : ']');
1107 08708877 2003-11-25 devnull break;
1108 08708877 2003-11-25 devnull case Pr:
1109 08708877 2003-11-25 devnull outchar(tagstarts? '(' : ')');
1110 08708877 2003-11-25 devnull break;
1111 08708877 2003-11-25 devnull case In:
1112 08708877 2003-11-25 devnull transtab = changett(transtab, subtab, tagstarts);
1113 08708877 2003-11-25 devnull break;
1114 08708877 2003-11-25 devnull case Hm:
1115 08708877 2003-11-25 devnull case Su:
1116 08708877 2003-11-25 devnull case Fq:
1117 08708877 2003-11-25 devnull transtab = changett(transtab, suptab, tagstarts);
1118 08708877 2003-11-25 devnull break;
1119 08708877 2003-11-25 devnull case Gk:
1120 08708877 2003-11-25 devnull transtab = changett(transtab, grtab, tagstarts);
1121 08708877 2003-11-25 devnull break;
1122 08708877 2003-11-25 devnull case Ph:
1123 08708877 2003-11-25 devnull transtab = changett(transtab, phtab, tagstarts);
1124 08708877 2003-11-25 devnull break;
1125 08708877 2003-11-25 devnull case Hw:
1126 08708877 2003-11-25 devnull if(cmd == 'h') {
1127 08708877 2003-11-25 devnull if(!tagstarts)
1128 08708877 2003-11-25 devnull outchar(' ');
1129 08708877 2003-11-25 devnull outinhibit = !tagstarts;
1130 08708877 2003-11-25 devnull }
1131 08708877 2003-11-25 devnull break;
1132 08708877 2003-11-25 devnull case S0:
1133 08708877 2003-11-25 devnull case S1:
1134 08708877 2003-11-25 devnull case S2:
1135 08708877 2003-11-25 devnull case S3:
1136 08708877 2003-11-25 devnull case S4:
1137 08708877 2003-11-25 devnull case S5:
1138 08708877 2003-11-25 devnull case S6:
1139 08708877 2003-11-25 devnull case S7a:
1140 08708877 2003-11-25 devnull case S7n:
1141 08708877 2003-11-25 devnull case Sn:
1142 08708877 2003-11-25 devnull case Sgk:
1143 08708877 2003-11-25 devnull if(tagstarts) {
1144 08708877 2003-11-25 devnull outnl(2);
1145 08708877 2003-11-25 devnull dostatus();
1146 08708877 2003-11-25 devnull if(auxstate[Num]) {
1147 08708877 2003-11-25 devnull if(t == S3 || t == S5) {
1148 08708877 2003-11-25 devnull i = atoi(auxstate[Num]);
1149 08708877 2003-11-25 devnull while(i--)
1150 08708877 2003-11-25 devnull outchar('*');
1151 08708877 2003-11-25 devnull outchars(" ");
1152 08708877 2003-11-25 devnull } else if(t == S7a || t == S7n || t == Sn) {
1153 08708877 2003-11-25 devnull outchar('(');
1154 08708877 2003-11-25 devnull outchars(auxstate[Num]);
1155 08708877 2003-11-25 devnull outchars(") ");
1156 08708877 2003-11-25 devnull } else if(t == Sgk) {
1157 be22ae2d 2004-03-26 devnull i = grtab[(uchar)auxstate[Num][0]];
1158 08708877 2003-11-25 devnull if(i != NONE)
1159 08708877 2003-11-25 devnull outrune(i);
1160 08708877 2003-11-25 devnull outchars(". ");
1161 08708877 2003-11-25 devnull } else {
1162 08708877 2003-11-25 devnull outchars(auxstate[Num]);
1163 08708877 2003-11-25 devnull outchars(". ");
1164 08708877 2003-11-25 devnull }
1165 08708877 2003-11-25 devnull }
1166 08708877 2003-11-25 devnull }
1167 08708877 2003-11-25 devnull break;
1168 08708877 2003-11-25 devnull case Cb:
1169 08708877 2003-11-25 devnull case Db:
1170 08708877 2003-11-25 devnull case Qp:
1171 08708877 2003-11-25 devnull case P:
1172 08708877 2003-11-25 devnull if(tagstarts)
1173 08708877 2003-11-25 devnull outnl(1);
1174 08708877 2003-11-25 devnull break;
1175 08708877 2003-11-25 devnull case Table:
1176 08708877 2003-11-25 devnull /*
1177 08708877 2003-11-25 devnull * Todo: gather columns, justify them, etc.
1178 08708877 2003-11-25 devnull * For now, just let colums come out as rows
1179 08708877 2003-11-25 devnull */
1180 08708877 2003-11-25 devnull if(!tagstarts)
1181 08708877 2003-11-25 devnull outnl(0);
1182 08708877 2003-11-25 devnull break;
1183 08708877 2003-11-25 devnull case Col:
1184 08708877 2003-11-25 devnull if(tagstarts)
1185 08708877 2003-11-25 devnull outnl(0);
1186 08708877 2003-11-25 devnull break;
1187 08708877 2003-11-25 devnull case Dn:
1188 08708877 2003-11-25 devnull if(tagstarts)
1189 08708877 2003-11-25 devnull outchar('/');
1190 08708877 2003-11-25 devnull break;
1191 08708877 2003-11-25 devnull }
1192 08708877 2003-11-25 devnull }
1193 08708877 2003-11-25 devnull }
1194 08708877 2003-11-25 devnull if(cmd == 'h') {
1195 08708877 2003-11-25 devnull outinhibit = 0;
1196 08708877 2003-11-25 devnull outnl(0);
1197 08708877 2003-11-25 devnull }
1198 08708877 2003-11-25 devnull }
1199 08708877 2003-11-25 devnull
1200 08708877 2003-11-25 devnull /*
1201 08708877 2003-11-25 devnull * Return offset into bdict where next oed entry after fromoff starts.
1202 08708877 2003-11-25 devnull * Oed entries start with <e>, <ve>, <e st=...>, or <ve st=...>
1203 08708877 2003-11-25 devnull */
1204 08708877 2003-11-25 devnull long
1205 08708877 2003-11-25 devnull oednextoff(long fromoff)
1206 08708877 2003-11-25 devnull {
1207 08708877 2003-11-25 devnull long a, n;
1208 08708877 2003-11-25 devnull int c;
1209 08708877 2003-11-25 devnull
1210 08708877 2003-11-25 devnull a = Bseek(bdict, fromoff, 0);
1211 08708877 2003-11-25 devnull if(a < 0)
1212 08708877 2003-11-25 devnull return -1;
1213 08708877 2003-11-25 devnull n = 0;
1214 08708877 2003-11-25 devnull for(;;) {
1215 08708877 2003-11-25 devnull c = Bgetc(bdict);
1216 08708877 2003-11-25 devnull if(c < 0)
1217 08708877 2003-11-25 devnull break;
1218 08708877 2003-11-25 devnull if(c == '<') {
1219 08708877 2003-11-25 devnull c = Bgetc(bdict);
1220 08708877 2003-11-25 devnull if(c == 'e') {
1221 08708877 2003-11-25 devnull c = Bgetc(bdict);
1222 08708877 2003-11-25 devnull if(c == '>' || c == ' ')
1223 08708877 2003-11-25 devnull n = 3;
1224 08708877 2003-11-25 devnull } else if(c == 'v' && Bgetc(bdict) == 'e') {
1225 08708877 2003-11-25 devnull c = Bgetc(bdict);
1226 08708877 2003-11-25 devnull if(c == '>' || c == ' ')
1227 08708877 2003-11-25 devnull n = 4;
1228 08708877 2003-11-25 devnull }
1229 08708877 2003-11-25 devnull if(n)
1230 08708877 2003-11-25 devnull break;
1231 08708877 2003-11-25 devnull }
1232 08708877 2003-11-25 devnull }
1233 08708877 2003-11-25 devnull return (Boffset(bdict)-n);
1234 08708877 2003-11-25 devnull }
1235 08708877 2003-11-25 devnull
1236 cbeb0b26 2006-04-01 devnull static char *prkey1 =
1237 08708877 2003-11-25 devnull "KEY TO THE PRONUNCIATION\n"
1238 08708877 2003-11-25 devnull "\n"
1239 08708877 2003-11-25 devnull "I. CONSONANTS\n"
1240 08708877 2003-11-25 devnull "b, d, f, k, l, m, n, p, t, v, z: usual English values\n"
1241 08708877 2003-11-25 devnull "\n"
1242 08708877 2003-11-25 devnull "g as in go (gəʊ)\n"
1243 08708877 2003-11-25 devnull "h ... ho! (həʊ)\n"
1244 08708877 2003-11-25 devnull "r ... run (rʌn), terrier (ˈtɛriə(r))\n"
1245 08708877 2003-11-25 devnull "(r)... her (hɜː(r))\n"
1246 08708877 2003-11-25 devnull "s ... see (siː), success (səkˈsɜs)\n"
1247 08708877 2003-11-25 devnull "w ... wear (wɛə(r))\n"
1248 08708877 2003-11-25 devnull "hw ... when (hwɛn)\n"
1249 08708877 2003-11-25 devnull "j ... yes (jɛs)\n"
1250 08708877 2003-11-25 devnull "θ ... thin (θin), bath (bɑːθ)\n"
1251 08708877 2003-11-25 devnull "ð ... then (ðɛn), bathe (beɪð)\n"
1252 08708877 2003-11-25 devnull "ʃ ... shop (ʃɒp), dish (dɪʃ)\n"
1253 08708877 2003-11-25 devnull "tʃ ... chop (tʃɒp), ditch (dɪtʃ)\n"
1254 08708877 2003-11-25 devnull "ʒ ... vision (ˈvɪʒən), déjeuner (deʒøne)\n"
1255 cbeb0b26 2006-04-01 devnull ;
1256 fa325e9b 2020-01-10 cross static char *prkey2 =
1257 08708877 2003-11-25 devnull "dʒ ... judge (dʒʌdʒ)\n"
1258 08708877 2003-11-25 devnull "ŋ ... singing (ˈsɪŋɪŋ), think (θiŋk)\n"
1259 08708877 2003-11-25 devnull "ŋg ... finger (ˈfiŋgə(r))\n"
1260 08708877 2003-11-25 devnull "\n"
1261 08708877 2003-11-25 devnull "Foreign\n"
1262 08708877 2003-11-25 devnull "ʎ as in It. seraglio (serˈraʎo)\n"
1263 08708877 2003-11-25 devnull "ɲ ... Fr. cognac (kɔɲak)\n"
1264 08708877 2003-11-25 devnull "x ... Ger. ach (ax), Sc. loch (lɒx)\n"
1265 08708877 2003-11-25 devnull "ç ... Ger. ich (ɪç), Sc. nicht (nɪçt)\n"
1266 08708877 2003-11-25 devnull "ɣ ... North Ger. sagen (ˈzaːɣən)\n"
1267 08708877 2003-11-25 devnull "c ... Afrikaans baardmannetjie (ˈbaːrtmanəci)\n"
1268 08708877 2003-11-25 devnull "ɥ ... Fr. cuisine (kɥizin)\n"
1269 08708877 2003-11-25 devnull "\n"
1270 cbeb0b26 2006-04-01 devnull ;
1271 fa325e9b 2020-01-10 cross static char *prkey3 =
1272 08708877 2003-11-25 devnull "II. VOWELS AND DIPTHONGS\n"
1273 08708877 2003-11-25 devnull "\n"
1274 08708877 2003-11-25 devnull "Short\n"
1275 08708877 2003-11-25 devnull "ɪ as in pit (pɪt), -ness (-nɪs)\n"
1276 08708877 2003-11-25 devnull "ɛ ... pet (pɛt), Fr. sept (sɛt)\n"
1277 08708877 2003-11-25 devnull "æ ... pat (pæt)\n"
1278 08708877 2003-11-25 devnull "ʌ ... putt (pʌt)\n"
1279 08708877 2003-11-25 devnull "ɒ ... pot (pɒt)\n"
1280 08708877 2003-11-25 devnull "ʊ ... put (pʊt)\n"
1281 08708877 2003-11-25 devnull "ə ... another (əˈnʌðə(r))\n"
1282 08708877 2003-11-25 devnull "(ə)... beaten (ˈbiːt(ə)n)\n"
1283 08708877 2003-11-25 devnull "i ... Fr. si (si)\n"
1284 08708877 2003-11-25 devnull "e ... Fr. bébé (bebe)\n"
1285 08708877 2003-11-25 devnull "a ... Fr. mari (mari)\n"
1286 08708877 2003-11-25 devnull "ɑ ... Fr. bâtiment (bɑtimã)\n"
1287 08708877 2003-11-25 devnull "ɔ ... Fr. homme (ɔm)\n"
1288 08708877 2003-11-25 devnull "o ... Fr. eau (o)\n"
1289 08708877 2003-11-25 devnull "ø ... Fr. peu (pø)\n"
1290 cbeb0b26 2006-04-01 devnull ;
1291 cbeb0b26 2006-04-01 devnull static char *prkey4 =
1292 08708877 2003-11-25 devnull "œ ... Fr. boeuf (bœf), coeur (kœr)\n"
1293 08708877 2003-11-25 devnull "u ... Fr. douce (dus)\n"
1294 08708877 2003-11-25 devnull "ʏ ... Ger. Müller (ˈmʏlər)\n"
1295 08708877 2003-11-25 devnull "y ... Fr. du (dy)\n"
1296 08708877 2003-11-25 devnull "\n"
1297 08708877 2003-11-25 devnull "Long\n"
1298 08708877 2003-11-25 devnull "iː as in bean (biːn)\n"
1299 08708877 2003-11-25 devnull "ɑː ... barn (bɑːn)\n"
1300 08708877 2003-11-25 devnull "ɔː ... born (bɔːn)\n"
1301 08708877 2003-11-25 devnull "uː ... boon (buːn)\n"
1302 08708877 2003-11-25 devnull "ɜː ... burn (bɜːn)\n"
1303 08708877 2003-11-25 devnull "eː ... Ger. Schnee (ʃneː)\n"
1304 08708877 2003-11-25 devnull "ɛː ... Ger. Fähre (ˈfɛːrə)\n"
1305 08708877 2003-11-25 devnull "aː ... Ger. Tag (taːk)\n"
1306 08708877 2003-11-25 devnull "oː ... Ger. Sohn (zoːn)\n"
1307 08708877 2003-11-25 devnull "øː ... Ger. Goethe (gøːtə)\n"
1308 08708877 2003-11-25 devnull "yː ... Ger. grün (gryːn)\n"
1309 08708877 2003-11-25 devnull "\n"
1310 cbeb0b26 2006-04-01 devnull ;
1311 fa325e9b 2020-01-10 cross static char *prkey5 =
1312 08708877 2003-11-25 devnull "Nasal\n"
1313 08708877 2003-11-25 devnull "ɛ˜, æ˜ as in Fr. fin (fɛ˜, fæ˜)\n"
1314 08708877 2003-11-25 devnull "ã ... Fr. franc (frã)\n"
1315 08708877 2003-11-25 devnull "ɔ˜ ... Fr. bon (bɔ˜n)\n"
1316 08708877 2003-11-25 devnull "œ˜ ... Fr. un (œ˜)\n"
1317 08708877 2003-11-25 devnull "\n"
1318 08708877 2003-11-25 devnull "Dipthongs, etc.\n"
1319 08708877 2003-11-25 devnull "eɪ as in bay (beɪ)\n"
1320 08708877 2003-11-25 devnull "aɪ ... buy (baɪ)\n"
1321 08708877 2003-11-25 devnull "ɔɪ ... boy (bɔɪ)\n"
1322 08708877 2003-11-25 devnull "əʊ ... no (nəʊ)\n"
1323 08708877 2003-11-25 devnull "aʊ ... now (naʊ)\n"
1324 08708877 2003-11-25 devnull "ɪə ... peer (pɪə(r))\n"
1325 08708877 2003-11-25 devnull "ɛə ... pair (pɛə(r))\n"
1326 08708877 2003-11-25 devnull "ʊə ... tour (tʊə(r))\n"
1327 08708877 2003-11-25 devnull "ɔə ... boar (bɔə(r))\n"
1328 08708877 2003-11-25 devnull "\n"
1329 cbeb0b26 2006-04-01 devnull ;
1330 fa325e9b 2020-01-10 cross static char *prkey6 =
1331 08708877 2003-11-25 devnull "III. STRESS\n"
1332 08708877 2003-11-25 devnull "\n"
1333 08708877 2003-11-25 devnull "Main stress: ˈ preceding stressed syllable\n"
1334 08708877 2003-11-25 devnull "Secondary stress: ˌ preceding stressed syllable\n"
1335 08708877 2003-11-25 devnull "\n"
1336 08708877 2003-11-25 devnull "E.g.: pronunciation (prəˌnʌnsɪˈeɪʃ(ə)n)\n";
1337 08708877 2003-11-25 devnull /* TODO: find transcriptions of foreign consonents, œ, ʏ, nasals */
1338 08708877 2003-11-25 devnull
1339 08708877 2003-11-25 devnull void
1340 08708877 2003-11-25 devnull oedprintkey(void)
1341 08708877 2003-11-25 devnull {
1342 cbeb0b26 2006-04-01 devnull Bprint(bout, "%s%s%s%s%s%s",
1343 cbeb0b26 2006-04-01 devnull prkey1, prkey2, prkey3, prkey4, prkey5, prkey6);
1344 08708877 2003-11-25 devnull }
1345 08708877 2003-11-25 devnull
1346 08708877 2003-11-25 devnull /*
1347 08708877 2003-11-25 devnull * f points just after a '&', fe points at end of entry.
1348 08708877 2003-11-25 devnull * Accumulate the special name, starting after the &
1349 08708877 2003-11-25 devnull * and continuing until the next '.', in spec[].
1350 08708877 2003-11-25 devnull * Return pointer to char after '.'.
1351 08708877 2003-11-25 devnull */
1352 08708877 2003-11-25 devnull static char *
1353 08708877 2003-11-25 devnull getspec(char *f, char *fe)
1354 08708877 2003-11-25 devnull {
1355 08708877 2003-11-25 devnull char *t;
1356 08708877 2003-11-25 devnull int c, i;
1357 08708877 2003-11-25 devnull
1358 08708877 2003-11-25 devnull t = spec;
1359 08708877 2003-11-25 devnull i = sizeof spec;
1360 08708877 2003-11-25 devnull while(--i > 0) {
1361 08708877 2003-11-25 devnull c = *f++;
1362 08708877 2003-11-25 devnull if(c == '.' || f == fe)
1363 08708877 2003-11-25 devnull break;
1364 08708877 2003-11-25 devnull *t++ = c;
1365 08708877 2003-11-25 devnull }
1366 08708877 2003-11-25 devnull *t = 0;
1367 08708877 2003-11-25 devnull return f;
1368 08708877 2003-11-25 devnull }
1369 08708877 2003-11-25 devnull
1370 08708877 2003-11-25 devnull /*
1371 08708877 2003-11-25 devnull * f points just after '<'; fe points at end of entry.
1372 08708877 2003-11-25 devnull * Expect next characters from bin to match:
1373 08708877 2003-11-25 devnull * [/][^ >]+( [^>=]+=[^ >]+)*>
1374 08708877 2003-11-25 devnull * tag auxname auxval
1375 08708877 2003-11-25 devnull * Accumulate the tag and its auxilliary information in
1376 08708877 2003-11-25 devnull * tag[], auxname[][] and auxval[][].
1377 08708877 2003-11-25 devnull * Set tagstarts=1 if the tag is 'starting' (has no '/'), else 0.
1378 08708877 2003-11-25 devnull * Set naux to the number of aux pairs found.
1379 08708877 2003-11-25 devnull * Return pointer to after final '>'.
1380 08708877 2003-11-25 devnull */
1381 08708877 2003-11-25 devnull static char *
1382 08708877 2003-11-25 devnull gettag(char *f, char *fe)
1383 08708877 2003-11-25 devnull {
1384 08708877 2003-11-25 devnull char *t;
1385 08708877 2003-11-25 devnull int c, i;
1386 08708877 2003-11-25 devnull
1387 08708877 2003-11-25 devnull t = tag;
1388 08708877 2003-11-25 devnull c = *f++;
1389 08708877 2003-11-25 devnull if(c == '/')
1390 08708877 2003-11-25 devnull tagstarts = 0;
1391 08708877 2003-11-25 devnull else {
1392 08708877 2003-11-25 devnull tagstarts = 1;
1393 08708877 2003-11-25 devnull *t++ = c;
1394 08708877 2003-11-25 devnull }
1395 08708877 2003-11-25 devnull i = Buflen;
1396 08708877 2003-11-25 devnull naux = 0;
1397 08708877 2003-11-25 devnull while(--i > 0) {
1398 08708877 2003-11-25 devnull c = *f++;
1399 08708877 2003-11-25 devnull if(c == '>' || f == fe)
1400 08708877 2003-11-25 devnull break;
1401 08708877 2003-11-25 devnull if(c == ' ') {
1402 08708877 2003-11-25 devnull *t = 0;
1403 08708877 2003-11-25 devnull t = auxname[naux];
1404 08708877 2003-11-25 devnull i = Buflen;
1405 08708877 2003-11-25 devnull if(naux < Maxaux-1)
1406 08708877 2003-11-25 devnull naux++;
1407 08708877 2003-11-25 devnull } else if(naux && c == '=') {
1408 08708877 2003-11-25 devnull *t = 0;
1409 08708877 2003-11-25 devnull t = auxval[naux-1];
1410 08708877 2003-11-25 devnull i = Buflen;
1411 08708877 2003-11-25 devnull } else
1412 08708877 2003-11-25 devnull *t++ = c;
1413 08708877 2003-11-25 devnull }
1414 08708877 2003-11-25 devnull *t = 0;
1415 08708877 2003-11-25 devnull return f;
1416 08708877 2003-11-25 devnull }
1417 08708877 2003-11-25 devnull
1418 08708877 2003-11-25 devnull static void
1419 08708877 2003-11-25 devnull dostatus(void)
1420 08708877 2003-11-25 devnull {
1421 08708877 2003-11-25 devnull char *s;
1422 08708877 2003-11-25 devnull
1423 08708877 2003-11-25 devnull s = auxstate[St];
1424 08708877 2003-11-25 devnull if(s) {
1425 08708877 2003-11-25 devnull if(strcmp(s, "obs") == 0)
1426 08708877 2003-11-25 devnull outrune(0x2020);
1427 08708877 2003-11-25 devnull else if(strcmp(s, "ali") == 0)
1428 08708877 2003-11-25 devnull outrune(0x2016);
1429 08708877 2003-11-25 devnull else if(strcmp(s, "err") == 0 || strcmp(s, "spu") == 0)
1430 08708877 2003-11-25 devnull outrune(0xb6);
1431 08708877 2003-11-25 devnull else if(strcmp(s, "xref") == 0)
1432 08708877 2003-11-25 devnull {/* nothing */}
1433 08708877 2003-11-25 devnull else if(debug)
1434 08708877 2003-11-25 devnull err("status %ld %d %s", curentry.doff, cursize, s);
1435 08708877 2003-11-25 devnull }
1436 08708877 2003-11-25 devnull }