00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <config.h>
00022
00023 #include <drizzled/internal/m_string.h>
00024 #include <drizzled/charset.h>
00025 #include <errno.h>
00026
00027 #include <algorithm>
00028
00029 #ifndef EILSEQ
00030 #define EILSEQ ENOENT
00031 #endif
00032
00033
00034 #define MY_UTF8MB3_GENERAL_CI MY_UTF8MB3 "_general_ci"
00035 #define MY_UTF8MB3_BIN MY_UTF8MB3 "_bin"
00036 #define MY_UTF8MB4_GENERAL_CI MY_UTF8MB4 "_general_ci"
00037 #define MY_UTF8MB4_BIN MY_UTF8MB4 "_bin"
00038
00039
00040 using namespace std;
00041
00042 namespace drizzled
00043 {
00044
00045 void my_hash_sort_utf8mb4(const charset_info_st* cs,
00046 const unsigned char *s, size_t slen,
00047 uint32_t *n1, uint32_t *n2);
00048
00049 static MY_UNICASE_INFO plane00[]={
00050 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
00051 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
00052 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
00053 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
00054 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
00055 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
00056 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
00057 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
00058 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
00059 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
00060 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
00061 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
00062 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
00063 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
00064 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
00065 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
00066 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
00067 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
00068 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
00069 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
00070 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
00071 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
00072 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
00073 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
00074 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
00075 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
00076 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
00077 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
00078 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
00079 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
00080 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
00081 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
00082 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
00083 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
00084 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
00085 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
00086 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
00087 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
00088 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
00089 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
00090 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
00091 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
00092 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
00093 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
00094 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
00095 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
00096 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
00097 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
00098 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
00099 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
00100 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
00101 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
00102 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
00103 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
00104 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
00105 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
00106 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
00107 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
00108 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
00109 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
00110 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
00111 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
00112 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
00113 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
00114 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
00115 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
00116 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
00117 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
00118 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
00119 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
00120 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
00121 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
00122 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
00123 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
00124 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
00125 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
00126 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
00127 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
00128 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
00129 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
00130 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
00131 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
00132 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
00133 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
00134 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
00135 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
00136 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
00137 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
00138 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
00139 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
00140 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
00141 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
00142 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
00143 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
00144 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
00145 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
00146 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
00147 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
00148 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
00149 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
00150 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
00151 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
00152 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
00153 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
00154 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
00155 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
00156 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
00157 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
00158 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
00159 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
00160 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
00161 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053},
00162 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
00163 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
00164 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
00165 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
00166 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
00167 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
00168 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
00169 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
00170 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
00171 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
00172 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
00173 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
00174 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
00175 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
00176 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
00177 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
00178 };
00179
00180
00181
00182 static MY_UNICASE_INFO plane01[]={
00183 {0x0100,0x0101,0x0041}, {0x0100,0x0101,0x0041},
00184 {0x0102,0x0103,0x0041}, {0x0102,0x0103,0x0041},
00185 {0x0104,0x0105,0x0041}, {0x0104,0x0105,0x0041},
00186 {0x0106,0x0107,0x0043}, {0x0106,0x0107,0x0043},
00187 {0x0108,0x0109,0x0043}, {0x0108,0x0109,0x0043},
00188 {0x010A,0x010B,0x0043}, {0x010A,0x010B,0x0043},
00189 {0x010C,0x010D,0x0043}, {0x010C,0x010D,0x0043},
00190 {0x010E,0x010F,0x0044}, {0x010E,0x010F,0x0044},
00191 {0x0110,0x0111,0x0110}, {0x0110,0x0111,0x0110},
00192 {0x0112,0x0113,0x0045}, {0x0112,0x0113,0x0045},
00193 {0x0114,0x0115,0x0045}, {0x0114,0x0115,0x0045},
00194 {0x0116,0x0117,0x0045}, {0x0116,0x0117,0x0045},
00195 {0x0118,0x0119,0x0045}, {0x0118,0x0119,0x0045},
00196 {0x011A,0x011B,0x0045}, {0x011A,0x011B,0x0045},
00197 {0x011C,0x011D,0x0047}, {0x011C,0x011D,0x0047},
00198 {0x011E,0x011F,0x0047}, {0x011E,0x011F,0x0047},
00199 {0x0120,0x0121,0x0047}, {0x0120,0x0121,0x0047},
00200 {0x0122,0x0123,0x0047}, {0x0122,0x0123,0x0047},
00201 {0x0124,0x0125,0x0048}, {0x0124,0x0125,0x0048},
00202 {0x0126,0x0127,0x0126}, {0x0126,0x0127,0x0126},
00203 {0x0128,0x0129,0x0049}, {0x0128,0x0129,0x0049},
00204 {0x012A,0x012B,0x0049}, {0x012A,0x012B,0x0049},
00205 {0x012C,0x012D,0x0049}, {0x012C,0x012D,0x0049},
00206 {0x012E,0x012F,0x0049}, {0x012E,0x012F,0x0049},
00207 {0x0130,0x0069,0x0049}, {0x0049,0x0131,0x0049},
00208 {0x0132,0x0133,0x0132}, {0x0132,0x0133,0x0132},
00209 {0x0134,0x0135,0x004A}, {0x0134,0x0135,0x004A},
00210 {0x0136,0x0137,0x004B}, {0x0136,0x0137,0x004B},
00211 {0x0138,0x0138,0x0138}, {0x0139,0x013A,0x004C},
00212 {0x0139,0x013A,0x004C}, {0x013B,0x013C,0x004C},
00213 {0x013B,0x013C,0x004C}, {0x013D,0x013E,0x004C},
00214 {0x013D,0x013E,0x004C}, {0x013F,0x0140,0x013F},
00215 {0x013F,0x0140,0x013F}, {0x0141,0x0142,0x0141},
00216 {0x0141,0x0142,0x0141}, {0x0143,0x0144,0x004E},
00217 {0x0143,0x0144,0x004E}, {0x0145,0x0146,0x004E},
00218 {0x0145,0x0146,0x004E}, {0x0147,0x0148,0x004E},
00219 {0x0147,0x0148,0x004E}, {0x0149,0x0149,0x0149},
00220 {0x014A,0x014B,0x014A}, {0x014A,0x014B,0x014A},
00221 {0x014C,0x014D,0x004F}, {0x014C,0x014D,0x004F},
00222 {0x014E,0x014F,0x004F}, {0x014E,0x014F,0x004F},
00223 {0x0150,0x0151,0x004F}, {0x0150,0x0151,0x004F},
00224 {0x0152,0x0153,0x0152}, {0x0152,0x0153,0x0152},
00225 {0x0154,0x0155,0x0052}, {0x0154,0x0155,0x0052},
00226 {0x0156,0x0157,0x0052}, {0x0156,0x0157,0x0052},
00227 {0x0158,0x0159,0x0052}, {0x0158,0x0159,0x0052},
00228 {0x015A,0x015B,0x0053}, {0x015A,0x015B,0x0053},
00229 {0x015C,0x015D,0x0053}, {0x015C,0x015D,0x0053},
00230 {0x015E,0x015F,0x0053}, {0x015E,0x015F,0x0053},
00231 {0x0160,0x0161,0x0053}, {0x0160,0x0161,0x0053},
00232 {0x0162,0x0163,0x0054}, {0x0162,0x0163,0x0054},
00233 {0x0164,0x0165,0x0054}, {0x0164,0x0165,0x0054},
00234 {0x0166,0x0167,0x0166}, {0x0166,0x0167,0x0166},
00235 {0x0168,0x0169,0x0055}, {0x0168,0x0169,0x0055},
00236 {0x016A,0x016B,0x0055}, {0x016A,0x016B,0x0055},
00237 {0x016C,0x016D,0x0055}, {0x016C,0x016D,0x0055},
00238 {0x016E,0x016F,0x0055}, {0x016E,0x016F,0x0055},
00239 {0x0170,0x0171,0x0055}, {0x0170,0x0171,0x0055},
00240 {0x0172,0x0173,0x0055}, {0x0172,0x0173,0x0055},
00241 {0x0174,0x0175,0x0057}, {0x0174,0x0175,0x0057},
00242 {0x0176,0x0177,0x0059}, {0x0176,0x0177,0x0059},
00243 {0x0178,0x00FF,0x0059}, {0x0179,0x017A,0x005A},
00244 {0x0179,0x017A,0x005A}, {0x017B,0x017C,0x005A},
00245 {0x017B,0x017C,0x005A}, {0x017D,0x017E,0x005A},
00246 {0x017D,0x017E,0x005A}, {0x0053,0x017F,0x0053},
00247 {0x0180,0x0180,0x0180}, {0x0181,0x0253,0x0181},
00248 {0x0182,0x0183,0x0182}, {0x0182,0x0183,0x0182},
00249 {0x0184,0x0185,0x0184}, {0x0184,0x0185,0x0184},
00250 {0x0186,0x0254,0x0186}, {0x0187,0x0188,0x0187},
00251 {0x0187,0x0188,0x0187}, {0x0189,0x0256,0x0189},
00252 {0x018A,0x0257,0x018A}, {0x018B,0x018C,0x018B},
00253 {0x018B,0x018C,0x018B}, {0x018D,0x018D,0x018D},
00254 {0x018E,0x01DD,0x018E}, {0x018F,0x0259,0x018F},
00255 {0x0190,0x025B,0x0190}, {0x0191,0x0192,0x0191},
00256 {0x0191,0x0192,0x0191}, {0x0193,0x0260,0x0193},
00257 {0x0194,0x0263,0x0194}, {0x01F6,0x0195,0x01F6},
00258 {0x0196,0x0269,0x0196}, {0x0197,0x0268,0x0197},
00259 {0x0198,0x0199,0x0198}, {0x0198,0x0199,0x0198},
00260 {0x019A,0x019A,0x019A}, {0x019B,0x019B,0x019B},
00261 {0x019C,0x026F,0x019C}, {0x019D,0x0272,0x019D},
00262 {0x019E,0x019E,0x019E}, {0x019F,0x0275,0x019F},
00263 {0x01A0,0x01A1,0x004F}, {0x01A0,0x01A1,0x004F},
00264 {0x01A2,0x01A3,0x01A2}, {0x01A2,0x01A3,0x01A2},
00265 {0x01A4,0x01A5,0x01A4}, {0x01A4,0x01A5,0x01A4},
00266 {0x01A6,0x0280,0x01A6}, {0x01A7,0x01A8,0x01A7},
00267 {0x01A7,0x01A8,0x01A7}, {0x01A9,0x0283,0x01A9},
00268 {0x01AA,0x01AA,0x01AA}, {0x01AB,0x01AB,0x01AB},
00269 {0x01AC,0x01AD,0x01AC}, {0x01AC,0x01AD,0x01AC},
00270 {0x01AE,0x0288,0x01AE}, {0x01AF,0x01B0,0x0055},
00271 {0x01AF,0x01B0,0x0055}, {0x01B1,0x028A,0x01B1},
00272 {0x01B2,0x028B,0x01B2}, {0x01B3,0x01B4,0x01B3},
00273 {0x01B3,0x01B4,0x01B3}, {0x01B5,0x01B6,0x01B5},
00274 {0x01B5,0x01B6,0x01B5}, {0x01B7,0x0292,0x01B7},
00275 {0x01B8,0x01B9,0x01B8}, {0x01B8,0x01B9,0x01B8},
00276 {0x01BA,0x01BA,0x01BA}, {0x01BB,0x01BB,0x01BB},
00277 {0x01BC,0x01BD,0x01BC}, {0x01BC,0x01BD,0x01BC},
00278 {0x01BE,0x01BE,0x01BE}, {0x01F7,0x01BF,0x01F7},
00279 {0x01C0,0x01C0,0x01C0}, {0x01C1,0x01C1,0x01C1},
00280 {0x01C2,0x01C2,0x01C2}, {0x01C3,0x01C3,0x01C3},
00281 {0x01C4,0x01C6,0x01C4}, {0x01C4,0x01C6,0x01C4},
00282 {0x01C4,0x01C6,0x01C4}, {0x01C7,0x01C9,0x01C7},
00283 {0x01C7,0x01C9,0x01C7}, {0x01C7,0x01C9,0x01C7},
00284 {0x01CA,0x01CC,0x01CA}, {0x01CA,0x01CC,0x01CA},
00285 {0x01CA,0x01CC,0x01CA}, {0x01CD,0x01CE,0x0041},
00286 {0x01CD,0x01CE,0x0041}, {0x01CF,0x01D0,0x0049},
00287 {0x01CF,0x01D0,0x0049}, {0x01D1,0x01D2,0x004F},
00288 {0x01D1,0x01D2,0x004F}, {0x01D3,0x01D4,0x0055},
00289 {0x01D3,0x01D4,0x0055}, {0x01D5,0x01D6,0x0055},
00290 {0x01D5,0x01D6,0x0055}, {0x01D7,0x01D8,0x0055},
00291 {0x01D7,0x01D8,0x0055}, {0x01D9,0x01DA,0x0055},
00292 {0x01D9,0x01DA,0x0055}, {0x01DB,0x01DC,0x0055},
00293 {0x01DB,0x01DC,0x0055}, {0x018E,0x01DD,0x018E},
00294 {0x01DE,0x01DF,0x0041}, {0x01DE,0x01DF,0x0041},
00295 {0x01E0,0x01E1,0x0041}, {0x01E0,0x01E1,0x0041},
00296 {0x01E2,0x01E3,0x00C6}, {0x01E2,0x01E3,0x00C6},
00297 {0x01E4,0x01E5,0x01E4}, {0x01E4,0x01E5,0x01E4},
00298 {0x01E6,0x01E7,0x0047}, {0x01E6,0x01E7,0x0047},
00299 {0x01E8,0x01E9,0x004B}, {0x01E8,0x01E9,0x004B},
00300 {0x01EA,0x01EB,0x004F}, {0x01EA,0x01EB,0x004F},
00301 {0x01EC,0x01ED,0x004F}, {0x01EC,0x01ED,0x004F},
00302 {0x01EE,0x01EF,0x01B7}, {0x01EE,0x01EF,0x01B7},
00303 {0x01F0,0x01F0,0x004A}, {0x01F1,0x01F3,0x01F1},
00304 {0x01F1,0x01F3,0x01F1}, {0x01F1,0x01F3,0x01F1},
00305 {0x01F4,0x01F5,0x0047}, {0x01F4,0x01F5,0x0047},
00306 {0x01F6,0x0195,0x01F6}, {0x01F7,0x01BF,0x01F7},
00307 {0x01F8,0x01F9,0x004E}, {0x01F8,0x01F9,0x004E},
00308 {0x01FA,0x01FB,0x0041}, {0x01FA,0x01FB,0x0041},
00309 {0x01FC,0x01FD,0x00C6}, {0x01FC,0x01FD,0x00C6},
00310 {0x01FE,0x01FF,0x00D8}, {0x01FE,0x01FF,0x00D8}
00311 };
00312
00313 static MY_UNICASE_INFO plane02[]={
00314 {0x0200,0x0201,0x0041}, {0x0200,0x0201,0x0041},
00315 {0x0202,0x0203,0x0041}, {0x0202,0x0203,0x0041},
00316 {0x0204,0x0205,0x0045}, {0x0204,0x0205,0x0045},
00317 {0x0206,0x0207,0x0045}, {0x0206,0x0207,0x0045},
00318 {0x0208,0x0209,0x0049}, {0x0208,0x0209,0x0049},
00319 {0x020A,0x020B,0x0049}, {0x020A,0x020B,0x0049},
00320 {0x020C,0x020D,0x004F}, {0x020C,0x020D,0x004F},
00321 {0x020E,0x020F,0x004F}, {0x020E,0x020F,0x004F},
00322 {0x0210,0x0211,0x0052}, {0x0210,0x0211,0x0052},
00323 {0x0212,0x0213,0x0052}, {0x0212,0x0213,0x0052},
00324 {0x0214,0x0215,0x0055}, {0x0214,0x0215,0x0055},
00325 {0x0216,0x0217,0x0055}, {0x0216,0x0217,0x0055},
00326 {0x0218,0x0219,0x0053}, {0x0218,0x0219,0x0053},
00327 {0x021A,0x021B,0x0054}, {0x021A,0x021B,0x0054},
00328 {0x021C,0x021D,0x021C}, {0x021C,0x021D,0x021C},
00329 {0x021E,0x021F,0x0048}, {0x021E,0x021F,0x0048},
00330 {0x0220,0x0220,0x0220}, {0x0221,0x0221,0x0221},
00331 {0x0222,0x0223,0x0222}, {0x0222,0x0223,0x0222},
00332 {0x0224,0x0225,0x0224}, {0x0224,0x0225,0x0224},
00333 {0x0226,0x0227,0x0041}, {0x0226,0x0227,0x0041},
00334 {0x0228,0x0229,0x0045}, {0x0228,0x0229,0x0045},
00335 {0x022A,0x022B,0x004F}, {0x022A,0x022B,0x004F},
00336 {0x022C,0x022D,0x004F}, {0x022C,0x022D,0x004F},
00337 {0x022E,0x022F,0x004F}, {0x022E,0x022F,0x004F},
00338 {0x0230,0x0231,0x004F}, {0x0230,0x0231,0x004F},
00339 {0x0232,0x0233,0x0059}, {0x0232,0x0233,0x0059},
00340 {0x0234,0x0234,0x0234}, {0x0235,0x0235,0x0235},
00341 {0x0236,0x0236,0x0236}, {0x0237,0x0237,0x0237},
00342 {0x0238,0x0238,0x0238}, {0x0239,0x0239,0x0239},
00343 {0x023A,0x023A,0x023A}, {0x023B,0x023B,0x023B},
00344 {0x023C,0x023C,0x023C}, {0x023D,0x023D,0x023D},
00345 {0x023E,0x023E,0x023E}, {0x023F,0x023F,0x023F},
00346 {0x0240,0x0240,0x0240}, {0x0241,0x0241,0x0241},
00347 {0x0242,0x0242,0x0242}, {0x0243,0x0243,0x0243},
00348 {0x0244,0x0244,0x0244}, {0x0245,0x0245,0x0245},
00349 {0x0246,0x0246,0x0246}, {0x0247,0x0247,0x0247},
00350 {0x0248,0x0248,0x0248}, {0x0249,0x0249,0x0249},
00351 {0x024A,0x024A,0x024A}, {0x024B,0x024B,0x024B},
00352 {0x024C,0x024C,0x024C}, {0x024D,0x024D,0x024D},
00353 {0x024E,0x024E,0x024E}, {0x024F,0x024F,0x024F},
00354 {0x0250,0x0250,0x0250}, {0x0251,0x0251,0x0251},
00355 {0x0252,0x0252,0x0252}, {0x0181,0x0253,0x0181},
00356 {0x0186,0x0254,0x0186}, {0x0255,0x0255,0x0255},
00357 {0x0189,0x0256,0x0189}, {0x018A,0x0257,0x018A},
00358 {0x0258,0x0258,0x0258}, {0x018F,0x0259,0x018F},
00359 {0x025A,0x025A,0x025A}, {0x0190,0x025B,0x0190},
00360 {0x025C,0x025C,0x025C}, {0x025D,0x025D,0x025D},
00361 {0x025E,0x025E,0x025E}, {0x025F,0x025F,0x025F},
00362 {0x0193,0x0260,0x0193}, {0x0261,0x0261,0x0261},
00363 {0x0262,0x0262,0x0262}, {0x0194,0x0263,0x0194},
00364 {0x0264,0x0264,0x0264}, {0x0265,0x0265,0x0265},
00365 {0x0266,0x0266,0x0266}, {0x0267,0x0267,0x0267},
00366 {0x0197,0x0268,0x0197}, {0x0196,0x0269,0x0196},
00367 {0x026A,0x026A,0x026A}, {0x026B,0x026B,0x026B},
00368 {0x026C,0x026C,0x026C}, {0x026D,0x026D,0x026D},
00369 {0x026E,0x026E,0x026E}, {0x019C,0x026F,0x019C},
00370 {0x0270,0x0270,0x0270}, {0x0271,0x0271,0x0271},
00371 {0x019D,0x0272,0x019D}, {0x0273,0x0273,0x0273},
00372 {0x0274,0x0274,0x0274}, {0x019F,0x0275,0x019F},
00373 {0x0276,0x0276,0x0276}, {0x0277,0x0277,0x0277},
00374 {0x0278,0x0278,0x0278}, {0x0279,0x0279,0x0279},
00375 {0x027A,0x027A,0x027A}, {0x027B,0x027B,0x027B},
00376 {0x027C,0x027C,0x027C}, {0x027D,0x027D,0x027D},
00377 {0x027E,0x027E,0x027E}, {0x027F,0x027F,0x027F},
00378 {0x01A6,0x0280,0x01A6}, {0x0281,0x0281,0x0281},
00379 {0x0282,0x0282,0x0282}, {0x01A9,0x0283,0x01A9},
00380 {0x0284,0x0284,0x0284}, {0x0285,0x0285,0x0285},
00381 {0x0286,0x0286,0x0286}, {0x0287,0x0287,0x0287},
00382 {0x01AE,0x0288,0x01AE}, {0x0289,0x0289,0x0289},
00383 {0x01B1,0x028A,0x01B1}, {0x01B2,0x028B,0x01B2},
00384 {0x028C,0x028C,0x028C}, {0x028D,0x028D,0x028D},
00385 {0x028E,0x028E,0x028E}, {0x028F,0x028F,0x028F},
00386 {0x0290,0x0290,0x0290}, {0x0291,0x0291,0x0291},
00387 {0x01B7,0x0292,0x01B7}, {0x0293,0x0293,0x0293},
00388 {0x0294,0x0294,0x0294}, {0x0295,0x0295,0x0295},
00389 {0x0296,0x0296,0x0296}, {0x0297,0x0297,0x0297},
00390 {0x0298,0x0298,0x0298}, {0x0299,0x0299,0x0299},
00391 {0x029A,0x029A,0x029A}, {0x029B,0x029B,0x029B},
00392 {0x029C,0x029C,0x029C}, {0x029D,0x029D,0x029D},
00393 {0x029E,0x029E,0x029E}, {0x029F,0x029F,0x029F},
00394 {0x02A0,0x02A0,0x02A0}, {0x02A1,0x02A1,0x02A1},
00395 {0x02A2,0x02A2,0x02A2}, {0x02A3,0x02A3,0x02A3},
00396 {0x02A4,0x02A4,0x02A4}, {0x02A5,0x02A5,0x02A5},
00397 {0x02A6,0x02A6,0x02A6}, {0x02A7,0x02A7,0x02A7},
00398 {0x02A8,0x02A8,0x02A8}, {0x02A9,0x02A9,0x02A9},
00399 {0x02AA,0x02AA,0x02AA}, {0x02AB,0x02AB,0x02AB},
00400 {0x02AC,0x02AC,0x02AC}, {0x02AD,0x02AD,0x02AD},
00401 {0x02AE,0x02AE,0x02AE}, {0x02AF,0x02AF,0x02AF},
00402 {0x02B0,0x02B0,0x02B0}, {0x02B1,0x02B1,0x02B1},
00403 {0x02B2,0x02B2,0x02B2}, {0x02B3,0x02B3,0x02B3},
00404 {0x02B4,0x02B4,0x02B4}, {0x02B5,0x02B5,0x02B5},
00405 {0x02B6,0x02B6,0x02B6}, {0x02B7,0x02B7,0x02B7},
00406 {0x02B8,0x02B8,0x02B8}, {0x02B9,0x02B9,0x02B9},
00407 {0x02BA,0x02BA,0x02BA}, {0x02BB,0x02BB,0x02BB},
00408 {0x02BC,0x02BC,0x02BC}, {0x02BD,0x02BD,0x02BD},
00409 {0x02BE,0x02BE,0x02BE}, {0x02BF,0x02BF,0x02BF},
00410 {0x02C0,0x02C0,0x02C0}, {0x02C1,0x02C1,0x02C1},
00411 {0x02C2,0x02C2,0x02C2}, {0x02C3,0x02C3,0x02C3},
00412 {0x02C4,0x02C4,0x02C4}, {0x02C5,0x02C5,0x02C5},
00413 {0x02C6,0x02C6,0x02C6}, {0x02C7,0x02C7,0x02C7},
00414 {0x02C8,0x02C8,0x02C8}, {0x02C9,0x02C9,0x02C9},
00415 {0x02CA,0x02CA,0x02CA}, {0x02CB,0x02CB,0x02CB},
00416 {0x02CC,0x02CC,0x02CC}, {0x02CD,0x02CD,0x02CD},
00417 {0x02CE,0x02CE,0x02CE}, {0x02CF,0x02CF,0x02CF},
00418 {0x02D0,0x02D0,0x02D0}, {0x02D1,0x02D1,0x02D1},
00419 {0x02D2,0x02D2,0x02D2}, {0x02D3,0x02D3,0x02D3},
00420 {0x02D4,0x02D4,0x02D4}, {0x02D5,0x02D5,0x02D5},
00421 {0x02D6,0x02D6,0x02D6}, {0x02D7,0x02D7,0x02D7},
00422 {0x02D8,0x02D8,0x02D8}, {0x02D9,0x02D9,0x02D9},
00423 {0x02DA,0x02DA,0x02DA}, {0x02DB,0x02DB,0x02DB},
00424 {0x02DC,0x02DC,0x02DC}, {0x02DD,0x02DD,0x02DD},
00425 {0x02DE,0x02DE,0x02DE}, {0x02DF,0x02DF,0x02DF},
00426 {0x02E0,0x02E0,0x02E0}, {0x02E1,0x02E1,0x02E1},
00427 {0x02E2,0x02E2,0x02E2}, {0x02E3,0x02E3,0x02E3},
00428 {0x02E4,0x02E4,0x02E4}, {0x02E5,0x02E5,0x02E5},
00429 {0x02E6,0x02E6,0x02E6}, {0x02E7,0x02E7,0x02E7},
00430 {0x02E8,0x02E8,0x02E8}, {0x02E9,0x02E9,0x02E9},
00431 {0x02EA,0x02EA,0x02EA}, {0x02EB,0x02EB,0x02EB},
00432 {0x02EC,0x02EC,0x02EC}, {0x02ED,0x02ED,0x02ED},
00433 {0x02EE,0x02EE,0x02EE}, {0x02EF,0x02EF,0x02EF},
00434 {0x02F0,0x02F0,0x02F0}, {0x02F1,0x02F1,0x02F1},
00435 {0x02F2,0x02F2,0x02F2}, {0x02F3,0x02F3,0x02F3},
00436 {0x02F4,0x02F4,0x02F4}, {0x02F5,0x02F5,0x02F5},
00437 {0x02F6,0x02F6,0x02F6}, {0x02F7,0x02F7,0x02F7},
00438 {0x02F8,0x02F8,0x02F8}, {0x02F9,0x02F9,0x02F9},
00439 {0x02FA,0x02FA,0x02FA}, {0x02FB,0x02FB,0x02FB},
00440 {0x02FC,0x02FC,0x02FC}, {0x02FD,0x02FD,0x02FD},
00441 {0x02FE,0x02FE,0x02FE}, {0x02FF,0x02FF,0x02FF}
00442 };
00443
00444 static MY_UNICASE_INFO plane03[]={
00445 {0x0300,0x0300,0x0300}, {0x0301,0x0301,0x0301},
00446 {0x0302,0x0302,0x0302}, {0x0303,0x0303,0x0303},
00447 {0x0304,0x0304,0x0304}, {0x0305,0x0305,0x0305},
00448 {0x0306,0x0306,0x0306}, {0x0307,0x0307,0x0307},
00449 {0x0308,0x0308,0x0308}, {0x0309,0x0309,0x0309},
00450 {0x030A,0x030A,0x030A}, {0x030B,0x030B,0x030B},
00451 {0x030C,0x030C,0x030C}, {0x030D,0x030D,0x030D},
00452 {0x030E,0x030E,0x030E}, {0x030F,0x030F,0x030F},
00453 {0x0310,0x0310,0x0310}, {0x0311,0x0311,0x0311},
00454 {0x0312,0x0312,0x0312}, {0x0313,0x0313,0x0313},
00455 {0x0314,0x0314,0x0314}, {0x0315,0x0315,0x0315},
00456 {0x0316,0x0316,0x0316}, {0x0317,0x0317,0x0317},
00457 {0x0318,0x0318,0x0318}, {0x0319,0x0319,0x0319},
00458 {0x031A,0x031A,0x031A}, {0x031B,0x031B,0x031B},
00459 {0x031C,0x031C,0x031C}, {0x031D,0x031D,0x031D},
00460 {0x031E,0x031E,0x031E}, {0x031F,0x031F,0x031F},
00461 {0x0320,0x0320,0x0320}, {0x0321,0x0321,0x0321},
00462 {0x0322,0x0322,0x0322}, {0x0323,0x0323,0x0323},
00463 {0x0324,0x0324,0x0324}, {0x0325,0x0325,0x0325},
00464 {0x0326,0x0326,0x0326}, {0x0327,0x0327,0x0327},
00465 {0x0328,0x0328,0x0328}, {0x0329,0x0329,0x0329},
00466 {0x032A,0x032A,0x032A}, {0x032B,0x032B,0x032B},
00467 {0x032C,0x032C,0x032C}, {0x032D,0x032D,0x032D},
00468 {0x032E,0x032E,0x032E}, {0x032F,0x032F,0x032F},
00469 {0x0330,0x0330,0x0330}, {0x0331,0x0331,0x0331},
00470 {0x0332,0x0332,0x0332}, {0x0333,0x0333,0x0333},
00471 {0x0334,0x0334,0x0334}, {0x0335,0x0335,0x0335},
00472 {0x0336,0x0336,0x0336}, {0x0337,0x0337,0x0337},
00473 {0x0338,0x0338,0x0338}, {0x0339,0x0339,0x0339},
00474 {0x033A,0x033A,0x033A}, {0x033B,0x033B,0x033B},
00475 {0x033C,0x033C,0x033C}, {0x033D,0x033D,0x033D},
00476 {0x033E,0x033E,0x033E}, {0x033F,0x033F,0x033F},
00477 {0x0340,0x0340,0x0340}, {0x0341,0x0341,0x0341},
00478 {0x0342,0x0342,0x0342}, {0x0343,0x0343,0x0343},
00479 {0x0344,0x0344,0x0344}, {0x0399,0x0345,0x0399},
00480 {0x0346,0x0346,0x0346}, {0x0347,0x0347,0x0347},
00481 {0x0348,0x0348,0x0348}, {0x0349,0x0349,0x0349},
00482 {0x034A,0x034A,0x034A}, {0x034B,0x034B,0x034B},
00483 {0x034C,0x034C,0x034C}, {0x034D,0x034D,0x034D},
00484 {0x034E,0x034E,0x034E}, {0x034F,0x034F,0x034F},
00485 {0x0350,0x0350,0x0350}, {0x0351,0x0351,0x0351},
00486 {0x0352,0x0352,0x0352}, {0x0353,0x0353,0x0353},
00487 {0x0354,0x0354,0x0354}, {0x0355,0x0355,0x0355},
00488 {0x0356,0x0356,0x0356}, {0x0357,0x0357,0x0357},
00489 {0x0358,0x0358,0x0358}, {0x0359,0x0359,0x0359},
00490 {0x035A,0x035A,0x035A}, {0x035B,0x035B,0x035B},
00491 {0x035C,0x035C,0x035C}, {0x035D,0x035D,0x035D},
00492 {0x035E,0x035E,0x035E}, {0x035F,0x035F,0x035F},
00493 {0x0360,0x0360,0x0360}, {0x0361,0x0361,0x0361},
00494 {0x0362,0x0362,0x0362}, {0x0363,0x0363,0x0363},
00495 {0x0364,0x0364,0x0364}, {0x0365,0x0365,0x0365},
00496 {0x0366,0x0366,0x0366}, {0x0367,0x0367,0x0367},
00497 {0x0368,0x0368,0x0368}, {0x0369,0x0369,0x0369},
00498 {0x036A,0x036A,0x036A}, {0x036B,0x036B,0x036B},
00499 {0x036C,0x036C,0x036C}, {0x036D,0x036D,0x036D},
00500 {0x036E,0x036E,0x036E}, {0x036F,0x036F,0x036F},
00501 {0x0370,0x0370,0x0370}, {0x0371,0x0371,0x0371},
00502 {0x0372,0x0372,0x0372}, {0x0373,0x0373,0x0373},
00503 {0x0374,0x0374,0x0374}, {0x0375,0x0375,0x0375},
00504 {0x0376,0x0376,0x0376}, {0x0377,0x0377,0x0377},
00505 {0x0378,0x0378,0x0378}, {0x0379,0x0379,0x0379},
00506 {0x037A,0x037A,0x037A}, {0x037B,0x037B,0x037B},
00507 {0x037C,0x037C,0x037C}, {0x037D,0x037D,0x037D},
00508 {0x037E,0x037E,0x037E}, {0x037F,0x037F,0x037F},
00509 {0x0380,0x0380,0x0380}, {0x0381,0x0381,0x0381},
00510 {0x0382,0x0382,0x0382}, {0x0383,0x0383,0x0383},
00511 {0x0384,0x0384,0x0384}, {0x0385,0x0385,0x0385},
00512 {0x0386,0x03AC,0x0391}, {0x0387,0x0387,0x0387},
00513 {0x0388,0x03AD,0x0395}, {0x0389,0x03AE,0x0397},
00514 {0x038A,0x03AF,0x0399}, {0x038B,0x038B,0x038B},
00515 {0x038C,0x03CC,0x039F}, {0x038D,0x038D,0x038D},
00516 {0x038E,0x03CD,0x03A5}, {0x038F,0x03CE,0x03A9},
00517 {0x0390,0x0390,0x0399}, {0x0391,0x03B1,0x0391},
00518 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
00519 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
00520 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
00521 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
00522 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
00523 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
00524 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
00525 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
00526 {0x03A2,0x03A2,0x03A2}, {0x03A3,0x03C3,0x03A3},
00527 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
00528 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
00529 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
00530 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
00531 {0x0386,0x03AC,0x0391}, {0x0388,0x03AD,0x0395},
00532 {0x0389,0x03AE,0x0397}, {0x038A,0x03AF,0x0399},
00533 {0x03B0,0x03B0,0x03A5}, {0x0391,0x03B1,0x0391},
00534 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
00535 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
00536 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
00537 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
00538 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
00539 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
00540 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
00541 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
00542 {0x03A3,0x03C2,0x03A3}, {0x03A3,0x03C3,0x03A3},
00543 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
00544 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
00545 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
00546 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
00547 {0x038C,0x03CC,0x039F}, {0x038E,0x03CD,0x03A5},
00548 {0x038F,0x03CE,0x03A9}, {0x03CF,0x03CF,0x03CF},
00549 {0x0392,0x03D0,0x0392}, {0x0398,0x03D1,0x0398},
00550 {0x03D2,0x03D2,0x03D2}, {0x03D3,0x03D3,0x03D2},
00551 {0x03D4,0x03D4,0x03D2}, {0x03A6,0x03D5,0x03A6},
00552 {0x03A0,0x03D6,0x03A0}, {0x03D7,0x03D7,0x03D7},
00553 {0x03D8,0x03D8,0x03D8}, {0x03D9,0x03D9,0x03D9},
00554 {0x03DA,0x03DB,0x03DA}, {0x03DA,0x03DB,0x03DA},
00555 {0x03DC,0x03DD,0x03DC}, {0x03DC,0x03DD,0x03DC},
00556 {0x03DE,0x03DF,0x03DE}, {0x03DE,0x03DF,0x03DE},
00557 {0x03E0,0x03E1,0x03E0}, {0x03E0,0x03E1,0x03E0},
00558 {0x03E2,0x03E3,0x03E2}, {0x03E2,0x03E3,0x03E2},
00559 {0x03E4,0x03E5,0x03E4}, {0x03E4,0x03E5,0x03E4},
00560 {0x03E6,0x03E7,0x03E6}, {0x03E6,0x03E7,0x03E6},
00561 {0x03E8,0x03E9,0x03E8}, {0x03E8,0x03E9,0x03E8},
00562 {0x03EA,0x03EB,0x03EA}, {0x03EA,0x03EB,0x03EA},
00563 {0x03EC,0x03ED,0x03EC}, {0x03EC,0x03ED,0x03EC},
00564 {0x03EE,0x03EF,0x03EE}, {0x03EE,0x03EF,0x03EE},
00565 {0x039A,0x03F0,0x039A}, {0x03A1,0x03F1,0x03A1},
00566 {0x03A3,0x03F2,0x03A3}, {0x03F3,0x03F3,0x03F3},
00567 {0x03F4,0x03F4,0x03F4}, {0x03F5,0x03F5,0x03F5},
00568 {0x03F6,0x03F6,0x03F6}, {0x03F7,0x03F7,0x03F7},
00569 {0x03F8,0x03F8,0x03F8}, {0x03F9,0x03F9,0x03F9},
00570 {0x03FA,0x03FA,0x03FA}, {0x03FB,0x03FB,0x03FB},
00571 {0x03FC,0x03FC,0x03FC}, {0x03FD,0x03FD,0x03FD},
00572 {0x03FE,0x03FE,0x03FE}, {0x03FF,0x03FF,0x03FF}
00573 };
00574
00575 static MY_UNICASE_INFO plane04[]={
00576 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
00577 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
00578 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
00579 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
00580 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
00581 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
00582 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
00583 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
00584 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
00585 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
00586 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
00587 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
00588 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
00589 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
00590 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
00591 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
00592 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
00593 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
00594 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
00595 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
00596 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
00597 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
00598 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
00599 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
00600 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
00601 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
00602 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
00603 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
00604 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
00605 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
00606 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
00607 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
00608 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
00609 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
00610 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
00611 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
00612 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
00613 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
00614 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
00615 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
00616 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
00617 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
00618 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
00619 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
00620 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
00621 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
00622 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
00623 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
00624 {0x0460,0x0461,0x0460}, {0x0460,0x0461,0x0460},
00625 {0x0462,0x0463,0x0462}, {0x0462,0x0463,0x0462},
00626 {0x0464,0x0465,0x0464}, {0x0464,0x0465,0x0464},
00627 {0x0466,0x0467,0x0466}, {0x0466,0x0467,0x0466},
00628 {0x0468,0x0469,0x0468}, {0x0468,0x0469,0x0468},
00629 {0x046A,0x046B,0x046A}, {0x046A,0x046B,0x046A},
00630 {0x046C,0x046D,0x046C}, {0x046C,0x046D,0x046C},
00631 {0x046E,0x046F,0x046E}, {0x046E,0x046F,0x046E},
00632 {0x0470,0x0471,0x0470}, {0x0470,0x0471,0x0470},
00633 {0x0472,0x0473,0x0472}, {0x0472,0x0473,0x0472},
00634 {0x0474,0x0475,0x0474}, {0x0474,0x0475,0x0474},
00635 {0x0476,0x0477,0x0474}, {0x0476,0x0477,0x0474},
00636 {0x0478,0x0479,0x0478}, {0x0478,0x0479,0x0478},
00637 {0x047A,0x047B,0x047A}, {0x047A,0x047B,0x047A},
00638 {0x047C,0x047D,0x047C}, {0x047C,0x047D,0x047C},
00639 {0x047E,0x047F,0x047E}, {0x047E,0x047F,0x047E},
00640 {0x0480,0x0481,0x0480}, {0x0480,0x0481,0x0480},
00641 {0x0482,0x0482,0x0482}, {0x0483,0x0483,0x0483},
00642 {0x0484,0x0484,0x0484}, {0x0485,0x0485,0x0485},
00643 {0x0486,0x0486,0x0486}, {0x0487,0x0487,0x0487},
00644 {0x0488,0x0488,0x0488}, {0x0489,0x0489,0x0489},
00645 {0x048A,0x048A,0x048A}, {0x048B,0x048B,0x048B},
00646 {0x048C,0x048D,0x048C}, {0x048C,0x048D,0x048C},
00647 {0x048E,0x048F,0x048E}, {0x048E,0x048F,0x048E},
00648 {0x0490,0x0491,0x0490}, {0x0490,0x0491,0x0490},
00649 {0x0492,0x0493,0x0492}, {0x0492,0x0493,0x0492},
00650 {0x0494,0x0495,0x0494}, {0x0494,0x0495,0x0494},
00651 {0x0496,0x0497,0x0496}, {0x0496,0x0497,0x0496},
00652 {0x0498,0x0499,0x0498}, {0x0498,0x0499,0x0498},
00653 {0x049A,0x049B,0x049A}, {0x049A,0x049B,0x049A},
00654 {0x049C,0x049D,0x049C}, {0x049C,0x049D,0x049C},
00655 {0x049E,0x049F,0x049E}, {0x049E,0x049F,0x049E},
00656 {0x04A0,0x04A1,0x04A0}, {0x04A0,0x04A1,0x04A0},
00657 {0x04A2,0x04A3,0x04A2}, {0x04A2,0x04A3,0x04A2},
00658 {0x04A4,0x04A5,0x04A4}, {0x04A4,0x04A5,0x04A4},
00659 {0x04A6,0x04A7,0x04A6}, {0x04A6,0x04A7,0x04A6},
00660 {0x04A8,0x04A9,0x04A8}, {0x04A8,0x04A9,0x04A8},
00661 {0x04AA,0x04AB,0x04AA}, {0x04AA,0x04AB,0x04AA},
00662 {0x04AC,0x04AD,0x04AC}, {0x04AC,0x04AD,0x04AC},
00663 {0x04AE,0x04AF,0x04AE}, {0x04AE,0x04AF,0x04AE},
00664 {0x04B0,0x04B1,0x04B0}, {0x04B0,0x04B1,0x04B0},
00665 {0x04B2,0x04B3,0x04B2}, {0x04B2,0x04B3,0x04B2},
00666 {0x04B4,0x04B5,0x04B4}, {0x04B4,0x04B5,0x04B4},
00667 {0x04B6,0x04B7,0x04B6}, {0x04B6,0x04B7,0x04B6},
00668 {0x04B8,0x04B9,0x04B8}, {0x04B8,0x04B9,0x04B8},
00669 {0x04BA,0x04BB,0x04BA}, {0x04BA,0x04BB,0x04BA},
00670 {0x04BC,0x04BD,0x04BC}, {0x04BC,0x04BD,0x04BC},
00671 {0x04BE,0x04BF,0x04BE}, {0x04BE,0x04BF,0x04BE},
00672 {0x04C0,0x04C0,0x04C0}, {0x04C1,0x04C2,0x0416},
00673 {0x04C1,0x04C2,0x0416}, {0x04C3,0x04C4,0x04C3},
00674 {0x04C3,0x04C4,0x04C3}, {0x04C5,0x04C5,0x04C5},
00675 {0x04C6,0x04C6,0x04C6}, {0x04C7,0x04C8,0x04C7},
00676 {0x04C7,0x04C8,0x04C7}, {0x04C9,0x04C9,0x04C9},
00677 {0x04CA,0x04CA,0x04CA}, {0x04CB,0x04CC,0x04CB},
00678 {0x04CB,0x04CC,0x04CB}, {0x04CD,0x04CD,0x04CD},
00679 {0x04CE,0x04CE,0x04CE}, {0x04CF,0x04CF,0x04CF},
00680 {0x04D0,0x04D1,0x0410}, {0x04D0,0x04D1,0x0410},
00681 {0x04D2,0x04D3,0x0410}, {0x04D2,0x04D3,0x0410},
00682 {0x04D4,0x04D5,0x04D4}, {0x04D4,0x04D5,0x04D4},
00683 {0x04D6,0x04D7,0x0415}, {0x04D6,0x04D7,0x0415},
00684 {0x04D8,0x04D9,0x04D8}, {0x04D8,0x04D9,0x04D8},
00685 {0x04DA,0x04DB,0x04D8}, {0x04DA,0x04DB,0x04D8},
00686 {0x04DC,0x04DD,0x0416}, {0x04DC,0x04DD,0x0416},
00687 {0x04DE,0x04DF,0x0417}, {0x04DE,0x04DF,0x0417},
00688 {0x04E0,0x04E1,0x04E0}, {0x04E0,0x04E1,0x04E0},
00689 {0x04E2,0x04E3,0x0418}, {0x04E2,0x04E3,0x0418},
00690 {0x04E4,0x04E5,0x0418}, {0x04E4,0x04E5,0x0418},
00691 {0x04E6,0x04E7,0x041E}, {0x04E6,0x04E7,0x041E},
00692 {0x04E8,0x04E9,0x04E8}, {0x04E8,0x04E9,0x04E8},
00693 {0x04EA,0x04EB,0x04E8}, {0x04EA,0x04EB,0x04E8},
00694 {0x04EC,0x04ED,0x042D}, {0x04EC,0x04ED,0x042D},
00695 {0x04EE,0x04EF,0x0423}, {0x04EE,0x04EF,0x0423},
00696 {0x04F0,0x04F1,0x0423}, {0x04F0,0x04F1,0x0423},
00697 {0x04F2,0x04F3,0x0423}, {0x04F2,0x04F3,0x0423},
00698 {0x04F4,0x04F5,0x0427}, {0x04F4,0x04F5,0x0427},
00699 {0x04F6,0x04F6,0x04F6}, {0x04F7,0x04F7,0x04F7},
00700 {0x04F8,0x04F9,0x042B}, {0x04F8,0x04F9,0x042B},
00701 {0x04FA,0x04FA,0x04FA}, {0x04FB,0x04FB,0x04FB},
00702 {0x04FC,0x04FC,0x04FC}, {0x04FD,0x04FD,0x04FD},
00703 {0x04FE,0x04FE,0x04FE}, {0x04FF,0x04FF,0x04FF}
00704 };
00705
00706 static MY_UNICASE_INFO plane05[]={
00707 {0x0500,0x0500,0x0500}, {0x0501,0x0501,0x0501},
00708 {0x0502,0x0502,0x0502}, {0x0503,0x0503,0x0503},
00709 {0x0504,0x0504,0x0504}, {0x0505,0x0505,0x0505},
00710 {0x0506,0x0506,0x0506}, {0x0507,0x0507,0x0507},
00711 {0x0508,0x0508,0x0508}, {0x0509,0x0509,0x0509},
00712 {0x050A,0x050A,0x050A}, {0x050B,0x050B,0x050B},
00713 {0x050C,0x050C,0x050C}, {0x050D,0x050D,0x050D},
00714 {0x050E,0x050E,0x050E}, {0x050F,0x050F,0x050F},
00715 {0x0510,0x0510,0x0510}, {0x0511,0x0511,0x0511},
00716 {0x0512,0x0512,0x0512}, {0x0513,0x0513,0x0513},
00717 {0x0514,0x0514,0x0514}, {0x0515,0x0515,0x0515},
00718 {0x0516,0x0516,0x0516}, {0x0517,0x0517,0x0517},
00719 {0x0518,0x0518,0x0518}, {0x0519,0x0519,0x0519},
00720 {0x051A,0x051A,0x051A}, {0x051B,0x051B,0x051B},
00721 {0x051C,0x051C,0x051C}, {0x051D,0x051D,0x051D},
00722 {0x051E,0x051E,0x051E}, {0x051F,0x051F,0x051F},
00723 {0x0520,0x0520,0x0520}, {0x0521,0x0521,0x0521},
00724 {0x0522,0x0522,0x0522}, {0x0523,0x0523,0x0523},
00725 {0x0524,0x0524,0x0524}, {0x0525,0x0525,0x0525},
00726 {0x0526,0x0526,0x0526}, {0x0527,0x0527,0x0527},
00727 {0x0528,0x0528,0x0528}, {0x0529,0x0529,0x0529},
00728 {0x052A,0x052A,0x052A}, {0x052B,0x052B,0x052B},
00729 {0x052C,0x052C,0x052C}, {0x052D,0x052D,0x052D},
00730 {0x052E,0x052E,0x052E}, {0x052F,0x052F,0x052F},
00731 {0x0530,0x0530,0x0530}, {0x0531,0x0561,0x0531},
00732 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
00733 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
00734 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
00735 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
00736 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
00737 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
00738 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
00739 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
00740 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
00741 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
00742 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
00743 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
00744 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
00745 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
00746 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
00747 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
00748 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
00749 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
00750 {0x0556,0x0586,0x0556}, {0x0557,0x0557,0x0557},
00751 {0x0558,0x0558,0x0558}, {0x0559,0x0559,0x0559},
00752 {0x055A,0x055A,0x055A}, {0x055B,0x055B,0x055B},
00753 {0x055C,0x055C,0x055C}, {0x055D,0x055D,0x055D},
00754 {0x055E,0x055E,0x055E}, {0x055F,0x055F,0x055F},
00755 {0x0560,0x0560,0x0560}, {0x0531,0x0561,0x0531},
00756 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
00757 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
00758 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
00759 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
00760 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
00761 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
00762 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
00763 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
00764 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
00765 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
00766 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
00767 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
00768 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
00769 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
00770 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
00771 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
00772 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
00773 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
00774 {0x0556,0x0586,0x0556}, {0x0587,0x0587,0x0587},
00775 {0x0588,0x0588,0x0588}, {0x0589,0x0589,0x0589},
00776 {0x058A,0x058A,0x058A}, {0x058B,0x058B,0x058B},
00777 {0x058C,0x058C,0x058C}, {0x058D,0x058D,0x058D},
00778 {0x058E,0x058E,0x058E}, {0x058F,0x058F,0x058F},
00779 {0x0590,0x0590,0x0590}, {0x0591,0x0591,0x0591},
00780 {0x0592,0x0592,0x0592}, {0x0593,0x0593,0x0593},
00781 {0x0594,0x0594,0x0594}, {0x0595,0x0595,0x0595},
00782 {0x0596,0x0596,0x0596}, {0x0597,0x0597,0x0597},
00783 {0x0598,0x0598,0x0598}, {0x0599,0x0599,0x0599},
00784 {0x059A,0x059A,0x059A}, {0x059B,0x059B,0x059B},
00785 {0x059C,0x059C,0x059C}, {0x059D,0x059D,0x059D},
00786 {0x059E,0x059E,0x059E}, {0x059F,0x059F,0x059F},
00787 {0x05A0,0x05A0,0x05A0}, {0x05A1,0x05A1,0x05A1},
00788 {0x05A2,0x05A2,0x05A2}, {0x05A3,0x05A3,0x05A3},
00789 {0x05A4,0x05A4,0x05A4}, {0x05A5,0x05A5,0x05A5},
00790 {0x05A6,0x05A6,0x05A6}, {0x05A7,0x05A7,0x05A7},
00791 {0x05A8,0x05A8,0x05A8}, {0x05A9,0x05A9,0x05A9},
00792 {0x05AA,0x05AA,0x05AA}, {0x05AB,0x05AB,0x05AB},
00793 {0x05AC,0x05AC,0x05AC}, {0x05AD,0x05AD,0x05AD},
00794 {0x05AE,0x05AE,0x05AE}, {0x05AF,0x05AF,0x05AF},
00795 {0x05B0,0x05B0,0x05B0}, {0x05B1,0x05B1,0x05B1},
00796 {0x05B2,0x05B2,0x05B2}, {0x05B3,0x05B3,0x05B3},
00797 {0x05B4,0x05B4,0x05B4}, {0x05B5,0x05B5,0x05B5},
00798 {0x05B6,0x05B6,0x05B6}, {0x05B7,0x05B7,0x05B7},
00799 {0x05B8,0x05B8,0x05B8}, {0x05B9,0x05B9,0x05B9},
00800 {0x05BA,0x05BA,0x05BA}, {0x05BB,0x05BB,0x05BB},
00801 {0x05BC,0x05BC,0x05BC}, {0x05BD,0x05BD,0x05BD},
00802 {0x05BE,0x05BE,0x05BE}, {0x05BF,0x05BF,0x05BF},
00803 {0x05C0,0x05C0,0x05C0}, {0x05C1,0x05C1,0x05C1},
00804 {0x05C2,0x05C2,0x05C2}, {0x05C3,0x05C3,0x05C3},
00805 {0x05C4,0x05C4,0x05C4}, {0x05C5,0x05C5,0x05C5},
00806 {0x05C6,0x05C6,0x05C6}, {0x05C7,0x05C7,0x05C7},
00807 {0x05C8,0x05C8,0x05C8}, {0x05C9,0x05C9,0x05C9},
00808 {0x05CA,0x05CA,0x05CA}, {0x05CB,0x05CB,0x05CB},
00809 {0x05CC,0x05CC,0x05CC}, {0x05CD,0x05CD,0x05CD},
00810 {0x05CE,0x05CE,0x05CE}, {0x05CF,0x05CF,0x05CF},
00811 {0x05D0,0x05D0,0x05D0}, {0x05D1,0x05D1,0x05D1},
00812 {0x05D2,0x05D2,0x05D2}, {0x05D3,0x05D3,0x05D3},
00813 {0x05D4,0x05D4,0x05D4}, {0x05D5,0x05D5,0x05D5},
00814 {0x05D6,0x05D6,0x05D6}, {0x05D7,0x05D7,0x05D7},
00815 {0x05D8,0x05D8,0x05D8}, {0x05D9,0x05D9,0x05D9},
00816 {0x05DA,0x05DA,0x05DA}, {0x05DB,0x05DB,0x05DB},
00817 {0x05DC,0x05DC,0x05DC}, {0x05DD,0x05DD,0x05DD},
00818 {0x05DE,0x05DE,0x05DE}, {0x05DF,0x05DF,0x05DF},
00819 {0x05E0,0x05E0,0x05E0}, {0x05E1,0x05E1,0x05E1},
00820 {0x05E2,0x05E2,0x05E2}, {0x05E3,0x05E3,0x05E3},
00821 {0x05E4,0x05E4,0x05E4}, {0x05E5,0x05E5,0x05E5},
00822 {0x05E6,0x05E6,0x05E6}, {0x05E7,0x05E7,0x05E7},
00823 {0x05E8,0x05E8,0x05E8}, {0x05E9,0x05E9,0x05E9},
00824 {0x05EA,0x05EA,0x05EA}, {0x05EB,0x05EB,0x05EB},
00825 {0x05EC,0x05EC,0x05EC}, {0x05ED,0x05ED,0x05ED},
00826 {0x05EE,0x05EE,0x05EE}, {0x05EF,0x05EF,0x05EF},
00827 {0x05F0,0x05F0,0x05F0}, {0x05F1,0x05F1,0x05F1},
00828 {0x05F2,0x05F2,0x05F2}, {0x05F3,0x05F3,0x05F3},
00829 {0x05F4,0x05F4,0x05F4}, {0x05F5,0x05F5,0x05F5},
00830 {0x05F6,0x05F6,0x05F6}, {0x05F7,0x05F7,0x05F7},
00831 {0x05F8,0x05F8,0x05F8}, {0x05F9,0x05F9,0x05F9},
00832 {0x05FA,0x05FA,0x05FA}, {0x05FB,0x05FB,0x05FB},
00833 {0x05FC,0x05FC,0x05FC}, {0x05FD,0x05FD,0x05FD},
00834 {0x05FE,0x05FE,0x05FE}, {0x05FF,0x05FF,0x05FF}
00835 };
00836
00837 static MY_UNICASE_INFO plane1E[]={
00838 {0x1E00,0x1E01,0x0041}, {0x1E00,0x1E01,0x0041},
00839 {0x1E02,0x1E03,0x0042}, {0x1E02,0x1E03,0x0042},
00840 {0x1E04,0x1E05,0x0042}, {0x1E04,0x1E05,0x0042},
00841 {0x1E06,0x1E07,0x0042}, {0x1E06,0x1E07,0x0042},
00842 {0x1E08,0x1E09,0x0043}, {0x1E08,0x1E09,0x0043},
00843 {0x1E0A,0x1E0B,0x0044}, {0x1E0A,0x1E0B,0x0044},
00844 {0x1E0C,0x1E0D,0x0044}, {0x1E0C,0x1E0D,0x0044},
00845 {0x1E0E,0x1E0F,0x0044}, {0x1E0E,0x1E0F,0x0044},
00846 {0x1E10,0x1E11,0x0044}, {0x1E10,0x1E11,0x0044},
00847 {0x1E12,0x1E13,0x0044}, {0x1E12,0x1E13,0x0044},
00848 {0x1E14,0x1E15,0x0045}, {0x1E14,0x1E15,0x0045},
00849 {0x1E16,0x1E17,0x0045}, {0x1E16,0x1E17,0x0045},
00850 {0x1E18,0x1E19,0x0045}, {0x1E18,0x1E19,0x0045},
00851 {0x1E1A,0x1E1B,0x0045}, {0x1E1A,0x1E1B,0x0045},
00852 {0x1E1C,0x1E1D,0x0045}, {0x1E1C,0x1E1D,0x0045},
00853 {0x1E1E,0x1E1F,0x0046}, {0x1E1E,0x1E1F,0x0046},
00854 {0x1E20,0x1E21,0x0047}, {0x1E20,0x1E21,0x0047},
00855 {0x1E22,0x1E23,0x0048}, {0x1E22,0x1E23,0x0048},
00856 {0x1E24,0x1E25,0x0048}, {0x1E24,0x1E25,0x0048},
00857 {0x1E26,0x1E27,0x0048}, {0x1E26,0x1E27,0x0048},
00858 {0x1E28,0x1E29,0x0048}, {0x1E28,0x1E29,0x0048},
00859 {0x1E2A,0x1E2B,0x0048}, {0x1E2A,0x1E2B,0x0048},
00860 {0x1E2C,0x1E2D,0x0049}, {0x1E2C,0x1E2D,0x0049},
00861 {0x1E2E,0x1E2F,0x0049}, {0x1E2E,0x1E2F,0x0049},
00862 {0x1E30,0x1E31,0x004B}, {0x1E30,0x1E31,0x004B},
00863 {0x1E32,0x1E33,0x004B}, {0x1E32,0x1E33,0x004B},
00864 {0x1E34,0x1E35,0x004B}, {0x1E34,0x1E35,0x004B},
00865 {0x1E36,0x1E37,0x004C}, {0x1E36,0x1E37,0x004C},
00866 {0x1E38,0x1E39,0x004C}, {0x1E38,0x1E39,0x004C},
00867 {0x1E3A,0x1E3B,0x004C}, {0x1E3A,0x1E3B,0x004C},
00868 {0x1E3C,0x1E3D,0x004C}, {0x1E3C,0x1E3D,0x004C},
00869 {0x1E3E,0x1E3F,0x004D}, {0x1E3E,0x1E3F,0x004D},
00870 {0x1E40,0x1E41,0x004D}, {0x1E40,0x1E41,0x004D},
00871 {0x1E42,0x1E43,0x004D}, {0x1E42,0x1E43,0x004D},
00872 {0x1E44,0x1E45,0x004E}, {0x1E44,0x1E45,0x004E},
00873 {0x1E46,0x1E47,0x004E}, {0x1E46,0x1E47,0x004E},
00874 {0x1E48,0x1E49,0x004E}, {0x1E48,0x1E49,0x004E},
00875 {0x1E4A,0x1E4B,0x004E}, {0x1E4A,0x1E4B,0x004E},
00876 {0x1E4C,0x1E4D,0x004F}, {0x1E4C,0x1E4D,0x004F},
00877 {0x1E4E,0x1E4F,0x004F}, {0x1E4E,0x1E4F,0x004F},
00878 {0x1E50,0x1E51,0x004F}, {0x1E50,0x1E51,0x004F},
00879 {0x1E52,0x1E53,0x004F}, {0x1E52,0x1E53,0x004F},
00880 {0x1E54,0x1E55,0x0050}, {0x1E54,0x1E55,0x0050},
00881 {0x1E56,0x1E57,0x0050}, {0x1E56,0x1E57,0x0050},
00882 {0x1E58,0x1E59,0x0052}, {0x1E58,0x1E59,0x0052},
00883 {0x1E5A,0x1E5B,0x0052}, {0x1E5A,0x1E5B,0x0052},
00884 {0x1E5C,0x1E5D,0x0052}, {0x1E5C,0x1E5D,0x0052},
00885 {0x1E5E,0x1E5F,0x0052}, {0x1E5E,0x1E5F,0x0052},
00886 {0x1E60,0x1E61,0x0053}, {0x1E60,0x1E61,0x0053},
00887 {0x1E62,0x1E63,0x0053}, {0x1E62,0x1E63,0x0053},
00888 {0x1E64,0x1E65,0x0053}, {0x1E64,0x1E65,0x0053},
00889 {0x1E66,0x1E67,0x0053}, {0x1E66,0x1E67,0x0053},
00890 {0x1E68,0x1E69,0x0053}, {0x1E68,0x1E69,0x0053},
00891 {0x1E6A,0x1E6B,0x0054}, {0x1E6A,0x1E6B,0x0054},
00892 {0x1E6C,0x1E6D,0x0054}, {0x1E6C,0x1E6D,0x0054},
00893 {0x1E6E,0x1E6F,0x0054}, {0x1E6E,0x1E6F,0x0054},
00894 {0x1E70,0x1E71,0x0054}, {0x1E70,0x1E71,0x0054},
00895 {0x1E72,0x1E73,0x0055}, {0x1E72,0x1E73,0x0055},
00896 {0x1E74,0x1E75,0x0055}, {0x1E74,0x1E75,0x0055},
00897 {0x1E76,0x1E77,0x0055}, {0x1E76,0x1E77,0x0055},
00898 {0x1E78,0x1E79,0x0055}, {0x1E78,0x1E79,0x0055},
00899 {0x1E7A,0x1E7B,0x0055}, {0x1E7A,0x1E7B,0x0055},
00900 {0x1E7C,0x1E7D,0x0056}, {0x1E7C,0x1E7D,0x0056},
00901 {0x1E7E,0x1E7F,0x0056}, {0x1E7E,0x1E7F,0x0056},
00902 {0x1E80,0x1E81,0x0057}, {0x1E80,0x1E81,0x0057},
00903 {0x1E82,0x1E83,0x0057}, {0x1E82,0x1E83,0x0057},
00904 {0x1E84,0x1E85,0x0057}, {0x1E84,0x1E85,0x0057},
00905 {0x1E86,0x1E87,0x0057}, {0x1E86,0x1E87,0x0057},
00906 {0x1E88,0x1E89,0x0057}, {0x1E88,0x1E89,0x0057},
00907 {0x1E8A,0x1E8B,0x0058}, {0x1E8A,0x1E8B,0x0058},
00908 {0x1E8C,0x1E8D,0x0058}, {0x1E8C,0x1E8D,0x0058},
00909 {0x1E8E,0x1E8F,0x0059}, {0x1E8E,0x1E8F,0x0059},
00910 {0x1E90,0x1E91,0x005A}, {0x1E90,0x1E91,0x005A},
00911 {0x1E92,0x1E93,0x005A}, {0x1E92,0x1E93,0x005A},
00912 {0x1E94,0x1E95,0x005A}, {0x1E94,0x1E95,0x005A},
00913 {0x1E96,0x1E96,0x0048}, {0x1E97,0x1E97,0x0054},
00914 {0x1E98,0x1E98,0x0057}, {0x1E99,0x1E99,0x0059},
00915 {0x1E9A,0x1E9A,0x1E9A}, {0x1E60,0x1E9B,0x0053},
00916 {0x1E9C,0x1E9C,0x1E9C}, {0x1E9D,0x1E9D,0x1E9D},
00917 {0x1E9E,0x1E9E,0x1E9E}, {0x1E9F,0x1E9F,0x1E9F},
00918 {0x1EA0,0x1EA1,0x0041}, {0x1EA0,0x1EA1,0x0041},
00919 {0x1EA2,0x1EA3,0x0041}, {0x1EA2,0x1EA3,0x0041},
00920 {0x1EA4,0x1EA5,0x0041}, {0x1EA4,0x1EA5,0x0041},
00921 {0x1EA6,0x1EA7,0x0041}, {0x1EA6,0x1EA7,0x0041},
00922 {0x1EA8,0x1EA9,0x0041}, {0x1EA8,0x1EA9,0x0041},
00923 {0x1EAA,0x1EAB,0x0041}, {0x1EAA,0x1EAB,0x0041},
00924 {0x1EAC,0x1EAD,0x0041}, {0x1EAC,0x1EAD,0x0041},
00925 {0x1EAE,0x1EAF,0x0041}, {0x1EAE,0x1EAF,0x0041},
00926 {0x1EB0,0x1EB1,0x0041}, {0x1EB0,0x1EB1,0x0041},
00927 {0x1EB2,0x1EB3,0x0041}, {0x1EB2,0x1EB3,0x0041},
00928 {0x1EB4,0x1EB5,0x0041}, {0x1EB4,0x1EB5,0x0041},
00929 {0x1EB6,0x1EB7,0x0041}, {0x1EB6,0x1EB7,0x0041},
00930 {0x1EB8,0x1EB9,0x0045}, {0x1EB8,0x1EB9,0x0045},
00931 {0x1EBA,0x1EBB,0x0045}, {0x1EBA,0x1EBB,0x0045},
00932 {0x1EBC,0x1EBD,0x0045}, {0x1EBC,0x1EBD,0x0045},
00933 {0x1EBE,0x1EBF,0x0045}, {0x1EBE,0x1EBF,0x0045},
00934 {0x1EC0,0x1EC1,0x0045}, {0x1EC0,0x1EC1,0x0045},
00935 {0x1EC2,0x1EC3,0x0045}, {0x1EC2,0x1EC3,0x0045},
00936 {0x1EC4,0x1EC5,0x0045}, {0x1EC4,0x1EC5,0x0045},
00937 {0x1EC6,0x1EC7,0x0045}, {0x1EC6,0x1EC7,0x0045},
00938 {0x1EC8,0x1EC9,0x0049}, {0x1EC8,0x1EC9,0x0049},
00939 {0x1ECA,0x1ECB,0x0049}, {0x1ECA,0x1ECB,0x0049},
00940 {0x1ECC,0x1ECD,0x004F}, {0x1ECC,0x1ECD,0x004F},
00941 {0x1ECE,0x1ECF,0x004F}, {0x1ECE,0x1ECF,0x004F},
00942 {0x1ED0,0x1ED1,0x004F}, {0x1ED0,0x1ED1,0x004F},
00943 {0x1ED2,0x1ED3,0x004F}, {0x1ED2,0x1ED3,0x004F},
00944 {0x1ED4,0x1ED5,0x004F}, {0x1ED4,0x1ED5,0x004F},
00945 {0x1ED6,0x1ED7,0x004F}, {0x1ED6,0x1ED7,0x004F},
00946 {0x1ED8,0x1ED9,0x004F}, {0x1ED8,0x1ED9,0x004F},
00947 {0x1EDA,0x1EDB,0x004F}, {0x1EDA,0x1EDB,0x004F},
00948 {0x1EDC,0x1EDD,0x004F}, {0x1EDC,0x1EDD,0x004F},
00949 {0x1EDE,0x1EDF,0x004F}, {0x1EDE,0x1EDF,0x004F},
00950 {0x1EE0,0x1EE1,0x004F}, {0x1EE0,0x1EE1,0x004F},
00951 {0x1EE2,0x1EE3,0x004F}, {0x1EE2,0x1EE3,0x004F},
00952 {0x1EE4,0x1EE5,0x0055}, {0x1EE4,0x1EE5,0x0055},
00953 {0x1EE6,0x1EE7,0x0055}, {0x1EE6,0x1EE7,0x0055},
00954 {0x1EE8,0x1EE9,0x0055}, {0x1EE8,0x1EE9,0x0055},
00955 {0x1EEA,0x1EEB,0x0055}, {0x1EEA,0x1EEB,0x0055},
00956 {0x1EEC,0x1EED,0x0055}, {0x1EEC,0x1EED,0x0055},
00957 {0x1EEE,0x1EEF,0x0055}, {0x1EEE,0x1EEF,0x0055},
00958 {0x1EF0,0x1EF1,0x0055}, {0x1EF0,0x1EF1,0x0055},
00959 {0x1EF2,0x1EF3,0x0059}, {0x1EF2,0x1EF3,0x0059},
00960 {0x1EF4,0x1EF5,0x0059}, {0x1EF4,0x1EF5,0x0059},
00961 {0x1EF6,0x1EF7,0x0059}, {0x1EF6,0x1EF7,0x0059},
00962 {0x1EF8,0x1EF9,0x0059}, {0x1EF8,0x1EF9,0x0059},
00963 {0x1EFA,0x1EFA,0x1EFA}, {0x1EFB,0x1EFB,0x1EFB},
00964 {0x1EFC,0x1EFC,0x1EFC}, {0x1EFD,0x1EFD,0x1EFD},
00965 {0x1EFE,0x1EFE,0x1EFE}, {0x1EFF,0x1EFF,0x1EFF}
00966 };
00967
00968 static MY_UNICASE_INFO plane1F[]={
00969 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
00970 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
00971 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
00972 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
00973 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
00974 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
00975 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
00976 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
00977 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
00978 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
00979 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
00980 {0x1F16,0x1F16,0x1F16}, {0x1F17,0x1F17,0x1F17},
00981 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
00982 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
00983 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
00984 {0x1F1E,0x1F1E,0x1F1E}, {0x1F1F,0x1F1F,0x1F1F},
00985 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
00986 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
00987 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
00988 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
00989 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
00990 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
00991 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
00992 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
00993 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
00994 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
00995 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
00996 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
00997 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
00998 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
00999 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
01000 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
01001 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
01002 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
01003 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
01004 {0x1F46,0x1F46,0x1F46}, {0x1F47,0x1F47,0x1F47},
01005 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
01006 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
01007 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
01008 {0x1F4E,0x1F4E,0x1F4E}, {0x1F4F,0x1F4F,0x1F4F},
01009 {0x1F50,0x1F50,0x03A5}, {0x1F59,0x1F51,0x03A5},
01010 {0x1F52,0x1F52,0x03A5}, {0x1F5B,0x1F53,0x03A5},
01011 {0x1F54,0x1F54,0x03A5}, {0x1F5D,0x1F55,0x03A5},
01012 {0x1F56,0x1F56,0x03A5}, {0x1F5F,0x1F57,0x03A5},
01013 {0x1F58,0x1F58,0x1F58}, {0x1F59,0x1F51,0x03A5},
01014 {0x1F5A,0x1F5A,0x1F5A}, {0x1F5B,0x1F53,0x03A5},
01015 {0x1F5C,0x1F5C,0x1F5C}, {0x1F5D,0x1F55,0x03A5},
01016 {0x1F5E,0x1F5E,0x1F5E}, {0x1F5F,0x1F57,0x03A5},
01017 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
01018 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
01019 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
01020 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
01021 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
01022 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
01023 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
01024 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
01025 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
01026 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
01027 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
01028 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
01029 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
01030 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
01031 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
01032 {0x1F7E,0x1F7E,0x1F7E}, {0x1F7F,0x1F7F,0x1F7F},
01033 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
01034 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
01035 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
01036 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
01037 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
01038 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
01039 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
01040 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
01041 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
01042 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
01043 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
01044 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
01045 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
01046 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
01047 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
01048 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
01049 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
01050 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
01051 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
01052 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
01053 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
01054 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
01055 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
01056 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
01057 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
01058 {0x1FB2,0x1FB2,0x0391}, {0x1FBC,0x1FB3,0x0391},
01059 {0x1FB4,0x1FB4,0x0391}, {0x1FB5,0x1FB5,0x1FB5},
01060 {0x1FB6,0x1FB6,0x0391}, {0x1FB7,0x1FB7,0x0391},
01061 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
01062 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
01063 {0x1FBC,0x1FB3,0x0391}, {0x1FBD,0x1FBD,0x1FBD},
01064 {0x0399,0x1FBE,0x0399}, {0x1FBF,0x1FBF,0x1FBF},
01065 {0x1FC0,0x1FC0,0x1FC0}, {0x1FC1,0x1FC1,0x1FC1},
01066 {0x1FC2,0x1FC2,0x0397}, {0x1FCC,0x1FC3,0x0397},
01067 {0x1FC4,0x1FC4,0x0397}, {0x1FC5,0x1FC5,0x1FC5},
01068 {0x1FC6,0x1FC6,0x0397}, {0x1FC7,0x1FC7,0x0397},
01069 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
01070 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
01071 {0x1FCC,0x1FC3,0x0397}, {0x1FCD,0x1FCD,0x1FCD},
01072 {0x1FCE,0x1FCE,0x1FCE}, {0x1FCF,0x1FCF,0x1FCF},
01073 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
01074 {0x1FD2,0x1FD2,0x0399}, {0x1FD3,0x1FD3,0x1FD3},
01075 {0x1FD4,0x1FD4,0x1FD4}, {0x1FD5,0x1FD5,0x1FD5},
01076 {0x1FD6,0x1FD6,0x0399}, {0x1FD7,0x1FD7,0x0399},
01077 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
01078 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
01079 {0x1FDC,0x1FDC,0x1FDC}, {0x1FDD,0x1FDD,0x1FDD},
01080 {0x1FDE,0x1FDE,0x1FDE}, {0x1FDF,0x1FDF,0x1FDF},
01081 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
01082 {0x1FE2,0x1FE2,0x03A5}, {0x1FE3,0x1FE3,0x1FE3},
01083 {0x1FE4,0x1FE4,0x03A1}, {0x1FEC,0x1FE5,0x03A1},
01084 {0x1FE6,0x1FE6,0x03A5}, {0x1FE7,0x1FE7,0x03A5},
01085 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
01086 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
01087 {0x1FEC,0x1FE5,0x03A1}, {0x1FED,0x1FED,0x1FED},
01088 {0x1FEE,0x1FEE,0x1FEE}, {0x1FEF,0x1FEF,0x1FEF},
01089 {0x1FF0,0x1FF0,0x1FF0}, {0x1FF1,0x1FF1,0x1FF1},
01090 {0x1FF2,0x1FF2,0x03A9}, {0x1FFC,0x1FF3,0x03A9},
01091 {0x1FF4,0x1FF4,0x03A9}, {0x1FF5,0x1FF5,0x1FF5},
01092 {0x1FF6,0x1FF6,0x03A9}, {0x1FF7,0x1FF7,0x03A9},
01093 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
01094 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
01095 {0x1FFC,0x1FF3,0x03A9}, {0x1FFD,0x1FFD,0x1FFD},
01096 {0x1FFE,0x1FFE,0x1FFE}, {0x1FFF,0x1FFF,0x1FFF}
01097 };
01098
01099 static MY_UNICASE_INFO plane21[]={
01100 {0x2100,0x2100,0x2100}, {0x2101,0x2101,0x2101},
01101 {0x2102,0x2102,0x2102}, {0x2103,0x2103,0x2103},
01102 {0x2104,0x2104,0x2104}, {0x2105,0x2105,0x2105},
01103 {0x2106,0x2106,0x2106}, {0x2107,0x2107,0x2107},
01104 {0x2108,0x2108,0x2108}, {0x2109,0x2109,0x2109},
01105 {0x210A,0x210A,0x210A}, {0x210B,0x210B,0x210B},
01106 {0x210C,0x210C,0x210C}, {0x210D,0x210D,0x210D},
01107 {0x210E,0x210E,0x210E}, {0x210F,0x210F,0x210F},
01108 {0x2110,0x2110,0x2110}, {0x2111,0x2111,0x2111},
01109 {0x2112,0x2112,0x2112}, {0x2113,0x2113,0x2113},
01110 {0x2114,0x2114,0x2114}, {0x2115,0x2115,0x2115},
01111 {0x2116,0x2116,0x2116}, {0x2117,0x2117,0x2117},
01112 {0x2118,0x2118,0x2118}, {0x2119,0x2119,0x2119},
01113 {0x211A,0x211A,0x211A}, {0x211B,0x211B,0x211B},
01114 {0x211C,0x211C,0x211C}, {0x211D,0x211D,0x211D},
01115 {0x211E,0x211E,0x211E}, {0x211F,0x211F,0x211F},
01116 {0x2120,0x2120,0x2120}, {0x2121,0x2121,0x2121},
01117 {0x2122,0x2122,0x2122}, {0x2123,0x2123,0x2123},
01118 {0x2124,0x2124,0x2124}, {0x2125,0x2125,0x2125},
01119 {0x2126,0x03C9,0x2126}, {0x2127,0x2127,0x2127},
01120 {0x2128,0x2128,0x2128}, {0x2129,0x2129,0x2129},
01121 {0x212A,0x006B,0x212A}, {0x212B,0x00E5,0x212B},
01122 {0x212C,0x212C,0x212C}, {0x212D,0x212D,0x212D},
01123 {0x212E,0x212E,0x212E}, {0x212F,0x212F,0x212F},
01124 {0x2130,0x2130,0x2130}, {0x2131,0x2131,0x2131},
01125 {0x2132,0x2132,0x2132}, {0x2133,0x2133,0x2133},
01126 {0x2134,0x2134,0x2134}, {0x2135,0x2135,0x2135},
01127 {0x2136,0x2136,0x2136}, {0x2137,0x2137,0x2137},
01128 {0x2138,0x2138,0x2138}, {0x2139,0x2139,0x2139},
01129 {0x213A,0x213A,0x213A}, {0x213B,0x213B,0x213B},
01130 {0x213C,0x213C,0x213C}, {0x213D,0x213D,0x213D},
01131 {0x213E,0x213E,0x213E}, {0x213F,0x213F,0x213F},
01132 {0x2140,0x2140,0x2140}, {0x2141,0x2141,0x2141},
01133 {0x2142,0x2142,0x2142}, {0x2143,0x2143,0x2143},
01134 {0x2144,0x2144,0x2144}, {0x2145,0x2145,0x2145},
01135 {0x2146,0x2146,0x2146}, {0x2147,0x2147,0x2147},
01136 {0x2148,0x2148,0x2148}, {0x2149,0x2149,0x2149},
01137 {0x214A,0x214A,0x214A}, {0x214B,0x214B,0x214B},
01138 {0x214C,0x214C,0x214C}, {0x214D,0x214D,0x214D},
01139 {0x214E,0x214E,0x214E}, {0x214F,0x214F,0x214F},
01140 {0x2150,0x2150,0x2150}, {0x2151,0x2151,0x2151},
01141 {0x2152,0x2152,0x2152}, {0x2153,0x2153,0x2153},
01142 {0x2154,0x2154,0x2154}, {0x2155,0x2155,0x2155},
01143 {0x2156,0x2156,0x2156}, {0x2157,0x2157,0x2157},
01144 {0x2158,0x2158,0x2158}, {0x2159,0x2159,0x2159},
01145 {0x215A,0x215A,0x215A}, {0x215B,0x215B,0x215B},
01146 {0x215C,0x215C,0x215C}, {0x215D,0x215D,0x215D},
01147 {0x215E,0x215E,0x215E}, {0x215F,0x215F,0x215F},
01148 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
01149 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
01150 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
01151 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
01152 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
01153 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
01154 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
01155 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
01156 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
01157 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
01158 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
01159 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
01160 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
01161 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
01162 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
01163 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
01164 {0x2180,0x2180,0x2180}, {0x2181,0x2181,0x2181},
01165 {0x2182,0x2182,0x2182}, {0x2183,0x2183,0x2183},
01166 {0x2184,0x2184,0x2184}, {0x2185,0x2185,0x2185},
01167 {0x2186,0x2186,0x2186}, {0x2187,0x2187,0x2187},
01168 {0x2188,0x2188,0x2188}, {0x2189,0x2189,0x2189},
01169 {0x218A,0x218A,0x218A}, {0x218B,0x218B,0x218B},
01170 {0x218C,0x218C,0x218C}, {0x218D,0x218D,0x218D},
01171 {0x218E,0x218E,0x218E}, {0x218F,0x218F,0x218F},
01172 {0x2190,0x2190,0x2190}, {0x2191,0x2191,0x2191},
01173 {0x2192,0x2192,0x2192}, {0x2193,0x2193,0x2193},
01174 {0x2194,0x2194,0x2194}, {0x2195,0x2195,0x2195},
01175 {0x2196,0x2196,0x2196}, {0x2197,0x2197,0x2197},
01176 {0x2198,0x2198,0x2198}, {0x2199,0x2199,0x2199},
01177 {0x219A,0x219A,0x219A}, {0x219B,0x219B,0x219B},
01178 {0x219C,0x219C,0x219C}, {0x219D,0x219D,0x219D},
01179 {0x219E,0x219E,0x219E}, {0x219F,0x219F,0x219F},
01180 {0x21A0,0x21A0,0x21A0}, {0x21A1,0x21A1,0x21A1},
01181 {0x21A2,0x21A2,0x21A2}, {0x21A3,0x21A3,0x21A3},
01182 {0x21A4,0x21A4,0x21A4}, {0x21A5,0x21A5,0x21A5},
01183 {0x21A6,0x21A6,0x21A6}, {0x21A7,0x21A7,0x21A7},
01184 {0x21A8,0x21A8,0x21A8}, {0x21A9,0x21A9,0x21A9},
01185 {0x21AA,0x21AA,0x21AA}, {0x21AB,0x21AB,0x21AB},
01186 {0x21AC,0x21AC,0x21AC}, {0x21AD,0x21AD,0x21AD},
01187 {0x21AE,0x21AE,0x21AE}, {0x21AF,0x21AF,0x21AF},
01188 {0x21B0,0x21B0,0x21B0}, {0x21B1,0x21B1,0x21B1},
01189 {0x21B2,0x21B2,0x21B2}, {0x21B3,0x21B3,0x21B3},
01190 {0x21B4,0x21B4,0x21B4}, {0x21B5,0x21B5,0x21B5},
01191 {0x21B6,0x21B6,0x21B6}, {0x21B7,0x21B7,0x21B7},
01192 {0x21B8,0x21B8,0x21B8}, {0x21B9,0x21B9,0x21B9},
01193 {0x21BA,0x21BA,0x21BA}, {0x21BB,0x21BB,0x21BB},
01194 {0x21BC,0x21BC,0x21BC}, {0x21BD,0x21BD,0x21BD},
01195 {0x21BE,0x21BE,0x21BE}, {0x21BF,0x21BF,0x21BF},
01196 {0x21C0,0x21C0,0x21C0}, {0x21C1,0x21C1,0x21C1},
01197 {0x21C2,0x21C2,0x21C2}, {0x21C3,0x21C3,0x21C3},
01198 {0x21C4,0x21C4,0x21C4}, {0x21C5,0x21C5,0x21C5},
01199 {0x21C6,0x21C6,0x21C6}, {0x21C7,0x21C7,0x21C7},
01200 {0x21C8,0x21C8,0x21C8}, {0x21C9,0x21C9,0x21C9},
01201 {0x21CA,0x21CA,0x21CA}, {0x21CB,0x21CB,0x21CB},
01202 {0x21CC,0x21CC,0x21CC}, {0x21CD,0x21CD,0x21CD},
01203 {0x21CE,0x21CE,0x21CE}, {0x21CF,0x21CF,0x21CF},
01204 {0x21D0,0x21D0,0x21D0}, {0x21D1,0x21D1,0x21D1},
01205 {0x21D2,0x21D2,0x21D2}, {0x21D3,0x21D3,0x21D3},
01206 {0x21D4,0x21D4,0x21D4}, {0x21D5,0x21D5,0x21D5},
01207 {0x21D6,0x21D6,0x21D6}, {0x21D7,0x21D7,0x21D7},
01208 {0x21D8,0x21D8,0x21D8}, {0x21D9,0x21D9,0x21D9},
01209 {0x21DA,0x21DA,0x21DA}, {0x21DB,0x21DB,0x21DB},
01210 {0x21DC,0x21DC,0x21DC}, {0x21DD,0x21DD,0x21DD},
01211 {0x21DE,0x21DE,0x21DE}, {0x21DF,0x21DF,0x21DF},
01212 {0x21E0,0x21E0,0x21E0}, {0x21E1,0x21E1,0x21E1},
01213 {0x21E2,0x21E2,0x21E2}, {0x21E3,0x21E3,0x21E3},
01214 {0x21E4,0x21E4,0x21E4}, {0x21E5,0x21E5,0x21E5},
01215 {0x21E6,0x21E6,0x21E6}, {0x21E7,0x21E7,0x21E7},
01216 {0x21E8,0x21E8,0x21E8}, {0x21E9,0x21E9,0x21E9},
01217 {0x21EA,0x21EA,0x21EA}, {0x21EB,0x21EB,0x21EB},
01218 {0x21EC,0x21EC,0x21EC}, {0x21ED,0x21ED,0x21ED},
01219 {0x21EE,0x21EE,0x21EE}, {0x21EF,0x21EF,0x21EF},
01220 {0x21F0,0x21F0,0x21F0}, {0x21F1,0x21F1,0x21F1},
01221 {0x21F2,0x21F2,0x21F2}, {0x21F3,0x21F3,0x21F3},
01222 {0x21F4,0x21F4,0x21F4}, {0x21F5,0x21F5,0x21F5},
01223 {0x21F6,0x21F6,0x21F6}, {0x21F7,0x21F7,0x21F7},
01224 {0x21F8,0x21F8,0x21F8}, {0x21F9,0x21F9,0x21F9},
01225 {0x21FA,0x21FA,0x21FA}, {0x21FB,0x21FB,0x21FB},
01226 {0x21FC,0x21FC,0x21FC}, {0x21FD,0x21FD,0x21FD},
01227 {0x21FE,0x21FE,0x21FE}, {0x21FF,0x21FF,0x21FF}
01228 };
01229
01230 static MY_UNICASE_INFO plane24[]={
01231 {0x2400,0x2400,0x2400}, {0x2401,0x2401,0x2401},
01232 {0x2402,0x2402,0x2402}, {0x2403,0x2403,0x2403},
01233 {0x2404,0x2404,0x2404}, {0x2405,0x2405,0x2405},
01234 {0x2406,0x2406,0x2406}, {0x2407,0x2407,0x2407},
01235 {0x2408,0x2408,0x2408}, {0x2409,0x2409,0x2409},
01236 {0x240A,0x240A,0x240A}, {0x240B,0x240B,0x240B},
01237 {0x240C,0x240C,0x240C}, {0x240D,0x240D,0x240D},
01238 {0x240E,0x240E,0x240E}, {0x240F,0x240F,0x240F},
01239 {0x2410,0x2410,0x2410}, {0x2411,0x2411,0x2411},
01240 {0x2412,0x2412,0x2412}, {0x2413,0x2413,0x2413},
01241 {0x2414,0x2414,0x2414}, {0x2415,0x2415,0x2415},
01242 {0x2416,0x2416,0x2416}, {0x2417,0x2417,0x2417},
01243 {0x2418,0x2418,0x2418}, {0x2419,0x2419,0x2419},
01244 {0x241A,0x241A,0x241A}, {0x241B,0x241B,0x241B},
01245 {0x241C,0x241C,0x241C}, {0x241D,0x241D,0x241D},
01246 {0x241E,0x241E,0x241E}, {0x241F,0x241F,0x241F},
01247 {0x2420,0x2420,0x2420}, {0x2421,0x2421,0x2421},
01248 {0x2422,0x2422,0x2422}, {0x2423,0x2423,0x2423},
01249 {0x2424,0x2424,0x2424}, {0x2425,0x2425,0x2425},
01250 {0x2426,0x2426,0x2426}, {0x2427,0x2427,0x2427},
01251 {0x2428,0x2428,0x2428}, {0x2429,0x2429,0x2429},
01252 {0x242A,0x242A,0x242A}, {0x242B,0x242B,0x242B},
01253 {0x242C,0x242C,0x242C}, {0x242D,0x242D,0x242D},
01254 {0x242E,0x242E,0x242E}, {0x242F,0x242F,0x242F},
01255 {0x2430,0x2430,0x2430}, {0x2431,0x2431,0x2431},
01256 {0x2432,0x2432,0x2432}, {0x2433,0x2433,0x2433},
01257 {0x2434,0x2434,0x2434}, {0x2435,0x2435,0x2435},
01258 {0x2436,0x2436,0x2436}, {0x2437,0x2437,0x2437},
01259 {0x2438,0x2438,0x2438}, {0x2439,0x2439,0x2439},
01260 {0x243A,0x243A,0x243A}, {0x243B,0x243B,0x243B},
01261 {0x243C,0x243C,0x243C}, {0x243D,0x243D,0x243D},
01262 {0x243E,0x243E,0x243E}, {0x243F,0x243F,0x243F},
01263 {0x2440,0x2440,0x2440}, {0x2441,0x2441,0x2441},
01264 {0x2442,0x2442,0x2442}, {0x2443,0x2443,0x2443},
01265 {0x2444,0x2444,0x2444}, {0x2445,0x2445,0x2445},
01266 {0x2446,0x2446,0x2446}, {0x2447,0x2447,0x2447},
01267 {0x2448,0x2448,0x2448}, {0x2449,0x2449,0x2449},
01268 {0x244A,0x244A,0x244A}, {0x244B,0x244B,0x244B},
01269 {0x244C,0x244C,0x244C}, {0x244D,0x244D,0x244D},
01270 {0x244E,0x244E,0x244E}, {0x244F,0x244F,0x244F},
01271 {0x2450,0x2450,0x2450}, {0x2451,0x2451,0x2451},
01272 {0x2452,0x2452,0x2452}, {0x2453,0x2453,0x2453},
01273 {0x2454,0x2454,0x2454}, {0x2455,0x2455,0x2455},
01274 {0x2456,0x2456,0x2456}, {0x2457,0x2457,0x2457},
01275 {0x2458,0x2458,0x2458}, {0x2459,0x2459,0x2459},
01276 {0x245A,0x245A,0x245A}, {0x245B,0x245B,0x245B},
01277 {0x245C,0x245C,0x245C}, {0x245D,0x245D,0x245D},
01278 {0x245E,0x245E,0x245E}, {0x245F,0x245F,0x245F},
01279 {0x2460,0x2460,0x2460}, {0x2461,0x2461,0x2461},
01280 {0x2462,0x2462,0x2462}, {0x2463,0x2463,0x2463},
01281 {0x2464,0x2464,0x2464}, {0x2465,0x2465,0x2465},
01282 {0x2466,0x2466,0x2466}, {0x2467,0x2467,0x2467},
01283 {0x2468,0x2468,0x2468}, {0x2469,0x2469,0x2469},
01284 {0x246A,0x246A,0x246A}, {0x246B,0x246B,0x246B},
01285 {0x246C,0x246C,0x246C}, {0x246D,0x246D,0x246D},
01286 {0x246E,0x246E,0x246E}, {0x246F,0x246F,0x246F},
01287 {0x2470,0x2470,0x2470}, {0x2471,0x2471,0x2471},
01288 {0x2472,0x2472,0x2472}, {0x2473,0x2473,0x2473},
01289 {0x2474,0x2474,0x2474}, {0x2475,0x2475,0x2475},
01290 {0x2476,0x2476,0x2476}, {0x2477,0x2477,0x2477},
01291 {0x2478,0x2478,0x2478}, {0x2479,0x2479,0x2479},
01292 {0x247A,0x247A,0x247A}, {0x247B,0x247B,0x247B},
01293 {0x247C,0x247C,0x247C}, {0x247D,0x247D,0x247D},
01294 {0x247E,0x247E,0x247E}, {0x247F,0x247F,0x247F},
01295 {0x2480,0x2480,0x2480}, {0x2481,0x2481,0x2481},
01296 {0x2482,0x2482,0x2482}, {0x2483,0x2483,0x2483},
01297 {0x2484,0x2484,0x2484}, {0x2485,0x2485,0x2485},
01298 {0x2486,0x2486,0x2486}, {0x2487,0x2487,0x2487},
01299 {0x2488,0x2488,0x2488}, {0x2489,0x2489,0x2489},
01300 {0x248A,0x248A,0x248A}, {0x248B,0x248B,0x248B},
01301 {0x248C,0x248C,0x248C}, {0x248D,0x248D,0x248D},
01302 {0x248E,0x248E,0x248E}, {0x248F,0x248F,0x248F},
01303 {0x2490,0x2490,0x2490}, {0x2491,0x2491,0x2491},
01304 {0x2492,0x2492,0x2492}, {0x2493,0x2493,0x2493},
01305 {0x2494,0x2494,0x2494}, {0x2495,0x2495,0x2495},
01306 {0x2496,0x2496,0x2496}, {0x2497,0x2497,0x2497},
01307 {0x2498,0x2498,0x2498}, {0x2499,0x2499,0x2499},
01308 {0x249A,0x249A,0x249A}, {0x249B,0x249B,0x249B},
01309 {0x249C,0x249C,0x249C}, {0x249D,0x249D,0x249D},
01310 {0x249E,0x249E,0x249E}, {0x249F,0x249F,0x249F},
01311 {0x24A0,0x24A0,0x24A0}, {0x24A1,0x24A1,0x24A1},
01312 {0x24A2,0x24A2,0x24A2}, {0x24A3,0x24A3,0x24A3},
01313 {0x24A4,0x24A4,0x24A4}, {0x24A5,0x24A5,0x24A5},
01314 {0x24A6,0x24A6,0x24A6}, {0x24A7,0x24A7,0x24A7},
01315 {0x24A8,0x24A8,0x24A8}, {0x24A9,0x24A9,0x24A9},
01316 {0x24AA,0x24AA,0x24AA}, {0x24AB,0x24AB,0x24AB},
01317 {0x24AC,0x24AC,0x24AC}, {0x24AD,0x24AD,0x24AD},
01318 {0x24AE,0x24AE,0x24AE}, {0x24AF,0x24AF,0x24AF},
01319 {0x24B0,0x24B0,0x24B0}, {0x24B1,0x24B1,0x24B1},
01320 {0x24B2,0x24B2,0x24B2}, {0x24B3,0x24B3,0x24B3},
01321 {0x24B4,0x24B4,0x24B4}, {0x24B5,0x24B5,0x24B5},
01322 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
01323 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
01324 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
01325 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
01326 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
01327 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
01328 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
01329 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
01330 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
01331 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
01332 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
01333 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
01334 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
01335 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
01336 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
01337 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
01338 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
01339 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
01340 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
01341 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
01342 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
01343 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
01344 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
01345 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
01346 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
01347 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
01348 {0x24EA,0x24EA,0x24EA}, {0x24EB,0x24EB,0x24EB},
01349 {0x24EC,0x24EC,0x24EC}, {0x24ED,0x24ED,0x24ED},
01350 {0x24EE,0x24EE,0x24EE}, {0x24EF,0x24EF,0x24EF},
01351 {0x24F0,0x24F0,0x24F0}, {0x24F1,0x24F1,0x24F1},
01352 {0x24F2,0x24F2,0x24F2}, {0x24F3,0x24F3,0x24F3},
01353 {0x24F4,0x24F4,0x24F4}, {0x24F5,0x24F5,0x24F5},
01354 {0x24F6,0x24F6,0x24F6}, {0x24F7,0x24F7,0x24F7},
01355 {0x24F8,0x24F8,0x24F8}, {0x24F9,0x24F9,0x24F9},
01356 {0x24FA,0x24FA,0x24FA}, {0x24FB,0x24FB,0x24FB},
01357 {0x24FC,0x24FC,0x24FC}, {0x24FD,0x24FD,0x24FD},
01358 {0x24FE,0x24FE,0x24FE}, {0x24FF,0x24FF,0x24FF}
01359 };
01360
01361 static MY_UNICASE_INFO planeFF[]={
01362 {0xFF00,0xFF00,0xFF00}, {0xFF01,0xFF01,0xFF01},
01363 {0xFF02,0xFF02,0xFF02}, {0xFF03,0xFF03,0xFF03},
01364 {0xFF04,0xFF04,0xFF04}, {0xFF05,0xFF05,0xFF05},
01365 {0xFF06,0xFF06,0xFF06}, {0xFF07,0xFF07,0xFF07},
01366 {0xFF08,0xFF08,0xFF08}, {0xFF09,0xFF09,0xFF09},
01367 {0xFF0A,0xFF0A,0xFF0A}, {0xFF0B,0xFF0B,0xFF0B},
01368 {0xFF0C,0xFF0C,0xFF0C}, {0xFF0D,0xFF0D,0xFF0D},
01369 {0xFF0E,0xFF0E,0xFF0E}, {0xFF0F,0xFF0F,0xFF0F},
01370 {0xFF10,0xFF10,0xFF10}, {0xFF11,0xFF11,0xFF11},
01371 {0xFF12,0xFF12,0xFF12}, {0xFF13,0xFF13,0xFF13},
01372 {0xFF14,0xFF14,0xFF14}, {0xFF15,0xFF15,0xFF15},
01373 {0xFF16,0xFF16,0xFF16}, {0xFF17,0xFF17,0xFF17},
01374 {0xFF18,0xFF18,0xFF18}, {0xFF19,0xFF19,0xFF19},
01375 {0xFF1A,0xFF1A,0xFF1A}, {0xFF1B,0xFF1B,0xFF1B},
01376 {0xFF1C,0xFF1C,0xFF1C}, {0xFF1D,0xFF1D,0xFF1D},
01377 {0xFF1E,0xFF1E,0xFF1E}, {0xFF1F,0xFF1F,0xFF1F},
01378 {0xFF20,0xFF20,0xFF20}, {0xFF21,0xFF41,0xFF21},
01379 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
01380 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
01381 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
01382 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
01383 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
01384 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
01385 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
01386 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
01387 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
01388 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
01389 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
01390 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
01391 {0xFF3A,0xFF5A,0xFF3A}, {0xFF3B,0xFF3B,0xFF3B},
01392 {0xFF3C,0xFF3C,0xFF3C}, {0xFF3D,0xFF3D,0xFF3D},
01393 {0xFF3E,0xFF3E,0xFF3E}, {0xFF3F,0xFF3F,0xFF3F},
01394 {0xFF40,0xFF40,0xFF40}, {0xFF21,0xFF41,0xFF21},
01395 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
01396 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
01397 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
01398 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
01399 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
01400 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
01401 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
01402 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
01403 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
01404 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
01405 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
01406 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
01407 {0xFF3A,0xFF5A,0xFF3A}, {0xFF5B,0xFF5B,0xFF5B},
01408 {0xFF5C,0xFF5C,0xFF5C}, {0xFF5D,0xFF5D,0xFF5D},
01409 {0xFF5E,0xFF5E,0xFF5E}, {0xFF5F,0xFF5F,0xFF5F},
01410 {0xFF60,0xFF60,0xFF60}, {0xFF61,0xFF61,0xFF61},
01411 {0xFF62,0xFF62,0xFF62}, {0xFF63,0xFF63,0xFF63},
01412 {0xFF64,0xFF64,0xFF64}, {0xFF65,0xFF65,0xFF65},
01413 {0xFF66,0xFF66,0xFF66}, {0xFF67,0xFF67,0xFF67},
01414 {0xFF68,0xFF68,0xFF68}, {0xFF69,0xFF69,0xFF69},
01415 {0xFF6A,0xFF6A,0xFF6A}, {0xFF6B,0xFF6B,0xFF6B},
01416 {0xFF6C,0xFF6C,0xFF6C}, {0xFF6D,0xFF6D,0xFF6D},
01417 {0xFF6E,0xFF6E,0xFF6E}, {0xFF6F,0xFF6F,0xFF6F},
01418 {0xFF70,0xFF70,0xFF70}, {0xFF71,0xFF71,0xFF71},
01419 {0xFF72,0xFF72,0xFF72}, {0xFF73,0xFF73,0xFF73},
01420 {0xFF74,0xFF74,0xFF74}, {0xFF75,0xFF75,0xFF75},
01421 {0xFF76,0xFF76,0xFF76}, {0xFF77,0xFF77,0xFF77},
01422 {0xFF78,0xFF78,0xFF78}, {0xFF79,0xFF79,0xFF79},
01423 {0xFF7A,0xFF7A,0xFF7A}, {0xFF7B,0xFF7B,0xFF7B},
01424 {0xFF7C,0xFF7C,0xFF7C}, {0xFF7D,0xFF7D,0xFF7D},
01425 {0xFF7E,0xFF7E,0xFF7E}, {0xFF7F,0xFF7F,0xFF7F},
01426 {0xFF80,0xFF80,0xFF80}, {0xFF81,0xFF81,0xFF81},
01427 {0xFF82,0xFF82,0xFF82}, {0xFF83,0xFF83,0xFF83},
01428 {0xFF84,0xFF84,0xFF84}, {0xFF85,0xFF85,0xFF85},
01429 {0xFF86,0xFF86,0xFF86}, {0xFF87,0xFF87,0xFF87},
01430 {0xFF88,0xFF88,0xFF88}, {0xFF89,0xFF89,0xFF89},
01431 {0xFF8A,0xFF8A,0xFF8A}, {0xFF8B,0xFF8B,0xFF8B},
01432 {0xFF8C,0xFF8C,0xFF8C}, {0xFF8D,0xFF8D,0xFF8D},
01433 {0xFF8E,0xFF8E,0xFF8E}, {0xFF8F,0xFF8F,0xFF8F},
01434 {0xFF90,0xFF90,0xFF90}, {0xFF91,0xFF91,0xFF91},
01435 {0xFF92,0xFF92,0xFF92}, {0xFF93,0xFF93,0xFF93},
01436 {0xFF94,0xFF94,0xFF94}, {0xFF95,0xFF95,0xFF95},
01437 {0xFF96,0xFF96,0xFF96}, {0xFF97,0xFF97,0xFF97},
01438 {0xFF98,0xFF98,0xFF98}, {0xFF99,0xFF99,0xFF99},
01439 {0xFF9A,0xFF9A,0xFF9A}, {0xFF9B,0xFF9B,0xFF9B},
01440 {0xFF9C,0xFF9C,0xFF9C}, {0xFF9D,0xFF9D,0xFF9D},
01441 {0xFF9E,0xFF9E,0xFF9E}, {0xFF9F,0xFF9F,0xFF9F},
01442 {0xFFA0,0xFFA0,0xFFA0}, {0xFFA1,0xFFA1,0xFFA1},
01443 {0xFFA2,0xFFA2,0xFFA2}, {0xFFA3,0xFFA3,0xFFA3},
01444 {0xFFA4,0xFFA4,0xFFA4}, {0xFFA5,0xFFA5,0xFFA5},
01445 {0xFFA6,0xFFA6,0xFFA6}, {0xFFA7,0xFFA7,0xFFA7},
01446 {0xFFA8,0xFFA8,0xFFA8}, {0xFFA9,0xFFA9,0xFFA9},
01447 {0xFFAA,0xFFAA,0xFFAA}, {0xFFAB,0xFFAB,0xFFAB},
01448 {0xFFAC,0xFFAC,0xFFAC}, {0xFFAD,0xFFAD,0xFFAD},
01449 {0xFFAE,0xFFAE,0xFFAE}, {0xFFAF,0xFFAF,0xFFAF},
01450 {0xFFB0,0xFFB0,0xFFB0}, {0xFFB1,0xFFB1,0xFFB1},
01451 {0xFFB2,0xFFB2,0xFFB2}, {0xFFB3,0xFFB3,0xFFB3},
01452 {0xFFB4,0xFFB4,0xFFB4}, {0xFFB5,0xFFB5,0xFFB5},
01453 {0xFFB6,0xFFB6,0xFFB6}, {0xFFB7,0xFFB7,0xFFB7},
01454 {0xFFB8,0xFFB8,0xFFB8}, {0xFFB9,0xFFB9,0xFFB9},
01455 {0xFFBA,0xFFBA,0xFFBA}, {0xFFBB,0xFFBB,0xFFBB},
01456 {0xFFBC,0xFFBC,0xFFBC}, {0xFFBD,0xFFBD,0xFFBD},
01457 {0xFFBE,0xFFBE,0xFFBE}, {0xFFBF,0xFFBF,0xFFBF},
01458 {0xFFC0,0xFFC0,0xFFC0}, {0xFFC1,0xFFC1,0xFFC1},
01459 {0xFFC2,0xFFC2,0xFFC2}, {0xFFC3,0xFFC3,0xFFC3},
01460 {0xFFC4,0xFFC4,0xFFC4}, {0xFFC5,0xFFC5,0xFFC5},
01461 {0xFFC6,0xFFC6,0xFFC6}, {0xFFC7,0xFFC7,0xFFC7},
01462 {0xFFC8,0xFFC8,0xFFC8}, {0xFFC9,0xFFC9,0xFFC9},
01463 {0xFFCA,0xFFCA,0xFFCA}, {0xFFCB,0xFFCB,0xFFCB},
01464 {0xFFCC,0xFFCC,0xFFCC}, {0xFFCD,0xFFCD,0xFFCD},
01465 {0xFFCE,0xFFCE,0xFFCE}, {0xFFCF,0xFFCF,0xFFCF},
01466 {0xFFD0,0xFFD0,0xFFD0}, {0xFFD1,0xFFD1,0xFFD1},
01467 {0xFFD2,0xFFD2,0xFFD2}, {0xFFD3,0xFFD3,0xFFD3},
01468 {0xFFD4,0xFFD4,0xFFD4}, {0xFFD5,0xFFD5,0xFFD5},
01469 {0xFFD6,0xFFD6,0xFFD6}, {0xFFD7,0xFFD7,0xFFD7},
01470 {0xFFD8,0xFFD8,0xFFD8}, {0xFFD9,0xFFD9,0xFFD9},
01471 {0xFFDA,0xFFDA,0xFFDA}, {0xFFDB,0xFFDB,0xFFDB},
01472 {0xFFDC,0xFFDC,0xFFDC}, {0xFFDD,0xFFDD,0xFFDD},
01473 {0xFFDE,0xFFDE,0xFFDE}, {0xFFDF,0xFFDF,0xFFDF},
01474 {0xFFE0,0xFFE0,0xFFE0}, {0xFFE1,0xFFE1,0xFFE1},
01475 {0xFFE2,0xFFE2,0xFFE2}, {0xFFE3,0xFFE3,0xFFE3},
01476 {0xFFE4,0xFFE4,0xFFE4}, {0xFFE5,0xFFE5,0xFFE5},
01477 {0xFFE6,0xFFE6,0xFFE6}, {0xFFE7,0xFFE7,0xFFE7},
01478 {0xFFE8,0xFFE8,0xFFE8}, {0xFFE9,0xFFE9,0xFFE9},
01479 {0xFFEA,0xFFEA,0xFFEA}, {0xFFEB,0xFFEB,0xFFEB},
01480 {0xFFEC,0xFFEC,0xFFEC}, {0xFFED,0xFFED,0xFFED},
01481 {0xFFEE,0xFFEE,0xFFEE}, {0xFFEF,0xFFEF,0xFFEF},
01482 {0xFFF0,0xFFF0,0xFFF0}, {0xFFF1,0xFFF1,0xFFF1},
01483 {0xFFF2,0xFFF2,0xFFF2}, {0xFFF3,0xFFF3,0xFFF3},
01484 {0xFFF4,0xFFF4,0xFFF4}, {0xFFF5,0xFFF5,0xFFF5},
01485 {0xFFF6,0xFFF6,0xFFF6}, {0xFFF7,0xFFF7,0xFFF7},
01486 {0xFFF8,0xFFF8,0xFFF8}, {0xFFF9,0xFFF9,0xFFF9},
01487 {0xFFFA,0xFFFA,0xFFFA}, {0xFFFB,0xFFFB,0xFFFB},
01488 {0xFFFC,0xFFFC,0xFFFC}, {0xFFFD,0xFFFD,0xFFFD},
01489 {0xFFFE,0xFFFE,0xFFFE}, {0xFFFF,0xFFFF,0xFFFF}
01490 };
01491
01492 MY_UNICASE_INFO *my_unicase_default[256]={
01493 plane00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
01494 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01495 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01496 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
01497 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
01498 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01499 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01500 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01501 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01502 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01503 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01504 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01505 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01506 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01507 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01508 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01509 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01510 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01511 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01512 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01513 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01514 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01515 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01516 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01517 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01518 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01519 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01520 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01521 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01522 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01523 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01524 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
01525
01526 };
01527
01528
01529
01530
01531
01532
01533
01534
01535
01536
01537 static MY_UNICASE_INFO turk00[]=
01538 {
01539 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
01540 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
01541 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
01542 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
01543 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
01544 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
01545 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
01546 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
01547 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
01548 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
01549 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
01550 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
01551 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
01552 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
01553 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
01554 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
01555 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
01556 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
01557 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
01558 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
01559 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
01560 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
01561 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
01562 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
01563 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
01564 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
01565 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
01566 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
01567 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
01568 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
01569 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
01570 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
01571 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
01572 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
01573 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
01574 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
01575 {0x0048,0x0068,0x0048}, {0x0049,0x0131,0x0049},
01576 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
01577 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
01578 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
01579 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
01580 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
01581 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
01582 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
01583 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
01584 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
01585 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
01586 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
01587 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
01588 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
01589 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
01590 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
01591 {0x0048,0x0068,0x0048}, {0x0130,0x0069,0x0049},
01592 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
01593 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
01594 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
01595 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
01596 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
01597 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
01598 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
01599 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
01600 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
01601 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
01602 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
01603 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
01604 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
01605 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
01606 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
01607 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
01608 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
01609 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
01610 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
01611 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
01612 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
01613 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
01614 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
01615 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
01616 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
01617 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
01618 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
01619 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
01620 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
01621 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
01622 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
01623 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
01624 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
01625 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
01626 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
01627 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
01628 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
01629 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
01630 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
01631 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
01632 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
01633 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
01634 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
01635 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
01636 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
01637 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
01638 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
01639 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
01640 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
01641 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
01642 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
01643 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
01644 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
01645 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
01646 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
01647 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
01648 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
01649 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
01650 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
01651 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
01652 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
01653 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
01654 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
01655 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
01656 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
01657 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
01658 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
01659 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
01660 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
01661 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
01662 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
01663 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
01664 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
01665 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
01666 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
01667 };
01668
01669
01670
01671 MY_UNICASE_INFO *my_unicase_turkish[256]=
01672 {
01673 turk00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
01674 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01675 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01676 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
01677 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
01678 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01679 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01680 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01681 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01682 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01683 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01684 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01685 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01686 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01687 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01688 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01689 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01690 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01691 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01692 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01693 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01694 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01695 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01696 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01697 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01698 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01699 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01700 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01701 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01702 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01703 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
01704 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
01705 };
01706
01707
01708
01728 int my_wildcmp_unicode(const charset_info_st* cs,
01729 const char *str,const char *str_end,
01730 const char *wildstr,const char *wildend,
01731 int escape, int w_one, int w_many,
01732 MY_UNICASE_INFO **weights)
01733 {
01734 int result= -1;
01735 my_wc_t s_wc=0, w_wc=0;
01736 int scan, plane;
01737 my_charset_conv_mb_wc mb_wc;
01738 mb_wc= cs->cset->mb_wc;
01739
01740 while (wildstr != wildend)
01741 {
01742 while (1)
01743 {
01744 bool escaped= 0;
01745 if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
01746 (const unsigned char*)wildend)) <= 0)
01747 return 1;
01748
01749 if (w_wc == (my_wc_t)w_many)
01750 {
01751 result= 1;
01752 break;
01753 }
01754
01755 wildstr+= scan;
01756 if (w_wc == (my_wc_t)escape && wildstr < wildend)
01757 {
01758 if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
01759 (const unsigned char*)wildend)) <= 0)
01760 return 1;
01761 wildstr+= scan;
01762 escaped= 1;
01763 }
01764
01765 if ((scan= mb_wc(cs, &s_wc, (const unsigned char*)str,
01766 (const unsigned char*)str_end)) <= 0)
01767 return 1;
01768 str+= scan;
01769
01770 if (!escaped && w_wc == (my_wc_t)w_one)
01771 {
01772 result= 1;
01773 }
01774 else
01775 {
01776 if (weights)
01777 {
01778 if (s_wc < 0x10000)
01779 {
01780 plane=(s_wc>>8) & 0xFF;
01781 s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
01782 }
01783 if (w_wc < 0x10000)
01784 {
01785 plane=(w_wc>>8) & 0xFF;
01786 w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
01787 }
01788 }
01789 if (s_wc != w_wc)
01790 return 1;
01791 }
01792 if (wildstr == wildend)
01793 return (str != str_end);
01794 }
01795
01796
01797 if (w_wc == (my_wc_t)w_many)
01798 {
01799
01800
01801 for (; wildstr != wildend ;)
01802 {
01803 if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
01804 (const unsigned char*)wildend)) <= 0)
01805 return 1;
01806
01807 if (w_wc == (my_wc_t)w_many)
01808 {
01809 wildstr+= scan;
01810 continue;
01811 }
01812
01813 if (w_wc == (my_wc_t)w_one)
01814 {
01815 wildstr+= scan;
01816 if ((scan= mb_wc(cs, &s_wc, (const unsigned char*)str,
01817 (const unsigned char*)str_end)) <=0)
01818 return 1;
01819 str+= scan;
01820 continue;
01821 }
01822 break;
01823 }
01824
01825 if (wildstr == wildend)
01826 return 0;
01827
01828 if (str == str_end)
01829 return -1;
01830
01831 if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
01832 (const unsigned char*)wildend)) <=0)
01833 return 1;
01834 wildstr+= scan;
01835
01836 if (w_wc == (my_wc_t)escape)
01837 {
01838 if (wildstr < wildend)
01839 {
01840 if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
01841 (const unsigned char*)wildend)) <=0)
01842 return 1;
01843 wildstr+= scan;
01844 }
01845 }
01846
01847 while (1)
01848 {
01849
01850 while (str != str_end)
01851 {
01852 if ((scan= mb_wc(cs, &s_wc, (const unsigned char*)str,
01853 (const unsigned char*)str_end)) <=0)
01854 return 1;
01855 if (weights)
01856 {
01857 plane=(s_wc>>8) & 0xFF;
01858 s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
01859 plane=(w_wc>>8) & 0xFF;
01860 w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
01861 }
01862
01863 if (s_wc == w_wc)
01864 break;
01865 str+= scan;
01866 }
01867 if (str == str_end)
01868 return -1;
01869
01870 str+= scan;
01871 result= my_wildcmp_unicode(cs, str, str_end, wildstr, wildend, escape, w_one, w_many, weights);
01872 if (result <= 0)
01873 return result;
01874 }
01875 }
01876 }
01877 return str != str_end;
01878 }
01879
01880
01881 int make_escape_code(const charset_info_st* cs, const char *escape)
01882 {
01883 my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
01884 my_wc_t escape_wc;
01885 int rc= mb_wc(cs, &escape_wc, (const unsigned char*) escape, (const unsigned char*) escape + strlen(escape));
01886 return rc > 0 ? escape_wc : '\\';
01887 }
01888
01889
01890
01891
01892
01893
01894
01895 static unsigned char ctype_utf8mb4[]=
01896 {
01897 0,
01898 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
01899 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
01900 72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
01901 132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
01902 16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01903 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
01904 16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01905 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
01906 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
01907 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
01908 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
01909 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
01910 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
01911 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
01912 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
01913 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
01914 };
01915
01916
01917 static unsigned char to_lower_utf8mb4[]=
01918 {
01919 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
01920 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
01921 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
01922 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
01923 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
01924 112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
01925 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
01926 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
01927 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
01928 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
01929 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
01930 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
01931 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
01932 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
01933 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
01934 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
01935 };
01936
01937
01938 static unsigned char to_upper_utf8mb4[]=
01939 {
01940 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
01941 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
01942 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
01943 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
01944 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
01945 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
01946 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
01947 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
01948 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
01949 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
01950 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
01951 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
01952 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
01953 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
01954 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
01955 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
01956 };
01957
01958
01959 static inline int
01960 bincmp_utf8mb4(const unsigned char *s, const unsigned char *se,
01961 const unsigned char *t, const unsigned char *te)
01962 {
01963 int slen= (int) (se - s), tlen= (int) (te - t);
01964 int len= min(slen, tlen);
01965 int cmp= memcmp(s, t, len);
01966 return cmp ? cmp : slen - tlen;
01967 }
01968
01969
01970 static int my_mb_wc_utf8mb4(const charset_info_st*, my_wc_t * pwc, const unsigned char *s, const unsigned char *e)
01971 {
01972 if (s >= e)
01973 return MY_CS_TOOSMALL;
01974
01975 unsigned char c= s[0];
01976 if (c < 0x80)
01977 {
01978 *pwc= c;
01979 return 1;
01980 }
01981 else if (c < 0xc2)
01982 return MY_CS_ILSEQ;
01983 else if (c < 0xe0)
01984 {
01985 if (s + 2 > e)
01986 return MY_CS_TOOSMALL2;
01987
01988 if (!((s[1] ^ 0x80) < 0x40))
01989 return MY_CS_ILSEQ;
01990
01991 *pwc= ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
01992 return 2;
01993 }
01994 else if (c < 0xf0)
01995 {
01996 if (s + 3 > e)
01997 return MY_CS_TOOSMALL3;
01998
01999 if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 &&
02000 (c >= 0xe1 || s[1] >= 0xa0)))
02001 return MY_CS_ILSEQ;
02002
02003 *pwc= ((my_wc_t) (c & 0x0f) << 12) |
02004 ((my_wc_t) (s[1] ^ 0x80) << 6) |
02005 (my_wc_t) (s[2] ^ 0x80);
02006 return 3;
02007 }
02008 else if (c < 0xf8)
02009 {
02010 if (s + 4 > e)
02011 return MY_CS_TOOSMALL4;
02012
02013 if (!((s[1] ^ 0x80) < 0x40 &&
02014 (s[2] ^ 0x80) < 0x40 &&
02015 (s[3] ^ 0x80) < 0x40 &&
02016 (c >= 0xf1 || s[1] >= 0x90)))
02017 return MY_CS_ILSEQ;
02018 *pwc = ((my_wc_t) (c & 0x07) << 18) |
02019 ((my_wc_t) (s[1] ^ 0x80) << 12) |
02020 ((my_wc_t) (s[2] ^ 0x80) << 6) |
02021 (my_wc_t) (s[3] ^ 0x80);
02022 return 4;
02023 }
02024 return MY_CS_ILSEQ;
02025 }
02026
02027
02028
02029
02030
02031
02032 static int
02033 my_mb_wc_utf8mb4_no_range(const charset_info_st*,
02034 my_wc_t *pwc, const unsigned char *s)
02035 {
02036 unsigned char c;
02037
02038 c= s[0];
02039 if (c < 0x80)
02040 {
02041 *pwc = c;
02042 return 1;
02043 }
02044
02045 if (c < 0xc2)
02046 return MY_CS_ILSEQ;
02047
02048 if (c < 0xe0)
02049 {
02050 if (!((s[1] ^ 0x80) < 0x40))
02051 return MY_CS_ILSEQ;
02052
02053 *pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
02054 return 2;
02055 }
02056
02057 if (c < 0xf0)
02058 {
02059 if (!((s[1] ^ 0x80) < 0x40 &&
02060 (s[2] ^ 0x80) < 0x40 &&
02061 (c >= 0xe1 || s[1] >= 0xa0)))
02062 return MY_CS_ILSEQ;
02063 *pwc= ((my_wc_t) (c & 0x0f) << 12) |
02064 ((my_wc_t) (s[1] ^ 0x80) << 6) |
02065 (my_wc_t) (s[2] ^ 0x80);
02066
02067 return 3;
02068 }
02069 else if (c < 0xf8)
02070 {
02071 if (!((s[1] ^ 0x80) < 0x40 &&
02072 (s[2] ^ 0x80) < 0x40 &&
02073 (s[3] ^ 0x80) < 0x40 &&
02074 (c >= 0xf1 || s[1] >= 0x90)))
02075 return MY_CS_ILSEQ;
02076 *pwc = ((my_wc_t) (c & 0x07) << 18) |
02077 ((my_wc_t) (s[1] ^ 0x80) << 12) |
02078 ((my_wc_t) (s[2] ^ 0x80) << 6) |
02079 (my_wc_t) (s[3] ^ 0x80);
02080 return 4;
02081 }
02082 return MY_CS_ILSEQ;
02083 }
02084
02085
02086 static int my_wc_mb_utf8mb4(const charset_info_st*, my_wc_t wc, unsigned char *r, unsigned char *e)
02087 {
02088 int count;
02089
02090 if (r >= e)
02091 return MY_CS_TOOSMALL;
02092
02093 if (wc < 0x80)
02094 count= 1;
02095 else if (wc < 0x800)
02096 count= 2;
02097 else if (wc < 0x10000)
02098 count= 3;
02099 else if (wc < 0x200000)
02100 count= 4;
02101 else return MY_CS_ILUNI;
02102
02103 if (r + count > e)
02104 return -100 - count;
02105
02106 switch (count)
02107 {
02108
02109 case 4: r[3] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
02110 case 3: r[2] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
02111 case 2: r[1] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0;
02112 case 1: r[0] = (unsigned char) wc;
02113 }
02114 return count;
02115 }
02116
02117
02118
02119
02120
02121 static int
02122 my_wc_mb_utf8mb4_no_range(const charset_info_st*,
02123 my_wc_t wc, unsigned char *r)
02124 {
02125 int count;
02126
02127 if (wc < 0x80)
02128 count= 1;
02129 else if (wc < 0x800)
02130 count= 2;
02131 else if (wc < 0x10000)
02132 count= 3;
02133 else if (wc < 0x200000)
02134 count= 4;
02135 else
02136 return MY_CS_ILUNI;
02137
02138 switch (count)
02139 {
02140
02141 case 4: r[3]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x10000;
02142 case 3: r[2]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
02143 case 2: r[1]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
02144 case 1: r[0]= (unsigned char) wc;
02145 }
02146 return count;
02147 }
02148
02149
02150 #define REPLACEMENT_CHAR 0xFFFD;
02151
02152
02153 static inline void
02154 my_tolower_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
02155 {
02156 int page= *wc >> 8;
02157 if (page < 256 && uni_plane[page])
02158 *wc= uni_plane[page][*wc & 0xFF].tolower;
02159 }
02160
02161
02162 static inline void
02163 my_toupper_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
02164 {
02165 int page= *wc >> 8;
02166 if (page < 256 && uni_plane[page])
02167 *wc= uni_plane[page][*wc & 0xFF].toupper;
02168 }
02169
02170
02171 static inline void
02172 my_tosort_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
02173 {
02174 int page= *wc >> 8;
02175 if (page < 256)
02176 {
02177 if (uni_plane[page])
02178 *wc= uni_plane[page][*wc & 0xFF].sort;
02179 }
02180 else
02181 {
02182 *wc= REPLACEMENT_CHAR;
02183 }
02184 }
02185
02186
02187 static size_t my_caseup_utf8mb4(const charset_info_st* cs, char *src, size_t srclen, char *dst, size_t dstlen)
02188 {
02189 my_wc_t wc;
02190 int srcres, dstres;
02191 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
02192 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02193 assert(src != dst || cs->caseup_multiply == 1);
02194
02195 while ((src < srcend) &&
02196 (srcres= my_mb_wc_utf8mb4(cs, &wc,
02197 (unsigned char *) src, (unsigned char*) srcend)) > 0)
02198 {
02199 my_toupper_utf8mb4(uni_plane, &wc);
02200 if ((dstres= my_wc_mb_utf8mb4(cs, wc, (unsigned char*) dst, (unsigned char*) dstend)) <= 0)
02201 break;
02202 src+= srcres;
02203 dst+= dstres;
02204 }
02205 return (size_t) (dst - dst0);
02206 }
02207
02208
02209 static inline void
02210 my_hash_add(uint32_t *n1, uint32_t *n2, uint32_t ch)
02211 {
02212 n1[0]^= (((n1[0] & 63) + n2[0]) * (ch)) + (n1[0] << 8);
02213 n2[0]+= 3;
02214 }
02215
02216
02217 void my_hash_sort_utf8mb4(const charset_info_st* cs,
02218 const unsigned char *s, size_t slen,
02219 uint32_t *n1, uint32_t *n2)
02220 {
02221 my_wc_t wc;
02222 int res;
02223 const unsigned char *e= s + slen;
02224 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02225
02226
02227
02228
02229
02230 while (e > s && e[-1] == ' ')
02231 e--;
02232
02233 while ((res= my_mb_wc_utf8mb4(cs, &wc, (const unsigned char*) s, (const unsigned char*) e)) > 0)
02234 {
02235 my_tosort_utf8mb4(uni_plane, &wc);
02236 my_hash_add(n1, n2, (uint32_t) (wc & 0xFF));
02237 my_hash_add(n1, n2, (uint32_t) (wc >> 8) & 0xFF);
02238 if (wc > 0xFFFF)
02239 {
02240
02241
02242
02243
02244
02245
02246
02247 my_hash_add(n1, n2, (uint32_t) (wc >> 16) & 0xFF);
02248 }
02249 s+= res;
02250 }
02251 }
02252
02253
02254 static size_t my_caseup_str_utf8mb4(const charset_info_st* cs, char *src)
02255 {
02256 my_wc_t wc;
02257 int srcres, dstres;
02258 char *dst= src, *dst0= src;
02259 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02260 assert(cs->caseup_multiply == 1);
02261
02262 while (*src &&
02263 (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (unsigned char *) src)) > 0)
02264 {
02265 my_toupper_utf8mb4(uni_plane, &wc);
02266 if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (unsigned char*) dst)) <= 0)
02267 break;
02268 src+= srcres;
02269 dst+= dstres;
02270 }
02271 *dst= '\0';
02272 return (size_t) (dst - dst0);
02273 }
02274
02275
02276 static size_t my_casedn_utf8mb4(const charset_info_st* cs, char *src, size_t srclen, char *dst, size_t dstlen)
02277 {
02278 my_wc_t wc;
02279 int srcres, dstres;
02280 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
02281 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02282 assert(src != dst || cs->casedn_multiply == 1);
02283
02284 while ((src < srcend) &&
02285 (srcres= my_mb_wc_utf8mb4(cs, &wc,
02286 (unsigned char*) src, (unsigned char*) srcend)) > 0)
02287 {
02288 my_tolower_utf8mb4(uni_plane, &wc);
02289 if ((dstres= my_wc_mb_utf8mb4(cs, wc, (unsigned char*) dst, (unsigned char*) dstend)) <= 0)
02290 break;
02291 src+= srcres;
02292 dst+= dstres;
02293 }
02294 return (size_t) (dst - dst0);
02295 }
02296
02297
02298 static size_t my_casedn_str_utf8mb4(const charset_info_st* cs, char *src)
02299 {
02300 my_wc_t wc;
02301 int srcres, dstres;
02302 char *dst= src, *dst0= src;
02303 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02304 assert(cs->casedn_multiply == 1);
02305
02306 while (*src &&
02307 (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (unsigned char *) src)) > 0)
02308 {
02309 my_tolower_utf8mb4(uni_plane, &wc);
02310 if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (unsigned char*) dst)) <= 0)
02311 break;
02312 src+= srcres;
02313 dst+= dstres;
02314 }
02315
02316
02317
02318
02319
02320
02321
02322
02323
02324
02325
02326
02327
02328
02329
02330
02331 *dst= '\0';
02332 return (size_t) (dst - dst0);
02333 }
02334
02335
02336 static int my_strnncoll_utf8mb4(const charset_info_st* cs,
02337 const unsigned char *s, size_t slen,
02338 const unsigned char *t, size_t tlen,
02339 bool t_is_prefix)
02340 {
02341 my_wc_t s_wc=0;
02342 my_wc_t t_wc=0;
02343 const unsigned char *se= s + slen;
02344 const unsigned char *te= t + tlen;
02345 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02346
02347 while ( s < se && t < te )
02348 {
02349 int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
02350 int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
02351
02352 if ( s_res <= 0 || t_res <= 0 )
02353 {
02354
02355 return bincmp_utf8mb4(s, se, t, te);
02356 }
02357
02358 my_tosort_utf8mb4(uni_plane, &s_wc);
02359 my_tosort_utf8mb4(uni_plane, &t_wc);
02360
02361 if ( s_wc != t_wc )
02362 {
02363 return s_wc > t_wc ? 1 : -1;
02364 }
02365
02366 s+= s_res;
02367 t+= t_res;
02368 }
02369 return (int) (t_is_prefix ? (t - te) : ((se - s) - (te - t)));
02370 }
02371
02372
02400 static int my_strnncollsp_utf8mb4(const charset_info_st* cs,
02401 const unsigned char *s, size_t slen,
02402 const unsigned char *t, size_t tlen,
02403 bool diff_if_only_endspace_difference)
02404 {
02405 int res;
02406 my_wc_t s_wc=0;
02407 my_wc_t t_wc=0;
02408 const unsigned char *se= s + slen, *te= t + tlen;
02409 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02410
02411 #ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
02412 diff_if_only_endspace_difference= false;
02413 #endif
02414
02415 while ( s < se && t < te )
02416 {
02417 int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
02418 int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
02419
02420 if ( s_res <= 0 || t_res <= 0 )
02421 {
02422
02423 return bincmp_utf8mb4(s, se, t, te);
02424 }
02425
02426 my_tosort_utf8mb4(uni_plane, &s_wc);
02427 my_tosort_utf8mb4(uni_plane, &t_wc);
02428
02429 if ( s_wc != t_wc )
02430 {
02431 return s_wc > t_wc ? 1 : -1;
02432 }
02433
02434 s+=s_res;
02435 t+=t_res;
02436 }
02437
02438 slen= (size_t) (se-s);
02439 tlen= (size_t) (te-t);
02440 res= 0;
02441
02442 if (slen != tlen)
02443 {
02444 int swap= 1;
02445 if (diff_if_only_endspace_difference)
02446 res= 1;
02447 if (slen < tlen)
02448 {
02449 slen= tlen;
02450 s= t;
02451 se= te;
02452 swap= -1;
02453 res= -res;
02454 }
02455
02456
02457
02458
02459
02460
02461
02462
02463
02464
02465 for ( ; s < se; s++)
02466 {
02467 if (*s != ' ')
02468 return (*s < ' ') ? -swap : swap;
02469 }
02470 }
02471 return res;
02472 }
02473
02474
02488 static int my_strcasecmp_utf8mb4(const charset_info_st* cs, const char *s, const char *t)
02489 {
02490 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02491 while (s[0] && t[0])
02492 {
02493 my_wc_t s_wc,t_wc;
02494
02495 if ((unsigned char) s[0] < 128)
02496 {
02497
02498
02499
02500
02501
02502 s_wc= plane00[(unsigned char) s[0]].tolower;
02503 s++;
02504 }
02505 else
02506 {
02507 int res= my_mb_wc_utf8mb4_no_range(cs, &s_wc, (const unsigned char*) s);
02508
02509
02510
02511
02512
02513 if (res <= 0)
02514 return strcmp(s, t);
02515 s+= res;
02516
02517 my_tolower_utf8mb4(uni_plane, &s_wc);
02518 }
02519
02520
02521
02522
02523 if ((unsigned char) t[0] < 128)
02524 {
02525
02526 t_wc= plane00[(unsigned char) t[0]].tolower;
02527 t++;
02528 }
02529 else
02530 {
02531 int res= my_mb_wc_utf8mb4_no_range(cs, &t_wc, (const unsigned char*) t);
02532 if (res <= 0)
02533 return strcmp(s, t);
02534 t+= res;
02535
02536 my_tolower_utf8mb4(uni_plane, &t_wc);
02537 }
02538
02539
02540 if ( s_wc != t_wc )
02541 return ((int) s_wc) - ((int) t_wc);
02542 }
02543 return ((int) (unsigned char) s[0]) - ((int) (unsigned char) t[0]);
02544 }
02545
02546
02547 static int my_wildcmp_utf8mb4(const charset_info_st* cs,
02548 const char *str, const char *strend,
02549 const char *wildstr, const char *wildend,
02550 int escape, int w_one, int w_many)
02551 {
02552 return my_wildcmp_unicode(cs, str, strend, wildstr, wildend, escape, w_one, w_many, cs->caseinfo);
02553 }
02554
02555
02556 static size_t my_strnxfrmlen_utf8mb4(const charset_info_st*, size_t len)
02557 {
02558
02559 return (len * 2 + 2) / 4;
02560 }
02561
02562
02563 static size_t my_strnxfrm_utf8mb4(const charset_info_st* cs,
02564 unsigned char *dst, size_t dstlen, uint32_t nweights,
02565 const unsigned char *src, size_t srclen, uint32_t flags)
02566 {
02567 my_wc_t wc;
02568 int res;
02569 unsigned char *dst0= dst;
02570 unsigned char *de= dst + dstlen;
02571 unsigned char *de_beg= de - 1;
02572 const unsigned char *se = src + srclen;
02573 MY_UNICASE_INFO **uni_plane= (cs->state & MY_CS_BINSORT) ?
02574 NULL : cs->caseinfo;
02575
02576 for (; dst < de_beg && nweights; nweights--)
02577 {
02578 if ((res= my_mb_wc_utf8mb4(cs,&wc, src, se)) <= 0)
02579 break;
02580 src+=res;
02581
02582 if (uni_plane)
02583 my_tosort_utf8mb4(uni_plane, &wc);
02584
02585 *dst++= (unsigned char)(wc >> 8);
02586 *dst++= (unsigned char)(wc & 0xFF);
02587
02588 }
02589
02590 if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
02591 {
02592
02593 for (; dst < de_beg && nweights; nweights--)
02594 {
02595 *dst++= 0x00;
02596 *dst++= 0x20;
02597 }
02598
02599 if (dst < de)
02600 *dst++= 0x00;
02601 }
02602 my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
02603 return dst - dst0;
02604 }
02605
02606
02607 static unsigned int my_ismbchar_utf8mb4(const charset_info_st* cs, const char *b, const char *e)
02608 {
02609 my_wc_t wc;
02610 int res= my_mb_wc_utf8mb4(cs,&wc, (const unsigned char*)b, (const unsigned char*)e);
02611 return (res > 1) ? res : 0;
02612 }
02613
02614
02615 static unsigned int my_mbcharlen_utf8mb4(const charset_info_st*, uint32_t c)
02616 {
02617 if (c < 0x80)
02618 return 1;
02619 if (c < 0xc2)
02620 return 0;
02621 if (c < 0xe0)
02622 return 2;
02623 if (c < 0xf0)
02624 return 3;
02625 if (c < 0xf8)
02626 return 4;
02627 return 0; ;
02628 }
02629
02630
02631 static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
02632 {
02633 NULL,
02634 my_strnncoll_utf8mb4,
02635 my_strnncollsp_utf8mb4,
02636 my_strnxfrm_utf8mb4,
02637 my_strnxfrmlen_utf8mb4,
02638 my_like_range_mb,
02639 my_wildcmp_utf8mb4,
02640 my_strcasecmp_utf8mb4,
02641 my_instr_mb,
02642 my_hash_sort_utf8mb4,
02643 my_propagate_complex
02644 };
02645
02646
02647 static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
02648 {
02649 NULL,
02650 my_strnncoll_mb_bin,
02651 my_strnncollsp_mb_bin,
02652 my_strnxfrm_utf8mb4,
02653 my_strnxfrmlen_utf8mb4,
02654 my_like_range_mb,
02655 my_wildcmp_mb_bin,
02656 my_strcasecmp_mb_bin,
02657 my_instr_mb,
02658 my_hash_sort_mb_bin,
02659 my_propagate_simple
02660 };
02661
02662
02663 MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
02664 {
02665 my_ismbchar_utf8mb4,
02666 my_mbcharlen_utf8mb4,
02667 my_numchars_mb,
02668 my_charpos_mb,
02669 my_well_formed_len_mb,
02670 my_lengthsp_8bit,
02671 my_numcells_mb,
02672 my_mb_wc_utf8mb4,
02673 my_wc_mb_utf8mb4,
02674 my_mb_ctype_mb,
02675 my_caseup_str_utf8mb4,
02676 my_casedn_str_utf8mb4,
02677 my_caseup_utf8mb4,
02678 my_casedn_utf8mb4,
02679 my_snprintf_8bit,
02680 my_long10_to_str_8bit,
02681 my_int64_t10_to_str_8bit,
02682 my_fill_8bit,
02683 my_strntol_8bit,
02684 my_strntoul_8bit,
02685 my_strntoll_8bit,
02686 my_strntoull_8bit,
02687 my_strntod_8bit,
02688 my_strtoll10_8bit,
02689 my_strntoull10rnd_8bit,
02690 my_scan_8bit
02691 };
02692
02693
02694
02695 DRIZZLED_API charset_info_st my_charset_utf8mb4_general_ci=
02696 {
02697 45,0,0,
02698 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE,
02699 MY_UTF8MB4,
02700 MY_UTF8MB4_GENERAL_CI,
02701 "UTF-8 Unicode",
02702 NULL,
02703 ctype_utf8mb4,
02704 to_lower_utf8mb4,
02705 to_upper_utf8mb4,
02706 to_upper_utf8mb4,
02707 NULL,
02708 NULL,
02709 NULL,
02710 NULL,
02711 my_unicase_default,
02712 NULL,
02713 NULL,
02714 1,
02715 1,
02716 1,
02717 1,
02718 4,
02719 0,
02720 0xFFFF,
02721 ' ',
02722 1,
02723 1,
02724 &my_charset_utf8mb4_handler,
02725 &my_collation_utf8mb4_general_ci_handler
02726 };
02727
02728
02729 DRIZZLED_API charset_info_st my_charset_utf8mb4_bin=
02730 {
02731 46,0,0,
02732 MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE,
02733 MY_UTF8MB4,
02734 MY_UTF8MB4_BIN,
02735 "UTF-8 Unicode",
02736 NULL,
02737 ctype_utf8mb4,
02738 to_lower_utf8mb4,
02739 to_upper_utf8mb4,
02740 NULL,
02741 NULL,
02742 NULL,
02743 NULL,
02744 NULL,
02745 my_unicase_default,
02746 NULL,
02747 NULL,
02748 1,
02749 1,
02750 1,
02751 1,
02752 4,
02753 0,
02754 0xFFFF,
02755 ' ',
02756 1,
02757 1,
02758 &my_charset_utf8mb4_handler,
02759 &my_collation_utf8mb4_bin_handler
02760 };
02761
02762
02763
02764 static inline int bincmp(const unsigned char *s, const unsigned char *se,
02765 const unsigned char *t, const unsigned char *te)
02766 {
02767 int slen= (int) (se-s), tlen= (int) (te-t);
02768 int len= min(slen,tlen);
02769 int cmp= memcmp(s,t,len);
02770 return cmp ? cmp : slen-tlen;
02771 }
02772
02773
02774
02775
02776
02777
02778
02779
02780
02781
02782
02783
02784
02785
02786
02787
02788
02789
02790
02791
02792
02793
02794
02795
02796
02797 }
02798
02799 #ifdef MY_TEST_UTF8
02800 #include <stdio.h>
02801
02802 static void test_mb(charset_info_st *cs, unsigned char *s)
02803 {
02804 while(*s)
02805 {
02806 if (my_ismbhead_utf8(cs,*s))
02807 {
02808 uint32_t len=my_mbcharlen_utf8(cs,*s);
02809 while(len--)
02810 {
02811 printf("%c",*s);
02812 s++;
02813 }
02814 printf("\n");
02815 }
02816 else
02817 {
02818 printf("%c\n",*s);
02819 s++;
02820 }
02821 }
02822 }
02823
02824 int main()
02825 {
02826 char str[1024]=" utf8 test проба ПЕРА по-РУССКИ";
02827 charset_info_st *cs;
02828
02829 test_mb(cs,(unsigned char*)str);
02830
02831 printf("orig :'%s'\n",str);
02832
02833 my_caseup_utf8(cs,str,15);
02834 printf("caseup :'%s'\n",str);
02835
02836 my_caseup_str_utf8(cs,str);
02837 printf("caseup_str:'%s'\n",str);
02838
02839 my_casedn_utf8(cs,str,15);
02840 printf("casedn :'%s'\n",str);
02841
02842 my_casedn_str_utf8(cs,str);
02843 printf("casedn_str:'%s'\n",str);
02844
02845 return 0;
02846 }
02847
02848 #endif