Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

963 lines
32 KiB

  1. //
  2. // This file contain the data that used to Convert GB to/from Unicode
  3. // These data can be sperate to 2 parts:
  4. // First part is table for Code points changed from GBK to GB18030
  5. // (In another words, the code points changed from CP936 to CP54936)
  6. // Second part is table for code points of 1 byte, two bytes and four bytes boundary
  7. //
  8. // Both them are generate from CDWang's dump data
  9. // I attached CDWang's original file as the remark
  10. //
  11. const WCHAR cg_wchSurrogateLeadWordLow = 0xD800;
  12. const WCHAR cg_wchSurrogateLeadWordHigh = 0xDC00;
  13. const WCHAR cg_wchSurrogateTailWordLow = 0xDC00;
  14. const WCHAR cg_wchSurrogateTailWordHigh = 0xE000;
  15. const BYTE cg_byQByteAnsiLeadByteLow = 0x81;
  16. const BYTE cg_byQByteAnsiLeadByteHigh = 0xFF;
  17. const BYTE cg_byQByteAnsiTailByteLow = 0x30;
  18. const BYTE cg_byQByteAnsiTailByteHigh = 0x3A;
  19. const DWORD cg_dwQByteAnsiStart = 0x81308130;
  20. const DWORD cg_dwQByteAnsiToBMPLast = 0x8431a439;
  21. const DWORD cg_dwQByteAnsiToSurrogateStart = 0x90308130;
  22. // ----------------------------------------------------------------------------
  23. // First part
  24. // ----------------------------------------------------------------------------
  25. /*
  26. Notes:
  27. 1) Euro symbol: U+20AC in ISO 10646 is mapped to 0xA2E3 in GB18030.
  28. 2) 80 two-byte encoded characters in GBK: ISO 10646 code points changed.
  29. 3) 80 characters which were firstly coded in GBK are given new 10646 code points instead their temporary code points given in GBK.
  30. 4) The following list contains 81 characters.
  31. New in GB18030<==> Currently in GBK
  32. 10646 18030 10646 18030
  33. ---------------------------------------
  34. U+20AC A2E3 <====> U+E76C A2E3
  35. U+01F9 A8BF <====> U+E7C8 A8BF
  36. U+303E A989 <====> U+E7E7 A989
  37. U+2FF0 A98A <====> U+E7E8 A98A
  38. U+2FF1 A98B <====> U+E7E9 A98B
  39. U+2FF2 A98C <====> U+E7EA A98C
  40. U+2FF3 A98D <====> U+E7EB A98D
  41. U+2FF4 A98E <====> U+E7EC A98E
  42. U+2FF5 A98F <====> U+E7ED A98F
  43. U+2FF6 A990 <====> U+E7EE A990
  44. U+2FF7 A991 <====> U+E7EF A991
  45. U+2FF8 A992 <====> U+E7F0 A992
  46. U+2FF9 A993 <====> U+E7F1 A993
  47. U+2FFA A994 <====> U+E7F2 A994
  48. U+2FFB A995 <====> U+E7F3 A995
  49. U+2E81 FE50 <====> U+E815 FE50
  50. U+2E84 FE54 <====> U+E819 FE54
  51. U+3473 FE55 <====> U+E81A FE55
  52. U+3447 FE56 <====> U+E81B FE56
  53. U+2E88 FE57 <====> U+E81C FE57
  54. U+2E8B FE58 <====> U+E81D FE58
  55. U+359E FE5A <====> U+E81F FE5A
  56. U+361A FE5B <====> U+E820 FE5B
  57. U+360E FE5C <====> U+E821 FE5C
  58. U+2E8C FE5D <====> U+E822 FE5D
  59. U+2E97 FE5E <====> U+E823 FE5E
  60. U+396E FE5F <====> U+E824 FE5F
  61. U+3918 FE60 <====> U+E825 FE60
  62. U+39CF FE62 <====> U+E827 FE62
  63. U+39DF FE63 <====> U+E828 FE63
  64. U+3A73 FE64 <====> U+E829 FE64
  65. U+39D0 FE65 <====> U+E82A FE65
  66. U+3B4E FE68 <====> U+E82D FE68
  67. U+3C6E FE69 <====> U+E82E FE69
  68. U+3CE0 FE6A <====> U+E82F FE6A
  69. U+2EA7 FE6B <====> U+E830 FE6B
  70. U+2EAA FE6E <====> U+E833 FE6E
  71. U+4056 FE6F <====> U+E834 FE6F
  72. U+415F FE70 <====> U+E835 FE70
  73. U+2EAE FE71 <====> U+E836 FE71
  74. U+4337 FE72 <====> U+E837 FE72
  75. U+2EB3 FE73 <====> U+E838 FE73
  76. U+2EB6 FE74 <====> U+E839 FE74
  77. U+2EB7 FE75 <====> U+E83A FE75
  78. U+43B1 FE77 <====> U+E83C FE77
  79. U+43AC FE78 <====> U+E83D FE78
  80. U+2EBB FE79 <====> U+E83E FE79
  81. U+43DD FE7A <====> U+E83F FE7A
  82. U+44D6 FE7B <====> U+E840 FE7B
  83. U+4661 FE7C <====> U+E841 FE7C
  84. U+464C FE7D <====> U+E842 FE7D
  85. U+4723 FE80 <====> U+E844 FE80
  86. U+4729 FE81 <====> U+E845 FE81
  87. U+477C FE82 <====> U+E846 FE82
  88. U+478D FE83 <====> U+E847 FE83
  89. U+2ECA FE84 <====> U+E848 FE84
  90. U+4947 FE85 <====> U+E849 FE85
  91. U+497A FE86 <====> U+E84A FE86
  92. U+497D FE87 <====> U+E84B FE87
  93. U+4982 FE88 <====> U+E84C FE88
  94. U+4983 FE89 <====> U+E84D FE89
  95. U+4985 FE8A <====> U+E84E FE8A
  96. U+4986 FE8B <====> U+E84F FE8B
  97. U+499F FE8C <====> U+E850 FE8C
  98. U+499B FE8D <====> U+E851 FE8D
  99. U+49B7 FE8E <====> U+E852 FE8E
  100. U+49B6 FE8F <====> U+E853 FE8F
  101. U+4CA3 FE92 <====> U+E856 FE92
  102. U+4C9F FE93 <====> U+E857 FE93
  103. U+4CA0 FE94 <====> U+E858 FE94
  104. U+4CA1 FE95 <====> U+E859 FE95
  105. U+4C77 FE96 <====> U+E85A FE96
  106. U+4CA2 FE97 <====> U+E85B FE97
  107. U+4D13 FE98 <====> U+E85C FE98
  108. U+4D14 FE99 <====> U+E85D FE99
  109. U+4D15 FE9A <====> U+E85E FE9A
  110. U+4D16 FE9B <====> U+E85F FE9B
  111. U+4D17 FE9C <====> U+E860 FE9C
  112. U+4D18 FE9D <====> U+E861 FE9D
  113. U+4D19 FE9E <====> U+E862 FE9E
  114. U+4DAE FE9F <====> U+E863 FE9F
  115. */
  116. struct SAnsiCodeChanged {
  117. WCHAR wchUnicode;
  118. WCHAR wchAnsiNew; // in char order, or GB standard order
  119. };
  120. const SAnsiCodeChanged asAnsiCodeChanged[] = {
  121. {0x20AC, 0xE3A2}, {0x01F9, 0xBFA8}, {0x303E, 0x89A9}, {0x2FF0, 0x8AA9},
  122. {0x2FF1, 0x8BA9}, {0x2FF2, 0x8CA9}, {0x2FF3, 0x8DA9}, {0x2FF4, 0x8EA9},
  123. {0x2FF5, 0x8FA9}, {0x2FF6, 0x90A9}, {0x2FF7, 0x91A9}, {0x2FF8, 0x92A9},
  124. {0x2FF9, 0x93A9}, {0x2FFA, 0x94A9}, {0x2FFB, 0x95A9}, {0x2E81, 0x50FE},
  125. {0x2E84, 0x54FE}, {0x3473, 0x55FE}, {0x3447, 0x56FE}, {0x2E88, 0x57FE},
  126. {0x2E8B, 0x58FE}, {0x359E, 0x5AFE}, {0x361A, 0x5BFE}, {0x360E, 0x5CFE},
  127. {0x2E8C, 0x5DFE}, {0x2E97, 0x5EFE}, {0x396E, 0x5FFE}, {0x3918, 0x60FE},
  128. {0x39CF, 0x62FE}, {0x39DF, 0x63FE}, {0x3A73, 0x64FE}, {0x39D0, 0x65FE},
  129. {0x3B4E, 0x68FE}, {0x3C6E, 0x69FE}, {0x3CE0, 0x6AFE}, {0x2EA7, 0x6BFE},
  130. {0x2EAA, 0x6EFE}, {0x4056, 0x6FFE}, {0x415F, 0x70FE}, {0x2EAE, 0x71FE},
  131. {0x4337, 0x72FE}, {0x2EB3, 0x73FE}, {0x2EB6, 0x74FE}, {0x2EB7, 0x75FE},
  132. {0x43B1, 0x77FE}, {0x43AC, 0x78FE}, {0x2EBB, 0x79FE}, {0x43DD, 0x7AFE},
  133. {0x44D6, 0x7BFE}, {0x4661, 0x7CFE}, {0x464C, 0x7DFE}, {0x4723, 0x80FE},
  134. {0x4729, 0x81FE}, {0x477C, 0x82FE}, {0x478D, 0x83FE}, {0x2ECA, 0x84FE},
  135. {0x4947, 0x85FE}, {0x497A, 0x86FE}, {0x497D, 0x87FE}, {0x4982, 0x88FE},
  136. {0x4983, 0x89FE}, {0x4985, 0x8AFE}, {0x4986, 0x8BFE}, {0x499F, 0x8CFE},
  137. {0x499B, 0x8DFE}, {0x49B7, 0x8EFE}, {0x49B6, 0x8FFE}, {0x4CA3, 0x92FE},
  138. {0x4C9F, 0x93FE}, {0x4CA0, 0x94FE}, {0x4CA1, 0x95FE}, {0x4C77, 0x96FE},
  139. {0x4CA2, 0x97FE}, {0x4D13, 0x98FE}, {0x4D14, 0x99FE}, {0x4D15, 0x9AFE},
  140. {0x4D16, 0x9BFE}, {0x4D17, 0x9CFE}, {0x4D18, 0x9DFE}, {0x4D19, 0x9EFE},
  141. {0x4DAE, 0x9FFE},
  142. };
  143. // ----------------------------------------------------------------------------
  144. // Second part
  145. // ----------------------------------------------------------------------------
  146. /*
  147. // The following are 669 code points mapping between Unicode and GB18030 (codepage#:54936).
  148. // They are 1 byte, two bytes and four bytes boundary code points in GB18030
  149. //
  150. "\u007F", <0x7F>
  151. "\u0080", <0x81;0x30;0x81;0x30>
  152. "\u00A3", <0x81;0x30;0x84;0x35>
  153. "\u00A4", <0xA1;0xE8>
  154. "\u00A5", <0x81;0x30;0x84;0x36>
  155. "\u00A6", <0x81;0x30;0x84;0x37>
  156. "\u00A7", <0xA1;0xEC>
  157. "\u00A8", <0xA1;0xA7>
  158. "\u00A9", <0x81;0x30;0x84;0x38>
  159. "\u00AF", <0x81;0x30;0x85;0x34>
  160. "\u00B0", <0xA1;0xE3>
  161. "\u00B1", <0xA1;0xC0>
  162. "\u00B2", <0x81;0x30;0x85;0x35>
  163. "\u00B6", <0x81;0x30;0x85;0x39>
  164. "\u00B7", <0xA1;0xA4>
  165. "\u00B8", <0x81;0x30;0x86;0x30>
  166. "\u00D6", <0x81;0x30;0x89;0x30>
  167. "\u00D7", <0xA1;0xC1>
  168. "\u00D8", <0x81;0x30;0x89;0x31>
  169. "\u00DF", <0x81;0x30;0x89;0x38>
  170. "\u00E0", <0xA8;0xA4>
  171. "\u00E1", <0xA8;0xA2>
  172. "\u00E2", <0x81;0x30;0x89;0x39>
  173. "\u00E7", <0x81;0x30;0x8A;0x34>
  174. "\u00E8", <0xA8;0xA8>
  175. "\u00EA", <0xA8;0xBA>
  176. "\u00EB", <0x81;0x30;0x8A;0x35>
  177. "\u00EC", <0xA8;0xAC>
  178. "\u00ED", <0xA8;0xAA>
  179. "\u00EE", <0x81;0x30;0x8A;0x36>
  180. "\u00F1", <0x81;0x30;0x8A;0x39>
  181. "\u00F2", <0xA8;0xB0>
  182. "\u00F3", <0xA8;0xAE>
  183. "\u00F4", <0x81;0x30;0x8B;0x30>
  184. "\u00F6", <0x81;0x30;0x8B;0x32>
  185. "\u00F7", <0xA1;0xC2>
  186. "\u00F8", <0x81;0x30;0x8B;0x33>
  187. "\u00F9", <0xA8;0xB4>
  188. "\u00FA", <0xA8;0xB2>
  189. "\u00FB", <0x81;0x30;0x8B;0x34>
  190. "\u00FC", <0xA8;0xB9>
  191. "\u00FD", <0x81;0x30;0x8B;0x35>
  192. "\u0100", <0x81;0x30;0x8B;0x38>
  193. "\u0101", <0xA8;0xA1>
  194. "\u0102", <0x81;0x30;0x8B;0x39>
  195. "\u0112", <0x81;0x30;0x8D;0x35>
  196. "\u0113", <0xA8;0xA5>
  197. "\u0114", <0x81;0x30;0x8D;0x36>
  198. "\u011A", <0x81;0x30;0x8E;0x32>
  199. "\u011B", <0xA8;0xA7>
  200. "\u011C", <0x81;0x30;0x8E;0x33>
  201. "\u012A", <0x81;0x30;0x8F;0x37>
  202. "\u012B", <0xA8;0xA9>
  203. "\u012C", <0x81;0x30;0x8F;0x38>
  204. "\u0143", <0x81;0x30;0x92;0x31>
  205. "\u0144", <0xA8;0xBD>
  206. "\u0145", <0x81;0x30;0x92;0x32>
  207. "\u0147", <0x81;0x30;0x92;0x34>
  208. "\u0148", <0xA8;0xBE>
  209. "\u0149", <0x81;0x30;0x92;0x35>
  210. "\u014C", <0x81;0x30;0x92;0x38>
  211. "\u014D", <0xA8;0xAD>
  212. "\u014E", <0x81;0x30;0x92;0x39>
  213. "\u016A", <0x81;0x30;0x95;0x37>
  214. "\u016B", <0xA8;0xB1>
  215. "\u016C", <0x81;0x30;0x95;0x38>
  216. "\u01CD", <0x81;0x30;0x9F;0x35>
  217. "\u01CE", <0xA8;0xA3>
  218. "\u01CF", <0x81;0x30;0x9F;0x36>
  219. "\u01D0", <0xA8;0xAB>
  220. "\u01D1", <0x81;0x30;0x9F;0x37>
  221. "\u01D2", <0xA8;0xAF>
  222. "\u01D3", <0x81;0x30;0x9F;0x38>
  223. "\u01D4", <0xA8;0xB3>
  224. "\u01D5", <0x81;0x30;0x9F;0x39>
  225. "\u01D6", <0xA8;0xB5>
  226. "\u01D7", <0x81;0x30;0xA0;0x30>
  227. "\u01D8", <0xA8;0xB6>
  228. "\u01D9", <0x81;0x30;0xA0;0x31>
  229. "\u01DA", <0xA8;0xB7>
  230. "\u01DB", <0x81;0x30;0xA0;0x32>
  231. "\u01DC", <0xA8;0xB8>
  232. "\u01DD", <0x81;0x30;0xA0;0x33>
  233. "\u01F8", <0x81;0x30;0xA3;0x30>
  234. "\u01F9", <0xA8;0xBF>
  235. "\u01FA", <0x81;0x30;0xA3;0x31>
  236. "\u0250", <0x81;0x30;0xAB;0x37>
  237. "\u0251", <0xA8;0xBB>
  238. "\u0252", <0x81;0x30;0xAB;0x38>
  239. "\u0260", <0x81;0x30;0xAD;0x32>
  240. "\u0261", <0xA8;0xC0>
  241. "\u0262", <0x81;0x30;0xAD;0x33>
  242. "\u02C6", <0x81;0x30;0xB7;0x33>
  243. "\u02C7", <0xA1;0xA6>
  244. "\u02C8", <0x81;0x30;0xB7;0x34>
  245. "\u02C9", <0xA1;0xA5>
  246. "\u02CB", <0xA8;0x41>
  247. "\u02CC", <0x81;0x30;0xB7;0x35>
  248. "\u02D8", <0x81;0x30;0xB8;0x37>
  249. "\u02D9", <0xA8;0x42>
  250. "\u02DA", <0x81;0x30;0xB8;0x38>
  251. "\u0390", <0x81;0x30;0xCB;0x30>
  252. "\u0391", <0xA6;0xA1>
  253. "\u03A1", <0xA6;0xB1>
  254. "\u03A2", <0x81;0x30;0xCB;0x31>
  255. "\u03A3", <0xA6;0xB2>
  256. "\u03A9", <0xA6;0xB8>
  257. "\u03AA", <0x81;0x30;0xCB;0x32>
  258. "\u03B0", <0x81;0x30;0xCB;0x38>
  259. "\u03B1", <0xA6;0xC1>
  260. "\u03C1", <0xA6;0xD1>
  261. "\u03C2", <0x81;0x30;0xCB;0x39>
  262. "\u03C3", <0xA6;0xD2>
  263. "\u03C9", <0xA6;0xD8>
  264. "\u03CA", <0x81;0x30;0xCC;0x30>
  265. "\u0400", <0x81;0x30;0xD1;0x34>
  266. "\u0401", <0xA7;0xA7>
  267. "\u0402", <0x81;0x30;0xD1;0x35>
  268. "\u040F", <0x81;0x30;0xD2;0x38>
  269. "\u0410", <0xA7;0xA1>
  270. "\u044F", <0xA7;0xF1>
  271. "\u0450", <0x81;0x30;0xD2;0x39>
  272. "\u0451", <0xA7;0xD7>
  273. "\u0452", <0x81;0x30;0xD3;0x30>
  274. "\u200F", <0x81;0x36;0xA5;0x31>
  275. "\u2010", <0xA9;0x5C>
  276. "\u2011", <0x81;0x36;0xA5;0x32>
  277. "\u2012", <0x81;0x36;0xA5;0x33>
  278. "\u2013", <0xA8;0x43>
  279. "\u2016", <0xA1;0xAC>
  280. "\u2017", <0x81;0x36;0xA5;0x34>
  281. "\u2018", <0xA1;0xAE>
  282. "\u2019", <0xA1;0xAF>
  283. "\u201A", <0x81;0x36;0xA5;0x35>
  284. "\u201B", <0x81;0x36;0xA5;0x36>
  285. "\u201C", <0xA1;0xB0>
  286. "\u201D", <0xA1;0xB1>
  287. "\u201E", <0x81;0x36;0xA5;0x37>
  288. "\u2024", <0x81;0x36;0xA6;0x33>
  289. "\u2025", <0xA8;0x45>
  290. "\u2026", <0xA1;0xAD>
  291. "\u2027", <0x81;0x36;0xA6;0x34>
  292. "\u202F", <0x81;0x36;0xA7;0x32>
  293. "\u2030", <0xA1;0xEB>
  294. "\u2031", <0x81;0x36;0xA7;0x33>
  295. "\u2032", <0xA1;0xE4>
  296. "\u2033", <0xA1;0xE5>
  297. "\u2034", <0x81;0x36;0xA7;0x34>
  298. "\u2035", <0xA8;0x46>
  299. "\u2036", <0x81;0x36;0xA7;0x35>
  300. "\u203A", <0x81;0x36;0xA7;0x39>
  301. "\u203B", <0xA1;0xF9>
  302. "\u203C", <0x81;0x36;0xA8;0x30>
  303. "\u20AB", <0x81;0x36;0xB3;0x31>
  304. "\u20AC", <0xA2;0xE3>
  305. "\u20AD", <0x81;0x36;0xB3;0x32>
  306. "\u2102", <0x81;0x36;0xBB;0x37>
  307. "\u2103", <0xA1;0xE6>
  308. "\u2104", <0x81;0x36;0xBB;0x38>
  309. "\u2105", <0xA8;0x47>
  310. "\u2106", <0x81;0x36;0xBB;0x39>
  311. "\u2108", <0x81;0x36;0xBC;0x31>
  312. "\u2109", <0xA8;0x48>
  313. "\u210A", <0x81;0x36;0xBC;0x32>
  314. "\u2115", <0x81;0x36;0xBD;0x33>
  315. "\u2116", <0xA1;0xED>
  316. "\u2117", <0x81;0x36;0xBD;0x34>
  317. "\u2120", <0x81;0x36;0xBE;0x33>
  318. "\u2121", <0xA9;0x59>
  319. "\u2122", <0x81;0x36;0xBE;0x34>
  320. "\u215F", <0x81;0x36;0xC4;0x35>
  321. "\u2160", <0xA2;0xF1>
  322. "\u216B", <0xA2;0xFC>
  323. "\u216C", <0x81;0x36;0xC4;0x36>
  324. "\u216F", <0x81;0x36;0xC4;0x39>
  325. "\u2170", <0xA2;0xA1>
  326. "\u2179", <0xA2;0xAA>
  327. "\u217A", <0x81;0x36;0xC5;0x30>
  328. "\u218F", <0x81;0x36;0xC7;0x31>
  329. "\u2190", <0xA1;0xFB>
  330. "\u2193", <0xA1;0xFD>
  331. "\u2194", <0x81;0x36;0xC7;0x32>
  332. "\u2195", <0x81;0x36;0xC7;0x33>
  333. "\u2196", <0xA8;0x49>
  334. "\u2199", <0xA8;0x4C>
  335. "\u219A", <0x81;0x36;0xC7;0x34>
  336. "\u2207", <0x81;0x36;0xD2;0x33>
  337. "\u2208", <0xA1;0xCA>
  338. "\u2209", <0x81;0x36;0xD2;0x34>
  339. "\u220E", <0x81;0x36;0xD2;0x39>
  340. "\u220F", <0xA1;0xC7>
  341. "\u2210", <0x81;0x36;0xD3;0x30>
  342. "\u2211", <0xA1;0xC6>
  343. "\u2212", <0x81;0x36;0xD3;0x31>
  344. "\u2214", <0x81;0x36;0xD3;0x33>
  345. "\u2215", <0xA8;0x4D>
  346. "\u2216", <0x81;0x36;0xD3;0x34>
  347. "\u2219", <0x81;0x36;0xD3;0x37>
  348. "\u221A", <0xA1;0xCC>
  349. "\u221B", <0x81;0x36;0xD3;0x38>
  350. "\u221C", <0x81;0x36;0xD3;0x39>
  351. "\u221D", <0xA1;0xD8>
  352. "\u2220", <0xA1;0xCF>
  353. "\u2221", <0x81;0x36;0xD4;0x30>
  354. "\u2222", <0x81;0x36;0xD4;0x31>
  355. "\u2223", <0xA8;0x4F>
  356. "\u2224", <0x81;0x36;0xD4;0x32>
  357. "\u2225", <0xA1;0xCE>
  358. "\u2226", <0x81;0x36;0xD4;0x33>
  359. "\u2227", <0xA1;0xC4>
  360. "\u222B", <0xA1;0xD2>
  361. "\u222C", <0x81;0x36;0xD4;0x34>
  362. "\u222D", <0x81;0x36;0xD4;0x35>
  363. "\u222E", <0xA1;0xD3>
  364. "\u222F", <0x81;0x36;0xD4;0x36>
  365. "\u2233", <0x81;0x36;0xD5;0x30>
  366. "\u2234", <0xA1;0xE0>
  367. "\u2237", <0xA1;0xCB>
  368. "\u2238", <0x81;0x36;0xD5;0x31>
  369. "\u223C", <0x81;0x36;0xD5;0x35>
  370. "\u223D", <0xA1;0xD7>
  371. "\u223E", <0x81;0x36;0xD5;0x36>
  372. "\u2247", <0x81;0x36;0xD6;0x35>
  373. "\u2248", <0xA1;0xD6>
  374. "\u2249", <0x81;0x36;0xD6;0x36>
  375. "\u224B", <0x81;0x36;0xD6;0x38>
  376. "\u224C", <0xA1;0xD5>
  377. "\u224D", <0x81;0x36;0xD6;0x39>
  378. "\u2251", <0x81;0x36;0xD7;0x33>
  379. "\u2252", <0xA8;0x50>
  380. "\u2253", <0x81;0x36;0xD7;0x34>
  381. "\u225F", <0x81;0x36;0xD8;0x36>
  382. "\u2260", <0xA1;0xD9>
  383. "\u2261", <0xA1;0xD4>
  384. "\u2262", <0x81;0x36;0xD8;0x37>
  385. "\u2263", <0x81;0x36;0xD8;0x38>
  386. "\u2264", <0xA1;0xDC>
  387. "\u2267", <0xA8;0x52>
  388. "\u2268", <0x81;0x36;0xD8;0x39>
  389. "\u226D", <0x81;0x36;0xD9;0x34>
  390. "\u226E", <0xA1;0xDA>
  391. "\u226F", <0xA1;0xDB>
  392. "\u2270", <0x81;0x36;0xD9;0x35>
  393. "\u2294", <0x81;0x36;0xDD;0x31>
  394. "\u2295", <0xA8;0x92>
  395. "\u2296", <0x81;0x36;0xDD;0x32>
  396. "\u2298", <0x81;0x36;0xDD;0x34>
  397. "\u2299", <0xA1;0xD1>
  398. "\u229A", <0x81;0x36;0xDD;0x35>
  399. "\u22A4", <0x81;0x36;0xDE;0x35>
  400. "\u22A5", <0xA1;0xCD>
  401. "\u22A6", <0x81;0x36;0xDE;0x36>
  402. "\u22BE", <0x81;0x36;0xE1;0x30>
  403. "\u22BF", <0xA8;0x53>
  404. "\u22C0", <0x81;0x36;0xE1;0x31>
  405. "\u2311", <0x81;0x36;0xE9;0x32>
  406. "\u2312", <0xA1;0xD0>
  407. "\u2313", <0x81;0x36;0xE9;0x33>
  408. "\u245F", <0x81;0x37;0x8C;0x35>
  409. "\u2460", <0xA2;0xD9>
  410. "\u2469", <0xA2;0xE2>
  411. "\u246A", <0x81;0x37;0x8C;0x36>
  412. "\u2473", <0x81;0x37;0x8D;0x35>
  413. "\u2474", <0xA2;0xC5>
  414. "\u249B", <0xA2;0xC4>
  415. "\u249C", <0x81;0x37;0x8D;0x36>
  416. "\u24FF", <0x81;0x37;0x97;0x35>
  417. "\u2500", <0xA9;0xA4>
  418. "\u254B", <0xA9;0xEF>
  419. "\u254C", <0x81;0x37;0x97;0x36>
  420. "\u254F", <0x81;0x37;0x97;0x39>
  421. "\u2550", <0xA8;0x54>
  422. "\u2573", <0xA8;0x77>
  423. "\u2574", <0x81;0x37;0x98;0x30>
  424. "\u2580", <0x81;0x37;0x99;0x32>
  425. "\u2581", <0xA8;0x78>
  426. "\u258F", <0xA8;0x87>
  427. "\u2590", <0x81;0x37;0x99;0x33>
  428. "\u2592", <0x81;0x37;0x99;0x35>
  429. "\u2593", <0xA8;0x88>
  430. "\u2595", <0xA8;0x8A>
  431. "\u2596", <0x81;0x37;0x99;0x36>
  432. "\u259F", <0x81;0x37;0x9A;0x35>
  433. "\u25A0", <0xA1;0xF6>
  434. "\u25A1", <0xA1;0xF5>
  435. "\u25A2", <0x81;0x37;0x9A;0x36>
  436. "\u25B1", <0x81;0x37;0x9C;0x31>
  437. "\u25B2", <0xA1;0xF8>
  438. "\u25B3", <0xA1;0xF7>
  439. "\u25B4", <0x81;0x37;0x9C;0x32>
  440. "\u25BB", <0x81;0x37;0x9C;0x39>
  441. "\u25BC", <0xA8;0x8B>
  442. "\u25BD", <0xA8;0x8C>
  443. "\u25BE", <0x81;0x37;0x9D;0x30>
  444. "\u25C5", <0x81;0x37;0x9D;0x37>
  445. "\u25C6", <0xA1;0xF4>
  446. "\u25C7", <0xA1;0xF3>
  447. "\u25C8", <0x81;0x37;0x9D;0x38>
  448. "\u25CA", <0x81;0x37;0x9E;0x30>
  449. "\u25CB", <0xA1;0xF0>
  450. "\u25CC", <0x81;0x37;0x9E;0x31>
  451. "\u25CD", <0x81;0x37;0x9E;0x32>
  452. "\u25CE", <0xA1;0xF2>
  453. "\u25CF", <0xA1;0xF1>
  454. "\u25D0", <0x81;0x37;0x9E;0x33>
  455. "\u25E1", <0x81;0x37;0xA0;0x30>
  456. "\u25E2", <0xA8;0x8D>
  457. "\u25E5", <0xA8;0x90>
  458. "\u25E6", <0x81;0x37;0xA0;0x31>
  459. "\u2604", <0x81;0x37;0xA3;0x31>
  460. "\u2605", <0xA1;0xEF>
  461. "\u2606", <0xA1;0xEE>
  462. "\u2607", <0x81;0x37;0xA3;0x32>
  463. "\u2608", <0x81;0x37;0xA3;0x33>
  464. "\u2609", <0xA8;0x91>
  465. "\u260A", <0x81;0x37;0xA3;0x34>
  466. "\u263F", <0x81;0x37;0xA8;0x37>
  467. "\u2640", <0xA1;0xE2>
  468. "\u2641", <0x81;0x37;0xA8;0x38>
  469. "\u2642", <0xA1;0xE1>
  470. "\u2643", <0x81;0x37;0xA8;0x39>
  471. "\u2E80", <0x81;0x38;0xFD;0x38>
  472. "\u2E81", <0xFE;0x50>
  473. "\u2E82", <0x81;0x38;0xFD;0x39>
  474. "\u2E83", <0x81;0x38;0xFE;0x30>
  475. "\u2E84", <0xFE;0x54>
  476. "\u2E85", <0x81;0x38;0xFE;0x31>
  477. "\u2E87", <0x81;0x38;0xFE;0x33>
  478. "\u2E88", <0xFE;0x57>
  479. "\u2E89", <0x81;0x38;0xFE;0x34>
  480. "\u2E8A", <0x81;0x38;0xFE;0x35>
  481. "\u2E8B", <0xFE;0x58>
  482. "\u2E8C", <0xFE;0x5D>
  483. "\u2E8D", <0x81;0x38;0xFE;0x36>
  484. "\u2E96", <0x81;0x39;0x81;0x35>
  485. "\u2E97", <0xFE;0x5E>
  486. "\u2E98", <0x81;0x39;0x81;0x36>
  487. "\u2EA6", <0x81;0x39;0x83;0x30>
  488. "\u2EA7", <0xFE;0x6B>
  489. "\u2EA8", <0x81;0x39;0x83;0x31>
  490. "\u2EA9", <0x81;0x39;0x83;0x32>
  491. "\u2EAA", <0xFE;0x6E>
  492. "\u2EAB", <0x81;0x39;0x83;0x33>
  493. "\u2EAD", <0x81;0x39;0x83;0x35>
  494. "\u2EAE", <0xFE;0x71>
  495. "\u2EAF", <0x81;0x39;0x83;0x36>
  496. "\u2EB2", <0x81;0x39;0x83;0x39>
  497. "\u2EB3", <0xFE;0x73>
  498. "\u2EB4", <0x81;0x39;0x84;0x30>
  499. "\u2EB5", <0x81;0x39;0x84;0x31>
  500. "\u2EB6", <0xFE;0x74>
  501. "\u2EB7", <0xFE;0x75>
  502. "\u2EB8", <0x81;0x39;0x84;0x32>
  503. "\u2EBA", <0x81;0x39;0x84;0x34>
  504. "\u2EBB", <0xFE;0x79>
  505. "\u2EBC", <0x81;0x39;0x84;0x35>
  506. "\u2EC9", <0x81;0x39;0x85;0x38>
  507. "\u2ECA", <0xFE;0x84>
  508. "\u2ECB", <0x81;0x39;0x85;0x39>
  509. "\u2FEF", <0x81;0x39;0xA3;0x31>
  510. "\u2FF0", <0xA9;0x8A>
  511. "\u2FFB", <0xA9;0x95>
  512. "\u2FFC", <0x81;0x39;0xA3;0x32>
  513. "\u2FFF", <0x81;0x39;0xA3;0x35>
  514. "\u3000", <0xA1;0xA1>
  515. "\u3003", <0xA1;0xA8>
  516. "\u3004", <0x81;0x39;0xA3;0x36>
  517. "\u3005", <0xA1;0xA9>
  518. "\u3017", <0xA1;0xBD>
  519. "\u3018", <0x81;0x39;0xA3;0x37>
  520. "\u301C", <0x81;0x39;0xA4;0x31>
  521. "\u301D", <0xA8;0x94>
  522. "\u301E", <0xA8;0x95>
  523. "\u301F", <0x81;0x39;0xA4;0x32>
  524. "\u3020", <0x81;0x39;0xA4;0x33>
  525. "\u3021", <0xA9;0x40>
  526. "\u3029", <0xA9;0x48>
  527. "\u302A", <0x81;0x39;0xA4;0x34>
  528. "\u303D", <0x81;0x39;0xA6;0x33>
  529. "\u303E", <0xA9;0x89>
  530. "\u303F", <0x81;0x39;0xA6;0x34>
  531. "\u3040", <0x81;0x39;0xA6;0x35>
  532. "\u3041", <0xA4;0xA1>
  533. "\u3093", <0xA4;0xF3>
  534. "\u3094", <0x81;0x39;0xA6;0x36>
  535. "\u309A", <0x81;0x39;0xA7;0x32>
  536. "\u309B", <0xA9;0x61>
  537. "\u309E", <0xA9;0x67>
  538. "\u309F", <0x81;0x39;0xA7;0x33>
  539. "\u30A0", <0x81;0x39;0xA7;0x34>
  540. "\u30A1", <0xA5;0xA1>
  541. "\u30F6", <0xA5;0xF6>
  542. "\u30F7", <0x81;0x39;0xA7;0x35>
  543. "\u30FB", <0x81;0x39;0xA7;0x39>
  544. "\u30FC", <0xA9;0x60>
  545. "\u30FE", <0xA9;0x64>
  546. "\u30FF", <0x81;0x39;0xA8;0x30>
  547. "\u3104", <0x81;0x39;0xA8;0x35>
  548. "\u3105", <0xA8;0xC5>
  549. "\u3129", <0xA8;0xE9>
  550. "\u312A", <0x81;0x39;0xA8;0x36>
  551. "\u321F", <0x81;0x39;0xC1;0x31>
  552. "\u3220", <0xA2;0xE5>
  553. "\u3229", <0xA2;0xEE>
  554. "\u322A", <0x81;0x39;0xC1;0x32>
  555. "\u3230", <0x81;0x39;0xC1;0x38>
  556. "\u3231", <0xA9;0x5A>
  557. "\u3232", <0x81;0x39;0xC1;0x39>
  558. "\u32A2", <0x81;0x39;0xCD;0x31>
  559. "\u32A3", <0xA9;0x49>
  560. "\u32A4", <0x81;0x39;0xCD;0x32>
  561. "\u338D", <0x81;0x39;0xE4;0x35>
  562. "\u338E", <0xA9;0x4A>
  563. "\u338F", <0xA9;0x4B>
  564. "\u3390", <0x81;0x39;0xE4;0x36>
  565. "\u339B", <0x81;0x39;0xE5;0x37>
  566. "\u339C", <0xA9;0x4C>
  567. "\u339E", <0xA9;0x4E>
  568. "\u339F", <0x81;0x39;0xE5;0x38>
  569. "\u33A0", <0x81;0x39;0xE5;0x39>
  570. "\u33A1", <0xA9;0x4F>
  571. "\u33A2", <0x81;0x39;0xE6;0x30>
  572. "\u33C3", <0x81;0x39;0xE9;0x33>
  573. "\u33C4", <0xA9;0x50>
  574. "\u33C5", <0x81;0x39;0xE9;0x34>
  575. "\u33CD", <0x81;0x39;0xEA;0x32>
  576. "\u33CE", <0xA9;0x51>
  577. "\u33CF", <0x81;0x39;0xEA;0x33>
  578. "\u33D0", <0x81;0x39;0xEA;0x34>
  579. "\u33D1", <0xA9;0x52>
  580. "\u33D2", <0xA9;0x53>
  581. "\u33D3", <0x81;0x39;0xEA;0x35>
  582. "\u33D4", <0x81;0x39;0xEA;0x36>
  583. "\u33D5", <0xA9;0x54>
  584. "\u33D6", <0x81;0x39;0xEA;0x37>
  585. "\u3446", <0x81;0x39;0xF5;0x39>
  586. "\u3447", <0xFE;0x56>
  587. "\u3448", <0x81;0x39;0xF6;0x30>
  588. "\u3472", <0x81;0x39;0xFA;0x32>
  589. "\u3473", <0xFE;0x55>
  590. "\u3474", <0x81;0x39;0xFA;0x33>
  591. "\u359D", <0x82;0x30;0x9A;0x30>
  592. "\u359E", <0xFE;0x5A>
  593. "\u359F", <0x82;0x30;0x9A;0x31>
  594. "\u360D", <0x82;0x30;0xA5;0x31>
  595. "\u360E", <0xFE;0x5C>
  596. "\u360F", <0x82;0x30;0xA5;0x32>
  597. "\u3619", <0x82;0x30;0xA6;0x32>
  598. "\u361A", <0xFE;0x5B>
  599. "\u361B", <0x82;0x30;0xA6;0x33>
  600. "\u3917", <0x82;0x30;0xF2;0x37>
  601. "\u3918", <0xFE;0x60>
  602. "\u3919", <0x82;0x30;0xF2;0x38>
  603. "\u396D", <0x82;0x30;0xFB;0x32>
  604. "\u396E", <0xFE;0x5F>
  605. "\u396F", <0x82;0x30;0xFB;0x33>
  606. "\u39CE", <0x82;0x31;0x86;0x38>
  607. "\u39CF", <0xFE;0x62>
  608. "\u39D0", <0xFE;0x65>
  609. "\u39D1", <0x82;0x31;0x86;0x39>
  610. "\u39DE", <0x82;0x31;0x88;0x32>
  611. "\u39DF", <0xFE;0x63>
  612. "\u39E0", <0x82;0x31;0x88;0x33>
  613. "\u3A72", <0x82;0x31;0x96;0x39>
  614. "\u3A73", <0xFE;0x64>
  615. "\u3A74", <0x82;0x31;0x97;0x30>
  616. "\u3B4D", <0x82;0x31;0xAC;0x37>
  617. "\u3B4E", <0xFE;0x68>
  618. "\u3B4F", <0x82;0x31;0xAC;0x38>
  619. "\u3C6D", <0x82;0x31;0xC9;0x34>
  620. "\u3C6E", <0xFE;0x69>
  621. "\u3C6F", <0x82;0x31;0xC9;0x35>
  622. "\u3CDF", <0x82;0x31;0xD4;0x37>
  623. "\u3CE0", <0xFE;0x6A>
  624. "\u3CE1", <0x82;0x31;0xD4;0x38>
  625. "\u4055", <0x82;0x32;0xAF;0x32>
  626. "\u4056", <0xFE;0x6F>
  627. "\u4057", <0x82;0x32;0xAF;0x33>
  628. "\u415E", <0x82;0x32;0xC9;0x36>
  629. "\u415F", <0xFE;0x70>
  630. "\u4160", <0x82;0x32;0xC9;0x37>
  631. "\u4336", <0x82;0x32;0xF8;0x37>
  632. "\u4337", <0xFE;0x72>
  633. "\u4338", <0x82;0x32;0xF8;0x38>
  634. "\u43AB", <0x82;0x33;0x86;0x33>
  635. "\u43AC", <0xFE;0x78>
  636. "\u43AD", <0x82;0x33;0x86;0x34>
  637. "\u43B0", <0x82;0x33;0x86;0x37>
  638. "\u43B1", <0xFE;0x77>
  639. "\u43B2", <0x82;0x33;0x86;0x38>
  640. "\u43DC", <0x82;0x33;0x8B;0x30>
  641. "\u43DD", <0xFE;0x7A>
  642. "\u43DE", <0x82;0x33;0x8B;0x31>
  643. "\u44D5", <0x82;0x33;0xA3;0x38>
  644. "\u44D6", <0xFE;0x7B>
  645. "\u44D7", <0x82;0x33;0xA3;0x39>
  646. "\u464B", <0x82;0x33;0xC9;0x31>
  647. "\u464C", <0xFE;0x7D>
  648. "\u464D", <0x82;0x33;0xC9;0x32>
  649. "\u4660", <0x82;0x33;0xCB;0x31>
  650. "\u4661", <0xFE;0x7C>
  651. "\u4662", <0x82;0x33;0xCB;0x32>
  652. "\u4722", <0x82;0x33;0xDE;0x34>
  653. "\u4723", <0xFE;0x80>
  654. "\u4724", <0x82;0x33;0xDE;0x35>
  655. "\u4728", <0x82;0x33;0xDE;0x39>
  656. "\u4729", <0xFE;0x81>
  657. "\u472A", <0x82;0x33;0xDF;0x30>
  658. "\u477B", <0x82;0x33;0xE7;0x31>
  659. "\u477C", <0xFE;0x82>
  660. "\u477D", <0x82;0x33;0xE7;0x32>
  661. "\u478C", <0x82;0x33;0xE8;0x37>
  662. "\u478D", <0xFE;0x83>
  663. "\u478E", <0x82;0x33;0xE8;0x38>
  664. "\u4946", <0x82;0x34;0x96;0x38>
  665. "\u4947", <0xFE;0x85>
  666. "\u4948", <0x82;0x34;0x96;0x39>
  667. "\u4979", <0x82;0x34;0x9B;0x38>
  668. "\u497A", <0xFE;0x86>
  669. "\u497B", <0x82;0x34;0x9B;0x39>
  670. "\u497C", <0x82;0x34;0x9C;0x30>
  671. "\u497D", <0xFE;0x87>
  672. "\u497E", <0x82;0x34;0x9C;0x31>
  673. "\u4981", <0x82;0x34;0x9C;0x34>
  674. "\u4982", <0xFE;0x88>
  675. "\u4983", <0xFE;0x89>
  676. "\u4984", <0x82;0x34;0x9C;0x35>
  677. "\u4985", <0xFE;0x8A>
  678. "\u4986", <0xFE;0x8B>
  679. "\u4987", <0x82;0x34;0x9C;0x36>
  680. "\u499A", <0x82;0x34;0x9E;0x35>
  681. "\u499B", <0xFE;0x8D>
  682. "\u499C", <0x82;0x34;0x9E;0x36>
  683. "\u499E", <0x82;0x34;0x9E;0x38>
  684. "\u499F", <0xFE;0x8C>
  685. "\u49A0", <0x82;0x34;0x9E;0x39>
  686. "\u49B5", <0x82;0x34;0xA1;0x30>
  687. "\u49B6", <0xFE;0x8F>
  688. "\u49B7", <0xFE;0x8E>
  689. "\u49B8", <0x82;0x34;0xA1;0x31>
  690. "\u4C76", <0x82;0x34;0xE7;0x33>
  691. "\u4C77", <0xFE;0x96>
  692. "\u4C78", <0x82;0x34;0xE7;0x34>
  693. "\u4C9E", <0x82;0x34;0xEB;0x32>
  694. "\u4C9F", <0xFE;0x93>
  695. "\u4CA3", <0xFE;0x92>
  696. "\u4CA4", <0x82;0x34;0xEB;0x33>
  697. "\u4D12", <0x82;0x34;0xF6;0x33>
  698. "\u4D13", <0xFE;0x98>
  699. "\u4D19", <0xFE;0x9E>
  700. "\u4D1A", <0x82;0x34;0xF6;0x34>
  701. "\u4DAD", <0x82;0x35;0x87;0x31>
  702. "\u4DAE", <0xFE;0x9F>
  703. "\u4DAF", <0x82;0x35;0x87;0x32>
  704. "\u4DFF", <0x82;0x35;0x8F;0x32>
  705. "\u4E00", <0xD2;0xBB>
  706. "\u9FA5", <0xFD;0x9B>
  707. "\u9FA6", <0x82;0x35;0x8F;0x33>
  708. "\uD7FF", <0x83;0x36;0xC7;0x38>
  709. "\uE000", <0xAA;0xA1>
  710. "\uE76B", <0xA2;0xB0>
  711. "\uE76C", <0x83;0x36;0xC7;0x39>
  712. "\uE76D", <0xA2;0xE4>
  713. "\uE7C7", <0xA8;0xBC>
  714. "\uE7C8", <0x83;0x36;0xC8;0x30>
  715. "\uE7C9", <0xA8;0xC1>
  716. "\uE7E6", <0xA9;0x5F>
  717. "\uE7E7", <0x83;0x36;0xC8;0x31>
  718. "\uE7F3", <0x83;0x36;0xC9;0x33>
  719. "\uE7F4", <0xA9;0x97>
  720. "\uE814", <0xD7;0xFE>
  721. "\uE815", <0x83;0x36;0xC9;0x34>
  722. "\uE816", <0xFE;0x51>
  723. "\uE818", <0xFE;0x53>
  724. "\uE819", <0x83;0x36;0xC9;0x35>
  725. "\uE81D", <0x83;0x36;0xC9;0x39>
  726. "\uE81E", <0xFE;0x59>
  727. "\uE81F", <0x83;0x36;0xCA;0x30>
  728. "\uE825", <0x83;0x36;0xCA;0x36>
  729. "\uE826", <0xFE;0x61>
  730. "\uE827", <0x83;0x36;0xCA;0x37>
  731. "\uE82A", <0x83;0x36;0xCB;0x30>
  732. "\uE82B", <0xFE;0x66>
  733. "\uE82C", <0xFE;0x67>
  734. "\uE82D", <0x83;0x36;0xCB;0x31>
  735. "\uE830", <0x83;0x36;0xCB;0x34>
  736. "\uE831", <0xFE;0x6C>
  737. "\uE832", <0xFE;0x6D>
  738. "\uE833", <0x83;0x36;0xCB;0x35>
  739. "\uE83A", <0x83;0x36;0xCC;0x32>
  740. "\uE83B", <0xFE;0x76>
  741. "\uE83C", <0x83;0x36;0xCC;0x33>
  742. "\uE842", <0x83;0x36;0xCC;0x39>
  743. "\uE843", <0xFE;0x7E>
  744. "\uE844", <0x83;0x36;0xCD;0x30>
  745. "\uE853", <0x83;0x36;0xCE;0x35>
  746. "\uE854", <0xFE;0x90>
  747. "\uE855", <0xFE;0x91>
  748. "\uE856", <0x83;0x36;0xCE;0x36>
  749. "\uE863", <0x83;0x36;0xCF;0x39>
  750. "\uE864", <0xFE;0xA0>
  751. "\uE865", <0x83;0x36;0xD0;0x30>
  752. "\uF92B", <0x84;0x30;0x85;0x34>
  753. "\uF92C", <0xFD;0x9C>
  754. "\uF92D", <0x84;0x30;0x85;0x35>
  755. "\uF978", <0x84;0x30;0x8D;0x30>
  756. "\uF979", <0xFD;0x9D>
  757. "\uF97A", <0x84;0x30;0x8D;0x31>
  758. "\uF994", <0x84;0x30;0x8F;0x37>
  759. "\uF995", <0xFD;0x9E>
  760. "\uF996", <0x84;0x30;0x8F;0x38>
  761. "\uF9E6", <0x84;0x30;0x97;0x38>
  762. "\uF9E7", <0xFD;0x9F>
  763. "\uF9E8", <0x84;0x30;0x97;0x39>
  764. "\uF9F0", <0x84;0x30;0x98;0x37>
  765. "\uF9F1", <0xFD;0xA0>
  766. "\uF9F2", <0x84;0x30;0x98;0x38>
  767. "\uFA0B", <0x84;0x30;0x9B;0x33>
  768. "\uFA0C", <0xFE;0x40>
  769. "\uFA0F", <0xFE;0x43>
  770. "\uFA10", <0x84;0x30;0x9B;0x34>
  771. "\uFA11", <0xFE;0x44>
  772. "\uFA12", <0x84;0x30;0x9B;0x35>
  773. "\uFA13", <0xFE;0x45>
  774. "\uFA14", <0xFE;0x46>
  775. "\uFA15", <0x84;0x30;0x9B;0x36>
  776. "\uFA17", <0x84;0x30;0x9B;0x38>
  777. "\uFA18", <0xFE;0x47>
  778. "\uFA19", <0x84;0x30;0x9B;0x39>
  779. "\uFA1E", <0x84;0x30;0x9C;0x34>
  780. "\uFA1F", <0xFE;0x48>
  781. "\uFA21", <0xFE;0x4A>
  782. "\uFA22", <0x84;0x30;0x9C;0x35>
  783. "\uFA23", <0xFE;0x4B>
  784. "\uFA24", <0xFE;0x4C>
  785. "\uFA25", <0x84;0x30;0x9C;0x36>
  786. "\uFA26", <0x84;0x30;0x9C;0x37>
  787. "\uFA27", <0xFE;0x4D>
  788. "\uFA29", <0xFE;0x4F>
  789. "\uFA2A", <0x84;0x30;0x9C;0x38>
  790. "\uFE2F", <0x84;0x31;0x85;0x37>
  791. "\uFE30", <0xA9;0x55>
  792. "\uFE31", <0xA6;0xF2>
  793. "\uFE32", <0x84;0x31;0x85;0x38>
  794. "\uFE33", <0xA6;0xF4>
  795. "\uFE44", <0xA6;0xEB>
  796. "\uFE45", <0x84;0x31;0x85;0x39>
  797. "\uFE48", <0x84;0x31;0x86;0x32>
  798. "\uFE49", <0xA9;0x68>
  799. "\uFE52", <0xA9;0x71>
  800. "\uFE53", <0x84;0x31;0x86;0x33>
  801. "\uFE54", <0xA9;0x72>
  802. "\uFE57", <0xA9;0x75>
  803. "\uFE58", <0x84;0x31;0x86;0x34>
  804. "\uFE59", <0xA9;0x76>
  805. "\uFE66", <0xA9;0x84>
  806. "\uFE67", <0x84;0x31;0x86;0x35>
  807. "\uFE68", <0xA9;0x85>
  808. "\uFE6B", <0xA9;0x88>
  809. "\uFE6C", <0x84;0x31;0x86;0x36>
  810. "\uFF00", <0x84;0x31;0x95;0x34>
  811. "\uFF01", <0xA3;0xA1>
  812. "\uFF5E", <0xA1;0xAB>
  813. "\uFF5F", <0x84;0x31;0x95;0x35>
  814. "\uFFDF", <0x84;0x31;0xA2;0x33>
  815. "\uFFE0", <0xA1;0xE9>
  816. "\uFFE5", <0xA3;0xA4>
  817. "\uFFE6", <0x84;0x31;0xA2;0x34>
  818. "\uFFFF", <0x84;0x31;0xA4;0x39>
  819. */
  820. //
  821. // Ansi code points of two bytes and four bytes boundary (In Unicode number)
  822. //
  823. // Hack, I will put 00 to 0x80 (ASCII area) and D800 to E000 (surrogate area)
  824. // to double byte Ansi char area so that it will not effect
  825. // the calculate of quad byte Ansi code. And currently, dbyte Ansi are not
  826. // calculate but check the table of CP936.
  827. //
  828. const WCHAR awchAnsiDQByteBound[] = {
  829. 0x0080, // 0, Quad byte Ansi area start, till 0x00A4 - 1,
  830. 0x00A4, // 1, Double byte Ansi area start, till 0x00A5 - 1,
  831. 0x00A5, // 2, Quad byte Ansi area start, till 0x00A7 - 1,
  832. 0x00A7, // 3, Double byte Ansi area start, till 0xA9 - 1 ...
  833. 0x00A9, 0x00B0, 0x00B2, 0x00B7,
  834. 0x00B8, 0x00D7, 0x00D8, 0x00E0, 0x00E2, 0x00E8, 0x00EB, 0x00EC,
  835. 0x00EE, 0x00F2, 0x00F4, 0x00F7, 0x00F8, 0x00F9, 0x00FB, 0x00FC,
  836. 0x00FD, 0x0101, 0x0102, 0x0113, 0x0114, 0x011B, 0x011C, 0x012B,
  837. 0x012C, 0x0144, 0x0145, 0x0148, 0x0149, 0x014D, 0x014E, 0x016B,
  838. 0x016C, 0x01CE, 0x01CF, 0x01D0, 0x01D1, 0x01D2, 0x01D3, 0x01D4,
  839. 0x01D5, 0x01D6, 0x01D7, 0x01D8, 0x01D9, 0x01DA, 0x01DB, 0x01DC,
  840. 0x01DD, 0x01F9, 0x01FA, 0x0251, 0x0252, 0x0261, 0x0262, 0x02C7,
  841. 0x02C8, 0x02C9, 0x02CC, 0x02D9, 0x02DA, 0x0391, 0x03A2, 0x03A3,
  842. 0x03AA, 0x03B1, 0x03C2, 0x03C3, 0x03CA, 0x0401, 0x0402, 0x0410,
  843. 0x0450, 0x0451, 0x0452, 0x2010, 0x2011, 0x2013, 0x2017, 0x2018,
  844. 0x201A, 0x201C, 0x201E, 0x2025, 0x2027, 0x2030, 0x2031, 0x2032,
  845. 0x2034, 0x2035, 0x2036, 0x203B, 0x203C, 0x20AC, 0x20AD, 0x2103,
  846. 0x2104, 0x2105, 0x2106, 0x2109, 0x210A, 0x2116, 0x2117, 0x2121,
  847. 0x2122, 0x2160, 0x216C, 0x2170, 0x217A, 0x2190, 0x2194, 0x2196,
  848. 0x219A, 0x2208, 0x2209, 0x220F, 0x2210, 0x2211, 0x2212, 0x2215,
  849. 0x2216, 0x221A, 0x221B, 0x221D, 0x2221, 0x2223, 0x2224, 0x2225,
  850. 0x2226, 0x2227, 0x222C, 0x222E, 0x222F, 0x2234, 0x2238, 0x223D,
  851. 0x223E, 0x2248, 0x2249, 0x224C, 0x224D, 0x2252, 0x2253, 0x2260,
  852. 0x2262, 0x2264, 0x2268, 0x226E, 0x2270, 0x2295, 0x2296, 0x2299,
  853. 0x229A, 0x22A5, 0x22A6, 0x22BF, 0x22C0, 0x2312, 0x2313, 0x2460,
  854. 0x246A, 0x2474, 0x249C, 0x2500, 0x254C, 0x2550, 0x2574, 0x2581,
  855. 0x2590, 0x2593, 0x2596, 0x25A0, 0x25A2, 0x25B2, 0x25B4, 0x25BC,
  856. 0x25BE, 0x25C6, 0x25C8, 0x25CB, 0x25CC, 0x25CE, 0x25D0, 0x25E2,
  857. 0x25E6, 0x2605, 0x2607, 0x2609, 0x260A, 0x2640, 0x2641, 0x2642,
  858. 0x2643, 0x2E81, 0x2E82, 0x2E84, 0x2E85, 0x2E88, 0x2E89, 0x2E8B,
  859. 0x2E8D, 0x2E97, 0x2E98, 0x2EA7, 0x2EA8, 0x2EAA, 0x2EAB, 0x2EAE,
  860. 0x2EAF, 0x2EB3, 0x2EB4, 0x2EB6, 0x2EB8, 0x2EBB, 0x2EBC, 0x2ECA,
  861. 0x2ECB, 0x2FF0, 0x2FFC, 0x3000, 0x3004, 0x3005, 0x3018, 0x301D,
  862. 0x301F, 0x3021, 0x302A, 0x303E, 0x303F, 0x3041, 0x3094, 0x309B,
  863. 0x309F, 0x30A1, 0x30F7, 0x30FC, 0x30FF, 0x3105, 0x312A, 0x3220,
  864. 0x322A, 0x3231, 0x3232, 0x32A3, 0x32A4, 0x338E, 0x3390, 0x339C,
  865. 0x339F, 0x33A1, 0x33A2, 0x33C4, 0x33C5, 0x33CE, 0x33CF, 0x33D1,
  866. 0x33D3, 0x33D5, 0x33D6, 0x3447, 0x3448, 0x3473, 0x3474, 0x359E,
  867. 0x359F, 0x360E, 0x360F, 0x361A, 0x361B, 0x3918, 0x3919, 0x396E,
  868. 0x396F, 0x39CF, 0x39D1, 0x39DF, 0x39E0, 0x3A73, 0x3A74, 0x3B4E,
  869. 0x3B4F, 0x3C6E, 0x3C6F, 0x3CE0, 0x3CE1, 0x4056, 0x4057, 0x415F,
  870. 0x4160, 0x4337, 0x4338, 0x43AC, 0x43AD, 0x43B1, 0x43B2, 0x43DD,
  871. 0x43DE, 0x44D6, 0x44D7, 0x464C, 0x464D, 0x4661, 0x4662, 0x4723,
  872. 0x4724, 0x4729, 0x472A, 0x477C, 0x477D, 0x478D, 0x478E, 0x4947,
  873. 0x4948, 0x497A, 0x497B, 0x497D, 0x497E, 0x4982, 0x4984, 0x4985,
  874. 0x4987, 0x499B, 0x499C, 0x499F, 0x49A0, 0x49B6, 0x49B8, 0x4C77,
  875. 0x4C78, 0x4C9F, 0x4CA4, 0x4D13, 0x4D1A, 0x4DAE, 0x4DAF, 0x4E00,
  876. 0x9FA6, 0xD800, 0xE76C, 0xE76D, 0xE7C8, 0xE7C9, 0xE7E7, 0xE7F4,
  877. 0xE815, 0xE816, 0xE819, 0xE81E, 0xE81F, 0xE826, 0xE827, 0xE82B,
  878. 0xE82D, 0xE831, 0xE833, 0xE83B, 0xE83C, 0xE843, 0xE844, 0xE854,
  879. 0xE856, 0xE864, 0xE865, 0xF92C, 0xF92D, 0xF979, 0xF97A, 0xF995,
  880. 0xF996, 0xF9E7, 0xF9E8, 0xF9F1, 0xF9F2, 0xFA0C, 0xFA10, 0xFA11,
  881. 0xFA12, 0xFA13, 0xFA15, 0xFA18, 0xFA19, 0xFA1F, 0xFA22, 0xFA23,
  882. 0xFA25, 0xFA27, 0xFA2A, 0xFE30, 0xFE32, 0xFE33, 0xFE45, 0xFE49,
  883. 0xFE53, 0xFE54, 0xFE58, 0xFE59, 0xFE67, 0xFE68, 0xFE6C, 0xFF01,
  884. 0xFF5F, 0xFFE0,
  885. 0xFFE6, // Duel byte Ansi area start, till 0xFFFF
  886. };
  887. // The first Ansi char value of each QByte Ansi char area
  888. const DWORD adwAnsiQBytesAreaStartValue[] = {
  889. 0x81308130, // 0x80
  890. 0x81308436, // 0xa5
  891. 0x81308438, // 0xa9
  892. 0x81308535, // 0xb2
  893. 0x81308630, 0x81308931, 0x81308939, 0x81308A35,
  894. 0x81308A36, 0x81308B30, 0x81308B33, 0x81308B34,
  895. 0x81308B35, 0x81308B39, 0x81308D36, 0x81308E33,
  896. 0x81308F38, 0x81309232, 0x81309235, 0x81309239,
  897. 0x81309538, 0x81309F36, 0x81309F37, 0x81309F38,
  898. 0x81309F39, 0x8130A030, 0x8130A031, 0x8130A032,
  899. 0x8130A033, 0x8130A331, 0x8130AB38, 0x8130AD33,
  900. 0x8130B734, 0x8130B735, 0x8130B838, 0x8130CB31,
  901. 0x8130CB32, 0x8130CB39, 0x8130CC30, 0x8130D135,
  902. 0x8130D239, 0x8130D330, 0x8136A532, 0x8136A534,
  903. 0x8136A535, 0x8136A537, 0x8136A634, 0x8136A733,
  904. 0x8136A734, 0x8136A735, 0x8136A830, 0x8136B332,
  905. 0x8136BB38, 0x8136BB39, 0x8136BC32, 0x8136BD34,
  906. 0x8136BE34, 0x8136C436, 0x8136C530, 0x8136C732,
  907. 0x8136C734, 0x8136D234, 0x8136D330, 0x8136D331,
  908. 0x8136D334, 0x8136D338, 0x8136D430, 0x8136D432,
  909. 0x8136D433, 0x8136D434, 0x8136D436, 0x8136D531,
  910. 0x8136D536, 0x8136D636, 0x8136D639, 0x8136D734,
  911. 0x8136D837, 0x8136D839, 0x8136D935, 0x8136DD32,
  912. 0x8136DD35, 0x8136DE36, 0x8136E131, 0x8136E933,
  913. 0x81378C36, 0x81378D36, 0x81379736, 0x81379830,
  914. 0x81379933, 0x81379936, 0x81379A36, 0x81379C32,
  915. 0x81379D30, 0x81379D38, 0x81379E31, 0x81379E33,
  916. 0x8137A031, 0x8137A332, 0x8137A334, 0x8137A838,
  917. 0x8137A839, 0x8138FD39, 0x8138FE31, 0x8138FE34,
  918. 0x8138FE36, 0x81398136, 0x81398331, 0x81398333,
  919. 0x81398336, 0x81398430, 0x81398432, 0x81398435,
  920. 0x81398539, 0x8139A332, 0x8139A336, 0x8139A337,
  921. 0x8139A432, 0x8139A434, 0x8139A634, 0x8139A636,
  922. 0x8139A733, 0x8139A735, 0x8139A830, 0x8139A836,
  923. 0x8139C132, 0x8139C139, 0x8139CD32, 0x8139E436,
  924. 0x8139E538, 0x8139E630, 0x8139E934, 0x8139EA33,
  925. 0x8139EA35, 0x8139EA37, 0x8139F630, 0x8139FA33,
  926. 0x82309A31, 0x8230A532, 0x8230A633, 0x8230F238,
  927. 0x8230FB33, 0x82318639, 0x82318833, 0x82319730,
  928. 0x8231AC38, 0x8231C935, 0x8231D438, 0x8232AF33,
  929. 0x8232C937, 0x8232F838, 0x82338634, 0x82338638,
  930. 0x82338B31, 0x8233A339, 0x8233C932, 0x8233CB32,
  931. 0x8233DE35, 0x8233DF30, 0x8233E732, 0x8233E838,
  932. 0x82349639, 0x82349B39, 0x82349C31, 0x82349C35,
  933. 0x82349C36, 0x82349E36, 0x82349E39, 0x8234A131,
  934. 0x8234E734, 0x8234EB33, 0x8234F634, 0x82358732,
  935. 0x82358F33, 0x8336C739, 0x8336C830, 0x8336C831,
  936. 0x8336C934, 0x8336C935, 0x8336CA30, 0x8336CA37,
  937. 0x8336CB31, 0x8336CB35, 0x8336CC33, 0x8336CD30,
  938. 0x8336CE36, 0x8336D030, 0x84308535, 0x84308D31,
  939. 0x84308F38, 0x84309739, 0x84309838, 0x84309B34,
  940. 0x84309B35, 0x84309B36, 0x84309B39, 0x84309C35,
  941. 0x84309C36, 0x84309C38, 0x84318538, 0x84318539,
  942. 0x84318633, 0x84318634, 0x84318635, 0x84318636,
  943. 0x84319535, // 0xFF5F
  944. 0x8431A234, // 0xFFE6
  945. };