_mathtext_data.py 64 KB

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