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

//
// This file contain the data that used to Convert GB to/from Unicode
// These data can be sperate to 2 parts:
// First part is table for Code points changed from GBK to GB18030
// (In another words, the code points changed from CP936 to CP54936)
// Second part is table for code points of 1 byte, two bytes and four bytes boundary
//
// Both them are generate from CDWang's dump data
// I attached CDWang's original file as the remark
//
const WCHAR cg_wchSurrogateLeadWordLow = 0xD800;
const WCHAR cg_wchSurrogateLeadWordHigh = 0xDC00;
const WCHAR cg_wchSurrogateTailWordLow = 0xDC00;
const WCHAR cg_wchSurrogateTailWordHigh = 0xE000;
const BYTE cg_byQByteAnsiLeadByteLow = 0x81;
const BYTE cg_byQByteAnsiLeadByteHigh = 0xFF;
const BYTE cg_byQByteAnsiTailByteLow = 0x30;
const BYTE cg_byQByteAnsiTailByteHigh = 0x3A;
const DWORD cg_dwQByteAnsiStart = 0x81308130;
const DWORD cg_dwQByteAnsiToBMPLast = 0x8431a439;
const DWORD cg_dwQByteAnsiToSurrogateStart = 0x90308130;
// ----------------------------------------------------------------------------
// First part
// ----------------------------------------------------------------------------
/*
Notes:
1) Euro symbol: U+20AC in ISO 10646 is mapped to 0xA2E3 in GB18030.
2) 80 two-byte encoded characters in GBK: ISO 10646 code points changed.
3) 80 characters which were firstly coded in GBK are given new 10646 code points instead their temporary code points given in GBK.
4) The following list contains 81 characters.
New in GB18030<==> Currently in GBK
10646 18030 10646 18030
---------------------------------------
U+20AC A2E3 <====> U+E76C A2E3
U+01F9 A8BF <====> U+E7C8 A8BF
U+303E A989 <====> U+E7E7 A989
U+2FF0 A98A <====> U+E7E8 A98A
U+2FF1 A98B <====> U+E7E9 A98B
U+2FF2 A98C <====> U+E7EA A98C
U+2FF3 A98D <====> U+E7EB A98D
U+2FF4 A98E <====> U+E7EC A98E
U+2FF5 A98F <====> U+E7ED A98F
U+2FF6 A990 <====> U+E7EE A990
U+2FF7 A991 <====> U+E7EF A991
U+2FF8 A992 <====> U+E7F0 A992
U+2FF9 A993 <====> U+E7F1 A993
U+2FFA A994 <====> U+E7F2 A994
U+2FFB A995 <====> U+E7F3 A995
U+2E81 FE50 <====> U+E815 FE50
U+2E84 FE54 <====> U+E819 FE54
U+3473 FE55 <====> U+E81A FE55
U+3447 FE56 <====> U+E81B FE56
U+2E88 FE57 <====> U+E81C FE57
U+2E8B FE58 <====> U+E81D FE58
U+359E FE5A <====> U+E81F FE5A
U+361A FE5B <====> U+E820 FE5B
U+360E FE5C <====> U+E821 FE5C
U+2E8C FE5D <====> U+E822 FE5D
U+2E97 FE5E <====> U+E823 FE5E
U+396E FE5F <====> U+E824 FE5F
U+3918 FE60 <====> U+E825 FE60
U+39CF FE62 <====> U+E827 FE62
U+39DF FE63 <====> U+E828 FE63
U+3A73 FE64 <====> U+E829 FE64
U+39D0 FE65 <====> U+E82A FE65
U+3B4E FE68 <====> U+E82D FE68
U+3C6E FE69 <====> U+E82E FE69
U+3CE0 FE6A <====> U+E82F FE6A
U+2EA7 FE6B <====> U+E830 FE6B
U+2EAA FE6E <====> U+E833 FE6E
U+4056 FE6F <====> U+E834 FE6F
U+415F FE70 <====> U+E835 FE70
U+2EAE FE71 <====> U+E836 FE71
U+4337 FE72 <====> U+E837 FE72
U+2EB3 FE73 <====> U+E838 FE73
U+2EB6 FE74 <====> U+E839 FE74
U+2EB7 FE75 <====> U+E83A FE75
U+43B1 FE77 <====> U+E83C FE77
U+43AC FE78 <====> U+E83D FE78
U+2EBB FE79 <====> U+E83E FE79
U+43DD FE7A <====> U+E83F FE7A
U+44D6 FE7B <====> U+E840 FE7B
U+4661 FE7C <====> U+E841 FE7C
U+464C FE7D <====> U+E842 FE7D
U+4723 FE80 <====> U+E844 FE80
U+4729 FE81 <====> U+E845 FE81
U+477C FE82 <====> U+E846 FE82
U+478D FE83 <====> U+E847 FE83
U+2ECA FE84 <====> U+E848 FE84
U+4947 FE85 <====> U+E849 FE85
U+497A FE86 <====> U+E84A FE86
U+497D FE87 <====> U+E84B FE87
U+4982 FE88 <====> U+E84C FE88
U+4983 FE89 <====> U+E84D FE89
U+4985 FE8A <====> U+E84E FE8A
U+4986 FE8B <====> U+E84F FE8B
U+499F FE8C <====> U+E850 FE8C
U+499B FE8D <====> U+E851 FE8D
U+49B7 FE8E <====> U+E852 FE8E
U+49B6 FE8F <====> U+E853 FE8F
U+4CA3 FE92 <====> U+E856 FE92
U+4C9F FE93 <====> U+E857 FE93
U+4CA0 FE94 <====> U+E858 FE94
U+4CA1 FE95 <====> U+E859 FE95
U+4C77 FE96 <====> U+E85A FE96
U+4CA2 FE97 <====> U+E85B FE97
U+4D13 FE98 <====> U+E85C FE98
U+4D14 FE99 <====> U+E85D FE99
U+4D15 FE9A <====> U+E85E FE9A
U+4D16 FE9B <====> U+E85F FE9B
U+4D17 FE9C <====> U+E860 FE9C
U+4D18 FE9D <====> U+E861 FE9D
U+4D19 FE9E <====> U+E862 FE9E
U+4DAE FE9F <====> U+E863 FE9F
*/
struct SAnsiCodeChanged {
WCHAR wchUnicode;
WCHAR wchAnsiNew; // in char order, or GB standard order
};
const SAnsiCodeChanged asAnsiCodeChanged[] = {
{0x20AC, 0xE3A2}, {0x01F9, 0xBFA8}, {0x303E, 0x89A9}, {0x2FF0, 0x8AA9},
{0x2FF1, 0x8BA9}, {0x2FF2, 0x8CA9}, {0x2FF3, 0x8DA9}, {0x2FF4, 0x8EA9},
{0x2FF5, 0x8FA9}, {0x2FF6, 0x90A9}, {0x2FF7, 0x91A9}, {0x2FF8, 0x92A9},
{0x2FF9, 0x93A9}, {0x2FFA, 0x94A9}, {0x2FFB, 0x95A9}, {0x2E81, 0x50FE},
{0x2E84, 0x54FE}, {0x3473, 0x55FE}, {0x3447, 0x56FE}, {0x2E88, 0x57FE},
{0x2E8B, 0x58FE}, {0x359E, 0x5AFE}, {0x361A, 0x5BFE}, {0x360E, 0x5CFE},
{0x2E8C, 0x5DFE}, {0x2E97, 0x5EFE}, {0x396E, 0x5FFE}, {0x3918, 0x60FE},
{0x39CF, 0x62FE}, {0x39DF, 0x63FE}, {0x3A73, 0x64FE}, {0x39D0, 0x65FE},
{0x3B4E, 0x68FE}, {0x3C6E, 0x69FE}, {0x3CE0, 0x6AFE}, {0x2EA7, 0x6BFE},
{0x2EAA, 0x6EFE}, {0x4056, 0x6FFE}, {0x415F, 0x70FE}, {0x2EAE, 0x71FE},
{0x4337, 0x72FE}, {0x2EB3, 0x73FE}, {0x2EB6, 0x74FE}, {0x2EB7, 0x75FE},
{0x43B1, 0x77FE}, {0x43AC, 0x78FE}, {0x2EBB, 0x79FE}, {0x43DD, 0x7AFE},
{0x44D6, 0x7BFE}, {0x4661, 0x7CFE}, {0x464C, 0x7DFE}, {0x4723, 0x80FE},
{0x4729, 0x81FE}, {0x477C, 0x82FE}, {0x478D, 0x83FE}, {0x2ECA, 0x84FE},
{0x4947, 0x85FE}, {0x497A, 0x86FE}, {0x497D, 0x87FE}, {0x4982, 0x88FE},
{0x4983, 0x89FE}, {0x4985, 0x8AFE}, {0x4986, 0x8BFE}, {0x499F, 0x8CFE},
{0x499B, 0x8DFE}, {0x49B7, 0x8EFE}, {0x49B6, 0x8FFE}, {0x4CA3, 0x92FE},
{0x4C9F, 0x93FE}, {0x4CA0, 0x94FE}, {0x4CA1, 0x95FE}, {0x4C77, 0x96FE},
{0x4CA2, 0x97FE}, {0x4D13, 0x98FE}, {0x4D14, 0x99FE}, {0x4D15, 0x9AFE},
{0x4D16, 0x9BFE}, {0x4D17, 0x9CFE}, {0x4D18, 0x9DFE}, {0x4D19, 0x9EFE},
{0x4DAE, 0x9FFE},
};
// ----------------------------------------------------------------------------
// Second part
// ----------------------------------------------------------------------------
/*
// The following are 669 code points mapping between Unicode and GB18030 (codepage#:54936).
// They are 1 byte, two bytes and four bytes boundary code points in GB18030
//
"\u007F", <0x7F>
"\u0080", <0x81;0x30;0x81;0x30>
"\u00A3", <0x81;0x30;0x84;0x35>
"\u00A4", <0xA1;0xE8>
"\u00A5", <0x81;0x30;0x84;0x36>
"\u00A6", <0x81;0x30;0x84;0x37>
"\u00A7", <0xA1;0xEC>
"\u00A8", <0xA1;0xA7>
"\u00A9", <0x81;0x30;0x84;0x38>
"\u00AF", <0x81;0x30;0x85;0x34>
"\u00B0", <0xA1;0xE3>
"\u00B1", <0xA1;0xC0>
"\u00B2", <0x81;0x30;0x85;0x35>
"\u00B6", <0x81;0x30;0x85;0x39>
"\u00B7", <0xA1;0xA4>
"\u00B8", <0x81;0x30;0x86;0x30>
"\u00D6", <0x81;0x30;0x89;0x30>
"\u00D7", <0xA1;0xC1>
"\u00D8", <0x81;0x30;0x89;0x31>
"\u00DF", <0x81;0x30;0x89;0x38>
"\u00E0", <0xA8;0xA4>
"\u00E1", <0xA8;0xA2>
"\u00E2", <0x81;0x30;0x89;0x39>
"\u00E7", <0x81;0x30;0x8A;0x34>
"\u00E8", <0xA8;0xA8>
"\u00EA", <0xA8;0xBA>
"\u00EB", <0x81;0x30;0x8A;0x35>
"\u00EC", <0xA8;0xAC>
"\u00ED", <0xA8;0xAA>
"\u00EE", <0x81;0x30;0x8A;0x36>
"\u00F1", <0x81;0x30;0x8A;0x39>
"\u00F2", <0xA8;0xB0>
"\u00F3", <0xA8;0xAE>
"\u00F4", <0x81;0x30;0x8B;0x30>
"\u00F6", <0x81;0x30;0x8B;0x32>
"\u00F7", <0xA1;0xC2>
"\u00F8", <0x81;0x30;0x8B;0x33>
"\u00F9", <0xA8;0xB4>
"\u00FA", <0xA8;0xB2>
"\u00FB", <0x81;0x30;0x8B;0x34>
"\u00FC", <0xA8;0xB9>
"\u00FD", <0x81;0x30;0x8B;0x35>
"\u0100", <0x81;0x30;0x8B;0x38>
"\u0101", <0xA8;0xA1>
"\u0102", <0x81;0x30;0x8B;0x39>
"\u0112", <0x81;0x30;0x8D;0x35>
"\u0113", <0xA8;0xA5>
"\u0114", <0x81;0x30;0x8D;0x36>
"\u011A", <0x81;0x30;0x8E;0x32>
"\u011B", <0xA8;0xA7>
"\u011C", <0x81;0x30;0x8E;0x33>
"\u012A", <0x81;0x30;0x8F;0x37>
"\u012B", <0xA8;0xA9>
"\u012C", <0x81;0x30;0x8F;0x38>
"\u0143", <0x81;0x30;0x92;0x31>
"\u0144", <0xA8;0xBD>
"\u0145", <0x81;0x30;0x92;0x32>
"\u0147", <0x81;0x30;0x92;0x34>
"\u0148", <0xA8;0xBE>
"\u0149", <0x81;0x30;0x92;0x35>
"\u014C", <0x81;0x30;0x92;0x38>
"\u014D", <0xA8;0xAD>
"\u014E", <0x81;0x30;0x92;0x39>
"\u016A", <0x81;0x30;0x95;0x37>
"\u016B", <0xA8;0xB1>
"\u016C", <0x81;0x30;0x95;0x38>
"\u01CD", <0x81;0x30;0x9F;0x35>
"\u01CE", <0xA8;0xA3>
"\u01CF", <0x81;0x30;0x9F;0x36>
"\u01D0", <0xA8;0xAB>
"\u01D1", <0x81;0x30;0x9F;0x37>
"\u01D2", <0xA8;0xAF>
"\u01D3", <0x81;0x30;0x9F;0x38>
"\u01D4", <0xA8;0xB3>
"\u01D5", <0x81;0x30;0x9F;0x39>
"\u01D6", <0xA8;0xB5>
"\u01D7", <0x81;0x30;0xA0;0x30>
"\u01D8", <0xA8;0xB6>
"\u01D9", <0x81;0x30;0xA0;0x31>
"\u01DA", <0xA8;0xB7>
"\u01DB", <0x81;0x30;0xA0;0x32>
"\u01DC", <0xA8;0xB8>
"\u01DD", <0x81;0x30;0xA0;0x33>
"\u01F8", <0x81;0x30;0xA3;0x30>
"\u01F9", <0xA8;0xBF>
"\u01FA", <0x81;0x30;0xA3;0x31>
"\u0250", <0x81;0x30;0xAB;0x37>
"\u0251", <0xA8;0xBB>
"\u0252", <0x81;0x30;0xAB;0x38>
"\u0260", <0x81;0x30;0xAD;0x32>
"\u0261", <0xA8;0xC0>
"\u0262", <0x81;0x30;0xAD;0x33>
"\u02C6", <0x81;0x30;0xB7;0x33>
"\u02C7", <0xA1;0xA6>
"\u02C8", <0x81;0x30;0xB7;0x34>
"\u02C9", <0xA1;0xA5>
"\u02CB", <0xA8;0x41>
"\u02CC", <0x81;0x30;0xB7;0x35>
"\u02D8", <0x81;0x30;0xB8;0x37>
"\u02D9", <0xA8;0x42>
"\u02DA", <0x81;0x30;0xB8;0x38>
"\u0390", <0x81;0x30;0xCB;0x30>
"\u0391", <0xA6;0xA1>
"\u03A1", <0xA6;0xB1>
"\u03A2", <0x81;0x30;0xCB;0x31>
"\u03A3", <0xA6;0xB2>
"\u03A9", <0xA6;0xB8>
"\u03AA", <0x81;0x30;0xCB;0x32>
"\u03B0", <0x81;0x30;0xCB;0x38>
"\u03B1", <0xA6;0xC1>
"\u03C1", <0xA6;0xD1>
"\u03C2", <0x81;0x30;0xCB;0x39>
"\u03C3", <0xA6;0xD2>
"\u03C9", <0xA6;0xD8>
"\u03CA", <0x81;0x30;0xCC;0x30>
"\u0400", <0x81;0x30;0xD1;0x34>
"\u0401", <0xA7;0xA7>
"\u0402", <0x81;0x30;0xD1;0x35>
"\u040F", <0x81;0x30;0xD2;0x38>
"\u0410", <0xA7;0xA1>
"\u044F", <0xA7;0xF1>
"\u0450", <0x81;0x30;0xD2;0x39>
"\u0451", <0xA7;0xD7>
"\u0452", <0x81;0x30;0xD3;0x30>
"\u200F", <0x81;0x36;0xA5;0x31>
"\u2010", <0xA9;0x5C>
"\u2011", <0x81;0x36;0xA5;0x32>
"\u2012", <0x81;0x36;0xA5;0x33>
"\u2013", <0xA8;0x43>
"\u2016", <0xA1;0xAC>
"\u2017", <0x81;0x36;0xA5;0x34>
"\u2018", <0xA1;0xAE>
"\u2019", <0xA1;0xAF>
"\u201A", <0x81;0x36;0xA5;0x35>
"\u201B", <0x81;0x36;0xA5;0x36>
"\u201C", <0xA1;0xB0>
"\u201D", <0xA1;0xB1>
"\u201E", <0x81;0x36;0xA5;0x37>
"\u2024", <0x81;0x36;0xA6;0x33>
"\u2025", <0xA8;0x45>
"\u2026", <0xA1;0xAD>
"\u2027", <0x81;0x36;0xA6;0x34>
"\u202F", <0x81;0x36;0xA7;0x32>
"\u2030", <0xA1;0xEB>
"\u2031", <0x81;0x36;0xA7;0x33>
"\u2032", <0xA1;0xE4>
"\u2033", <0xA1;0xE5>
"\u2034", <0x81;0x36;0xA7;0x34>
"\u2035", <0xA8;0x46>
"\u2036", <0x81;0x36;0xA7;0x35>
"\u203A", <0x81;0x36;0xA7;0x39>
"\u203B", <0xA1;0xF9>
"\u203C", <0x81;0x36;0xA8;0x30>
"\u20AB", <0x81;0x36;0xB3;0x31>
"\u20AC", <0xA2;0xE3>
"\u20AD", <0x81;0x36;0xB3;0x32>
"\u2102", <0x81;0x36;0xBB;0x37>
"\u2103", <0xA1;0xE6>
"\u2104", <0x81;0x36;0xBB;0x38>
"\u2105", <0xA8;0x47>
"\u2106", <0x81;0x36;0xBB;0x39>
"\u2108", <0x81;0x36;0xBC;0x31>
"\u2109", <0xA8;0x48>
"\u210A", <0x81;0x36;0xBC;0x32>
"\u2115", <0x81;0x36;0xBD;0x33>
"\u2116", <0xA1;0xED>
"\u2117", <0x81;0x36;0xBD;0x34>
"\u2120", <0x81;0x36;0xBE;0x33>
"\u2121", <0xA9;0x59>
"\u2122", <0x81;0x36;0xBE;0x34>
"\u215F", <0x81;0x36;0xC4;0x35>
"\u2160", <0xA2;0xF1>
"\u216B", <0xA2;0xFC>
"\u216C", <0x81;0x36;0xC4;0x36>
"\u216F", <0x81;0x36;0xC4;0x39>
"\u2170", <0xA2;0xA1>
"\u2179", <0xA2;0xAA>
"\u217A", <0x81;0x36;0xC5;0x30>
"\u218F", <0x81;0x36;0xC7;0x31>
"\u2190", <0xA1;0xFB>
"\u2193", <0xA1;0xFD>
"\u2194", <0x81;0x36;0xC7;0x32>
"\u2195", <0x81;0x36;0xC7;0x33>
"\u2196", <0xA8;0x49>
"\u2199", <0xA8;0x4C>
"\u219A", <0x81;0x36;0xC7;0x34>
"\u2207", <0x81;0x36;0xD2;0x33>
"\u2208", <0xA1;0xCA>
"\u2209", <0x81;0x36;0xD2;0x34>
"\u220E", <0x81;0x36;0xD2;0x39>
"\u220F", <0xA1;0xC7>
"\u2210", <0x81;0x36;0xD3;0x30>
"\u2211", <0xA1;0xC6>
"\u2212", <0x81;0x36;0xD3;0x31>
"\u2214", <0x81;0x36;0xD3;0x33>
"\u2215", <0xA8;0x4D>
"\u2216", <0x81;0x36;0xD3;0x34>
"\u2219", <0x81;0x36;0xD3;0x37>
"\u221A", <0xA1;0xCC>
"\u221B", <0x81;0x36;0xD3;0x38>
"\u221C", <0x81;0x36;0xD3;0x39>
"\u221D", <0xA1;0xD8>
"\u2220", <0xA1;0xCF>
"\u2221", <0x81;0x36;0xD4;0x30>
"\u2222", <0x81;0x36;0xD4;0x31>
"\u2223", <0xA8;0x4F>
"\u2224", <0x81;0x36;0xD4;0x32>
"\u2225", <0xA1;0xCE>
"\u2226", <0x81;0x36;0xD4;0x33>
"\u2227", <0xA1;0xC4>
"\u222B", <0xA1;0xD2>
"\u222C", <0x81;0x36;0xD4;0x34>
"\u222D", <0x81;0x36;0xD4;0x35>
"\u222E", <0xA1;0xD3>
"\u222F", <0x81;0x36;0xD4;0x36>
"\u2233", <0x81;0x36;0xD5;0x30>
"\u2234", <0xA1;0xE0>
"\u2237", <0xA1;0xCB>
"\u2238", <0x81;0x36;0xD5;0x31>
"\u223C", <0x81;0x36;0xD5;0x35>
"\u223D", <0xA1;0xD7>
"\u223E", <0x81;0x36;0xD5;0x36>
"\u2247", <0x81;0x36;0xD6;0x35>
"\u2248", <0xA1;0xD6>
"\u2249", <0x81;0x36;0xD6;0x36>
"\u224B", <0x81;0x36;0xD6;0x38>
"\u224C", <0xA1;0xD5>
"\u224D", <0x81;0x36;0xD6;0x39>
"\u2251", <0x81;0x36;0xD7;0x33>
"\u2252", <0xA8;0x50>
"\u2253", <0x81;0x36;0xD7;0x34>
"\u225F", <0x81;0x36;0xD8;0x36>
"\u2260", <0xA1;0xD9>
"\u2261", <0xA1;0xD4>
"\u2262", <0x81;0x36;0xD8;0x37>
"\u2263", <0x81;0x36;0xD8;0x38>
"\u2264", <0xA1;0xDC>
"\u2267", <0xA8;0x52>
"\u2268", <0x81;0x36;0xD8;0x39>
"\u226D", <0x81;0x36;0xD9;0x34>
"\u226E", <0xA1;0xDA>
"\u226F", <0xA1;0xDB>
"\u2270", <0x81;0x36;0xD9;0x35>
"\u2294", <0x81;0x36;0xDD;0x31>
"\u2295", <0xA8;0x92>
"\u2296", <0x81;0x36;0xDD;0x32>
"\u2298", <0x81;0x36;0xDD;0x34>
"\u2299", <0xA1;0xD1>
"\u229A", <0x81;0x36;0xDD;0x35>
"\u22A4", <0x81;0x36;0xDE;0x35>
"\u22A5", <0xA1;0xCD>
"\u22A6", <0x81;0x36;0xDE;0x36>
"\u22BE", <0x81;0x36;0xE1;0x30>
"\u22BF", <0xA8;0x53>
"\u22C0", <0x81;0x36;0xE1;0x31>
"\u2311", <0x81;0x36;0xE9;0x32>
"\u2312", <0xA1;0xD0>
"\u2313", <0x81;0x36;0xE9;0x33>
"\u245F", <0x81;0x37;0x8C;0x35>
"\u2460", <0xA2;0xD9>
"\u2469", <0xA2;0xE2>
"\u246A", <0x81;0x37;0x8C;0x36>
"\u2473", <0x81;0x37;0x8D;0x35>
"\u2474", <0xA2;0xC5>
"\u249B", <0xA2;0xC4>
"\u249C", <0x81;0x37;0x8D;0x36>
"\u24FF", <0x81;0x37;0x97;0x35>
"\u2500", <0xA9;0xA4>
"\u254B", <0xA9;0xEF>
"\u254C", <0x81;0x37;0x97;0x36>
"\u254F", <0x81;0x37;0x97;0x39>
"\u2550", <0xA8;0x54>
"\u2573", <0xA8;0x77>
"\u2574", <0x81;0x37;0x98;0x30>
"\u2580", <0x81;0x37;0x99;0x32>
"\u2581", <0xA8;0x78>
"\u258F", <0xA8;0x87>
"\u2590", <0x81;0x37;0x99;0x33>
"\u2592", <0x81;0x37;0x99;0x35>
"\u2593", <0xA8;0x88>
"\u2595", <0xA8;0x8A>
"\u2596", <0x81;0x37;0x99;0x36>
"\u259F", <0x81;0x37;0x9A;0x35>
"\u25A0", <0xA1;0xF6>
"\u25A1", <0xA1;0xF5>
"\u25A2", <0x81;0x37;0x9A;0x36>
"\u25B1", <0x81;0x37;0x9C;0x31>
"\u25B2", <0xA1;0xF8>
"\u25B3", <0xA1;0xF7>
"\u25B4", <0x81;0x37;0x9C;0x32>
"\u25BB", <0x81;0x37;0x9C;0x39>
"\u25BC", <0xA8;0x8B>
"\u25BD", <0xA8;0x8C>
"\u25BE", <0x81;0x37;0x9D;0x30>
"\u25C5", <0x81;0x37;0x9D;0x37>
"\u25C6", <0xA1;0xF4>
"\u25C7", <0xA1;0xF3>
"\u25C8", <0x81;0x37;0x9D;0x38>
"\u25CA", <0x81;0x37;0x9E;0x30>
"\u25CB", <0xA1;0xF0>
"\u25CC", <0x81;0x37;0x9E;0x31>
"\u25CD", <0x81;0x37;0x9E;0x32>
"\u25CE", <0xA1;0xF2>
"\u25CF", <0xA1;0xF1>
"\u25D0", <0x81;0x37;0x9E;0x33>
"\u25E1", <0x81;0x37;0xA0;0x30>
"\u25E2", <0xA8;0x8D>
"\u25E5", <0xA8;0x90>
"\u25E6", <0x81;0x37;0xA0;0x31>
"\u2604", <0x81;0x37;0xA3;0x31>
"\u2605", <0xA1;0xEF>
"\u2606", <0xA1;0xEE>
"\u2607", <0x81;0x37;0xA3;0x32>
"\u2608", <0x81;0x37;0xA3;0x33>
"\u2609", <0xA8;0x91>
"\u260A", <0x81;0x37;0xA3;0x34>
"\u263F", <0x81;0x37;0xA8;0x37>
"\u2640", <0xA1;0xE2>
"\u2641", <0x81;0x37;0xA8;0x38>
"\u2642", <0xA1;0xE1>
"\u2643", <0x81;0x37;0xA8;0x39>
"\u2E80", <0x81;0x38;0xFD;0x38>
"\u2E81", <0xFE;0x50>
"\u2E82", <0x81;0x38;0xFD;0x39>
"\u2E83", <0x81;0x38;0xFE;0x30>
"\u2E84", <0xFE;0x54>
"\u2E85", <0x81;0x38;0xFE;0x31>
"\u2E87", <0x81;0x38;0xFE;0x33>
"\u2E88", <0xFE;0x57>
"\u2E89", <0x81;0x38;0xFE;0x34>
"\u2E8A", <0x81;0x38;0xFE;0x35>
"\u2E8B", <0xFE;0x58>
"\u2E8C", <0xFE;0x5D>
"\u2E8D", <0x81;0x38;0xFE;0x36>
"\u2E96", <0x81;0x39;0x81;0x35>
"\u2E97", <0xFE;0x5E>
"\u2E98", <0x81;0x39;0x81;0x36>
"\u2EA6", <0x81;0x39;0x83;0x30>
"\u2EA7", <0xFE;0x6B>
"\u2EA8", <0x81;0x39;0x83;0x31>
"\u2EA9", <0x81;0x39;0x83;0x32>
"\u2EAA", <0xFE;0x6E>
"\u2EAB", <0x81;0x39;0x83;0x33>
"\u2EAD", <0x81;0x39;0x83;0x35>
"\u2EAE", <0xFE;0x71>
"\u2EAF", <0x81;0x39;0x83;0x36>
"\u2EB2", <0x81;0x39;0x83;0x39>
"\u2EB3", <0xFE;0x73>
"\u2EB4", <0x81;0x39;0x84;0x30>
"\u2EB5", <0x81;0x39;0x84;0x31>
"\u2EB6", <0xFE;0x74>
"\u2EB7", <0xFE;0x75>
"\u2EB8", <0x81;0x39;0x84;0x32>
"\u2EBA", <0x81;0x39;0x84;0x34>
"\u2EBB", <0xFE;0x79>
"\u2EBC", <0x81;0x39;0x84;0x35>
"\u2EC9", <0x81;0x39;0x85;0x38>
"\u2ECA", <0xFE;0x84>
"\u2ECB", <0x81;0x39;0x85;0x39>
"\u2FEF", <0x81;0x39;0xA3;0x31>
"\u2FF0", <0xA9;0x8A>
"\u2FFB", <0xA9;0x95>
"\u2FFC", <0x81;0x39;0xA3;0x32>
"\u2FFF", <0x81;0x39;0xA3;0x35>
"\u3000", <0xA1;0xA1>
"\u3003", <0xA1;0xA8>
"\u3004", <0x81;0x39;0xA3;0x36>
"\u3005", <0xA1;0xA9>
"\u3017", <0xA1;0xBD>
"\u3018", <0x81;0x39;0xA3;0x37>
"\u301C", <0x81;0x39;0xA4;0x31>
"\u301D", <0xA8;0x94>
"\u301E", <0xA8;0x95>
"\u301F", <0x81;0x39;0xA4;0x32>
"\u3020", <0x81;0x39;0xA4;0x33>
"\u3021", <0xA9;0x40>
"\u3029", <0xA9;0x48>
"\u302A", <0x81;0x39;0xA4;0x34>
"\u303D", <0x81;0x39;0xA6;0x33>
"\u303E", <0xA9;0x89>
"\u303F", <0x81;0x39;0xA6;0x34>
"\u3040", <0x81;0x39;0xA6;0x35>
"\u3041", <0xA4;0xA1>
"\u3093", <0xA4;0xF3>
"\u3094", <0x81;0x39;0xA6;0x36>
"\u309A", <0x81;0x39;0xA7;0x32>
"\u309B", <0xA9;0x61>
"\u309E", <0xA9;0x67>
"\u309F", <0x81;0x39;0xA7;0x33>
"\u30A0", <0x81;0x39;0xA7;0x34>
"\u30A1", <0xA5;0xA1>
"\u30F6", <0xA5;0xF6>
"\u30F7", <0x81;0x39;0xA7;0x35>
"\u30FB", <0x81;0x39;0xA7;0x39>
"\u30FC", <0xA9;0x60>
"\u30FE", <0xA9;0x64>
"\u30FF", <0x81;0x39;0xA8;0x30>
"\u3104", <0x81;0x39;0xA8;0x35>
"\u3105", <0xA8;0xC5>
"\u3129", <0xA8;0xE9>
"\u312A", <0x81;0x39;0xA8;0x36>
"\u321F", <0x81;0x39;0xC1;0x31>
"\u3220", <0xA2;0xE5>
"\u3229", <0xA2;0xEE>
"\u322A", <0x81;0x39;0xC1;0x32>
"\u3230", <0x81;0x39;0xC1;0x38>
"\u3231", <0xA9;0x5A>
"\u3232", <0x81;0x39;0xC1;0x39>
"\u32A2", <0x81;0x39;0xCD;0x31>
"\u32A3", <0xA9;0x49>
"\u32A4", <0x81;0x39;0xCD;0x32>
"\u338D", <0x81;0x39;0xE4;0x35>
"\u338E", <0xA9;0x4A>
"\u338F", <0xA9;0x4B>
"\u3390", <0x81;0x39;0xE4;0x36>
"\u339B", <0x81;0x39;0xE5;0x37>
"\u339C", <0xA9;0x4C>
"\u339E", <0xA9;0x4E>
"\u339F", <0x81;0x39;0xE5;0x38>
"\u33A0", <0x81;0x39;0xE5;0x39>
"\u33A1", <0xA9;0x4F>
"\u33A2", <0x81;0x39;0xE6;0x30>
"\u33C3", <0x81;0x39;0xE9;0x33>
"\u33C4", <0xA9;0x50>
"\u33C5", <0x81;0x39;0xE9;0x34>
"\u33CD", <0x81;0x39;0xEA;0x32>
"\u33CE", <0xA9;0x51>
"\u33CF", <0x81;0x39;0xEA;0x33>
"\u33D0", <0x81;0x39;0xEA;0x34>
"\u33D1", <0xA9;0x52>
"\u33D2", <0xA9;0x53>
"\u33D3", <0x81;0x39;0xEA;0x35>
"\u33D4", <0x81;0x39;0xEA;0x36>
"\u33D5", <0xA9;0x54>
"\u33D6", <0x81;0x39;0xEA;0x37>
"\u3446", <0x81;0x39;0xF5;0x39>
"\u3447", <0xFE;0x56>
"\u3448", <0x81;0x39;0xF6;0x30>
"\u3472", <0x81;0x39;0xFA;0x32>
"\u3473", <0xFE;0x55>
"\u3474", <0x81;0x39;0xFA;0x33>
"\u359D", <0x82;0x30;0x9A;0x30>
"\u359E", <0xFE;0x5A>
"\u359F", <0x82;0x30;0x9A;0x31>
"\u360D", <0x82;0x30;0xA5;0x31>
"\u360E", <0xFE;0x5C>
"\u360F", <0x82;0x30;0xA5;0x32>
"\u3619", <0x82;0x30;0xA6;0x32>
"\u361A", <0xFE;0x5B>
"\u361B", <0x82;0x30;0xA6;0x33>
"\u3917", <0x82;0x30;0xF2;0x37>
"\u3918", <0xFE;0x60>
"\u3919", <0x82;0x30;0xF2;0x38>
"\u396D", <0x82;0x30;0xFB;0x32>
"\u396E", <0xFE;0x5F>
"\u396F", <0x82;0x30;0xFB;0x33>
"\u39CE", <0x82;0x31;0x86;0x38>
"\u39CF", <0xFE;0x62>
"\u39D0", <0xFE;0x65>
"\u39D1", <0x82;0x31;0x86;0x39>
"\u39DE", <0x82;0x31;0x88;0x32>
"\u39DF", <0xFE;0x63>
"\u39E0", <0x82;0x31;0x88;0x33>
"\u3A72", <0x82;0x31;0x96;0x39>
"\u3A73", <0xFE;0x64>
"\u3A74", <0x82;0x31;0x97;0x30>
"\u3B4D", <0x82;0x31;0xAC;0x37>
"\u3B4E", <0xFE;0x68>
"\u3B4F", <0x82;0x31;0xAC;0x38>
"\u3C6D", <0x82;0x31;0xC9;0x34>
"\u3C6E", <0xFE;0x69>
"\u3C6F", <0x82;0x31;0xC9;0x35>
"\u3CDF", <0x82;0x31;0xD4;0x37>
"\u3CE0", <0xFE;0x6A>
"\u3CE1", <0x82;0x31;0xD4;0x38>
"\u4055", <0x82;0x32;0xAF;0x32>
"\u4056", <0xFE;0x6F>
"\u4057", <0x82;0x32;0xAF;0x33>
"\u415E", <0x82;0x32;0xC9;0x36>
"\u415F", <0xFE;0x70>
"\u4160", <0x82;0x32;0xC9;0x37>
"\u4336", <0x82;0x32;0xF8;0x37>
"\u4337", <0xFE;0x72>
"\u4338", <0x82;0x32;0xF8;0x38>
"\u43AB", <0x82;0x33;0x86;0x33>
"\u43AC", <0xFE;0x78>
"\u43AD", <0x82;0x33;0x86;0x34>
"\u43B0", <0x82;0x33;0x86;0x37>
"\u43B1", <0xFE;0x77>
"\u43B2", <0x82;0x33;0x86;0x38>
"\u43DC", <0x82;0x33;0x8B;0x30>
"\u43DD", <0xFE;0x7A>
"\u43DE", <0x82;0x33;0x8B;0x31>
"\u44D5", <0x82;0x33;0xA3;0x38>
"\u44D6", <0xFE;0x7B>
"\u44D7", <0x82;0x33;0xA3;0x39>
"\u464B", <0x82;0x33;0xC9;0x31>
"\u464C", <0xFE;0x7D>
"\u464D", <0x82;0x33;0xC9;0x32>
"\u4660", <0x82;0x33;0xCB;0x31>
"\u4661", <0xFE;0x7C>
"\u4662", <0x82;0x33;0xCB;0x32>
"\u4722", <0x82;0x33;0xDE;0x34>
"\u4723", <0xFE;0x80>
"\u4724", <0x82;0x33;0xDE;0x35>
"\u4728", <0x82;0x33;0xDE;0x39>
"\u4729", <0xFE;0x81>
"\u472A", <0x82;0x33;0xDF;0x30>
"\u477B", <0x82;0x33;0xE7;0x31>
"\u477C", <0xFE;0x82>
"\u477D", <0x82;0x33;0xE7;0x32>
"\u478C", <0x82;0x33;0xE8;0x37>
"\u478D", <0xFE;0x83>
"\u478E", <0x82;0x33;0xE8;0x38>
"\u4946", <0x82;0x34;0x96;0x38>
"\u4947", <0xFE;0x85>
"\u4948", <0x82;0x34;0x96;0x39>
"\u4979", <0x82;0x34;0x9B;0x38>
"\u497A", <0xFE;0x86>
"\u497B", <0x82;0x34;0x9B;0x39>
"\u497C", <0x82;0x34;0x9C;0x30>
"\u497D", <0xFE;0x87>
"\u497E", <0x82;0x34;0x9C;0x31>
"\u4981", <0x82;0x34;0x9C;0x34>
"\u4982", <0xFE;0x88>
"\u4983", <0xFE;0x89>
"\u4984", <0x82;0x34;0x9C;0x35>
"\u4985", <0xFE;0x8A>
"\u4986", <0xFE;0x8B>
"\u4987", <0x82;0x34;0x9C;0x36>
"\u499A", <0x82;0x34;0x9E;0x35>
"\u499B", <0xFE;0x8D>
"\u499C", <0x82;0x34;0x9E;0x36>
"\u499E", <0x82;0x34;0x9E;0x38>
"\u499F", <0xFE;0x8C>
"\u49A0", <0x82;0x34;0x9E;0x39>
"\u49B5", <0x82;0x34;0xA1;0x30>
"\u49B6", <0xFE;0x8F>
"\u49B7", <0xFE;0x8E>
"\u49B8", <0x82;0x34;0xA1;0x31>
"\u4C76", <0x82;0x34;0xE7;0x33>
"\u4C77", <0xFE;0x96>
"\u4C78", <0x82;0x34;0xE7;0x34>
"\u4C9E", <0x82;0x34;0xEB;0x32>
"\u4C9F", <0xFE;0x93>
"\u4CA3", <0xFE;0x92>
"\u4CA4", <0x82;0x34;0xEB;0x33>
"\u4D12", <0x82;0x34;0xF6;0x33>
"\u4D13", <0xFE;0x98>
"\u4D19", <0xFE;0x9E>
"\u4D1A", <0x82;0x34;0xF6;0x34>
"\u4DAD", <0x82;0x35;0x87;0x31>
"\u4DAE", <0xFE;0x9F>
"\u4DAF", <0x82;0x35;0x87;0x32>
"\u4DFF", <0x82;0x35;0x8F;0x32>
"\u4E00", <0xD2;0xBB>
"\u9FA5", <0xFD;0x9B>
"\u9FA6", <0x82;0x35;0x8F;0x33>
"\uD7FF", <0x83;0x36;0xC7;0x38>
"\uE000", <0xAA;0xA1>
"\uE76B", <0xA2;0xB0>
"\uE76C", <0x83;0x36;0xC7;0x39>
"\uE76D", <0xA2;0xE4>
"\uE7C7", <0xA8;0xBC>
"\uE7C8", <0x83;0x36;0xC8;0x30>
"\uE7C9", <0xA8;0xC1>
"\uE7E6", <0xA9;0x5F>
"\uE7E7", <0x83;0x36;0xC8;0x31>
"\uE7F3", <0x83;0x36;0xC9;0x33>
"\uE7F4", <0xA9;0x97>
"\uE814", <0xD7;0xFE>
"\uE815", <0x83;0x36;0xC9;0x34>
"\uE816", <0xFE;0x51>
"\uE818", <0xFE;0x53>
"\uE819", <0x83;0x36;0xC9;0x35>
"\uE81D", <0x83;0x36;0xC9;0x39>
"\uE81E", <0xFE;0x59>
"\uE81F", <0x83;0x36;0xCA;0x30>
"\uE825", <0x83;0x36;0xCA;0x36>
"\uE826", <0xFE;0x61>
"\uE827", <0x83;0x36;0xCA;0x37>
"\uE82A", <0x83;0x36;0xCB;0x30>
"\uE82B", <0xFE;0x66>
"\uE82C", <0xFE;0x67>
"\uE82D", <0x83;0x36;0xCB;0x31>
"\uE830", <0x83;0x36;0xCB;0x34>
"\uE831", <0xFE;0x6C>
"\uE832", <0xFE;0x6D>
"\uE833", <0x83;0x36;0xCB;0x35>
"\uE83A", <0x83;0x36;0xCC;0x32>
"\uE83B", <0xFE;0x76>
"\uE83C", <0x83;0x36;0xCC;0x33>
"\uE842", <0x83;0x36;0xCC;0x39>
"\uE843", <0xFE;0x7E>
"\uE844", <0x83;0x36;0xCD;0x30>
"\uE853", <0x83;0x36;0xCE;0x35>
"\uE854", <0xFE;0x90>
"\uE855", <0xFE;0x91>
"\uE856", <0x83;0x36;0xCE;0x36>
"\uE863", <0x83;0x36;0xCF;0x39>
"\uE864", <0xFE;0xA0>
"\uE865", <0x83;0x36;0xD0;0x30>
"\uF92B", <0x84;0x30;0x85;0x34>
"\uF92C", <0xFD;0x9C>
"\uF92D", <0x84;0x30;0x85;0x35>
"\uF978", <0x84;0x30;0x8D;0x30>
"\uF979", <0xFD;0x9D>
"\uF97A", <0x84;0x30;0x8D;0x31>
"\uF994", <0x84;0x30;0x8F;0x37>
"\uF995", <0xFD;0x9E>
"\uF996", <0x84;0x30;0x8F;0x38>
"\uF9E6", <0x84;0x30;0x97;0x38>
"\uF9E7", <0xFD;0x9F>
"\uF9E8", <0x84;0x30;0x97;0x39>
"\uF9F0", <0x84;0x30;0x98;0x37>
"\uF9F1", <0xFD;0xA0>
"\uF9F2", <0x84;0x30;0x98;0x38>
"\uFA0B", <0x84;0x30;0x9B;0x33>
"\uFA0C", <0xFE;0x40>
"\uFA0F", <0xFE;0x43>
"\uFA10", <0x84;0x30;0x9B;0x34>
"\uFA11", <0xFE;0x44>
"\uFA12", <0x84;0x30;0x9B;0x35>
"\uFA13", <0xFE;0x45>
"\uFA14", <0xFE;0x46>
"\uFA15", <0x84;0x30;0x9B;0x36>
"\uFA17", <0x84;0x30;0x9B;0x38>
"\uFA18", <0xFE;0x47>
"\uFA19", <0x84;0x30;0x9B;0x39>
"\uFA1E", <0x84;0x30;0x9C;0x34>
"\uFA1F", <0xFE;0x48>
"\uFA21", <0xFE;0x4A>
"\uFA22", <0x84;0x30;0x9C;0x35>
"\uFA23", <0xFE;0x4B>
"\uFA24", <0xFE;0x4C>
"\uFA25", <0x84;0x30;0x9C;0x36>
"\uFA26", <0x84;0x30;0x9C;0x37>
"\uFA27", <0xFE;0x4D>
"\uFA29", <0xFE;0x4F>
"\uFA2A", <0x84;0x30;0x9C;0x38>
"\uFE2F", <0x84;0x31;0x85;0x37>
"\uFE30", <0xA9;0x55>
"\uFE31", <0xA6;0xF2>
"\uFE32", <0x84;0x31;0x85;0x38>
"\uFE33", <0xA6;0xF4>
"\uFE44", <0xA6;0xEB>
"\uFE45", <0x84;0x31;0x85;0x39>
"\uFE48", <0x84;0x31;0x86;0x32>
"\uFE49", <0xA9;0x68>
"\uFE52", <0xA9;0x71>
"\uFE53", <0x84;0x31;0x86;0x33>
"\uFE54", <0xA9;0x72>
"\uFE57", <0xA9;0x75>
"\uFE58", <0x84;0x31;0x86;0x34>
"\uFE59", <0xA9;0x76>
"\uFE66", <0xA9;0x84>
"\uFE67", <0x84;0x31;0x86;0x35>
"\uFE68", <0xA9;0x85>
"\uFE6B", <0xA9;0x88>
"\uFE6C", <0x84;0x31;0x86;0x36>
"\uFF00", <0x84;0x31;0x95;0x34>
"\uFF01", <0xA3;0xA1>
"\uFF5E", <0xA1;0xAB>
"\uFF5F", <0x84;0x31;0x95;0x35>
"\uFFDF", <0x84;0x31;0xA2;0x33>
"\uFFE0", <0xA1;0xE9>
"\uFFE5", <0xA3;0xA4>
"\uFFE6", <0x84;0x31;0xA2;0x34>
"\uFFFF", <0x84;0x31;0xA4;0x39>
*/
//
// Ansi code points of two bytes and four bytes boundary (In Unicode number)
//
// Hack, I will put 00 to 0x80 (ASCII area) and D800 to E000 (surrogate area)
// to double byte Ansi char area so that it will not effect
// the calculate of quad byte Ansi code. And currently, dbyte Ansi are not
// calculate but check the table of CP936.
//
const WCHAR awchAnsiDQByteBound[] = {
0x0080, // 0, Quad byte Ansi area start, till 0x00A4 - 1,
0x00A4, // 1, Double byte Ansi area start, till 0x00A5 - 1,
0x00A5, // 2, Quad byte Ansi area start, till 0x00A7 - 1,
0x00A7, // 3, Double byte Ansi area start, till 0xA9 - 1 ...
0x00A9, 0x00B0, 0x00B2, 0x00B7,
0x00B8, 0x00D7, 0x00D8, 0x00E0, 0x00E2, 0x00E8, 0x00EB, 0x00EC,
0x00EE, 0x00F2, 0x00F4, 0x00F7, 0x00F8, 0x00F9, 0x00FB, 0x00FC,
0x00FD, 0x0101, 0x0102, 0x0113, 0x0114, 0x011B, 0x011C, 0x012B,
0x012C, 0x0144, 0x0145, 0x0148, 0x0149, 0x014D, 0x014E, 0x016B,
0x016C, 0x01CE, 0x01CF, 0x01D0, 0x01D1, 0x01D2, 0x01D3, 0x01D4,
0x01D5, 0x01D6, 0x01D7, 0x01D8, 0x01D9, 0x01DA, 0x01DB, 0x01DC,
0x01DD, 0x01F9, 0x01FA, 0x0251, 0x0252, 0x0261, 0x0262, 0x02C7,
0x02C8, 0x02C9, 0x02CC, 0x02D9, 0x02DA, 0x0391, 0x03A2, 0x03A3,
0x03AA, 0x03B1, 0x03C2, 0x03C3, 0x03CA, 0x0401, 0x0402, 0x0410,
0x0450, 0x0451, 0x0452, 0x2010, 0x2011, 0x2013, 0x2017, 0x2018,
0x201A, 0x201C, 0x201E, 0x2025, 0x2027, 0x2030, 0x2031, 0x2032,
0x2034, 0x2035, 0x2036, 0x203B, 0x203C, 0x20AC, 0x20AD, 0x2103,
0x2104, 0x2105, 0x2106, 0x2109, 0x210A, 0x2116, 0x2117, 0x2121,
0x2122, 0x2160, 0x216C, 0x2170, 0x217A, 0x2190, 0x2194, 0x2196,
0x219A, 0x2208, 0x2209, 0x220F, 0x2210, 0x2211, 0x2212, 0x2215,
0x2216, 0x221A, 0x221B, 0x221D, 0x2221, 0x2223, 0x2224, 0x2225,
0x2226, 0x2227, 0x222C, 0x222E, 0x222F, 0x2234, 0x2238, 0x223D,
0x223E, 0x2248, 0x2249, 0x224C, 0x224D, 0x2252, 0x2253, 0x2260,
0x2262, 0x2264, 0x2268, 0x226E, 0x2270, 0x2295, 0x2296, 0x2299,
0x229A, 0x22A5, 0x22A6, 0x22BF, 0x22C0, 0x2312, 0x2313, 0x2460,
0x246A, 0x2474, 0x249C, 0x2500, 0x254C, 0x2550, 0x2574, 0x2581,
0x2590, 0x2593, 0x2596, 0x25A0, 0x25A2, 0x25B2, 0x25B4, 0x25BC,
0x25BE, 0x25C6, 0x25C8, 0x25CB, 0x25CC, 0x25CE, 0x25D0, 0x25E2,
0x25E6, 0x2605, 0x2607, 0x2609, 0x260A, 0x2640, 0x2641, 0x2642,
0x2643, 0x2E81, 0x2E82, 0x2E84, 0x2E85, 0x2E88, 0x2E89, 0x2E8B,
0x2E8D, 0x2E97, 0x2E98, 0x2EA7, 0x2EA8, 0x2EAA, 0x2EAB, 0x2EAE,
0x2EAF, 0x2EB3, 0x2EB4, 0x2EB6, 0x2EB8, 0x2EBB, 0x2EBC, 0x2ECA,
0x2ECB, 0x2FF0, 0x2FFC, 0x3000, 0x3004, 0x3005, 0x3018, 0x301D,
0x301F, 0x3021, 0x302A, 0x303E, 0x303F, 0x3041, 0x3094, 0x309B,
0x309F, 0x30A1, 0x30F7, 0x30FC, 0x30FF, 0x3105, 0x312A, 0x3220,
0x322A, 0x3231, 0x3232, 0x32A3, 0x32A4, 0x338E, 0x3390, 0x339C,
0x339F, 0x33A1, 0x33A2, 0x33C4, 0x33C5, 0x33CE, 0x33CF, 0x33D1,
0x33D3, 0x33D5, 0x33D6, 0x3447, 0x3448, 0x3473, 0x3474, 0x359E,
0x359F, 0x360E, 0x360F, 0x361A, 0x361B, 0x3918, 0x3919, 0x396E,
0x396F, 0x39CF, 0x39D1, 0x39DF, 0x39E0, 0x3A73, 0x3A74, 0x3B4E,
0x3B4F, 0x3C6E, 0x3C6F, 0x3CE0, 0x3CE1, 0x4056, 0x4057, 0x415F,
0x4160, 0x4337, 0x4338, 0x43AC, 0x43AD, 0x43B1, 0x43B2, 0x43DD,
0x43DE, 0x44D6, 0x44D7, 0x464C, 0x464D, 0x4661, 0x4662, 0x4723,
0x4724, 0x4729, 0x472A, 0x477C, 0x477D, 0x478D, 0x478E, 0x4947,
0x4948, 0x497A, 0x497B, 0x497D, 0x497E, 0x4982, 0x4984, 0x4985,
0x4987, 0x499B, 0x499C, 0x499F, 0x49A0, 0x49B6, 0x49B8, 0x4C77,
0x4C78, 0x4C9F, 0x4CA4, 0x4D13, 0x4D1A, 0x4DAE, 0x4DAF, 0x4E00,
0x9FA6, 0xD800, 0xE76C, 0xE76D, 0xE7C8, 0xE7C9, 0xE7E7, 0xE7F4,
0xE815, 0xE816, 0xE819, 0xE81E, 0xE81F, 0xE826, 0xE827, 0xE82B,
0xE82D, 0xE831, 0xE833, 0xE83B, 0xE83C, 0xE843, 0xE844, 0xE854,
0xE856, 0xE864, 0xE865, 0xF92C, 0xF92D, 0xF979, 0xF97A, 0xF995,
0xF996, 0xF9E7, 0xF9E8, 0xF9F1, 0xF9F2, 0xFA0C, 0xFA10, 0xFA11,
0xFA12, 0xFA13, 0xFA15, 0xFA18, 0xFA19, 0xFA1F, 0xFA22, 0xFA23,
0xFA25, 0xFA27, 0xFA2A, 0xFE30, 0xFE32, 0xFE33, 0xFE45, 0xFE49,
0xFE53, 0xFE54, 0xFE58, 0xFE59, 0xFE67, 0xFE68, 0xFE6C, 0xFF01,
0xFF5F, 0xFFE0,
0xFFE6, // Duel byte Ansi area start, till 0xFFFF
};
// The first Ansi char value of each QByte Ansi char area
const DWORD adwAnsiQBytesAreaStartValue[] = {
0x81308130, // 0x80
0x81308436, // 0xa5
0x81308438, // 0xa9
0x81308535, // 0xb2
0x81308630, 0x81308931, 0x81308939, 0x81308A35,
0x81308A36, 0x81308B30, 0x81308B33, 0x81308B34,
0x81308B35, 0x81308B39, 0x81308D36, 0x81308E33,
0x81308F38, 0x81309232, 0x81309235, 0x81309239,
0x81309538, 0x81309F36, 0x81309F37, 0x81309F38,
0x81309F39, 0x8130A030, 0x8130A031, 0x8130A032,
0x8130A033, 0x8130A331, 0x8130AB38, 0x8130AD33,
0x8130B734, 0x8130B735, 0x8130B838, 0x8130CB31,
0x8130CB32, 0x8130CB39, 0x8130CC30, 0x8130D135,
0x8130D239, 0x8130D330, 0x8136A532, 0x8136A534,
0x8136A535, 0x8136A537, 0x8136A634, 0x8136A733,
0x8136A734, 0x8136A735, 0x8136A830, 0x8136B332,
0x8136BB38, 0x8136BB39, 0x8136BC32, 0x8136BD34,
0x8136BE34, 0x8136C436, 0x8136C530, 0x8136C732,
0x8136C734, 0x8136D234, 0x8136D330, 0x8136D331,
0x8136D334, 0x8136D338, 0x8136D430, 0x8136D432,
0x8136D433, 0x8136D434, 0x8136D436, 0x8136D531,
0x8136D536, 0x8136D636, 0x8136D639, 0x8136D734,
0x8136D837, 0x8136D839, 0x8136D935, 0x8136DD32,
0x8136DD35, 0x8136DE36, 0x8136E131, 0x8136E933,
0x81378C36, 0x81378D36, 0x81379736, 0x81379830,
0x81379933, 0x81379936, 0x81379A36, 0x81379C32,
0x81379D30, 0x81379D38, 0x81379E31, 0x81379E33,
0x8137A031, 0x8137A332, 0x8137A334, 0x8137A838,
0x8137A839, 0x8138FD39, 0x8138FE31, 0x8138FE34,
0x8138FE36, 0x81398136, 0x81398331, 0x81398333,
0x81398336, 0x81398430, 0x81398432, 0x81398435,
0x81398539, 0x8139A332, 0x8139A336, 0x8139A337,
0x8139A432, 0x8139A434, 0x8139A634, 0x8139A636,
0x8139A733, 0x8139A735, 0x8139A830, 0x8139A836,
0x8139C132, 0x8139C139, 0x8139CD32, 0x8139E436,
0x8139E538, 0x8139E630, 0x8139E934, 0x8139EA33,
0x8139EA35, 0x8139EA37, 0x8139F630, 0x8139FA33,
0x82309A31, 0x8230A532, 0x8230A633, 0x8230F238,
0x8230FB33, 0x82318639, 0x82318833, 0x82319730,
0x8231AC38, 0x8231C935, 0x8231D438, 0x8232AF33,
0x8232C937, 0x8232F838, 0x82338634, 0x82338638,
0x82338B31, 0x8233A339, 0x8233C932, 0x8233CB32,
0x8233DE35, 0x8233DF30, 0x8233E732, 0x8233E838,
0x82349639, 0x82349B39, 0x82349C31, 0x82349C35,
0x82349C36, 0x82349E36, 0x82349E39, 0x8234A131,
0x8234E734, 0x8234EB33, 0x8234F634, 0x82358732,
0x82358F33, 0x8336C739, 0x8336C830, 0x8336C831,
0x8336C934, 0x8336C935, 0x8336CA30, 0x8336CA37,
0x8336CB31, 0x8336CB35, 0x8336CC33, 0x8336CD30,
0x8336CE36, 0x8336D030, 0x84308535, 0x84308D31,
0x84308F38, 0x84309739, 0x84309838, 0x84309B34,
0x84309B35, 0x84309B36, 0x84309B39, 0x84309C35,
0x84309C36, 0x84309C38, 0x84318538, 0x84318539,
0x84318633, 0x84318634, 0x84318635, 0x84318636,
0x84319535, // 0xFF5F
0x8431A234, // 0xFFE6
};