1"""
2font data tables for truetype and afm computer modern fonts
3"""
4
5from __future__ import annotations
6from typing import overload, Union
7
8latex_to_bakoma = {
9 '\\__sqrt__' : ('cmex10', 0x70),
10 '\\bigcap' : ('cmex10', 0x5c),
11 '\\bigcup' : ('cmex10', 0x5b),
12 '\\bigodot' : ('cmex10', 0x4b),
13 '\\bigoplus' : ('cmex10', 0x4d),
14 '\\bigotimes' : ('cmex10', 0x4f),
15 '\\biguplus' : ('cmex10', 0x5d),
16 '\\bigvee' : ('cmex10', 0x5f),
17 '\\bigwedge' : ('cmex10', 0x5e),
18 '\\coprod' : ('cmex10', 0x61),
19 '\\int' : ('cmex10', 0x5a),
20 '\\langle' : ('cmex10', 0xad),
21 '\\leftangle' : ('cmex10', 0xad),
22 '\\leftbrace' : ('cmex10', 0xa9),
23 '\\oint' : ('cmex10', 0x49),
24 '\\prod' : ('cmex10', 0x59),
25 '\\rangle' : ('cmex10', 0xae),
26 '\\rightangle' : ('cmex10', 0xae),
27 '\\rightbrace' : ('cmex10', 0xaa),
28 '\\sum' : ('cmex10', 0x58),
29 '\\widehat' : ('cmex10', 0x62),
30 '\\widetilde' : ('cmex10', 0x65),
31 '\\{' : ('cmex10', 0xa9),
32 '\\}' : ('cmex10', 0xaa),
33 '{' : ('cmex10', 0xa9),
34 '}' : ('cmex10', 0xaa),
35
36 ',' : ('cmmi10', 0x3b),
37 '.' : ('cmmi10', 0x3a),
38 '/' : ('cmmi10', 0x3d),
39 '<' : ('cmmi10', 0x3c),
40 '>' : ('cmmi10', 0x3e),
41 '\\alpha' : ('cmmi10', 0xae),
42 '\\beta' : ('cmmi10', 0xaf),
43 '\\chi' : ('cmmi10', 0xc2),
44 '\\combiningrightarrowabove' : ('cmmi10', 0x7e),
45 '\\delta' : ('cmmi10', 0xb1),
46 '\\ell' : ('cmmi10', 0x60),
47 '\\epsilon' : ('cmmi10', 0xb2),
48 '\\eta' : ('cmmi10', 0xb4),
49 '\\flat' : ('cmmi10', 0x5b),
50 '\\frown' : ('cmmi10', 0x5f),
51 '\\gamma' : ('cmmi10', 0xb0),
52 '\\imath' : ('cmmi10', 0x7b),
53 '\\iota' : ('cmmi10', 0xb6),
54 '\\jmath' : ('cmmi10', 0x7c),
55 '\\kappa' : ('cmmi10', 0x2219),
56 '\\lambda' : ('cmmi10', 0xb8),
57 '\\leftharpoondown' : ('cmmi10', 0x29),
58 '\\leftharpoonup' : ('cmmi10', 0x28),
59 '\\mu' : ('cmmi10', 0xb9),
60 '\\natural' : ('cmmi10', 0x5c),
61 '\\nu' : ('cmmi10', 0xba),
62 '\\omega' : ('cmmi10', 0x21),
63 '\\phi' : ('cmmi10', 0xc1),
64 '\\pi' : ('cmmi10', 0xbc),
65 '\\psi' : ('cmmi10', 0xc3),
66 '\\rho' : ('cmmi10', 0xbd),
67 '\\rightharpoondown' : ('cmmi10', 0x2b),
68 '\\rightharpoonup' : ('cmmi10', 0x2a),
69 '\\sharp' : ('cmmi10', 0x5d),
70 '\\sigma' : ('cmmi10', 0xbe),
71 '\\smile' : ('cmmi10', 0x5e),
72 '\\tau' : ('cmmi10', 0xbf),
73 '\\theta' : ('cmmi10', 0xb5),
74 '\\triangleleft' : ('cmmi10', 0x2f),
75 '\\triangleright' : ('cmmi10', 0x2e),
76 '\\upsilon' : ('cmmi10', 0xc0),
77 '\\varepsilon' : ('cmmi10', 0x22),
78 '\\varphi' : ('cmmi10', 0x27),
79 '\\varrho' : ('cmmi10', 0x25),
80 '\\varsigma' : ('cmmi10', 0x26),
81 '\\vartheta' : ('cmmi10', 0x23),
82 '\\wp' : ('cmmi10', 0x7d),
83 '\\xi' : ('cmmi10', 0xbb),
84 '\\zeta' : ('cmmi10', 0xb3),
85
86 '!' : ('cmr10', 0x21),
87 '%' : ('cmr10', 0x25),
88 '&' : ('cmr10', 0x26),
89 '(' : ('cmr10', 0x28),
90 ')' : ('cmr10', 0x29),
91 '+' : ('cmr10', 0x2b),
92 '0' : ('cmr10', 0x30),
93 '1' : ('cmr10', 0x31),
94 '2' : ('cmr10', 0x32),
95 '3' : ('cmr10', 0x33),
96 '4' : ('cmr10', 0x34),
97 '5' : ('cmr10', 0x35),
98 '6' : ('cmr10', 0x36),
99 '7' : ('cmr10', 0x37),
100 '8' : ('cmr10', 0x38),
101 '9' : ('cmr10', 0x39),
102 ':' : ('cmr10', 0x3a),
103 ';' : ('cmr10', 0x3b),
104 '=' : ('cmr10', 0x3d),
105 '?' : ('cmr10', 0x3f),
106 '@' : ('cmr10', 0x40),
107 '[' : ('cmr10', 0x5b),
108 '\\#' : ('cmr10', 0x23),
109 '\\$' : ('cmr10', 0x24),
110 '\\%' : ('cmr10', 0x25),
111 '\\Delta' : ('cmr10', 0xa2),
112 '\\Gamma' : ('cmr10', 0xa1),
113 '\\Lambda' : ('cmr10', 0xa4),
114 '\\Omega' : ('cmr10', 0xad),
115 '\\Phi' : ('cmr10', 0xa9),
116 '\\Pi' : ('cmr10', 0xa6),
117 '\\Psi' : ('cmr10', 0xaa),
118 '\\Sigma' : ('cmr10', 0xa7),
119 '\\Theta' : ('cmr10', 0xa3),
120 '\\Upsilon' : ('cmr10', 0xa8),
121 '\\Xi' : ('cmr10', 0xa5),
122 '\\circumflexaccent' : ('cmr10', 0x5e),
123 '\\combiningacuteaccent' : ('cmr10', 0xb6),
124 '\\combiningbreve' : ('cmr10', 0xb8),
125 '\\combiningdiaeresis' : ('cmr10', 0xc4),
126 '\\combiningdotabove' : ('cmr10', 0x5f),
127 '\\combininggraveaccent' : ('cmr10', 0xb5),
128 '\\combiningoverline' : ('cmr10', 0xb9),
129 '\\combiningtilde' : ('cmr10', 0x7e),
130 '\\leftbracket' : ('cmr10', 0x5b),
131 '\\leftparen' : ('cmr10', 0x28),
132 '\\rightbracket' : ('cmr10', 0x5d),
133 '\\rightparen' : ('cmr10', 0x29),
134 '\\widebar' : ('cmr10', 0xb9),
135 ']' : ('cmr10', 0x5d),
136
137 '*' : ('cmsy10', 0xa4),
138 '\N{MINUS SIGN}' : ('cmsy10', 0xa1),
139 '\\Downarrow' : ('cmsy10', 0x2b),
140 '\\Im' : ('cmsy10', 0x3d),
141 '\\Leftarrow' : ('cmsy10', 0x28),
142 '\\Leftrightarrow' : ('cmsy10', 0x2c),
143 '\\P' : ('cmsy10', 0x7b),
144 '\\Re' : ('cmsy10', 0x3c),
145 '\\Rightarrow' : ('cmsy10', 0x29),
146 '\\S' : ('cmsy10', 0x78),
147 '\\Uparrow' : ('cmsy10', 0x2a),
148 '\\Updownarrow' : ('cmsy10', 0x6d),
149 '\\Vert' : ('cmsy10', 0x6b),
150 '\\aleph' : ('cmsy10', 0x40),
151 '\\approx' : ('cmsy10', 0xbc),
152 '\\ast' : ('cmsy10', 0xa4),
153 '\\asymp' : ('cmsy10', 0xb3),
154 '\\backslash' : ('cmsy10', 0x6e),
155 '\\bigcirc' : ('cmsy10', 0xb0),
156 '\\bigtriangledown' : ('cmsy10', 0x35),
157 '\\bigtriangleup' : ('cmsy10', 0x34),
158 '\\bot' : ('cmsy10', 0x3f),
159 '\\bullet' : ('cmsy10', 0xb2),
160 '\\cap' : ('cmsy10', 0x5c),
161 '\\cdot' : ('cmsy10', 0xa2),
162 '\\circ' : ('cmsy10', 0xb1),
163 '\\clubsuit' : ('cmsy10', 0x7c),
164 '\\cup' : ('cmsy10', 0x5b),
165 '\\dag' : ('cmsy10', 0x79),
166 '\\dashv' : ('cmsy10', 0x61),
167 '\\ddag' : ('cmsy10', 0x7a),
168 '\\diamond' : ('cmsy10', 0xa6),
169 '\\diamondsuit' : ('cmsy10', 0x7d),
170 '\\div' : ('cmsy10', 0xa5),
171 '\\downarrow' : ('cmsy10', 0x23),
172 '\\emptyset' : ('cmsy10', 0x3b),
173 '\\equiv' : ('cmsy10', 0xb4),
174 '\\exists' : ('cmsy10', 0x39),
175 '\\forall' : ('cmsy10', 0x38),
176 '\\geq' : ('cmsy10', 0xb8),
177 '\\gg' : ('cmsy10', 0xc0),
178 '\\heartsuit' : ('cmsy10', 0x7e),
179 '\\in' : ('cmsy10', 0x32),
180 '\\infty' : ('cmsy10', 0x31),
181 '\\lbrace' : ('cmsy10', 0x66),
182 '\\lceil' : ('cmsy10', 0x64),
183 '\\leftarrow' : ('cmsy10', 0xc3),
184 '\\leftrightarrow' : ('cmsy10', 0x24),
185 '\\leq' : ('cmsy10', 0x2219),
186 '\\lfloor' : ('cmsy10', 0x62),
187 '\\ll' : ('cmsy10', 0xbf),
188 '\\mid' : ('cmsy10', 0x6a),
189 '\\mp' : ('cmsy10', 0xa8),
190 '\\nabla' : ('cmsy10', 0x72),
191 '\\nearrow' : ('cmsy10', 0x25),
192 '\\neg' : ('cmsy10', 0x3a),
193 '\\ni' : ('cmsy10', 0x33),
194 '\\nwarrow' : ('cmsy10', 0x2d),
195 '\\odot' : ('cmsy10', 0xaf),
196 '\\ominus' : ('cmsy10', 0xaa),
197 '\\oplus' : ('cmsy10', 0xa9),
198 '\\oslash' : ('cmsy10', 0xae),
199 '\\otimes' : ('cmsy10', 0xad),
200 '\\pm' : ('cmsy10', 0xa7),
201 '\\prec' : ('cmsy10', 0xc1),
202 '\\preceq' : ('cmsy10', 0xb9),
203 '\\prime' : ('cmsy10', 0x30),
204 '\\propto' : ('cmsy10', 0x2f),
205 '\\rbrace' : ('cmsy10', 0x67),
206 '\\rceil' : ('cmsy10', 0x65),
207 '\\rfloor' : ('cmsy10', 0x63),
208 '\\rightarrow' : ('cmsy10', 0x21),
209 '\\searrow' : ('cmsy10', 0x26),
210 '\\sim' : ('cmsy10', 0xbb),
211 '\\simeq' : ('cmsy10', 0x27),
212 '\\slash' : ('cmsy10', 0x36),
213 '\\spadesuit' : ('cmsy10', 0xc4),
214 '\\sqcap' : ('cmsy10', 0x75),
215 '\\sqcup' : ('cmsy10', 0x74),
216 '\\sqsubseteq' : ('cmsy10', 0x76),
217 '\\sqsupseteq' : ('cmsy10', 0x77),
218 '\\subset' : ('cmsy10', 0xbd),
219 '\\subseteq' : ('cmsy10', 0xb5),
220 '\\succ' : ('cmsy10', 0xc2),
221 '\\succeq' : ('cmsy10', 0xba),
222 '\\supset' : ('cmsy10', 0xbe),
223 '\\supseteq' : ('cmsy10', 0xb6),
224 '\\swarrow' : ('cmsy10', 0x2e),
225 '\\times' : ('cmsy10', 0xa3),
226 '\\to' : ('cmsy10', 0x21),
227 '\\top' : ('cmsy10', 0x3e),
228 '\\uparrow' : ('cmsy10', 0x22),
229 '\\updownarrow' : ('cmsy10', 0x6c),
230 '\\uplus' : ('cmsy10', 0x5d),
231 '\\vdash' : ('cmsy10', 0x60),
232 '\\vee' : ('cmsy10', 0x5f),
233 '\\vert' : ('cmsy10', 0x6a),
234 '\\wedge' : ('cmsy10', 0x5e),
235 '\\wr' : ('cmsy10', 0x6f),
236 '\\|' : ('cmsy10', 0x6b),
237 '|' : ('cmsy10', 0x6a),
238
239 '\\_' : ('cmtt10', 0x5f)
240}
241
242# Automatically generated.
243
244type12uni = {
245 'aring' : 229,
246 'quotedblright' : 8221,
247 'V' : 86,
248 'dollar' : 36,
249 'four' : 52,
250 'Yacute' : 221,
251 'P' : 80,
252 'underscore' : 95,
253 'p' : 112,
254 'Otilde' : 213,
255 'perthousand' : 8240,
256 'zero' : 48,
257 'dotlessi' : 305,
258 'Scaron' : 352,
259 'zcaron' : 382,
260 'egrave' : 232,
261 'section' : 167,
262 'Icircumflex' : 206,
263 'ntilde' : 241,
264 'ampersand' : 38,
265 'dotaccent' : 729,
266 'degree' : 176,
267 'K' : 75,
268 'acircumflex' : 226,
269 'Aring' : 197,
270 'k' : 107,
271 'smalltilde' : 732,
272 'Agrave' : 192,
273 'divide' : 247,
274 'ocircumflex' : 244,
275 'asciitilde' : 126,
276 'two' : 50,
277 'E' : 69,
278 'scaron' : 353,
279 'F' : 70,
280 'bracketleft' : 91,
281 'asciicircum' : 94,
282 'f' : 102,
283 'ordmasculine' : 186,
284 'mu' : 181,
285 'paragraph' : 182,
286 'nine' : 57,
287 'v' : 118,
288 'guilsinglleft' : 8249,
289 'backslash' : 92,
290 'six' : 54,
291 'A' : 65,
292 'icircumflex' : 238,
293 'a' : 97,
294 'ogonek' : 731,
295 'q' : 113,
296 'oacute' : 243,
297 'ograve' : 242,
298 'edieresis' : 235,
299 'comma' : 44,
300 'otilde' : 245,
301 'guillemotright' : 187,
302 'ecircumflex' : 234,
303 'greater' : 62,
304 'uacute' : 250,
305 'L' : 76,
306 'bullet' : 8226,
307 'cedilla' : 184,
308 'ydieresis' : 255,
309 'l' : 108,
310 'logicalnot' : 172,
311 'exclamdown' : 161,
312 'endash' : 8211,
313 'agrave' : 224,
314 'Adieresis' : 196,
315 'germandbls' : 223,
316 'Odieresis' : 214,
317 'space' : 32,
318 'quoteright' : 8217,
319 'ucircumflex' : 251,
320 'G' : 71,
321 'quoteleft' : 8216,
322 'W' : 87,
323 'Q' : 81,
324 'g' : 103,
325 'w' : 119,
326 'question' : 63,
327 'one' : 49,
328 'ring' : 730,
329 'figuredash' : 8210,
330 'B' : 66,
331 'iacute' : 237,
332 'Ydieresis' : 376,
333 'R' : 82,
334 'b' : 98,
335 'r' : 114,
336 'Ccedilla' : 199,
337 'minus' : 8722,
338 'Lslash' : 321,
339 'Uacute' : 218,
340 'yacute' : 253,
341 'Ucircumflex' : 219,
342 'quotedbl' : 34,
343 'onehalf' : 189,
344 'Thorn' : 222,
345 'M' : 77,
346 'eight' : 56,
347 'multiply' : 215,
348 'grave' : 96,
349 'Ocircumflex' : 212,
350 'm' : 109,
351 'Ugrave' : 217,
352 'guilsinglright' : 8250,
353 'Ntilde' : 209,
354 'questiondown' : 191,
355 'Atilde' : 195,
356 'ccedilla' : 231,
357 'Z' : 90,
358 'copyright' : 169,
359 'yen' : 165,
360 'Eacute' : 201,
361 'H' : 72,
362 'X' : 88,
363 'Idieresis' : 207,
364 'bar' : 124,
365 'h' : 104,
366 'x' : 120,
367 'udieresis' : 252,
368 'ordfeminine' : 170,
369 'braceleft' : 123,
370 'macron' : 175,
371 'atilde' : 227,
372 'Acircumflex' : 194,
373 'Oslash' : 216,
374 'C' : 67,
375 'quotedblleft' : 8220,
376 'S' : 83,
377 'exclam' : 33,
378 'Zcaron' : 381,
379 'equal' : 61,
380 's' : 115,
381 'eth' : 240,
382 'Egrave' : 200,
383 'hyphen' : 45,
384 'period' : 46,
385 'igrave' : 236,
386 'colon' : 58,
387 'Ecircumflex' : 202,
388 'trademark' : 8482,
389 'Aacute' : 193,
390 'cent' : 162,
391 'lslash' : 322,
392 'c' : 99,
393 'N' : 78,
394 'breve' : 728,
395 'Oacute' : 211,
396 'guillemotleft' : 171,
397 'n' : 110,
398 'idieresis' : 239,
399 'braceright' : 125,
400 'seven' : 55,
401 'brokenbar' : 166,
402 'ugrave' : 249,
403 'periodcentered' : 183,
404 'sterling' : 163,
405 'I' : 73,
406 'Y' : 89,
407 'Eth' : 208,
408 'emdash' : 8212,
409 'i' : 105,
410 'daggerdbl' : 8225,
411 'y' : 121,
412 'plusminus' : 177,
413 'less' : 60,
414 'Udieresis' : 220,
415 'D' : 68,
416 'five' : 53,
417 'T' : 84,
418 'oslash' : 248,
419 'acute' : 180,
420 'd' : 100,
421 'OE' : 338,
422 'Igrave' : 204,
423 't' : 116,
424 'parenright' : 41,
425 'adieresis' : 228,
426 'quotesingle' : 39,
427 'twodotenleader' : 8229,
428 'slash' : 47,
429 'ellipsis' : 8230,
430 'numbersign' : 35,
431 'odieresis' : 246,
432 'O' : 79,
433 'oe' : 339,
434 'o' : 111,
435 'Edieresis' : 203,
436 'plus' : 43,
437 'dagger' : 8224,
438 'three' : 51,
439 'hungarumlaut' : 733,
440 'parenleft' : 40,
441 'fraction' : 8260,
442 'registered' : 174,
443 'J' : 74,
444 'dieresis' : 168,
445 'Ograve' : 210,
446 'j' : 106,
447 'z' : 122,
448 'ae' : 230,
449 'semicolon' : 59,
450 'at' : 64,
451 'Iacute' : 205,
452 'percent' : 37,
453 'bracketright' : 93,
454 'AE' : 198,
455 'asterisk' : 42,
456 'aacute' : 225,
457 'U' : 85,
458 'eacute' : 233,
459 'e' : 101,
460 'thorn' : 254,
461 'u' : 117,
462}
463
464uni2type1 = {v: k for k, v in type12uni.items()}
465
466# The script below is to sort and format the tex2uni dict
467
468## For decimal values: int(hex(v), 16)
469# newtex = {k: hex(v) for k, v in tex2uni.items()}
470# sd = dict(sorted(newtex.items(), key=lambda item: item[0]))
471#
472## For formatting the sorted dictionary with proper spacing
473## the value '24' comes from finding the longest string in
474## the newtex keys with len(max(newtex, key=len))
475# for key in sd:
476# print("{0:24} : {1: <s},".format("'" + key + "'", sd[key]))
477
478tex2uni = {
479 '#' : 0x23,
480 '$' : 0x24,
481 '%' : 0x25,
482 'AA' : 0xc5,
483 'AE' : 0xc6,
484 'BbbC' : 0x2102,
485 'BbbN' : 0x2115,
486 'BbbP' : 0x2119,
487 'BbbQ' : 0x211a,
488 'BbbR' : 0x211d,
489 'BbbZ' : 0x2124,
490 'Bumpeq' : 0x224e,
491 'Cap' : 0x22d2,
492 'Colon' : 0x2237,
493 'Cup' : 0x22d3,
494 'DH' : 0xd0,
495 'Delta' : 0x394,
496 'Doteq' : 0x2251,
497 'Downarrow' : 0x21d3,
498 'Equiv' : 0x2263,
499 'Finv' : 0x2132,
500 'Game' : 0x2141,
501 'Gamma' : 0x393,
502 'H' : 0x30b,
503 'Im' : 0x2111,
504 'Join' : 0x2a1d,
505 'L' : 0x141,
506 'Lambda' : 0x39b,
507 'Ldsh' : 0x21b2,
508 'Leftarrow' : 0x21d0,
509 'Leftrightarrow' : 0x21d4,
510 'Lleftarrow' : 0x21da,
511 'Longleftarrow' : 0x27f8,
512 'Longleftrightarrow' : 0x27fa,
513 'Longrightarrow' : 0x27f9,
514 'Lsh' : 0x21b0,
515 'Nearrow' : 0x21d7,
516 'Nwarrow' : 0x21d6,
517 'O' : 0xd8,
518 'OE' : 0x152,
519 'Omega' : 0x3a9,
520 'P' : 0xb6,
521 'Phi' : 0x3a6,
522 'Pi' : 0x3a0,
523 'Psi' : 0x3a8,
524 'QED' : 0x220e,
525 'Rdsh' : 0x21b3,
526 'Re' : 0x211c,
527 'Rightarrow' : 0x21d2,
528 'Rrightarrow' : 0x21db,
529 'Rsh' : 0x21b1,
530 'S' : 0xa7,
531 'Searrow' : 0x21d8,
532 'Sigma' : 0x3a3,
533 'Subset' : 0x22d0,
534 'Supset' : 0x22d1,
535 'Swarrow' : 0x21d9,
536 'Theta' : 0x398,
537 'Thorn' : 0xde,
538 'Uparrow' : 0x21d1,
539 'Updownarrow' : 0x21d5,
540 'Upsilon' : 0x3a5,
541 'Vdash' : 0x22a9,
542 'Vert' : 0x2016,
543 'Vvdash' : 0x22aa,
544 'Xi' : 0x39e,
545 '_' : 0x5f,
546 '__sqrt__' : 0x221a,
547 'aa' : 0xe5,
548 'ac' : 0x223e,
549 'acute' : 0x301,
550 'acwopencirclearrow' : 0x21ba,
551 'adots' : 0x22f0,
552 'ae' : 0xe6,
553 'aleph' : 0x2135,
554 'alpha' : 0x3b1,
555 'amalg' : 0x2a3f,
556 'angle' : 0x2220,
557 'approx' : 0x2248,
558 'approxeq' : 0x224a,
559 'approxident' : 0x224b,
560 'arceq' : 0x2258,
561 'ast' : 0x2217,
562 'asterisk' : 0x2a,
563 'asymp' : 0x224d,
564 'backcong' : 0x224c,
565 'backepsilon' : 0x3f6,
566 'backprime' : 0x2035,
567 'backsim' : 0x223d,
568 'backsimeq' : 0x22cd,
569 'backslash' : 0x5c,
570 'bagmember' : 0x22ff,
571 'bar' : 0x304,
572 'barleftarrow' : 0x21e4,
573 'barvee' : 0x22bd,
574 'barwedge' : 0x22bc,
575 'because' : 0x2235,
576 'beta' : 0x3b2,
577 'beth' : 0x2136,
578 'between' : 0x226c,
579 'bigcap' : 0x22c2,
580 'bigcirc' : 0x25cb,
581 'bigcup' : 0x22c3,
582 'bigodot' : 0x2a00,
583 'bigoplus' : 0x2a01,
584 'bigotimes' : 0x2a02,
585 'bigsqcup' : 0x2a06,
586 'bigstar' : 0x2605,
587 'bigtriangledown' : 0x25bd,
588 'bigtriangleup' : 0x25b3,
589 'biguplus' : 0x2a04,
590 'bigvee' : 0x22c1,
591 'bigwedge' : 0x22c0,
592 'blacksquare' : 0x25a0,
593 'blacktriangle' : 0x25b4,
594 'blacktriangledown' : 0x25be,
595 'blacktriangleleft' : 0x25c0,
596 'blacktriangleright' : 0x25b6,
597 'bot' : 0x22a5,
598 'bowtie' : 0x22c8,
599 'boxbar' : 0x25eb,
600 'boxdot' : 0x22a1,
601 'boxminus' : 0x229f,
602 'boxplus' : 0x229e,
603 'boxtimes' : 0x22a0,
604 'breve' : 0x306,
605 'bullet' : 0x2219,
606 'bumpeq' : 0x224f,
607 'c' : 0x327,
608 'candra' : 0x310,
609 'cap' : 0x2229,
610 'carriagereturn' : 0x21b5,
611 'cdot' : 0x22c5,
612 'cdotp' : 0xb7,
613 'cdots' : 0x22ef,
614 'cent' : 0xa2,
615 'check' : 0x30c,
616 'checkmark' : 0x2713,
617 'chi' : 0x3c7,
618 'circ' : 0x2218,
619 'circeq' : 0x2257,
620 'circlearrowleft' : 0x21ba,
621 'circlearrowright' : 0x21bb,
622 'circledR' : 0xae,
623 'circledS' : 0x24c8,
624 'circledast' : 0x229b,
625 'circledcirc' : 0x229a,
626 'circleddash' : 0x229d,
627 'circumflexaccent' : 0x302,
628 'clubsuit' : 0x2663,
629 'clubsuitopen' : 0x2667,
630 'colon' : 0x3a,
631 'coloneq' : 0x2254,
632 'combiningacuteaccent' : 0x301,
633 'combiningbreve' : 0x306,
634 'combiningdiaeresis' : 0x308,
635 'combiningdotabove' : 0x307,
636 'combiningfourdotsabove' : 0x20dc,
637 'combininggraveaccent' : 0x300,
638 'combiningoverline' : 0x304,
639 'combiningrightarrowabove' : 0x20d7,
640 'combiningthreedotsabove' : 0x20db,
641 'combiningtilde' : 0x303,
642 'complement' : 0x2201,
643 'cong' : 0x2245,
644 'coprod' : 0x2210,
645 'copyright' : 0xa9,
646 'cup' : 0x222a,
647 'cupdot' : 0x228d,
648 'cupleftarrow' : 0x228c,
649 'curlyeqprec' : 0x22de,
650 'curlyeqsucc' : 0x22df,
651 'curlyvee' : 0x22ce,
652 'curlywedge' : 0x22cf,
653 'curvearrowleft' : 0x21b6,
654 'curvearrowright' : 0x21b7,
655 'cwopencirclearrow' : 0x21bb,
656 'd' : 0x323,
657 'dag' : 0x2020,
658 'dagger' : 0x2020,
659 'daleth' : 0x2138,
660 'danger' : 0x2621,
661 'dashleftarrow' : 0x290e,
662 'dashrightarrow' : 0x290f,
663 'dashv' : 0x22a3,
664 'ddag' : 0x2021,
665 'ddagger' : 0x2021,
666 'ddddot' : 0x20dc,
667 'dddot' : 0x20db,
668 'ddot' : 0x308,
669 'ddots' : 0x22f1,
670 'degree' : 0xb0,
671 'delta' : 0x3b4,
672 'dh' : 0xf0,
673 'diamond' : 0x22c4,
674 'diamondsuit' : 0x2662,
675 'digamma' : 0x3dd,
676 'disin' : 0x22f2,
677 'div' : 0xf7,
678 'divideontimes' : 0x22c7,
679 'dot' : 0x307,
680 'doteq' : 0x2250,
681 'doteqdot' : 0x2251,
682 'dotminus' : 0x2238,
683 'dotplus' : 0x2214,
684 'dots' : 0x2026,
685 'dotsminusdots' : 0x223a,
686 'doublebarwedge' : 0x2306,
687 'downarrow' : 0x2193,
688 'downdownarrows' : 0x21ca,
689 'downharpoonleft' : 0x21c3,
690 'downharpoonright' : 0x21c2,
691 'downzigzagarrow' : 0x21af,
692 'ell' : 0x2113,
693 'emdash' : 0x2014,
694 'emptyset' : 0x2205,
695 'endash' : 0x2013,
696 'epsilon' : 0x3b5,
697 'eqcirc' : 0x2256,
698 'eqcolon' : 0x2255,
699 'eqdef' : 0x225d,
700 'eqgtr' : 0x22dd,
701 'eqless' : 0x22dc,
702 'eqsim' : 0x2242,
703 'eqslantgtr' : 0x2a96,
704 'eqslantless' : 0x2a95,
705 'equal' : 0x3d,
706 'equalparallel' : 0x22d5,
707 'equiv' : 0x2261,
708 'eta' : 0x3b7,
709 'eth' : 0xf0,
710 'exists' : 0x2203,
711 'fallingdotseq' : 0x2252,
712 'flat' : 0x266d,
713 'forall' : 0x2200,
714 'frakC' : 0x212d,
715 'frakZ' : 0x2128,
716 'frown' : 0x2322,
717 'gamma' : 0x3b3,
718 'geq' : 0x2265,
719 'geqq' : 0x2267,
720 'geqslant' : 0x2a7e,
721 'gg' : 0x226b,
722 'ggg' : 0x22d9,
723 'gimel' : 0x2137,
724 'gnapprox' : 0x2a8a,
725 'gneqq' : 0x2269,
726 'gnsim' : 0x22e7,
727 'grave' : 0x300,
728 'greater' : 0x3e,
729 'gtrapprox' : 0x2a86,
730 'gtrdot' : 0x22d7,
731 'gtreqless' : 0x22db,
732 'gtreqqless' : 0x2a8c,
733 'gtrless' : 0x2277,
734 'gtrsim' : 0x2273,
735 'guillemotleft' : 0xab,
736 'guillemotright' : 0xbb,
737 'guilsinglleft' : 0x2039,
738 'guilsinglright' : 0x203a,
739 'hat' : 0x302,
740 'hbar' : 0x127,
741 'heartsuit' : 0x2661,
742 'hermitmatrix' : 0x22b9,
743 'hookleftarrow' : 0x21a9,
744 'hookrightarrow' : 0x21aa,
745 'hslash' : 0x210f,
746 'i' : 0x131,
747 'iiiint' : 0x2a0c,
748 'iiint' : 0x222d,
749 'iint' : 0x222c,
750 'imageof' : 0x22b7,
751 'imath' : 0x131,
752 'in' : 0x2208,
753 'increment' : 0x2206,
754 'infty' : 0x221e,
755 'int' : 0x222b,
756 'intercal' : 0x22ba,
757 'invnot' : 0x2310,
758 'iota' : 0x3b9,
759 'isinE' : 0x22f9,
760 'isindot' : 0x22f5,
761 'isinobar' : 0x22f7,
762 'isins' : 0x22f4,
763 'isinvb' : 0x22f8,
764 'jmath' : 0x237,
765 'k' : 0x328,
766 'kappa' : 0x3ba,
767 'kernelcontraction' : 0x223b,
768 'l' : 0x142,
769 'lambda' : 0x3bb,
770 'lambdabar' : 0x19b,
771 'langle' : 0x27e8,
772 'lasp' : 0x2bd,
773 'lbrace' : 0x7b,
774 'lbrack' : 0x5b,
775 'lceil' : 0x2308,
776 'ldots' : 0x2026,
777 'leadsto' : 0x21dd,
778 'leftarrow' : 0x2190,
779 'leftarrowtail' : 0x21a2,
780 'leftbrace' : 0x7b,
781 'leftharpoonaccent' : 0x20d0,
782 'leftharpoondown' : 0x21bd,
783 'leftharpoonup' : 0x21bc,
784 'leftleftarrows' : 0x21c7,
785 'leftparen' : 0x28,
786 'leftrightarrow' : 0x2194,
787 'leftrightarrows' : 0x21c6,
788 'leftrightharpoons' : 0x21cb,
789 'leftrightsquigarrow' : 0x21ad,
790 'leftsquigarrow' : 0x219c,
791 'leftthreetimes' : 0x22cb,
792 'leq' : 0x2264,
793 'leqq' : 0x2266,
794 'leqslant' : 0x2a7d,
795 'less' : 0x3c,
796 'lessapprox' : 0x2a85,
797 'lessdot' : 0x22d6,
798 'lesseqgtr' : 0x22da,
799 'lesseqqgtr' : 0x2a8b,
800 'lessgtr' : 0x2276,
801 'lesssim' : 0x2272,
802 'lfloor' : 0x230a,
803 'lgroup' : 0x27ee,
804 'lhd' : 0x25c1,
805 'll' : 0x226a,
806 'llcorner' : 0x231e,
807 'lll' : 0x22d8,
808 'lnapprox' : 0x2a89,
809 'lneqq' : 0x2268,
810 'lnsim' : 0x22e6,
811 'longleftarrow' : 0x27f5,
812 'longleftrightarrow' : 0x27f7,
813 'longmapsto' : 0x27fc,
814 'longrightarrow' : 0x27f6,
815 'looparrowleft' : 0x21ab,
816 'looparrowright' : 0x21ac,
817 'lq' : 0x2018,
818 'lrcorner' : 0x231f,
819 'ltimes' : 0x22c9,
820 'macron' : 0xaf,
821 'maltese' : 0x2720,
822 'mapsdown' : 0x21a7,
823 'mapsfrom' : 0x21a4,
824 'mapsto' : 0x21a6,
825 'mapsup' : 0x21a5,
826 'measeq' : 0x225e,
827 'measuredangle' : 0x2221,
828 'measuredrightangle' : 0x22be,
829 'merge' : 0x2a55,
830 'mho' : 0x2127,
831 'mid' : 0x2223,
832 'minus' : 0x2212,
833 'minuscolon' : 0x2239,
834 'models' : 0x22a7,
835 'mp' : 0x2213,
836 'mu' : 0x3bc,
837 'multimap' : 0x22b8,
838 'nLeftarrow' : 0x21cd,
839 'nLeftrightarrow' : 0x21ce,
840 'nRightarrow' : 0x21cf,
841 'nVDash' : 0x22af,
842 'nVdash' : 0x22ae,
843 'nabla' : 0x2207,
844 'napprox' : 0x2249,
845 'natural' : 0x266e,
846 'ncong' : 0x2247,
847 'ne' : 0x2260,
848 'nearrow' : 0x2197,
849 'neg' : 0xac,
850 'neq' : 0x2260,
851 'nequiv' : 0x2262,
852 'nexists' : 0x2204,
853 'ngeq' : 0x2271,
854 'ngtr' : 0x226f,
855 'ngtrless' : 0x2279,
856 'ngtrsim' : 0x2275,
857 'ni' : 0x220b,
858 'niobar' : 0x22fe,
859 'nis' : 0x22fc,
860 'nisd' : 0x22fa,
861 'nleftarrow' : 0x219a,
862 'nleftrightarrow' : 0x21ae,
863 'nleq' : 0x2270,
864 'nless' : 0x226e,
865 'nlessgtr' : 0x2278,
866 'nlesssim' : 0x2274,
867 'nmid' : 0x2224,
868 'not' : 0x338,
869 'notin' : 0x2209,
870 'notsmallowns' : 0x220c,
871 'nparallel' : 0x2226,
872 'nprec' : 0x2280,
873 'npreccurlyeq' : 0x22e0,
874 'nrightarrow' : 0x219b,
875 'nsim' : 0x2241,
876 'nsimeq' : 0x2244,
877 'nsqsubseteq' : 0x22e2,
878 'nsqsupseteq' : 0x22e3,
879 'nsubset' : 0x2284,
880 'nsubseteq' : 0x2288,
881 'nsucc' : 0x2281,
882 'nsucccurlyeq' : 0x22e1,
883 'nsupset' : 0x2285,
884 'nsupseteq' : 0x2289,
885 'ntriangleleft' : 0x22ea,
886 'ntrianglelefteq' : 0x22ec,
887 'ntriangleright' : 0x22eb,
888 'ntrianglerighteq' : 0x22ed,
889 'nu' : 0x3bd,
890 'nvDash' : 0x22ad,
891 'nvdash' : 0x22ac,
892 'nwarrow' : 0x2196,
893 'o' : 0xf8,
894 'obar' : 0x233d,
895 'ocirc' : 0x30a,
896 'odot' : 0x2299,
897 'oe' : 0x153,
898 'oequal' : 0x229c,
899 'oiiint' : 0x2230,
900 'oiint' : 0x222f,
901 'oint' : 0x222e,
902 'omega' : 0x3c9,
903 'ominus' : 0x2296,
904 'oplus' : 0x2295,
905 'origof' : 0x22b6,
906 'oslash' : 0x2298,
907 'otimes' : 0x2297,
908 'overarc' : 0x311,
909 'overleftarrow' : 0x20d6,
910 'overleftrightarrow' : 0x20e1,
911 'parallel' : 0x2225,
912 'partial' : 0x2202,
913 'perp' : 0x27c2,
914 'perthousand' : 0x2030,
915 'phi' : 0x3d5,
916 'pi' : 0x3c0,
917 'pitchfork' : 0x22d4,
918 'plus' : 0x2b,
919 'pm' : 0xb1,
920 'prec' : 0x227a,
921 'precapprox' : 0x2ab7,
922 'preccurlyeq' : 0x227c,
923 'preceq' : 0x227c,
924 'precnapprox' : 0x2ab9,
925 'precnsim' : 0x22e8,
926 'precsim' : 0x227e,
927 'prime' : 0x2032,
928 'prod' : 0x220f,
929 'propto' : 0x221d,
930 'prurel' : 0x22b0,
931 'psi' : 0x3c8,
932 'quad' : 0x2003,
933 'questeq' : 0x225f,
934 'rangle' : 0x27e9,
935 'rasp' : 0x2bc,
936 'ratio' : 0x2236,
937 'rbrace' : 0x7d,
938 'rbrack' : 0x5d,
939 'rceil' : 0x2309,
940 'rfloor' : 0x230b,
941 'rgroup' : 0x27ef,
942 'rhd' : 0x25b7,
943 'rho' : 0x3c1,
944 'rightModels' : 0x22ab,
945 'rightangle' : 0x221f,
946 'rightarrow' : 0x2192,
947 'rightarrowbar' : 0x21e5,
948 'rightarrowtail' : 0x21a3,
949 'rightassert' : 0x22a6,
950 'rightbrace' : 0x7d,
951 'rightharpoonaccent' : 0x20d1,
952 'rightharpoondown' : 0x21c1,
953 'rightharpoonup' : 0x21c0,
954 'rightleftarrows' : 0x21c4,
955 'rightleftharpoons' : 0x21cc,
956 'rightparen' : 0x29,
957 'rightrightarrows' : 0x21c9,
958 'rightsquigarrow' : 0x219d,
959 'rightthreetimes' : 0x22cc,
960 'rightzigzagarrow' : 0x21dd,
961 'ring' : 0x2da,
962 'risingdotseq' : 0x2253,
963 'rq' : 0x2019,
964 'rtimes' : 0x22ca,
965 'scrB' : 0x212c,
966 'scrE' : 0x2130,
967 'scrF' : 0x2131,
968 'scrH' : 0x210b,
969 'scrI' : 0x2110,
970 'scrL' : 0x2112,
971 'scrM' : 0x2133,
972 'scrR' : 0x211b,
973 'scre' : 0x212f,
974 'scrg' : 0x210a,
975 'scro' : 0x2134,
976 'scurel' : 0x22b1,
977 'searrow' : 0x2198,
978 'setminus' : 0x2216,
979 'sharp' : 0x266f,
980 'sigma' : 0x3c3,
981 'sim' : 0x223c,
982 'simeq' : 0x2243,
983 'simneqq' : 0x2246,
984 'sinewave' : 0x223f,
985 'slash' : 0x2215,
986 'smallin' : 0x220a,
987 'smallintclockwise' : 0x2231,
988 'smallointctrcclockwise' : 0x2233,
989 'smallowns' : 0x220d,
990 'smallsetminus' : 0x2216,
991 'smallvarointclockwise' : 0x2232,
992 'smile' : 0x2323,
993 'solbar' : 0x233f,
994 'spadesuit' : 0x2660,
995 'spadesuitopen' : 0x2664,
996 'sphericalangle' : 0x2222,
997 'sqcap' : 0x2293,
998 'sqcup' : 0x2294,
999 'sqsubset' : 0x228f,
1000 'sqsubseteq' : 0x2291,
1001 'sqsubsetneq' : 0x22e4,
1002 'sqsupset' : 0x2290,
1003 'sqsupseteq' : 0x2292,
1004 'sqsupsetneq' : 0x22e5,
1005 'ss' : 0xdf,
1006 'star' : 0x22c6,
1007 'stareq' : 0x225b,
1008 'sterling' : 0xa3,
1009 'subset' : 0x2282,
1010 'subseteq' : 0x2286,
1011 'subseteqq' : 0x2ac5,
1012 'subsetneq' : 0x228a,
1013 'subsetneqq' : 0x2acb,
1014 'succ' : 0x227b,
1015 'succapprox' : 0x2ab8,
1016 'succcurlyeq' : 0x227d,
1017 'succeq' : 0x227d,
1018 'succnapprox' : 0x2aba,
1019 'succnsim' : 0x22e9,
1020 'succsim' : 0x227f,
1021 'sum' : 0x2211,
1022 'supset' : 0x2283,
1023 'supseteq' : 0x2287,
1024 'supseteqq' : 0x2ac6,
1025 'supsetneq' : 0x228b,
1026 'supsetneqq' : 0x2acc,
1027 'swarrow' : 0x2199,
1028 't' : 0x361,
1029 'tau' : 0x3c4,
1030 'textasciiacute' : 0xb4,
1031 'textasciicircum' : 0x5e,
1032 'textasciigrave' : 0x60,
1033 'textasciitilde' : 0x7e,
1034 'textexclamdown' : 0xa1,
1035 'textquestiondown' : 0xbf,
1036 'textquotedblleft' : 0x201c,
1037 'textquotedblright' : 0x201d,
1038 'therefore' : 0x2234,
1039 'theta' : 0x3b8,
1040 'thickspace' : 0x2005,
1041 'thorn' : 0xfe,
1042 'tilde' : 0x303,
1043 'times' : 0xd7,
1044 'to' : 0x2192,
1045 'top' : 0x22a4,
1046 'triangle' : 0x25b3,
1047 'triangledown' : 0x25bf,
1048 'triangleeq' : 0x225c,
1049 'triangleleft' : 0x25c1,
1050 'trianglelefteq' : 0x22b4,
1051 'triangleq' : 0x225c,
1052 'triangleright' : 0x25b7,
1053 'trianglerighteq' : 0x22b5,
1054 'turnednot' : 0x2319,
1055 'twoheaddownarrow' : 0x21a1,
1056 'twoheadleftarrow' : 0x219e,
1057 'twoheadrightarrow' : 0x21a0,
1058 'twoheaduparrow' : 0x219f,
1059 'ulcorner' : 0x231c,
1060 'underbar' : 0x331,
1061 'unlhd' : 0x22b4,
1062 'unrhd' : 0x22b5,
1063 'uparrow' : 0x2191,
1064 'updownarrow' : 0x2195,
1065 'updownarrowbar' : 0x21a8,
1066 'updownarrows' : 0x21c5,
1067 'upharpoonleft' : 0x21bf,
1068 'upharpoonright' : 0x21be,
1069 'uplus' : 0x228e,
1070 'upsilon' : 0x3c5,
1071 'upuparrows' : 0x21c8,
1072 'urcorner' : 0x231d,
1073 'vDash' : 0x22a8,
1074 'varepsilon' : 0x3b5,
1075 'varisinobar' : 0x22f6,
1076 'varisins' : 0x22f3,
1077 'varkappa' : 0x3f0,
1078 'varlrtriangle' : 0x22bf,
1079 'varniobar' : 0x22fd,
1080 'varnis' : 0x22fb,
1081 'varnothing' : 0x2205,
1082 'varphi' : 0x3c6,
1083 'varpi' : 0x3d6,
1084 'varpropto' : 0x221d,
1085 'varrho' : 0x3f1,
1086 'varsigma' : 0x3c2,
1087 'vartheta' : 0x3d1,
1088 'vartriangle' : 0x25b5,
1089 'vartriangleleft' : 0x22b2,
1090 'vartriangleright' : 0x22b3,
1091 'vdash' : 0x22a2,
1092 'vdots' : 0x22ee,
1093 'vec' : 0x20d7,
1094 'vee' : 0x2228,
1095 'veebar' : 0x22bb,
1096 'veeeq' : 0x225a,
1097 'vert' : 0x7c,
1098 'wedge' : 0x2227,
1099 'wedgeq' : 0x2259,
1100 'widebar' : 0x305,
1101 'widehat' : 0x302,
1102 'widetilde' : 0x303,
1103 'wp' : 0x2118,
1104 'wr' : 0x2240,
1105 'xi' : 0x3be,
1106 'yen' : 0xa5,
1107 'zeta' : 0x3b6,
1108 '{' : 0x7b,
1109 '|' : 0x2016,
1110 '}' : 0x7d,
1111}
1112
1113# Each element is a 4-tuple of the form:
1114# src_start, src_end, dst_font, dst_start
1115
1116_EntryTypeIn = tuple[str, str, str, Union[str, int]]
1117_EntryTypeOut = tuple[int, int, str, int]
1118
1119_stix_virtual_fonts: dict[str, Union[dict[
1120 str, list[_EntryTypeIn]], list[_EntryTypeIn]]] = {
1121 'bb': {
1122 "rm": [
1123 ("\N{DIGIT ZERO}",
1124 "\N{DIGIT NINE}",
1125 "rm",
1126 "\N{MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO}"),
1127 ("\N{LATIN CAPITAL LETTER A}",
1128 "\N{LATIN CAPITAL LETTER B}",
1129 "rm",
1130 "\N{MATHEMATICAL DOUBLE-STRUCK CAPITAL A}"),
1131 ("\N{LATIN CAPITAL LETTER C}",
1132 "\N{LATIN CAPITAL LETTER C}",
1133 "rm",
1134 "\N{DOUBLE-STRUCK CAPITAL C}"),
1135 ("\N{LATIN CAPITAL LETTER D}",
1136 "\N{LATIN CAPITAL LETTER G}",
1137 "rm",
1138 "\N{MATHEMATICAL DOUBLE-STRUCK CAPITAL D}"),
1139 ("\N{LATIN CAPITAL LETTER H}",
1140 "\N{LATIN CAPITAL LETTER H}",
1141 "rm",
1142 "\N{DOUBLE-STRUCK CAPITAL H}"),
1143 ("\N{LATIN CAPITAL LETTER I}",
1144 "\N{LATIN CAPITAL LETTER M}",
1145 "rm",
1146 "\N{MATHEMATICAL DOUBLE-STRUCK CAPITAL I}"),
1147 ("\N{LATIN CAPITAL LETTER N}",
1148 "\N{LATIN CAPITAL LETTER N}",
1149 "rm",
1150 "\N{DOUBLE-STRUCK CAPITAL N}"),
1151 ("\N{LATIN CAPITAL LETTER O}",
1152 "\N{LATIN CAPITAL LETTER O}",
1153 "rm",
1154 "\N{MATHEMATICAL DOUBLE-STRUCK CAPITAL O}"),
1155 ("\N{LATIN CAPITAL LETTER P}",
1156 "\N{LATIN CAPITAL LETTER Q}",
1157 "rm",
1158 "\N{DOUBLE-STRUCK CAPITAL P}"),
1159 ("\N{LATIN CAPITAL LETTER R}",
1160 "\N{LATIN CAPITAL LETTER R}",
1161 "rm",
1162 "\N{DOUBLE-STRUCK CAPITAL R}"),
1163 ("\N{LATIN CAPITAL LETTER S}",
1164 "\N{LATIN CAPITAL LETTER Y}",
1165 "rm",
1166 "\N{MATHEMATICAL DOUBLE-STRUCK CAPITAL S}"),
1167 ("\N{LATIN CAPITAL LETTER Z}",
1168 "\N{LATIN CAPITAL LETTER Z}",
1169 "rm",
1170 "\N{DOUBLE-STRUCK CAPITAL Z}"),
1171 ("\N{LATIN SMALL LETTER A}",
1172 "\N{LATIN SMALL LETTER Z}",
1173 "rm",
1174 "\N{MATHEMATICAL DOUBLE-STRUCK SMALL A}"),
1175 ("\N{GREEK CAPITAL LETTER GAMMA}",
1176 "\N{GREEK CAPITAL LETTER GAMMA}",
1177 "rm",
1178 "\N{DOUBLE-STRUCK CAPITAL GAMMA}"),
1179 ("\N{GREEK CAPITAL LETTER PI}",
1180 "\N{GREEK CAPITAL LETTER PI}",
1181 "rm",
1182 "\N{DOUBLE-STRUCK CAPITAL PI}"),
1183 ("\N{GREEK CAPITAL LETTER SIGMA}",
1184 "\N{GREEK CAPITAL LETTER SIGMA}",
1185 "rm",
1186 "\N{DOUBLE-STRUCK N-ARY SUMMATION}"),
1187 ("\N{GREEK SMALL LETTER GAMMA}",
1188 "\N{GREEK SMALL LETTER GAMMA}",
1189 "rm",
1190 "\N{DOUBLE-STRUCK SMALL GAMMA}"),
1191 ("\N{GREEK SMALL LETTER PI}",
1192 "\N{GREEK SMALL LETTER PI}",
1193 "rm",
1194 "\N{DOUBLE-STRUCK SMALL PI}"),
1195 ],
1196 "it": [
1197 ("\N{DIGIT ZERO}",
1198 "\N{DIGIT NINE}",
1199 "rm",
1200 "\N{MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO}"),
1201 ("\N{LATIN CAPITAL LETTER A}",
1202 "\N{LATIN CAPITAL LETTER B}",
1203 "it",
1204 0xe154),
1205 ("\N{LATIN CAPITAL LETTER C}",
1206 "\N{LATIN CAPITAL LETTER C}",
1207 "it",
1208 "\N{DOUBLE-STRUCK CAPITAL C}"),
1209 ("\N{LATIN CAPITAL LETTER D}",
1210 "\N{LATIN CAPITAL LETTER D}",
1211 "it",
1212 "\N{DOUBLE-STRUCK ITALIC CAPITAL D}"),
1213 ("\N{LATIN CAPITAL LETTER E}",
1214 "\N{LATIN CAPITAL LETTER G}",
1215 "it",
1216 0xe156),
1217 ("\N{LATIN CAPITAL LETTER H}",
1218 "\N{LATIN CAPITAL LETTER H}",
1219 "it",
1220 "\N{DOUBLE-STRUCK CAPITAL H}"),
1221 ("\N{LATIN CAPITAL LETTER I}",
1222 "\N{LATIN CAPITAL LETTER M}",
1223 "it",
1224 0xe159),
1225 ("\N{LATIN CAPITAL LETTER N}",
1226 "\N{LATIN CAPITAL LETTER N}",
1227 "it",
1228 "\N{DOUBLE-STRUCK CAPITAL N}"),
1229 ("\N{LATIN CAPITAL LETTER O}",
1230 "\N{LATIN CAPITAL LETTER O}",
1231 "it",
1232 0xe15e),
1233 ("\N{LATIN CAPITAL LETTER P}",
1234 "\N{LATIN CAPITAL LETTER Q}",
1235 "it",
1236 "\N{DOUBLE-STRUCK CAPITAL P}"),
1237 ("\N{LATIN CAPITAL LETTER R}",
1238 "\N{LATIN CAPITAL LETTER R}",
1239 "it",
1240 "\N{DOUBLE-STRUCK CAPITAL R}"),
1241 ("\N{LATIN CAPITAL LETTER S}",
1242 "\N{LATIN CAPITAL LETTER Y}",
1243 "it",
1244 0xe15f),
1245 ("\N{LATIN CAPITAL LETTER Z}",
1246 "\N{LATIN CAPITAL LETTER Z}",
1247 "it",
1248 "\N{DOUBLE-STRUCK CAPITAL Z}"),
1249 ("\N{LATIN SMALL LETTER A}",
1250 "\N{LATIN SMALL LETTER C}",
1251 "it",
1252 0xe166),
1253 ("\N{LATIN SMALL LETTER D}",
1254 "\N{LATIN SMALL LETTER E}",
1255 "it",
1256 "\N{DOUBLE-STRUCK ITALIC SMALL D}"),
1257 ("\N{LATIN SMALL LETTER F}",
1258 "\N{LATIN SMALL LETTER H}",
1259 "it",
1260 0xe169),
1261 ("\N{LATIN SMALL LETTER I}",
1262 "\N{LATIN SMALL LETTER J}",
1263 "it",
1264 "\N{DOUBLE-STRUCK ITALIC SMALL I}"),
1265 ("\N{LATIN SMALL LETTER K}",
1266 "\N{LATIN SMALL LETTER Z}",
1267 "it",
1268 0xe16c),
1269 ("\N{GREEK CAPITAL LETTER GAMMA}",
1270 "\N{GREEK CAPITAL LETTER GAMMA}",
1271 "it",
1272 "\N{DOUBLE-STRUCK CAPITAL GAMMA}"), # \Gamma (not in beta STIX fonts)
1273 ("\N{GREEK CAPITAL LETTER PI}",
1274 "\N{GREEK CAPITAL LETTER PI}",
1275 "it",
1276 "\N{DOUBLE-STRUCK CAPITAL PI}"),
1277 ("\N{GREEK CAPITAL LETTER SIGMA}",
1278 "\N{GREEK CAPITAL LETTER SIGMA}",
1279 "it",
1280 "\N{DOUBLE-STRUCK N-ARY SUMMATION}"), # \Sigma (not in beta STIX fonts)
1281 ("\N{GREEK SMALL LETTER GAMMA}",
1282 "\N{GREEK SMALL LETTER GAMMA}",
1283 "it",
1284 "\N{DOUBLE-STRUCK SMALL GAMMA}"), # \gamma (not in beta STIX fonts)
1285 ("\N{GREEK SMALL LETTER PI}",
1286 "\N{GREEK SMALL LETTER PI}",
1287 "it",
1288 "\N{DOUBLE-STRUCK SMALL PI}"),
1289 ],
1290 "bf": [
1291 ("\N{DIGIT ZERO}",
1292 "\N{DIGIT NINE}",
1293 "rm",
1294 "\N{MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO}"),
1295 ("\N{LATIN CAPITAL LETTER A}",
1296 "\N{LATIN CAPITAL LETTER B}",
1297 "bf",
1298 0xe38a),
1299 ("\N{LATIN CAPITAL LETTER C}",
1300 "\N{LATIN CAPITAL LETTER C}",
1301 "bf",
1302 "\N{DOUBLE-STRUCK CAPITAL C}"),
1303 ("\N{LATIN CAPITAL LETTER D}",
1304 "\N{LATIN CAPITAL LETTER D}",
1305 "bf",
1306 "\N{DOUBLE-STRUCK ITALIC CAPITAL D}"),
1307 ("\N{LATIN CAPITAL LETTER E}",
1308 "\N{LATIN CAPITAL LETTER G}",
1309 "bf",
1310 0xe38d),
1311 ("\N{LATIN CAPITAL LETTER H}",
1312 "\N{LATIN CAPITAL LETTER H}",
1313 "bf",
1314 "\N{DOUBLE-STRUCK CAPITAL H}"),
1315 ("\N{LATIN CAPITAL LETTER I}",
1316 "\N{LATIN CAPITAL LETTER M}",
1317 "bf",
1318 0xe390),
1319 ("\N{LATIN CAPITAL LETTER N}",
1320 "\N{LATIN CAPITAL LETTER N}",
1321 "bf",
1322 "\N{DOUBLE-STRUCK CAPITAL N}"),
1323 ("\N{LATIN CAPITAL LETTER O}",
1324 "\N{LATIN CAPITAL LETTER O}",
1325 "bf",
1326 0xe395),
1327 ("\N{LATIN CAPITAL LETTER P}",
1328 "\N{LATIN CAPITAL LETTER Q}",
1329 "bf",
1330 "\N{DOUBLE-STRUCK CAPITAL P}"),
1331 ("\N{LATIN CAPITAL LETTER R}",
1332 "\N{LATIN CAPITAL LETTER R}",
1333 "bf",
1334 "\N{DOUBLE-STRUCK CAPITAL R}"),
1335 ("\N{LATIN CAPITAL LETTER S}",
1336 "\N{LATIN CAPITAL LETTER Y}",
1337 "bf",
1338 0xe396),
1339 ("\N{LATIN CAPITAL LETTER Z}",
1340 "\N{LATIN CAPITAL LETTER Z}",
1341 "bf",
1342 "\N{DOUBLE-STRUCK CAPITAL Z}"),
1343 ("\N{LATIN SMALL LETTER A}",
1344 "\N{LATIN SMALL LETTER C}",
1345 "bf",
1346 0xe39d),
1347 ("\N{LATIN SMALL LETTER D}",
1348 "\N{LATIN SMALL LETTER E}",
1349 "bf",
1350 "\N{DOUBLE-STRUCK ITALIC SMALL D}"),
1351 ("\N{LATIN SMALL LETTER F}",
1352 "\N{LATIN SMALL LETTER H}",
1353 "bf",
1354 0xe3a2),
1355 ("\N{LATIN SMALL LETTER I}",
1356 "\N{LATIN SMALL LETTER J}",
1357 "bf",
1358 "\N{DOUBLE-STRUCK ITALIC SMALL I}"),
1359 ("\N{LATIN SMALL LETTER K}",
1360 "\N{LATIN SMALL LETTER Z}",
1361 "bf",
1362 0xe3a7),
1363 ("\N{GREEK CAPITAL LETTER GAMMA}",
1364 "\N{GREEK CAPITAL LETTER GAMMA}",
1365 "bf",
1366 "\N{DOUBLE-STRUCK CAPITAL GAMMA}"),
1367 ("\N{GREEK CAPITAL LETTER PI}",
1368 "\N{GREEK CAPITAL LETTER PI}",
1369 "bf",
1370 "\N{DOUBLE-STRUCK CAPITAL PI}"),
1371 ("\N{GREEK CAPITAL LETTER SIGMA}",
1372 "\N{GREEK CAPITAL LETTER SIGMA}",
1373 "bf",
1374 "\N{DOUBLE-STRUCK N-ARY SUMMATION}"),
1375 ("\N{GREEK SMALL LETTER GAMMA}",
1376 "\N{GREEK SMALL LETTER GAMMA}",
1377 "bf",
1378 "\N{DOUBLE-STRUCK SMALL GAMMA}"),
1379 ("\N{GREEK SMALL LETTER PI}",
1380 "\N{GREEK SMALL LETTER PI}",
1381 "bf",
1382 "\N{DOUBLE-STRUCK SMALL PI}"),
1383 ],
1384 },
1385 'cal': [
1386 ("\N{LATIN CAPITAL LETTER A}",
1387 "\N{LATIN CAPITAL LETTER Z}",
1388 "it",
1389 0xe22d),
1390 ],
1391 'frak': {
1392 "rm": [
1393 ("\N{LATIN CAPITAL LETTER A}",
1394 "\N{LATIN CAPITAL LETTER B}",
1395 "rm",
1396 "\N{MATHEMATICAL FRAKTUR CAPITAL A}"),
1397 ("\N{LATIN CAPITAL LETTER C}",
1398 "\N{LATIN CAPITAL LETTER C}",
1399 "rm",
1400 "\N{BLACK-LETTER CAPITAL C}"),
1401 ("\N{LATIN CAPITAL LETTER D}",
1402 "\N{LATIN CAPITAL LETTER G}",
1403 "rm",
1404 "\N{MATHEMATICAL FRAKTUR CAPITAL D}"),
1405 ("\N{LATIN CAPITAL LETTER H}",
1406 "\N{LATIN CAPITAL LETTER H}",
1407 "rm",
1408 "\N{BLACK-LETTER CAPITAL H}"),
1409 ("\N{LATIN CAPITAL LETTER I}",
1410 "\N{LATIN CAPITAL LETTER I}",
1411 "rm",
1412 "\N{BLACK-LETTER CAPITAL I}"),
1413 ("\N{LATIN CAPITAL LETTER J}",
1414 "\N{LATIN CAPITAL LETTER Q}",
1415 "rm",
1416 "\N{MATHEMATICAL FRAKTUR CAPITAL J}"),
1417 ("\N{LATIN CAPITAL LETTER R}",
1418 "\N{LATIN CAPITAL LETTER R}",
1419 "rm",
1420 "\N{BLACK-LETTER CAPITAL R}"),
1421 ("\N{LATIN CAPITAL LETTER S}",
1422 "\N{LATIN CAPITAL LETTER Y}",
1423 "rm",
1424 "\N{MATHEMATICAL FRAKTUR CAPITAL S}"),
1425 ("\N{LATIN CAPITAL LETTER Z}",
1426 "\N{LATIN CAPITAL LETTER Z}",
1427 "rm",
1428 "\N{BLACK-LETTER CAPITAL Z}"),
1429 ("\N{LATIN SMALL LETTER A}",
1430 "\N{LATIN SMALL LETTER Z}",
1431 "rm",
1432 "\N{MATHEMATICAL FRAKTUR SMALL A}"),
1433 ],
1434 "bf": [
1435 ("\N{LATIN CAPITAL LETTER A}",
1436 "\N{LATIN CAPITAL LETTER Z}",
1437 "bf",
1438 "\N{MATHEMATICAL BOLD FRAKTUR CAPITAL A}"),
1439 ("\N{LATIN SMALL LETTER A}",
1440 "\N{LATIN SMALL LETTER Z}",
1441 "bf",
1442 "\N{MATHEMATICAL BOLD FRAKTUR SMALL A}"),
1443 ],
1444 },
1445 'scr': [
1446 ("\N{LATIN CAPITAL LETTER A}",
1447 "\N{LATIN CAPITAL LETTER A}",
1448 "it",
1449 "\N{MATHEMATICAL SCRIPT CAPITAL A}"),
1450 ("\N{LATIN CAPITAL LETTER B}",
1451 "\N{LATIN CAPITAL LETTER B}",
1452 "it",
1453 "\N{SCRIPT CAPITAL B}"),
1454 ("\N{LATIN CAPITAL LETTER C}",
1455 "\N{LATIN CAPITAL LETTER D}",
1456 "it",
1457 "\N{MATHEMATICAL SCRIPT CAPITAL C}"),
1458 ("\N{LATIN CAPITAL LETTER E}",
1459 "\N{LATIN CAPITAL LETTER F}",
1460 "it",
1461 "\N{SCRIPT CAPITAL E}"),
1462 ("\N{LATIN CAPITAL LETTER G}",
1463 "\N{LATIN CAPITAL LETTER G}",
1464 "it",
1465 "\N{MATHEMATICAL SCRIPT CAPITAL G}"),
1466 ("\N{LATIN CAPITAL LETTER H}",
1467 "\N{LATIN CAPITAL LETTER H}",
1468 "it",
1469 "\N{SCRIPT CAPITAL H}"),
1470 ("\N{LATIN CAPITAL LETTER I}",
1471 "\N{LATIN CAPITAL LETTER I}",
1472 "it",
1473 "\N{SCRIPT CAPITAL I}"),
1474 ("\N{LATIN CAPITAL LETTER J}",
1475 "\N{LATIN CAPITAL LETTER K}",
1476 "it",
1477 "\N{MATHEMATICAL SCRIPT CAPITAL J}"),
1478 ("\N{LATIN CAPITAL LETTER L}",
1479 "\N{LATIN CAPITAL LETTER L}",
1480 "it",
1481 "\N{SCRIPT CAPITAL L}"),
1482 ("\N{LATIN CAPITAL LETTER M}",
1483 "\N{LATIN CAPITAL LETTER M}",
1484 "it",
1485 "\N{SCRIPT CAPITAL M}"),
1486 ("\N{LATIN CAPITAL LETTER N}",
1487 "\N{LATIN CAPITAL LETTER Q}",
1488 "it",
1489 "\N{MATHEMATICAL SCRIPT CAPITAL N}"),
1490 ("\N{LATIN CAPITAL LETTER R}",
1491 "\N{LATIN CAPITAL LETTER R}",
1492 "it",
1493 "\N{SCRIPT CAPITAL R}"),
1494 ("\N{LATIN CAPITAL LETTER S}",
1495 "\N{LATIN CAPITAL LETTER Z}",
1496 "it",
1497 "\N{MATHEMATICAL SCRIPT CAPITAL S}"),
1498 ("\N{LATIN SMALL LETTER A}",
1499 "\N{LATIN SMALL LETTER D}",
1500 "it",
1501 "\N{MATHEMATICAL SCRIPT SMALL A}"),
1502 ("\N{LATIN SMALL LETTER E}",
1503 "\N{LATIN SMALL LETTER E}",
1504 "it",
1505 "\N{SCRIPT SMALL E}"),
1506 ("\N{LATIN SMALL LETTER F}",
1507 "\N{LATIN SMALL LETTER F}",
1508 "it",
1509 "\N{MATHEMATICAL SCRIPT SMALL F}"),
1510 ("\N{LATIN SMALL LETTER G}",
1511 "\N{LATIN SMALL LETTER G}",
1512 "it",
1513 "\N{SCRIPT SMALL G}"),
1514 ("\N{LATIN SMALL LETTER H}",
1515 "\N{LATIN SMALL LETTER N}",
1516 "it",
1517 "\N{MATHEMATICAL SCRIPT SMALL H}"),
1518 ("\N{LATIN SMALL LETTER O}",
1519 "\N{LATIN SMALL LETTER O}",
1520 "it",
1521 "\N{SCRIPT SMALL O}"),
1522 ("\N{LATIN SMALL LETTER P}",
1523 "\N{LATIN SMALL LETTER Z}",
1524 "it",
1525 "\N{MATHEMATICAL SCRIPT SMALL P}"),
1526 ],
1527 'sf': {
1528 "rm": [
1529 ("\N{DIGIT ZERO}",
1530 "\N{DIGIT NINE}",
1531 "rm",
1532 "\N{MATHEMATICAL SANS-SERIF DIGIT ZERO}"),
1533 ("\N{LATIN CAPITAL LETTER A}",
1534 "\N{LATIN CAPITAL LETTER Z}",
1535 "rm",
1536 "\N{MATHEMATICAL SANS-SERIF CAPITAL A}"),
1537 ("\N{LATIN SMALL LETTER A}",
1538 "\N{LATIN SMALL LETTER Z}",
1539 "rm",
1540 "\N{MATHEMATICAL SANS-SERIF SMALL A}"),
1541 ("\N{GREEK CAPITAL LETTER ALPHA}",
1542 "\N{GREEK CAPITAL LETTER OMEGA}",
1543 "rm",
1544 0xe17d),
1545 ("\N{GREEK SMALL LETTER ALPHA}",
1546 "\N{GREEK SMALL LETTER OMEGA}",
1547 "rm",
1548 0xe196),
1549 ("\N{GREEK THETA SYMBOL}",
1550 "\N{GREEK THETA SYMBOL}",
1551 "rm",
1552 0xe1b0),
1553 ("\N{GREEK PHI SYMBOL}",
1554 "\N{GREEK PHI SYMBOL}",
1555 "rm",
1556 0xe1b1),
1557 ("\N{GREEK PI SYMBOL}",
1558 "\N{GREEK PI SYMBOL}",
1559 "rm",
1560 0xe1b3),
1561 ("\N{GREEK RHO SYMBOL}",
1562 "\N{GREEK RHO SYMBOL}",
1563 "rm",
1564 0xe1b2),
1565 ("\N{GREEK LUNATE EPSILON SYMBOL}",
1566 "\N{GREEK LUNATE EPSILON SYMBOL}",
1567 "rm",
1568 0xe1af),
1569 ("\N{PARTIAL DIFFERENTIAL}",
1570 "\N{PARTIAL DIFFERENTIAL}",
1571 "rm",
1572 0xe17c),
1573 ],
1574 "it": [
1575 # These numerals are actually upright. We don't actually
1576 # want italic numerals ever.
1577 ("\N{DIGIT ZERO}",
1578 "\N{DIGIT NINE}",
1579 "rm",
1580 "\N{MATHEMATICAL SANS-SERIF DIGIT ZERO}"),
1581 ("\N{LATIN CAPITAL LETTER A}",
1582 "\N{LATIN CAPITAL LETTER Z}",
1583 "it",
1584 "\N{MATHEMATICAL SANS-SERIF ITALIC CAPITAL A}"),
1585 ("\N{LATIN SMALL LETTER A}",
1586 "\N{LATIN SMALL LETTER Z}",
1587 "it",
1588 "\N{MATHEMATICAL SANS-SERIF ITALIC SMALL A}"),
1589 ("\N{GREEK CAPITAL LETTER ALPHA}",
1590 "\N{GREEK CAPITAL LETTER OMEGA}",
1591 "rm",
1592 0xe17d),
1593 ("\N{GREEK SMALL LETTER ALPHA}",
1594 "\N{GREEK SMALL LETTER OMEGA}",
1595 "it",
1596 0xe1d8),
1597 ("\N{GREEK THETA SYMBOL}",
1598 "\N{GREEK THETA SYMBOL}",
1599 "it",
1600 0xe1f2),
1601 ("\N{GREEK PHI SYMBOL}",
1602 "\N{GREEK PHI SYMBOL}",
1603 "it",
1604 0xe1f3),
1605 ("\N{GREEK PI SYMBOL}",
1606 "\N{GREEK PI SYMBOL}",
1607 "it",
1608 0xe1f5),
1609 ("\N{GREEK RHO SYMBOL}",
1610 "\N{GREEK RHO SYMBOL}",
1611 "it",
1612 0xe1f4),
1613 ("\N{GREEK LUNATE EPSILON SYMBOL}",
1614 "\N{GREEK LUNATE EPSILON SYMBOL}",
1615 "it",
1616 0xe1f1),
1617 ],
1618 "bf": [
1619 ("\N{DIGIT ZERO}",
1620 "\N{DIGIT NINE}",
1621 "bf",
1622 "\N{MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO}"),
1623 ("\N{LATIN CAPITAL LETTER A}",
1624 "\N{LATIN CAPITAL LETTER Z}",
1625 "bf",
1626 "\N{MATHEMATICAL SANS-SERIF BOLD CAPITAL A}"),
1627 ("\N{LATIN SMALL LETTER A}",
1628 "\N{LATIN SMALL LETTER Z}",
1629 "bf",
1630 "\N{MATHEMATICAL SANS-SERIF BOLD SMALL A}"),
1631 ("\N{GREEK CAPITAL LETTER ALPHA}",
1632 "\N{GREEK CAPITAL LETTER OMEGA}",
1633 "bf",
1634 "\N{MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA}"),
1635 ("\N{GREEK SMALL LETTER ALPHA}",
1636 "\N{GREEK SMALL LETTER OMEGA}",
1637 "bf",
1638 "\N{MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA}"),
1639 ("\N{GREEK THETA SYMBOL}",
1640 "\N{GREEK THETA SYMBOL}",
1641 "bf",
1642 "\N{MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL}"),
1643 ("\N{GREEK PHI SYMBOL}",
1644 "\N{GREEK PHI SYMBOL}",
1645 "bf",
1646 "\N{MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL}"),
1647 ("\N{GREEK PI SYMBOL}",
1648 "\N{GREEK PI SYMBOL}",
1649 "bf",
1650 "\N{MATHEMATICAL SANS-SERIF BOLD PI SYMBOL}"),
1651 ("\N{GREEK KAPPA SYMBOL}",
1652 "\N{GREEK KAPPA SYMBOL}",
1653 "bf",
1654 "\N{MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL}"),
1655 ("\N{GREEK RHO SYMBOL}",
1656 "\N{GREEK RHO SYMBOL}",
1657 "bf",
1658 "\N{MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL}"),
1659 ("\N{GREEK LUNATE EPSILON SYMBOL}",
1660 "\N{GREEK LUNATE EPSILON SYMBOL}",
1661 "bf",
1662 "\N{MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL}"),
1663 ("\N{PARTIAL DIFFERENTIAL}",
1664 "\N{PARTIAL DIFFERENTIAL}",
1665 "bf",
1666 "\N{MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL}"),
1667 ("\N{NABLA}",
1668 "\N{NABLA}",
1669 "bf",
1670 "\N{MATHEMATICAL SANS-SERIF BOLD NABLA}"),
1671 ],
1672 "bfit": [
1673 ("\N{LATIN CAPITAL LETTER A}",
1674 "\N{LATIN CAPITAL LETTER Z}",
1675 "bfit",
1676 "\N{MATHEMATICAL BOLD ITALIC CAPITAL A}"),
1677 ("\N{LATIN SMALL LETTER A}",
1678 "\N{LATIN SMALL LETTER Z}",
1679 "bfit",
1680 "\N{MATHEMATICAL BOLD ITALIC SMALL A}"),
1681 ("\N{GREEK CAPITAL LETTER GAMMA}",
1682 "\N{GREEK CAPITAL LETTER OMEGA}",
1683 "bfit",
1684 "\N{MATHEMATICAL BOLD ITALIC CAPITAL GAMMA}"),
1685 ("\N{GREEK SMALL LETTER ALPHA}",
1686 "\N{GREEK SMALL LETTER OMEGA}",
1687 "bfit",
1688 "\N{MATHEMATICAL BOLD ITALIC SMALL ALPHA}"),
1689 ],
1690 },
1691 'tt': [
1692 ("\N{DIGIT ZERO}",
1693 "\N{DIGIT NINE}",
1694 "rm",
1695 "\N{MATHEMATICAL MONOSPACE DIGIT ZERO}"),
1696 ("\N{LATIN CAPITAL LETTER A}",
1697 "\N{LATIN CAPITAL LETTER Z}",
1698 "rm",
1699 "\N{MATHEMATICAL MONOSPACE CAPITAL A}"),
1700 ("\N{LATIN SMALL LETTER A}",
1701 "\N{LATIN SMALL LETTER Z}",
1702 "rm",
1703 "\N{MATHEMATICAL MONOSPACE SMALL A}")
1704 ],
1705}
1706
1707
1708@overload
1709def _normalize_stix_fontcodes(d: _EntryTypeIn) -> _EntryTypeOut: ...
1710
1711
1712@overload
1713def _normalize_stix_fontcodes(d: list[_EntryTypeIn]) -> list[_EntryTypeOut]: ...
1714
1715
1716@overload
1717def _normalize_stix_fontcodes(d: dict[str, list[_EntryTypeIn] |
1718 dict[str, list[_EntryTypeIn]]]
1719 ) -> dict[str, list[_EntryTypeOut] |
1720 dict[str, list[_EntryTypeOut]]]: ...
1721
1722
1723def _normalize_stix_fontcodes(d):
1724 if isinstance(d, tuple):
1725 return tuple(ord(x) if isinstance(x, str) and len(x) == 1 else x for x in d)
1726 elif isinstance(d, list):
1727 return [_normalize_stix_fontcodes(x) for x in d]
1728 elif isinstance(d, dict):
1729 return {k: _normalize_stix_fontcodes(v) for k, v in d.items()}
1730
1731
1732stix_virtual_fonts: dict[str, Union[dict[str, list[_EntryTypeOut]],
1733 list[_EntryTypeOut]]]
1734stix_virtual_fonts = _normalize_stix_fontcodes(_stix_virtual_fonts)
1735
1736# Free redundant list now that it has been normalized
1737del _stix_virtual_fonts
1738
1739# Fix some incorrect glyphs.
1740stix_glyph_fixes = {
1741 # Cap and Cup glyphs are swapped.
1742 0x22d2: 0x22d3,
1743 0x22d3: 0x22d2,
1744}