rl_codecs.py 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080
  1. #codecs support
  2. __all__=['RL_Codecs']
  3. from collections import namedtuple
  4. import codecs
  5. StdCodecData=namedtuple('StdCodecData','exceptions rexceptions')
  6. ExtCodecData=namedtuple('ExtCodecData','baseName exceptions rexceptions')
  7. class RL_Codecs:
  8. __rl_codecs_data = {
  9. 'winansi':StdCodecData({
  10. 0x007f: 0x2022, # BULLET
  11. 0x0080: 0x20ac, # EURO SIGN
  12. 0x0081: 0x2022, # BULLET
  13. 0x0082: 0x201a, # SINGLE LOW-9 QUOTATION MARK
  14. 0x0083: 0x0192, # LATIN SMALL LETTER F WITH HOOK
  15. 0x0084: 0x201e, # DOUBLE LOW-9 QUOTATION MARK
  16. 0x0085: 0x2026, # HORIZONTAL ELLIPSIS
  17. 0x0086: 0x2020, # DAGGER
  18. 0x0087: 0x2021, # DOUBLE DAGGER
  19. 0x0088: 0x02c6, # MODIFIER LETTER CIRCUMFLEX ACCENT
  20. 0x0089: 0x2030, # PER MILLE SIGN
  21. 0x008a: 0x0160, # LATIN CAPITAL LETTER S WITH CARON
  22. 0x008b: 0x2039, # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
  23. 0x008c: 0x0152, # LATIN CAPITAL LIGATURE OE
  24. 0x008d: 0x2022, # BULLET
  25. 0x008e: 0x017d, # LATIN CAPITAL LETTER Z WITH CARON
  26. 0x008f: 0x2022, # BULLET
  27. 0x0090: 0x2022, # BULLET
  28. 0x0091: 0x2018, # LEFT SINGLE QUOTATION MARK
  29. 0x0092: 0x2019, # RIGHT SINGLE QUOTATION MARK
  30. 0x0093: 0x201c, # LEFT DOUBLE QUOTATION MARK
  31. 0x0094: 0x201d, # RIGHT DOUBLE QUOTATION MARK
  32. 0x0095: 0x2022, # BULLET
  33. 0x0096: 0x2013, # EN DASH
  34. 0x0097: 0x2014, # EM DASH
  35. 0x0098: 0x02dc, # SMALL TILDE
  36. 0x0099: 0x2122, # TRADE MARK SIGN
  37. 0x009a: 0x0161, # LATIN SMALL LETTER S WITH CARON
  38. 0x009b: 0x203a, # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
  39. 0x009c: 0x0153, # LATIN SMALL LIGATURE OE
  40. 0x009d: 0x2022, # BULLET
  41. 0x009e: 0x017e, # LATIN SMALL LETTER Z WITH CARON
  42. 0x009f: 0x0178, # LATIN CAPITAL LETTER Y WITH DIAERESIS
  43. 0x00a0: 0x0020, # SPACE
  44. }, {0x2022:0x7f,0x20:0x20,0xa0:0x20}),
  45. 'macroman':StdCodecData({
  46. 0x007f: None, # UNDEFINED
  47. 0x0080: 0x00c4, # LATIN CAPITAL LETTER A WITH DIAERESIS
  48. 0x0081: 0x00c5, # LATIN CAPITAL LETTER A WITH RING ABOVE
  49. 0x0082: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA
  50. 0x0083: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
  51. 0x0084: 0x00d1, # LATIN CAPITAL LETTER N WITH TILDE
  52. 0x0085: 0x00d6, # LATIN CAPITAL LETTER O WITH DIAERESIS
  53. 0x0086: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
  54. 0x0087: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
  55. 0x0088: 0x00e0, # LATIN SMALL LETTER A WITH GRAVE
  56. 0x0089: 0x00e2, # LATIN SMALL LETTER A WITH CIRCUMFLEX
  57. 0x008a: 0x00e4, # LATIN SMALL LETTER A WITH DIAERESIS
  58. 0x008b: 0x00e3, # LATIN SMALL LETTER A WITH TILDE
  59. 0x008c: 0x00e5, # LATIN SMALL LETTER A WITH RING ABOVE
  60. 0x008d: 0x00e7, # LATIN SMALL LETTER C WITH CEDILLA
  61. 0x008e: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
  62. 0x008f: 0x00e8, # LATIN SMALL LETTER E WITH GRAVE
  63. 0x0090: 0x00ea, # LATIN SMALL LETTER E WITH CIRCUMFLEX
  64. 0x0091: 0x00eb, # LATIN SMALL LETTER E WITH DIAERESIS
  65. 0x0092: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
  66. 0x0093: 0x00ec, # LATIN SMALL LETTER I WITH GRAVE
  67. 0x0094: 0x00ee, # LATIN SMALL LETTER I WITH CIRCUMFLEX
  68. 0x0095: 0x00ef, # LATIN SMALL LETTER I WITH DIAERESIS
  69. 0x0096: 0x00f1, # LATIN SMALL LETTER N WITH TILDE
  70. 0x0097: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
  71. 0x0098: 0x00f2, # LATIN SMALL LETTER O WITH GRAVE
  72. 0x0099: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
  73. 0x009a: 0x00f6, # LATIN SMALL LETTER O WITH DIAERESIS
  74. 0x009b: 0x00f5, # LATIN SMALL LETTER O WITH TILDE
  75. 0x009c: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
  76. 0x009d: 0x00f9, # LATIN SMALL LETTER U WITH GRAVE
  77. 0x009e: 0x00fb, # LATIN SMALL LETTER U WITH CIRCUMFLEX
  78. 0x009f: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
  79. 0x00a0: 0x2020, # DAGGER
  80. 0x00a1: 0x00b0, # DEGREE SIGN
  81. 0x00a4: 0x00a7, # SECTION SIGN
  82. 0x00a5: 0x2022, # BULLET
  83. 0x00a6: 0x00b6, # PILCROW SIGN
  84. 0x00a7: 0x00df, # LATIN SMALL LETTER SHARP S
  85. 0x00a8: 0x00ae, # REGISTERED SIGN
  86. 0x00aa: 0x2122, # TRADE MARK SIGN
  87. 0x00ab: 0x00b4, # ACUTE ACCENT
  88. 0x00ac: 0x00a8, # DIAERESIS
  89. 0x00ad: None, # UNDEFINED
  90. 0x00ae: 0x00c6, # LATIN CAPITAL LETTER AE
  91. 0x00af: 0x00d8, # LATIN CAPITAL LETTER O WITH STROKE
  92. 0x00b0: None, # UNDEFINED
  93. 0x00b2: None, # UNDEFINED
  94. 0x00b3: None, # UNDEFINED
  95. 0x00b4: 0x00a5, # YEN SIGN
  96. 0x00b6: None, # UNDEFINED
  97. 0x00b7: None, # UNDEFINED
  98. 0x00b8: None, # UNDEFINED
  99. 0x00b9: None, # UNDEFINED
  100. 0x00ba: None, # UNDEFINED
  101. 0x00bb: 0x00aa, # FEMININE ORDINAL INDICATOR
  102. 0x00bc: 0x00ba, # MASCULINE ORDINAL INDICATOR
  103. 0x00bd: None, # UNDEFINED
  104. 0x00be: 0x00e6, # LATIN SMALL LETTER AE
  105. 0x00bf: 0x00f8, # LATIN SMALL LETTER O WITH STROKE
  106. 0x00c0: 0x00bf, # INVERTED QUESTION MARK
  107. 0x00c1: 0x00a1, # INVERTED EXCLAMATION MARK
  108. 0x00c2: 0x00ac, # NOT SIGN
  109. 0x00c3: None, # UNDEFINED
  110. 0x00c4: 0x0192, # LATIN SMALL LETTER F WITH HOOK
  111. 0x00c5: None, # UNDEFINED
  112. 0x00c6: None, # UNDEFINED
  113. 0x00c7: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
  114. 0x00c8: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
  115. 0x00c9: 0x2026, # HORIZONTAL ELLIPSIS
  116. 0x00ca: 0x0020, # SPACE
  117. 0x00cb: 0x00c0, # LATIN CAPITAL LETTER A WITH GRAVE
  118. 0x00cc: 0x00c3, # LATIN CAPITAL LETTER A WITH TILDE
  119. 0x00cd: 0x00d5, # LATIN CAPITAL LETTER O WITH TILDE
  120. 0x00ce: 0x0152, # LATIN CAPITAL LIGATURE OE
  121. 0x00cf: 0x0153, # LATIN SMALL LIGATURE OE
  122. 0x00d0: 0x2013, # EN DASH
  123. 0x00d1: 0x2014, # EM DASH
  124. 0x00d2: 0x201c, # LEFT DOUBLE QUOTATION MARK
  125. 0x00d3: 0x201d, # RIGHT DOUBLE QUOTATION MARK
  126. 0x00d4: 0x2018, # LEFT SINGLE QUOTATION MARK
  127. 0x00d5: 0x2019, # RIGHT SINGLE QUOTATION MARK
  128. 0x00d6: 0x00f7, # DIVISION SIGN
  129. 0x00d7: None, # UNDEFINED
  130. 0x00d8: 0x00ff, # LATIN SMALL LETTER Y WITH DIAERESIS
  131. 0x00d9: 0x0178, # LATIN CAPITAL LETTER Y WITH DIAERESIS
  132. 0x00da: 0x2044, # FRACTION SLASH
  133. 0x00db: 0x00a4, # CURRENCY SIGN
  134. 0x00dc: 0x2039, # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
  135. 0x00dd: 0x203a, # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
  136. 0x00de: 0xfb01, # LATIN SMALL LIGATURE FI
  137. 0x00df: 0xfb02, # LATIN SMALL LIGATURE FL
  138. 0x00e0: 0x2021, # DOUBLE DAGGER
  139. 0x00e1: 0x00b7, # MIDDLE DOT
  140. 0x00e2: 0x201a, # SINGLE LOW-9 QUOTATION MARK
  141. 0x00e3: 0x201e, # DOUBLE LOW-9 QUOTATION MARK
  142. 0x00e4: 0x2030, # PER MILLE SIGN
  143. 0x00e5: 0x00c2, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
  144. 0x00e6: 0x00ca, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
  145. 0x00e7: 0x00c1, # LATIN CAPITAL LETTER A WITH ACUTE
  146. 0x00e8: 0x00cb, # LATIN CAPITAL LETTER E WITH DIAERESIS
  147. 0x00e9: 0x00c8, # LATIN CAPITAL LETTER E WITH GRAVE
  148. 0x00ea: 0x00cd, # LATIN CAPITAL LETTER I WITH ACUTE
  149. 0x00eb: 0x00ce, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
  150. 0x00ec: 0x00cf, # LATIN CAPITAL LETTER I WITH DIAERESIS
  151. 0x00ed: 0x00cc, # LATIN CAPITAL LETTER I WITH GRAVE
  152. 0x00ee: 0x00d3, # LATIN CAPITAL LETTER O WITH ACUTE
  153. 0x00ef: 0x00d4, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
  154. 0x00f0: None, # UNDEFINED
  155. 0x00f1: 0x00d2, # LATIN CAPITAL LETTER O WITH GRAVE
  156. 0x00f2: 0x00da, # LATIN CAPITAL LETTER U WITH ACUTE
  157. 0x00f3: 0x00db, # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
  158. 0x00f4: 0x00d9, # LATIN CAPITAL LETTER U WITH GRAVE
  159. 0x00f5: 0x0131, # LATIN SMALL LETTER DOTLESS I
  160. 0x00f6: 0x02c6, # MODIFIER LETTER CIRCUMFLEX ACCENT
  161. 0x00f7: 0x02dc, # SMALL TILDE
  162. 0x00f8: 0x00af, # MACRON
  163. 0x00f9: 0x02d8, # BREVE
  164. 0x00fa: 0x02d9, # DOT ABOVE
  165. 0x00fb: 0x02da, # RING ABOVE
  166. 0x00fc: 0x00b8, # CEDILLA
  167. 0x00fd: 0x02dd, # DOUBLE ACUTE ACCENT
  168. 0x00fe: 0x02db, # OGONEK
  169. 0x00ff: 0x02c7, # CARON
  170. },None),
  171. 'standard':StdCodecData({
  172. 0x0027: 0x2019, # RIGHT SINGLE QUOTATION MARK
  173. 0x0060: 0x2018, # LEFT SINGLE QUOTATION MARK
  174. 0x007f: None, # UNDEFINED
  175. 0x0080: None, # UNDEFINED
  176. 0x0081: None, # UNDEFINED
  177. 0x0082: None, # UNDEFINED
  178. 0x0083: None, # UNDEFINED
  179. 0x0084: None, # UNDEFINED
  180. 0x0085: None, # UNDEFINED
  181. 0x0086: None, # UNDEFINED
  182. 0x0087: None, # UNDEFINED
  183. 0x0088: None, # UNDEFINED
  184. 0x0089: None, # UNDEFINED
  185. 0x008a: None, # UNDEFINED
  186. 0x008b: None, # UNDEFINED
  187. 0x008c: None, # UNDEFINED
  188. 0x008d: None, # UNDEFINED
  189. 0x008e: None, # UNDEFINED
  190. 0x008f: None, # UNDEFINED
  191. 0x0090: None, # UNDEFINED
  192. 0x0091: None, # UNDEFINED
  193. 0x0092: None, # UNDEFINED
  194. 0x0093: None, # UNDEFINED
  195. 0x0094: None, # UNDEFINED
  196. 0x0095: None, # UNDEFINED
  197. 0x0096: None, # UNDEFINED
  198. 0x0097: None, # UNDEFINED
  199. 0x0098: None, # UNDEFINED
  200. 0x0099: None, # UNDEFINED
  201. 0x009a: None, # UNDEFINED
  202. 0x009b: None, # UNDEFINED
  203. 0x009c: None, # UNDEFINED
  204. 0x009d: None, # UNDEFINED
  205. 0x009e: None, # UNDEFINED
  206. 0x009f: None, # UNDEFINED
  207. 0x00a0: None, # UNDEFINED
  208. 0x00a4: 0x2044, # FRACTION SLASH
  209. 0x00a6: 0x0192, # LATIN SMALL LETTER F WITH HOOK
  210. 0x00a8: 0x00a4, # CURRENCY SIGN
  211. 0x00a9: 0x0027, # APOSTROPHE
  212. 0x00aa: 0x201c, # LEFT DOUBLE QUOTATION MARK
  213. 0x00ac: 0x2039, # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
  214. 0x00ad: 0x203a, # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
  215. 0x00ae: 0xfb01, # LATIN SMALL LIGATURE FI
  216. 0x00af: 0xfb02, # LATIN SMALL LIGATURE FL
  217. 0x00b0: None, # UNDEFINED
  218. 0x00b1: 0x2013, # EN DASH
  219. 0x00b2: 0x2020, # DAGGER
  220. 0x00b3: 0x2021, # DOUBLE DAGGER
  221. 0x00b4: 0x00b7, # MIDDLE DOT
  222. 0x00b5: None, # UNDEFINED
  223. 0x00b7: 0x2022, # BULLET
  224. 0x00b8: 0x201a, # SINGLE LOW-9 QUOTATION MARK
  225. 0x00b9: 0x201e, # DOUBLE LOW-9 QUOTATION MARK
  226. 0x00ba: 0x201d, # RIGHT DOUBLE QUOTATION MARK
  227. 0x00bc: 0x2026, # HORIZONTAL ELLIPSIS
  228. 0x00bd: 0x2030, # PER MILLE SIGN
  229. 0x00be: None, # UNDEFINED
  230. 0x00c0: None, # UNDEFINED
  231. 0x00c1: 0x0060, # GRAVE ACCENT
  232. 0x00c2: 0x00b4, # ACUTE ACCENT
  233. 0x00c3: 0x02c6, # MODIFIER LETTER CIRCUMFLEX ACCENT
  234. 0x00c4: 0x02dc, # SMALL TILDE
  235. 0x00c5: 0x00af, # MACRON
  236. 0x00c6: 0x02d8, # BREVE
  237. 0x00c7: 0x02d9, # DOT ABOVE
  238. 0x00c8: 0x00a8, # DIAERESIS
  239. 0x00c9: None, # UNDEFINED
  240. 0x00ca: 0x02da, # RING ABOVE
  241. 0x00cb: 0x00b8, # CEDILLA
  242. 0x00cc: None, # UNDEFINED
  243. 0x00cd: 0x02dd, # DOUBLE ACUTE ACCENT
  244. 0x00ce: 0x02db, # OGONEK
  245. 0x00cf: 0x02c7, # CARON
  246. 0x00d0: 0x2014, # EM DASH
  247. 0x00d1: None, # UNDEFINED
  248. 0x00d2: None, # UNDEFINED
  249. 0x00d3: None, # UNDEFINED
  250. 0x00d4: None, # UNDEFINED
  251. 0x00d5: None, # UNDEFINED
  252. 0x00d6: None, # UNDEFINED
  253. 0x00d7: None, # UNDEFINED
  254. 0x00d8: None, # UNDEFINED
  255. 0x00d9: None, # UNDEFINED
  256. 0x00da: None, # UNDEFINED
  257. 0x00db: None, # UNDEFINED
  258. 0x00dc: None, # UNDEFINED
  259. 0x00dd: None, # UNDEFINED
  260. 0x00de: None, # UNDEFINED
  261. 0x00df: None, # UNDEFINED
  262. 0x00e0: None, # UNDEFINED
  263. 0x00e1: 0x00c6, # LATIN CAPITAL LETTER AE
  264. 0x00e2: None, # UNDEFINED
  265. 0x00e3: 0x00aa, # FEMININE ORDINAL INDICATOR
  266. 0x00e4: None, # UNDEFINED
  267. 0x00e5: None, # UNDEFINED
  268. 0x00e6: None, # UNDEFINED
  269. 0x00e7: None, # UNDEFINED
  270. 0x00e8: 0x0141, # LATIN CAPITAL LETTER L WITH STROKE
  271. 0x00e9: 0x00d8, # LATIN CAPITAL LETTER O WITH STROKE
  272. 0x00ea: 0x0152, # LATIN CAPITAL LIGATURE OE
  273. 0x00eb: 0x00ba, # MASCULINE ORDINAL INDICATOR
  274. 0x00ec: None, # UNDEFINED
  275. 0x00ed: None, # UNDEFINED
  276. 0x00ee: None, # UNDEFINED
  277. 0x00ef: None, # UNDEFINED
  278. 0x00f0: None, # UNDEFINED
  279. 0x00f1: 0x00e6, # LATIN SMALL LETTER AE
  280. 0x00f2: None, # UNDEFINED
  281. 0x00f3: None, # UNDEFINED
  282. 0x00f4: None, # UNDEFINED
  283. 0x00f5: 0x0131, # LATIN SMALL LETTER DOTLESS I
  284. 0x00f6: None, # UNDEFINED
  285. 0x00f7: None, # UNDEFINED
  286. 0x00f8: 0x0142, # LATIN SMALL LETTER L WITH STROKE
  287. 0x00f9: 0x00f8, # LATIN SMALL LETTER O WITH STROKE
  288. 0x00fa: 0x0153, # LATIN SMALL LIGATURE OE
  289. 0x00fb: 0x00df, # LATIN SMALL LETTER SHARP S
  290. 0x00fc: None, # UNDEFINED
  291. 0x00fd: None, # UNDEFINED
  292. 0x00fe: None, # UNDEFINED
  293. 0x00ff: None, # UNDEFINED
  294. },None),
  295. 'symbol':StdCodecData({
  296. 0x0022: 0x2200, # FOR ALL
  297. 0x0024: 0x2203, # THERE EXISTS
  298. 0x0027: 0x220b, # CONTAINS AS MEMBER
  299. 0x002a: 0x2217, # ASTERISK OPERATOR
  300. 0x002d: 0x2212, # MINUS SIGN
  301. 0x0040: 0x2245, # APPROXIMATELY EQUAL TO
  302. 0x0041: 0x0391, # GREEK CAPITAL LETTER ALPHA
  303. 0x0042: 0x0392, # GREEK CAPITAL LETTER BETA
  304. 0x0043: 0x03a7, # GREEK CAPITAL LETTER CHI
  305. 0x0044: 0x2206, # INCREMENT
  306. 0x0045: 0x0395, # GREEK CAPITAL LETTER EPSILON
  307. 0x0046: 0x03a6, # GREEK CAPITAL LETTER PHI
  308. 0x0047: 0x0393, # GREEK CAPITAL LETTER GAMMA
  309. 0x0048: 0x0397, # GREEK CAPITAL LETTER ETA
  310. 0x0049: 0x0399, # GREEK CAPITAL LETTER IOTA
  311. 0x004a: 0x03d1, # GREEK THETA SYMBOL
  312. 0x004b: 0x039a, # GREEK CAPITAL LETTER KAPPA
  313. 0x004c: 0x039b, # GREEK CAPITAL LETTER LAMDA
  314. 0x004d: 0x039c, # GREEK CAPITAL LETTER MU
  315. 0x004e: 0x039d, # GREEK CAPITAL LETTER NU
  316. 0x004f: 0x039f, # GREEK CAPITAL LETTER OMICRON
  317. 0x0050: 0x03a0, # GREEK CAPITAL LETTER PI
  318. 0x0051: 0x0398, # GREEK CAPITAL LETTER THETA
  319. 0x0052: 0x03a1, # GREEK CAPITAL LETTER RHO
  320. 0x0053: 0x03a3, # GREEK CAPITAL LETTER SIGMA
  321. 0x0054: 0x03a4, # GREEK CAPITAL LETTER TAU
  322. 0x0055: 0x03a5, # GREEK CAPITAL LETTER UPSILON
  323. 0x0056: 0x03c2, # GREEK SMALL LETTER FINAL SIGMA
  324. 0x0057: 0x2126, # OHM SIGN
  325. 0x0058: 0x039e, # GREEK CAPITAL LETTER XI
  326. 0x0059: 0x03a8, # GREEK CAPITAL LETTER PSI
  327. 0x005a: 0x0396, # GREEK CAPITAL LETTER ZETA
  328. 0x005c: 0x2234, # THEREFORE
  329. 0x005e: 0x22a5, # UP TACK
  330. 0x0060: 0xf8e5, # [unknown unicode name for radicalex]
  331. 0x0061: 0x03b1, # GREEK SMALL LETTER ALPHA
  332. 0x0062: 0x03b2, # GREEK SMALL LETTER BETA
  333. 0x0063: 0x03c7, # GREEK SMALL LETTER CHI
  334. 0x0064: 0x03b4, # GREEK SMALL LETTER DELTA
  335. 0x0065: 0x03b5, # GREEK SMALL LETTER EPSILON
  336. 0x0066: 0x03c6, # GREEK SMALL LETTER PHI
  337. 0x0067: 0x03b3, # GREEK SMALL LETTER GAMMA
  338. 0x0068: 0x03b7, # GREEK SMALL LETTER ETA
  339. 0x0069: 0x03b9, # GREEK SMALL LETTER IOTA
  340. 0x006a: 0x03d5, # GREEK PHI SYMBOL
  341. 0x006b: 0x03ba, # GREEK SMALL LETTER KAPPA
  342. 0x006c: 0x03bb, # GREEK SMALL LETTER LAMDA
  343. 0x006d: 0x00b5, # MICRO SIGN
  344. 0x006e: 0x03bd, # GREEK SMALL LETTER NU
  345. 0x006f: 0x03bf, # GREEK SMALL LETTER OMICRON
  346. 0x0070: 0x03c0, # GREEK SMALL LETTER PI
  347. 0x0071: 0x03b8, # GREEK SMALL LETTER THETA
  348. 0x0072: 0x03c1, # GREEK SMALL LETTER RHO
  349. 0x0073: 0x03c3, # GREEK SMALL LETTER SIGMA
  350. 0x0074: 0x03c4, # GREEK SMALL LETTER TAU
  351. 0x0075: 0x03c5, # GREEK SMALL LETTER UPSILON
  352. 0x0076: 0x03d6, # GREEK PI SYMBOL
  353. 0x0077: 0x03c9, # GREEK SMALL LETTER OMEGA
  354. 0x0078: 0x03be, # GREEK SMALL LETTER XI
  355. 0x0079: 0x03c8, # GREEK SMALL LETTER PSI
  356. 0x007a: 0x03b6, # GREEK SMALL LETTER ZETA
  357. 0x007e: 0x223c, # TILDE OPERATOR
  358. 0x007f: None, # UNDEFINED
  359. 0x0080: None, # UNDEFINED
  360. 0x0081: None, # UNDEFINED
  361. 0x0082: None, # UNDEFINED
  362. 0x0083: None, # UNDEFINED
  363. 0x0084: None, # UNDEFINED
  364. 0x0085: None, # UNDEFINED
  365. 0x0086: None, # UNDEFINED
  366. 0x0087: None, # UNDEFINED
  367. 0x0088: None, # UNDEFINED
  368. 0x0089: None, # UNDEFINED
  369. 0x008a: None, # UNDEFINED
  370. 0x008b: None, # UNDEFINED
  371. 0x008c: None, # UNDEFINED
  372. 0x008d: None, # UNDEFINED
  373. 0x008e: None, # UNDEFINED
  374. 0x008f: None, # UNDEFINED
  375. 0x0090: None, # UNDEFINED
  376. 0x0091: None, # UNDEFINED
  377. 0x0092: None, # UNDEFINED
  378. 0x0093: None, # UNDEFINED
  379. 0x0094: None, # UNDEFINED
  380. 0x0095: None, # UNDEFINED
  381. 0x0096: None, # UNDEFINED
  382. 0x0097: None, # UNDEFINED
  383. 0x0098: None, # UNDEFINED
  384. 0x0099: None, # UNDEFINED
  385. 0x009a: None, # UNDEFINED
  386. 0x009b: None, # UNDEFINED
  387. 0x009c: None, # UNDEFINED
  388. 0x009d: None, # UNDEFINED
  389. 0x009e: None, # UNDEFINED
  390. 0x009f: None, # UNDEFINED
  391. 0x00a0: 0x20ac, # EURO SIGN
  392. 0x00a1: 0x03d2, # GREEK UPSILON WITH HOOK SYMBOL
  393. 0x00a2: 0x2032, # PRIME
  394. 0x00a3: 0x2264, # LESS-THAN OR EQUAL TO
  395. 0x00a4: 0x2044, # FRACTION SLASH
  396. 0x00a5: 0x221e, # INFINITY
  397. 0x00a6: 0x0192, # LATIN SMALL LETTER F WITH HOOK
  398. 0x00a7: 0x2663, # BLACK CLUB SUIT
  399. 0x00a8: 0x2666, # BLACK DIAMOND SUIT
  400. 0x00a9: 0x2665, # BLACK HEART SUIT
  401. 0x00aa: 0x2660, # BLACK SPADE SUIT
  402. 0x00ab: 0x2194, # LEFT RIGHT ARROW
  403. 0x00ac: 0x2190, # LEFTWARDS ARROW
  404. 0x00ad: 0x2191, # UPWARDS ARROW
  405. 0x00ae: 0x2192, # RIGHTWARDS ARROW
  406. 0x00af: 0x2193, # DOWNWARDS ARROW
  407. 0x00b2: 0x2033, # DOUBLE PRIME
  408. 0x00b3: 0x2265, # GREATER-THAN OR EQUAL TO
  409. 0x00b4: 0x00d7, # MULTIPLICATION SIGN
  410. 0x00b5: 0x221d, # PROPORTIONAL TO
  411. 0x00b6: 0x2202, # PARTIAL DIFFERENTIAL
  412. 0x00b7: 0x2022, # BULLET
  413. 0x00b8: 0x00f7, # DIVISION SIGN
  414. 0x00b9: 0x2260, # NOT EQUAL TO
  415. 0x00ba: 0x2261, # IDENTICAL TO
  416. 0x00bb: 0x2248, # ALMOST EQUAL TO
  417. 0x00bc: 0x2026, # HORIZONTAL ELLIPSIS
  418. 0x00bd: 0xf8e6, # [unknown unicode name for arrowvertex]
  419. 0x00be: 0xf8e7, # [unknown unicode name for arrowhorizex]
  420. 0x00bf: 0x21b5, # DOWNWARDS ARROW WITH CORNER LEFTWARDS
  421. 0x00c0: 0x2135, # ALEF SYMBOL
  422. 0x00c1: 0x2111, # BLACK-LETTER CAPITAL I
  423. 0x00c2: 0x211c, # BLACK-LETTER CAPITAL R
  424. 0x00c3: 0x2118, # SCRIPT CAPITAL P
  425. 0x00c4: 0x2297, # CIRCLED TIMES
  426. 0x00c5: 0x2295, # CIRCLED PLUS
  427. 0x00c6: 0x2205, # EMPTY SET
  428. 0x00c7: 0x2229, # INTERSECTION
  429. 0x00c8: 0x222a, # UNION
  430. 0x00c9: 0x2283, # SUPERSET OF
  431. 0x00ca: 0x2287, # SUPERSET OF OR EQUAL TO
  432. 0x00cb: 0x2284, # NOT A SUBSET OF
  433. 0x00cc: 0x2282, # SUBSET OF
  434. 0x00cd: 0x2286, # SUBSET OF OR EQUAL TO
  435. 0x00ce: 0x2208, # ELEMENT OF
  436. 0x00cf: 0x2209, # NOT AN ELEMENT OF
  437. 0x00d0: 0x2220, # ANGLE
  438. 0x00d1: 0x2207, # NABLA
  439. 0x00d2: 0xf6da, # [unknown unicode name for registerserif]
  440. 0x00d3: 0xf6d9, # [unknown unicode name for copyrightserif]
  441. 0x00d4: 0xf6db, # [unknown unicode name for trademarkserif]
  442. 0x00d5: 0x220f, # N-ARY PRODUCT
  443. 0x00d6: 0x221a, # SQUARE ROOT
  444. 0x00d7: 0x22c5, # DOT OPERATOR
  445. 0x00d8: 0x00ac, # NOT SIGN
  446. 0x00d9: 0x2227, # LOGICAL AND
  447. 0x00da: 0x2228, # LOGICAL OR
  448. 0x00db: 0x21d4, # LEFT RIGHT DOUBLE ARROW
  449. 0x00dc: 0x21d0, # LEFTWARDS DOUBLE ARROW
  450. 0x00dd: 0x21d1, # UPWARDS DOUBLE ARROW
  451. 0x00de: 0x21d2, # RIGHTWARDS DOUBLE ARROW
  452. 0x00df: 0x21d3, # DOWNWARDS DOUBLE ARROW
  453. 0x00e0: 0x25ca, # LOZENGE
  454. 0x00e1: 0x2329, # LEFT-POINTING ANGLE BRACKET
  455. 0x00e2: 0xf8e8, # [unknown unicode name for registersans]
  456. 0x00e3: 0xf8e9, # [unknown unicode name for copyrightsans]
  457. 0x00e4: 0xf8ea, # [unknown unicode name for trademarksans]
  458. 0x00e5: 0x2211, # N-ARY SUMMATION
  459. 0x00e6: 0xf8eb, # [unknown unicode name for parenlefttp]
  460. 0x00e7: 0xf8ec, # [unknown unicode name for parenleftex]
  461. 0x00e8: 0xf8ed, # [unknown unicode name for parenleftbt]
  462. 0x00e9: 0xf8ee, # [unknown unicode name for bracketlefttp]
  463. 0x00ea: 0xf8ef, # [unknown unicode name for bracketleftex]
  464. 0x00eb: 0xf8f0, # [unknown unicode name for bracketleftbt]
  465. 0x00ec: 0xf8f1, # [unknown unicode name for bracelefttp]
  466. 0x00ed: 0xf8f2, # [unknown unicode name for braceleftmid]
  467. 0x00ee: 0xf8f3, # [unknown unicode name for braceleftbt]
  468. 0x00ef: 0xf8f4, # [unknown unicode name for braceex]
  469. 0x00f0: None, # UNDEFINED
  470. 0x00f1: 0x232a, # RIGHT-POINTING ANGLE BRACKET
  471. 0x00f2: 0x222b, # INTEGRAL
  472. 0x00f3: 0x2320, # TOP HALF INTEGRAL
  473. 0x00f4: 0xf8f5, # [unknown unicode name for integralex]
  474. 0x00f5: 0x2321, # BOTTOM HALF INTEGRAL
  475. 0x00f6: 0xf8f6, # [unknown unicode name for parenrighttp]
  476. 0x00f7: 0xf8f7, # [unknown unicode name for parenrightex]
  477. 0x00f8: 0xf8f8, # [unknown unicode name for parenrightbt]
  478. 0x00f9: 0xf8f9, # [unknown unicode name for bracketrighttp]
  479. 0x00fa: 0xf8fa, # [unknown unicode name for bracketrightex]
  480. 0x00fb: 0xf8fb, # [unknown unicode name for bracketrightbt]
  481. 0x00fc: 0xf8fc, # [unknown unicode name for bracerighttp]
  482. 0x00fd: 0xf8fd, # [unknown unicode name for bracerightmid]
  483. 0x00fe: 0xf8fe, # [unknown unicode name for bracerightbt]
  484. 0x00ff: None, # UNDEFINED
  485. },
  486. {
  487. 0x0394:0x0044, # GREEK CAPITAL LETTER DELTA
  488. 0x03a9:0x0057, # GREEK CAPITAL LETTER OMEGA
  489. 0x03bc:0x006d, # GREEK SMALL LETTER MU
  490. }
  491. ),
  492. 'zapfdingbats':StdCodecData({
  493. 0x0021: 0x2701, # UPPER BLADE SCISSORS
  494. 0x0022: 0x2702, # BLACK SCISSORS
  495. 0x0023: 0x2703, # LOWER BLADE SCISSORS
  496. 0x0024: 0x2704, # WHITE SCISSORS
  497. 0x0025: 0x260e, # BLACK TELEPHONE
  498. 0x0026: 0x2706, # TELEPHONE LOCATION SIGN
  499. 0x0027: 0x2707, # TAPE DRIVE
  500. 0x0028: 0x2708, # AIRPLANE
  501. 0x0029: 0x2709, # ENVELOPE
  502. 0x002a: 0x261b, # BLACK RIGHT POINTING INDEX
  503. 0x002b: 0x261e, # WHITE RIGHT POINTING INDEX
  504. 0x002c: 0x270c, # VICTORY HAND
  505. 0x002d: 0x270d, # WRITING HAND
  506. 0x002e: 0x270e, # LOWER RIGHT PENCIL
  507. 0x002f: 0x270f, # PENCIL
  508. 0x0030: 0x2710, # UPPER RIGHT PENCIL
  509. 0x0031: 0x2711, # WHITE NIB
  510. 0x0032: 0x2712, # BLACK NIB
  511. 0x0033: 0x2713, # CHECK MARK
  512. 0x0034: 0x2714, # HEAVY CHECK MARK
  513. 0x0035: 0x2715, # MULTIPLICATION X
  514. 0x0036: 0x2716, # HEAVY MULTIPLICATION X
  515. 0x0037: 0x2717, # BALLOT X
  516. 0x0038: 0x2718, # HEAVY BALLOT X
  517. 0x0039: 0x2719, # OUTLINED GREEK CROSS
  518. 0x003a: 0x271a, # HEAVY GREEK CROSS
  519. 0x003b: 0x271b, # OPEN CENTRE CROSS
  520. 0x003c: 0x271c, # HEAVY OPEN CENTRE CROSS
  521. 0x003d: 0x271d, # LATIN CROSS
  522. 0x003e: 0x271e, # SHADOWED WHITE LATIN CROSS
  523. 0x003f: 0x271f, # OUTLINED LATIN CROSS
  524. 0x0040: 0x2720, # MALTESE CROSS
  525. 0x0041: 0x2721, # STAR OF DAVID
  526. 0x0042: 0x2722, # FOUR TEARDROP-SPOKED ASTERISK
  527. 0x0043: 0x2723, # FOUR BALLOON-SPOKED ASTERISK
  528. 0x0044: 0x2724, # HEAVY FOUR BALLOON-SPOKED ASTERISK
  529. 0x0045: 0x2725, # FOUR CLUB-SPOKED ASTERISK
  530. 0x0046: 0x2726, # BLACK FOUR POINTED STAR
  531. 0x0047: 0x2727, # WHITE FOUR POINTED STAR
  532. 0x0048: 0x2605, # BLACK STAR
  533. 0x0049: 0x2729, # STRESS OUTLINED WHITE STAR
  534. 0x004a: 0x272a, # CIRCLED WHITE STAR
  535. 0x004b: 0x272b, # OPEN CENTRE BLACK STAR
  536. 0x004c: 0x272c, # BLACK CENTRE WHITE STAR
  537. 0x004d: 0x272d, # OUTLINED BLACK STAR
  538. 0x004e: 0x272e, # HEAVY OUTLINED BLACK STAR
  539. 0x004f: 0x272f, # PINWHEEL STAR
  540. 0x0050: 0x2730, # SHADOWED WHITE STAR
  541. 0x0051: 0x2731, # HEAVY ASTERISK
  542. 0x0052: 0x2732, # OPEN CENTRE ASTERISK
  543. 0x0053: 0x2733, # EIGHT SPOKED ASTERISK
  544. 0x0054: 0x2734, # EIGHT POINTED BLACK STAR
  545. 0x0055: 0x2735, # EIGHT POINTED PINWHEEL STAR
  546. 0x0056: 0x2736, # SIX POINTED BLACK STAR
  547. 0x0057: 0x2737, # EIGHT POINTED RECTILINEAR BLACK STAR
  548. 0x0058: 0x2738, # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
  549. 0x0059: 0x2739, # TWELVE POINTED BLACK STAR
  550. 0x005a: 0x273a, # SIXTEEN POINTED ASTERISK
  551. 0x005b: 0x273b, # TEARDROP-SPOKED ASTERISK
  552. 0x005c: 0x273c, # OPEN CENTRE TEARDROP-SPOKED ASTERISK
  553. 0x005d: 0x273d, # HEAVY TEARDROP-SPOKED ASTERISK
  554. 0x005e: 0x273e, # SIX PETALLED BLACK AND WHITE FLORETTE
  555. 0x005f: 0x273f, # BLACK FLORETTE
  556. 0x0060: 0x2740, # WHITE FLORETTE
  557. 0x0061: 0x2741, # EIGHT PETALLED OUTLINED BLACK FLORETTE
  558. 0x0062: 0x2742, # CIRCLED OPEN CENTRE EIGHT POINTED STAR
  559. 0x0063: 0x2743, # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
  560. 0x0064: 0x2744, # SNOWFLAKE
  561. 0x0065: 0x2745, # TIGHT TRIFOLIATE SNOWFLAKE
  562. 0x0066: 0x2746, # HEAVY CHEVRON SNOWFLAKE
  563. 0x0067: 0x2747, # SPARKLE
  564. 0x0068: 0x2748, # HEAVY SPARKLE
  565. 0x0069: 0x2749, # BALLOON-SPOKED ASTERISK
  566. 0x006a: 0x274a, # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
  567. 0x006b: 0x274b, # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
  568. 0x006c: 0x25cf, # BLACK CIRCLE
  569. 0x006d: 0x274d, # SHADOWED WHITE CIRCLE
  570. 0x006e: 0x25a0, # BLACK SQUARE
  571. 0x006f: 0x274f, # LOWER RIGHT DROP-SHADOWED WHITE SQUARE
  572. 0x0070: 0x2750, # UPPER RIGHT DROP-SHADOWED WHITE SQUARE
  573. 0x0071: 0x2751, # LOWER RIGHT SHADOWED WHITE SQUARE
  574. 0x0072: 0x2752, # UPPER RIGHT SHADOWED WHITE SQUARE
  575. 0x0073: 0x25b2, # BLACK UP-POINTING TRIANGLE
  576. 0x0074: 0x25bc, # BLACK DOWN-POINTING TRIANGLE
  577. 0x0075: 0x25c6, # BLACK DIAMOND
  578. 0x0076: 0x2756, # BLACK DIAMOND MINUS WHITE X
  579. 0x0077: 0x25d7, # RIGHT HALF BLACK CIRCLE
  580. 0x0078: 0x2758, # LIGHT VERTICAL BAR
  581. 0x0079: 0x2759, # MEDIUM VERTICAL BAR
  582. 0x007a: 0x275a, # HEAVY VERTICAL BAR
  583. 0x007b: 0x275b, # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
  584. 0x007c: 0x275c, # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
  585. 0x007d: 0x275d, # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
  586. 0x007e: 0x275e, # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
  587. 0x007f: None, # UNDEFINED
  588. 0x0080: 0x2768, # MEDIUM LEFT PARENTHESIS ORNAMENT
  589. 0x0081: 0x2769, # MEDIUM RIGHT PARENTHESIS ORNAMENT
  590. 0x0082: 0x276a, # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
  591. 0x0083: 0x276b, # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
  592. 0x0084: 0x276c, # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
  593. 0x0085: 0x276d, # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
  594. 0x0086: 0x276e, # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
  595. 0x0087: 0x276f, # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
  596. 0x0088: 0x2770, # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
  597. 0x0089: 0x2771, # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
  598. 0x008a: 0x2772, # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
  599. 0x008b: 0x2773, # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
  600. 0x008c: 0x2774, # MEDIUM LEFT CURLY BRACKET ORNAMENT
  601. 0x008d: 0x2775, # MEDIUM RIGHT CURLY BRACKET ORNAMENT
  602. 0x008e: None, # UNDEFINED
  603. 0x008f: None, # UNDEFINED
  604. 0x0090: None, # UNDEFINED
  605. 0x0091: None, # UNDEFINED
  606. 0x0092: None, # UNDEFINED
  607. 0x0093: None, # UNDEFINED
  608. 0x0094: None, # UNDEFINED
  609. 0x0095: None, # UNDEFINED
  610. 0x0096: None, # UNDEFINED
  611. 0x0097: None, # UNDEFINED
  612. 0x0098: None, # UNDEFINED
  613. 0x0099: None, # UNDEFINED
  614. 0x009a: None, # UNDEFINED
  615. 0x009b: None, # UNDEFINED
  616. 0x009c: None, # UNDEFINED
  617. 0x009d: None, # UNDEFINED
  618. 0x009e: None, # UNDEFINED
  619. 0x009f: None, # UNDEFINED
  620. 0x00a0: None, # UNDEFINED
  621. 0x00a1: 0x2761, # CURVED STEM PARAGRAPH SIGN ORNAMENT
  622. 0x00a2: 0x2762, # HEAVY EXCLAMATION MARK ORNAMENT
  623. 0x00a3: 0x2763, # HEAVY HEART EXCLAMATION MARK ORNAMENT
  624. 0x00a4: 0x2764, # HEAVY BLACK HEART
  625. 0x00a5: 0x2765, # ROTATED HEAVY BLACK HEART BULLET
  626. 0x00a6: 0x2766, # FLORAL HEART
  627. 0x00a7: 0x2767, # ROTATED FLORAL HEART BULLET
  628. 0x00a8: 0x2663, # BLACK CLUB SUIT
  629. 0x00a9: 0x2666, # BLACK DIAMOND SUIT
  630. 0x00aa: 0x2665, # BLACK HEART SUIT
  631. 0x00ab: 0x2660, # BLACK SPADE SUIT
  632. 0x00ac: 0x2460, # CIRCLED DIGIT ONE
  633. 0x00ad: 0x2461, # CIRCLED DIGIT TWO
  634. 0x00ae: 0x2462, # CIRCLED DIGIT THREE
  635. 0x00af: 0x2463, # CIRCLED DIGIT FOUR
  636. 0x00b0: 0x2464, # CIRCLED DIGIT FIVE
  637. 0x00b1: 0x2465, # CIRCLED DIGIT SIX
  638. 0x00b2: 0x2466, # CIRCLED DIGIT SEVEN
  639. 0x00b3: 0x2467, # CIRCLED DIGIT EIGHT
  640. 0x00b4: 0x2468, # CIRCLED DIGIT NINE
  641. 0x00b5: 0x2469, # CIRCLED NUMBER TEN
  642. 0x00b6: 0x2776, # DINGBAT NEGATIVE CIRCLED DIGIT ONE
  643. 0x00b7: 0x2777, # DINGBAT NEGATIVE CIRCLED DIGIT TWO
  644. 0x00b8: 0x2778, # DINGBAT NEGATIVE CIRCLED DIGIT THREE
  645. 0x00b9: 0x2779, # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
  646. 0x00ba: 0x277a, # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
  647. 0x00bb: 0x277b, # DINGBAT NEGATIVE CIRCLED DIGIT SIX
  648. 0x00bc: 0x277c, # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
  649. 0x00bd: 0x277d, # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
  650. 0x00be: 0x277e, # DINGBAT NEGATIVE CIRCLED DIGIT NINE
  651. 0x00bf: 0x277f, # DINGBAT NEGATIVE CIRCLED NUMBER TEN
  652. 0x00c0: 0x2780, # DINGBAT CIRCLED SANS-SERIF DIGIT ONE
  653. 0x00c1: 0x2781, # DINGBAT CIRCLED SANS-SERIF DIGIT TWO
  654. 0x00c2: 0x2782, # DINGBAT CIRCLED SANS-SERIF DIGIT THREE
  655. 0x00c3: 0x2783, # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
  656. 0x00c4: 0x2784, # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
  657. 0x00c5: 0x2785, # DINGBAT CIRCLED SANS-SERIF DIGIT SIX
  658. 0x00c6: 0x2786, # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
  659. 0x00c7: 0x2787, # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
  660. 0x00c8: 0x2788, # DINGBAT CIRCLED SANS-SERIF DIGIT NINE
  661. 0x00c9: 0x2789, # DINGBAT CIRCLED SANS-SERIF NUMBER TEN
  662. 0x00ca: 0x278a, # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
  663. 0x00cb: 0x278b, # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
  664. 0x00cc: 0x278c, # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
  665. 0x00cd: 0x278d, # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
  666. 0x00ce: 0x278e, # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
  667. 0x00cf: 0x278f, # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
  668. 0x00d0: 0x2790, # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
  669. 0x00d1: 0x2791, # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
  670. 0x00d2: 0x2792, # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
  671. 0x00d3: 0x2793, # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
  672. 0x00d4: 0x2794, # HEAVY WIDE-HEADED RIGHTWARDS ARROW
  673. 0x00d5: 0x2192, # RIGHTWARDS ARROW
  674. 0x00d6: 0x2194, # LEFT RIGHT ARROW
  675. 0x00d7: 0x2195, # UP DOWN ARROW
  676. 0x00d8: 0x2798, # HEAVY SOUTH EAST ARROW
  677. 0x00d9: 0x2799, # HEAVY RIGHTWARDS ARROW
  678. 0x00da: 0x279a, # HEAVY NORTH EAST ARROW
  679. 0x00db: 0x279b, # DRAFTING POINT RIGHTWARDS ARROW
  680. 0x00dc: 0x279c, # HEAVY ROUND-TIPPED RIGHTWARDS ARROW
  681. 0x00dd: 0x279d, # TRIANGLE-HEADED RIGHTWARDS ARROW
  682. 0x00de: 0x279e, # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
  683. 0x00df: 0x279f, # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
  684. 0x00e0: 0x27a0, # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
  685. 0x00e1: 0x27a1, # BLACK RIGHTWARDS ARROW
  686. 0x00e2: 0x27a2, # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
  687. 0x00e3: 0x27a3, # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
  688. 0x00e4: 0x27a4, # BLACK RIGHTWARDS ARROWHEAD
  689. 0x00e5: 0x27a5, # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
  690. 0x00e6: 0x27a6, # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
  691. 0x00e7: 0x27a7, # SQUAT BLACK RIGHTWARDS ARROW
  692. 0x00e8: 0x27a8, # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
  693. 0x00e9: 0x27a9, # RIGHT-SHADED WHITE RIGHTWARDS ARROW
  694. 0x00ea: 0x27aa, # LEFT-SHADED WHITE RIGHTWARDS ARROW
  695. 0x00eb: 0x27ab, # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
  696. 0x00ec: 0x27ac, # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
  697. 0x00ed: 0x27ad, # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
  698. 0x00ee: 0x27ae, # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
  699. 0x00ef: 0x27af, # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
  700. 0x00f0: None, # UNDEFINED
  701. 0x00f1: 0x27b1, # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
  702. 0x00f2: 0x27b2, # CIRCLED HEAVY WHITE RIGHTWARDS ARROW
  703. 0x00f3: 0x27b3, # WHITE-FEATHERED RIGHTWARDS ARROW
  704. 0x00f4: 0x27b4, # BLACK-FEATHERED SOUTH EAST ARROW
  705. 0x00f5: 0x27b5, # BLACK-FEATHERED RIGHTWARDS ARROW
  706. 0x00f6: 0x27b6, # BLACK-FEATHERED NORTH EAST ARROW
  707. 0x00f7: 0x27b7, # HEAVY BLACK-FEATHERED SOUTH EAST ARROW
  708. 0x00f8: 0x27b8, # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
  709. 0x00f9: 0x27b9, # HEAVY BLACK-FEATHERED NORTH EAST ARROW
  710. 0x00fa: 0x27ba, # TEARDROP-BARBED RIGHTWARDS ARROW
  711. 0x00fb: 0x27bb, # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
  712. 0x00fc: 0x27bc, # WEDGE-TAILED RIGHTWARDS ARROW
  713. 0x00fd: 0x27bd, # HEAVY WEDGE-TAILED RIGHTWARDS ARROW
  714. 0x00fe: 0x27be, # OPEN-OUTLINED RIGHTWARDS ARROW
  715. 0x00ff: None, # UNDEFINED
  716. },None),
  717. 'pdfdoc':StdCodecData({
  718. 0x007f: None, # UNDEFINED
  719. 0x0080: 0x2022, # BULLET
  720. 0x0081: 0x2020, # DAGGER
  721. 0x0082: 0x2021, # DOUBLE DAGGER
  722. 0x0083: 0x2026, # HORIZONTAL ELLIPSIS
  723. 0x0084: 0x2014, # EM DASH
  724. 0x0085: 0x2013, # EN DASH
  725. 0x0086: 0x0192, # LATIN SMALL LETTER F WITH HOOK
  726. 0x0087: 0x2044, # FRACTION SLASH
  727. 0x0088: 0x2039, # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
  728. 0x0089: 0x203a, # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
  729. 0x008a: 0x2212, # MINUS SIGN
  730. 0x008b: 0x2030, # PER MILLE SIGN
  731. 0x008c: 0x201e, # DOUBLE LOW-9 QUOTATION MARK
  732. 0x008d: 0x201c, # LEFT DOUBLE QUOTATION MARK
  733. 0x008e: 0x201d, # RIGHT DOUBLE QUOTATION MARK
  734. 0x008f: 0x2018, # LEFT SINGLE QUOTATION MARK
  735. 0x0090: 0x2019, # RIGHT SINGLE QUOTATION MARK
  736. 0x0091: 0x201a, # SINGLE LOW-9 QUOTATION MARK
  737. 0x0092: 0x2122, # TRADE MARK SIGN
  738. 0x0093: 0xfb01, # LATIN SMALL LIGATURE FI
  739. 0x0094: 0xfb02, # LATIN SMALL LIGATURE FL
  740. 0x0095: 0x0141, # LATIN CAPITAL LETTER L WITH STROKE
  741. 0x0096: 0x0152, # LATIN CAPITAL LIGATURE OE
  742. 0x0097: 0x0160, # LATIN CAPITAL LETTER S WITH CARON
  743. 0x0098: 0x0178, # LATIN CAPITAL LETTER Y WITH DIAERESIS
  744. 0x0099: 0x017d, # LATIN CAPITAL LETTER Z WITH CARON
  745. 0x009a: 0x0131, # LATIN SMALL LETTER DOTLESS I
  746. 0x009b: 0x0142, # LATIN SMALL LETTER L WITH STROKE
  747. 0x009c: 0x0153, # LATIN SMALL LIGATURE OE
  748. 0x009d: 0x0161, # LATIN SMALL LETTER S WITH CARON
  749. 0x009e: 0x017e, # LATIN SMALL LETTER Z WITH CARON
  750. 0x009f: None, # UNDEFINED
  751. 0x00a0: 0x20ac, # EURO SIGN
  752. 0x00ad: None, # UNDEFINED
  753. 24: 0x02d8, #breve
  754. 25: 0x02c7, #caron
  755. 26: 0x02c6, #circumflex
  756. 27: 0x02d9, #dotaccent
  757. 28: 0x02dd, #hungarumlaut
  758. 29: 0x02db, #ogonek
  759. 30: 0x02da, #ring
  760. 31: 0x02dc, #tilde
  761. },None),
  762. 'macexpert':StdCodecData({
  763. 0x0021: 0xf721, # [unknown unicode name for exclamsmall]
  764. 0x0022: 0xf6f8, # [unknown unicode name for Hungarumlautsmall]
  765. 0x0023: 0xf7a2, # [unknown unicode name for centoldstyle]
  766. 0x0024: 0xf724, # [unknown unicode name for dollaroldstyle]
  767. 0x0025: 0xf6e4, # [unknown unicode name for dollarsuperior]
  768. 0x0026: 0xf726, # [unknown unicode name for ampersandsmall]
  769. 0x0027: 0xf7b4, # [unknown unicode name for Acutesmall]
  770. 0x0028: 0x207d, # SUPERSCRIPT LEFT PARENTHESIS
  771. 0x0029: 0x207e, # SUPERSCRIPT RIGHT PARENTHESIS
  772. 0x002a: 0x2025, # TWO DOT LEADER
  773. 0x002b: 0x2024, # ONE DOT LEADER
  774. 0x002f: 0x2044, # FRACTION SLASH
  775. 0x0030: 0xf730, # [unknown unicode name for zerooldstyle]
  776. 0x0031: 0xf731, # [unknown unicode name for oneoldstyle]
  777. 0x0032: 0xf732, # [unknown unicode name for twooldstyle]
  778. 0x0033: 0xf733, # [unknown unicode name for threeoldstyle]
  779. 0x0034: 0xf734, # [unknown unicode name for fouroldstyle]
  780. 0x0035: 0xf735, # [unknown unicode name for fiveoldstyle]
  781. 0x0036: 0xf736, # [unknown unicode name for sixoldstyle]
  782. 0x0037: 0xf737, # [unknown unicode name for sevenoldstyle]
  783. 0x0038: 0xf738, # [unknown unicode name for eightoldstyle]
  784. 0x0039: 0xf739, # [unknown unicode name for nineoldstyle]
  785. 0x003c: None, # UNDEFINED
  786. 0x003d: 0xf6de, # [unknown unicode name for threequartersemdash]
  787. 0x003e: None, # UNDEFINED
  788. 0x003f: 0xf73f, # [unknown unicode name for questionsmall]
  789. 0x0040: None, # UNDEFINED
  790. 0x0041: None, # UNDEFINED
  791. 0x0042: None, # UNDEFINED
  792. 0x0043: None, # UNDEFINED
  793. 0x0044: 0xf7f0, # [unknown unicode name for Ethsmall]
  794. 0x0045: None, # UNDEFINED
  795. 0x0046: None, # UNDEFINED
  796. 0x0047: 0x00bc, # VULGAR FRACTION ONE QUARTER
  797. 0x0048: 0x00bd, # VULGAR FRACTION ONE HALF
  798. 0x0049: 0x00be, # VULGAR FRACTION THREE QUARTERS
  799. 0x004a: 0x215b, # VULGAR FRACTION ONE EIGHTH
  800. 0x004b: 0x215c, # VULGAR FRACTION THREE EIGHTHS
  801. 0x004c: 0x215d, # VULGAR FRACTION FIVE EIGHTHS
  802. 0x004d: 0x215e, # VULGAR FRACTION SEVEN EIGHTHS
  803. 0x004e: 0x2153, # VULGAR FRACTION ONE THIRD
  804. 0x004f: 0x2154, # VULGAR FRACTION TWO THIRDS
  805. 0x0050: None, # UNDEFINED
  806. 0x0051: None, # UNDEFINED
  807. 0x0052: None, # UNDEFINED
  808. 0x0053: None, # UNDEFINED
  809. 0x0054: None, # UNDEFINED
  810. 0x0055: None, # UNDEFINED
  811. 0x0056: 0xfb00, # LATIN SMALL LIGATURE FF
  812. 0x0057: 0xfb01, # LATIN SMALL LIGATURE FI
  813. 0x0058: 0xfb02, # LATIN SMALL LIGATURE FL
  814. 0x0059: 0xfb03, # LATIN SMALL LIGATURE FFI
  815. 0x005a: 0xfb04, # LATIN SMALL LIGATURE FFL
  816. 0x005b: 0x208d, # SUBSCRIPT LEFT PARENTHESIS
  817. 0x005c: None, # UNDEFINED
  818. 0x005d: 0x208e, # SUBSCRIPT RIGHT PARENTHESIS
  819. 0x005e: 0xf6f6, # [unknown unicode name for Circumflexsmall]
  820. 0x005f: 0xf6e5, # [unknown unicode name for hypheninferior]
  821. 0x0060: 0xf760, # [unknown unicode name for Gravesmall]
  822. 0x0061: 0xf761, # [unknown unicode name for Asmall]
  823. 0x0062: 0xf762, # [unknown unicode name for Bsmall]
  824. 0x0063: 0xf763, # [unknown unicode name for Csmall]
  825. 0x0064: 0xf764, # [unknown unicode name for Dsmall]
  826. 0x0065: 0xf765, # [unknown unicode name for Esmall]
  827. 0x0066: 0xf766, # [unknown unicode name for Fsmall]
  828. 0x0067: 0xf767, # [unknown unicode name for Gsmall]
  829. 0x0068: 0xf768, # [unknown unicode name for Hsmall]
  830. 0x0069: 0xf769, # [unknown unicode name for Ismall]
  831. 0x006a: 0xf76a, # [unknown unicode name for Jsmall]
  832. 0x006b: 0xf76b, # [unknown unicode name for Ksmall]
  833. 0x006c: 0xf76c, # [unknown unicode name for Lsmall]
  834. 0x006d: 0xf76d, # [unknown unicode name for Msmall]
  835. 0x006e: 0xf76e, # [unknown unicode name for Nsmall]
  836. 0x006f: 0xf76f, # [unknown unicode name for Osmall]
  837. 0x0070: 0xf770, # [unknown unicode name for Psmall]
  838. 0x0071: 0xf771, # [unknown unicode name for Qsmall]
  839. 0x0072: 0xf772, # [unknown unicode name for Rsmall]
  840. 0x0073: 0xf773, # [unknown unicode name for Ssmall]
  841. 0x0074: 0xf774, # [unknown unicode name for Tsmall]
  842. 0x0075: 0xf775, # [unknown unicode name for Usmall]
  843. 0x0076: 0xf776, # [unknown unicode name for Vsmall]
  844. 0x0077: 0xf777, # [unknown unicode name for Wsmall]
  845. 0x0078: 0xf778, # [unknown unicode name for Xsmall]
  846. 0x0079: 0xf779, # [unknown unicode name for Ysmall]
  847. 0x007a: 0xf77a, # [unknown unicode name for Zsmall]
  848. 0x007b: 0x20a1, # COLON SIGN
  849. 0x007c: 0xf6dc, # [unknown unicode name for onefitted]
  850. 0x007d: 0xf6dd, # [unknown unicode name for rupiah]
  851. 0x007e: 0xf6fe, # [unknown unicode name for Tildesmall]
  852. 0x007f: None, # UNDEFINED
  853. 0x0080: None, # UNDEFINED
  854. 0x0081: 0xf6e9, # [unknown unicode name for asuperior]
  855. 0x0082: 0xf6e0, # [unknown unicode name for centsuperior]
  856. 0x0083: None, # UNDEFINED
  857. 0x0084: None, # UNDEFINED
  858. 0x0085: None, # UNDEFINED
  859. 0x0086: None, # UNDEFINED
  860. 0x0087: 0xf7e1, # [unknown unicode name for Aacutesmall]
  861. 0x0088: 0xf7e0, # [unknown unicode name for Agravesmall]
  862. 0x0089: 0xf7e2, # [unknown unicode name for Acircumflexsmall]
  863. 0x008a: 0xf7e4, # [unknown unicode name for Adieresissmall]
  864. 0x008b: 0xf7e3, # [unknown unicode name for Atildesmall]
  865. 0x008c: 0xf7e5, # [unknown unicode name for Aringsmall]
  866. 0x008d: 0xf7e7, # [unknown unicode name for Ccedillasmall]
  867. 0x008e: 0xf7e9, # [unknown unicode name for Eacutesmall]
  868. 0x008f: 0xf7e8, # [unknown unicode name for Egravesmall]
  869. 0x0090: 0xf7ea, # [unknown unicode name for Ecircumflexsmall]
  870. 0x0091: 0xf7eb, # [unknown unicode name for Edieresissmall]
  871. 0x0092: 0xf7ed, # [unknown unicode name for Iacutesmall]
  872. 0x0093: 0xf7ec, # [unknown unicode name for Igravesmall]
  873. 0x0094: 0xf7ee, # [unknown unicode name for Icircumflexsmall]
  874. 0x0095: 0xf7ef, # [unknown unicode name for Idieresissmall]
  875. 0x0096: 0xf7f1, # [unknown unicode name for Ntildesmall]
  876. 0x0097: 0xf7f3, # [unknown unicode name for Oacutesmall]
  877. 0x0098: 0xf7f2, # [unknown unicode name for Ogravesmall]
  878. 0x0099: 0xf7f4, # [unknown unicode name for Ocircumflexsmall]
  879. 0x009a: 0xf7f6, # [unknown unicode name for Odieresissmall]
  880. 0x009b: 0xf7f5, # [unknown unicode name for Otildesmall]
  881. 0x009c: 0xf7fa, # [unknown unicode name for Uacutesmall]
  882. 0x009d: 0xf7f9, # [unknown unicode name for Ugravesmall]
  883. 0x009e: 0xf7fb, # [unknown unicode name for Ucircumflexsmall]
  884. 0x009f: 0xf7fc, # [unknown unicode name for Udieresissmall]
  885. 0x00a0: None, # UNDEFINED
  886. 0x00a1: 0x2078, # SUPERSCRIPT EIGHT
  887. 0x00a2: 0x2084, # SUBSCRIPT FOUR
  888. 0x00a3: 0x2083, # SUBSCRIPT THREE
  889. 0x00a4: 0x2086, # SUBSCRIPT SIX
  890. 0x00a5: 0x2088, # SUBSCRIPT EIGHT
  891. 0x00a6: 0x2087, # SUBSCRIPT SEVEN
  892. 0x00a7: 0xf6fd, # [unknown unicode name for Scaronsmall]
  893. 0x00a8: None, # UNDEFINED
  894. 0x00a9: 0xf6df, # [unknown unicode name for centinferior]
  895. 0x00aa: 0x2082, # SUBSCRIPT TWO
  896. 0x00ab: None, # UNDEFINED
  897. 0x00ac: 0xf7a8, # [unknown unicode name for Dieresissmall]
  898. 0x00ad: None, # UNDEFINED
  899. 0x00ae: 0xf6f5, # [unknown unicode name for Caronsmall]
  900. 0x00af: 0xf6f0, # [unknown unicode name for osuperior]
  901. 0x00b0: 0x2085, # SUBSCRIPT FIVE
  902. 0x00b1: None, # UNDEFINED
  903. 0x00b2: 0xf6e1, # [unknown unicode name for commainferior]
  904. 0x00b3: 0xf6e7, # [unknown unicode name for periodinferior]
  905. 0x00b4: 0xf7fd, # [unknown unicode name for Yacutesmall]
  906. 0x00b5: None, # UNDEFINED
  907. 0x00b6: 0xf6e3, # [unknown unicode name for dollarinferior]
  908. 0x00b7: None, # UNDEFINED
  909. 0x00b8: None, # UNDEFINED
  910. 0x00b9: 0xf7fe, # [unknown unicode name for Thornsmall]
  911. 0x00ba: None, # UNDEFINED
  912. 0x00bb: 0x2089, # SUBSCRIPT NINE
  913. 0x00bc: 0x2080, # SUBSCRIPT ZERO
  914. 0x00bd: 0xf6ff, # [unknown unicode name for Zcaronsmall]
  915. 0x00be: 0xf7e6, # [unknown unicode name for AEsmall]
  916. 0x00bf: 0xf7f8, # [unknown unicode name for Oslashsmall]
  917. 0x00c0: 0xf7bf, # [unknown unicode name for questiondownsmall]
  918. 0x00c1: 0x2081, # SUBSCRIPT ONE
  919. 0x00c2: 0xf6f9, # [unknown unicode name for Lslashsmall]
  920. 0x00c3: None, # UNDEFINED
  921. 0x00c4: None, # UNDEFINED
  922. 0x00c5: None, # UNDEFINED
  923. 0x00c6: None, # UNDEFINED
  924. 0x00c7: None, # UNDEFINED
  925. 0x00c8: None, # UNDEFINED
  926. 0x00c9: 0xf7b8, # [unknown unicode name for Cedillasmall]
  927. 0x00ca: None, # UNDEFINED
  928. 0x00cb: None, # UNDEFINED
  929. 0x00cc: None, # UNDEFINED
  930. 0x00cd: None, # UNDEFINED
  931. 0x00ce: None, # UNDEFINED
  932. 0x00cf: 0xf6fa, # [unknown unicode name for OEsmall]
  933. 0x00d0: 0x2012, # FIGURE DASH
  934. 0x00d1: 0xf6e6, # [unknown unicode name for hyphensuperior]
  935. 0x00d2: None, # UNDEFINED
  936. 0x00d3: None, # UNDEFINED
  937. 0x00d4: None, # UNDEFINED
  938. 0x00d5: None, # UNDEFINED
  939. 0x00d6: 0xf7a1, # [unknown unicode name for exclamdownsmall]
  940. 0x00d7: None, # UNDEFINED
  941. 0x00d8: 0xf7ff, # [unknown unicode name for Ydieresissmall]
  942. 0x00d9: None, # UNDEFINED
  943. 0x00da: 0x00b9, # SUPERSCRIPT ONE
  944. 0x00db: 0x00b2, # SUPERSCRIPT TWO
  945. 0x00dc: 0x00b3, # SUPERSCRIPT THREE
  946. 0x00dd: 0x2074, # SUPERSCRIPT FOUR
  947. 0x00de: 0x2075, # SUPERSCRIPT FIVE
  948. 0x00df: 0x2076, # SUPERSCRIPT SIX
  949. 0x00e0: 0x2077, # SUPERSCRIPT SEVEN
  950. 0x00e1: 0x2079, # SUPERSCRIPT NINE
  951. 0x00e2: 0x2070, # SUPERSCRIPT ZERO
  952. 0x00e3: None, # UNDEFINED
  953. 0x00e4: 0xf6ec, # [unknown unicode name for esuperior]
  954. 0x00e5: 0xf6f1, # [unknown unicode name for rsuperior]
  955. 0x00e6: 0xf6f3, # [unknown unicode name for tsuperior]
  956. 0x00e7: None, # UNDEFINED
  957. 0x00e8: None, # UNDEFINED
  958. 0x00e9: 0xf6ed, # [unknown unicode name for isuperior]
  959. 0x00ea: 0xf6f2, # [unknown unicode name for ssuperior]
  960. 0x00eb: 0xf6eb, # [unknown unicode name for dsuperior]
  961. 0x00ec: None, # UNDEFINED
  962. 0x00ed: None, # UNDEFINED
  963. 0x00ee: None, # UNDEFINED
  964. 0x00ef: None, # UNDEFINED
  965. 0x00f0: None, # UNDEFINED
  966. 0x00f1: 0xf6ee, # [unknown unicode name for lsuperior]
  967. 0x00f2: 0xf6fb, # [unknown unicode name for Ogoneksmall]
  968. 0x00f3: 0xf6f4, # [unknown unicode name for Brevesmall]
  969. 0x00f4: 0xf7af, # [unknown unicode name for Macronsmall]
  970. 0x00f5: 0xf6ea, # [unknown unicode name for bsuperior]
  971. 0x00f6: 0x207f, # SUPERSCRIPT LATIN SMALL LETTER N
  972. 0x00f7: 0xf6ef, # [unknown unicode name for msuperior]
  973. 0x00f8: 0xf6e2, # [unknown unicode name for commasuperior]
  974. 0x00f9: 0xf6e8, # [unknown unicode name for periodsuperior]
  975. 0x00fa: 0xf6f7, # [unknown unicode name for Dotaccentsmall]
  976. 0x00fb: 0xf6fc, # [unknown unicode name for Ringsmall]
  977. 0x00fc: None, # UNDEFINED
  978. 0x00fd: None, # UNDEFINED
  979. 0x00fe: None, # UNDEFINED
  980. 0x00ff: None, # UNDEFINED
  981. },None),
  982. }
  983. __rl_extension_codecs = {
  984. 'extpdfdoc':ExtCodecData('pdfdoc',{0x000a:0x000a,0x000d:0x000d},None),
  985. }
  986. #for k,v in __rl_codecs_data.items():
  987. # __rl_codecs_data[k+'enc'] = __rl_codecs_data[k+'encoding'] = v
  988. #del k,v
  989. __rl_dynamic_codecs = []
  990. def __init__(self):
  991. raise NotImplementedError
  992. @staticmethod
  993. def _makeCodecInfo(name,encoding_map,decoding_map):
  994. ### Codec APIs
  995. class Codec(codecs.Codec):
  996. def encode(self,input,errors='strict',charmap_encode=codecs.charmap_encode,encoding_map=encoding_map):
  997. return charmap_encode(input,errors,encoding_map)
  998. def decode(self,input,errors='strict',charmap_decode=codecs.charmap_decode,decoding_map=decoding_map):
  999. return charmap_decode(input,errors,decoding_map)
  1000. class StreamWriter(Codec,codecs.StreamWriter):
  1001. pass
  1002. class StreamReader(Codec,codecs.StreamReader):
  1003. pass
  1004. C = Codec()
  1005. return codecs.CodecInfo(C.encode,C.decode,streamreader=StreamReader,streamwriter=StreamWriter,name=name)
  1006. @staticmethod
  1007. def _256_exception_codec(name,exceptions,rexceptions,baseRange=range(32,256)):
  1008. decoding_map = codecs.make_identity_dict(baseRange)
  1009. decoding_map.update(exceptions)
  1010. encoding_map = codecs.make_encoding_map(decoding_map)
  1011. if rexceptions: encoding_map.update(rexceptions)
  1012. return RL_Codecs._makeCodecInfo(name,encoding_map,decoding_map)
  1013. __rl_codecs_cache = {}
  1014. @staticmethod
  1015. def __rl_codecs(name,cache=__rl_codecs_cache,data=__rl_codecs_data,extension_codecs=__rl_extension_codecs,_256=True):
  1016. try:
  1017. return cache[name]
  1018. except KeyError:
  1019. if name in extension_codecs:
  1020. x = extension_codecs[name]
  1021. e,r = data[x.baseName]
  1022. if x.exceptions:
  1023. if e:
  1024. e = e.copy()
  1025. e.update(x.exceptions)
  1026. else:
  1027. e = x.exceptions
  1028. if x.rexceptions:
  1029. if r:
  1030. r = r.copy()
  1031. r.update(x.rexceptions)
  1032. else:
  1033. r = x.exceptions
  1034. else:
  1035. e,r = data[name]
  1036. cache[name] = c = RL_Codecs._256_exception_codec(name,e,r) if _256 else RL_Codecs._makeCodecInfo(name, e,r or {})
  1037. return c
  1038. @staticmethod
  1039. def _rl_codecs(name):
  1040. name = name.lower()
  1041. from reportlab.pdfbase.pdfmetrics import standardEncodings
  1042. for e in standardEncodings+('ExtPdfdocEncoding',):
  1043. e = e[:-8].lower()
  1044. if name.startswith(e): return RL_Codecs.__rl_codecs(e)
  1045. if name in RL_Codecs.__rl_dynamic_codecs:
  1046. return RL_Codecs.__rl_codecs(name,_256=False)
  1047. return None
  1048. @staticmethod
  1049. def register():
  1050. codecs.register(RL_Codecs._rl_codecs)
  1051. @staticmethod
  1052. def add_dynamic_codec(name,exceptions,rexceptions):
  1053. name = name.lower()
  1054. RL_Codecs.remove_dynamic_codec(name)
  1055. RL_Codecs.__rl_codecs_data[name] = (exceptions,rexceptions)
  1056. RL_Codecs.__rl_dynamic_codecs.append(name)
  1057. @staticmethod
  1058. def remove_dynamic_codec(name):
  1059. name = name.lower()
  1060. if name in RL_Codecs.__rl_dynamic_codecs:
  1061. RL_Codecs.__rl_codecs_data.pop(name,None)
  1062. RL_Codecs.__rl_codecs_cache.pop(name,None)
  1063. RL_Codecs.__rl_dynamic_codecs.remove(name)
  1064. @staticmethod
  1065. def reset_dynamic_codecs():
  1066. map(RL_Codecs.remove_dynamic_codec, RL_Codecs.__rl_dynamic_codecs)