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_info.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 * const 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 * const 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,
01872 escape, w_one, w_many,
01873 weights);
01874 if (result <= 0)
01875 return result;
01876 }
01877 }
01878 }
01879 return (str != str_end ? 1 : 0);
01880 }
01881
01882
01883 int make_escape_code(const CHARSET_INFO * const cs, const char *escape)
01884 {
01885 my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
01886 my_wc_t escape_wc;
01887 int rc= mb_wc(cs, &escape_wc,
01888 (const unsigned char*) escape,
01889 (const unsigned char*) escape + strlen(escape));
01890 return (int)(rc > 0 ? escape_wc : '\\');
01891 }
01892
01893
01894
01895
01896
01897
01898
01899 static unsigned char ctype_utf8mb4[]=
01900 {
01901 0,
01902 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
01903 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
01904 72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
01905 132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
01906 16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01907 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
01908 16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
01909 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
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, 3,
01914 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
01915 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
01916 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
01917 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
01918 };
01919
01920
01921 static unsigned char to_lower_utf8mb4[]=
01922 {
01923 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
01924 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
01925 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
01926 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
01927 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
01928 112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
01929 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
01930 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
01931 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
01932 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
01933 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
01934 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
01935 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
01936 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
01937 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
01938 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
01939 };
01940
01941
01942 static unsigned char to_upper_utf8mb4[]=
01943 {
01944 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
01945 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
01946 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
01947 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
01948 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
01949 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
01950 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
01951 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
01952 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
01953 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
01954 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
01955 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
01956 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
01957 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
01958 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
01959 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
01960 };
01961
01962
01963 static inline int
01964 bincmp_utf8mb4(const unsigned char *s, const unsigned char *se,
01965 const unsigned char *t, const unsigned char *te)
01966 {
01967 int slen= (int) (se - s), tlen= (int) (te - t);
01968 int len= min(slen, tlen);
01969 int cmp= memcmp(s, t, len);
01970 return cmp ? cmp : slen - tlen;
01971 }
01972
01973
01974 int
01975 my_mb_wc_utf8mb4(const CHARSET_INFO * const,
01976 my_wc_t * pwc, const unsigned char *s, const unsigned char *e)
01977 {
01978 unsigned char c;
01979
01980 if (s >= e)
01981 return MY_CS_TOOSMALL;
01982
01983 c= s[0];
01984 if (c < 0x80)
01985 {
01986 *pwc= c;
01987 return 1;
01988 }
01989 else if (c < 0xc2)
01990 return MY_CS_ILSEQ;
01991 else if (c < 0xe0)
01992 {
01993 if (s + 2 > e)
01994 return MY_CS_TOOSMALL2;
01995
01996 if (!((s[1] ^ 0x80) < 0x40))
01997 return MY_CS_ILSEQ;
01998
01999 *pwc= ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
02000 return 2;
02001 }
02002 else if (c < 0xf0)
02003 {
02004 if (s + 3 > e)
02005 return MY_CS_TOOSMALL3;
02006
02007 if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 &&
02008 (c >= 0xe1 || s[1] >= 0xa0)))
02009 return MY_CS_ILSEQ;
02010
02011 *pwc= ((my_wc_t) (c & 0x0f) << 12) |
02012 ((my_wc_t) (s[1] ^ 0x80) << 6) |
02013 (my_wc_t) (s[2] ^ 0x80);
02014 return 3;
02015 }
02016 else if (c < 0xf8)
02017 {
02018 if (s + 4 > e)
02019 return MY_CS_TOOSMALL4;
02020
02021 if (!((s[1] ^ 0x80) < 0x40 &&
02022 (s[2] ^ 0x80) < 0x40 &&
02023 (s[3] ^ 0x80) < 0x40 &&
02024 (c >= 0xf1 || s[1] >= 0x90)))
02025 return MY_CS_ILSEQ;
02026 *pwc = ((my_wc_t) (c & 0x07) << 18) |
02027 ((my_wc_t) (s[1] ^ 0x80) << 12) |
02028 ((my_wc_t) (s[2] ^ 0x80) << 6) |
02029 (my_wc_t) (s[3] ^ 0x80);
02030 return 4;
02031 }
02032 return MY_CS_ILSEQ;
02033 }
02034
02035
02036
02037
02038
02039
02040 static int
02041 my_mb_wc_utf8mb4_no_range(const CHARSET_INFO * const,
02042 my_wc_t *pwc, const unsigned char *s)
02043 {
02044 unsigned char c;
02045
02046 c= s[0];
02047 if (c < 0x80)
02048 {
02049 *pwc = c;
02050 return 1;
02051 }
02052
02053 if (c < 0xc2)
02054 return MY_CS_ILSEQ;
02055
02056 if (c < 0xe0)
02057 {
02058 if (!((s[1] ^ 0x80) < 0x40))
02059 return MY_CS_ILSEQ;
02060
02061 *pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
02062 return 2;
02063 }
02064
02065 if (c < 0xf0)
02066 {
02067 if (!((s[1] ^ 0x80) < 0x40 &&
02068 (s[2] ^ 0x80) < 0x40 &&
02069 (c >= 0xe1 || s[1] >= 0xa0)))
02070 return MY_CS_ILSEQ;
02071 *pwc= ((my_wc_t) (c & 0x0f) << 12) |
02072 ((my_wc_t) (s[1] ^ 0x80) << 6) |
02073 (my_wc_t) (s[2] ^ 0x80);
02074
02075 return 3;
02076 }
02077 else if (c < 0xf8)
02078 {
02079 if (!((s[1] ^ 0x80) < 0x40 &&
02080 (s[2] ^ 0x80) < 0x40 &&
02081 (s[3] ^ 0x80) < 0x40 &&
02082 (c >= 0xf1 || s[1] >= 0x90)))
02083 return MY_CS_ILSEQ;
02084 *pwc = ((my_wc_t) (c & 0x07) << 18) |
02085 ((my_wc_t) (s[1] ^ 0x80) << 12) |
02086 ((my_wc_t) (s[2] ^ 0x80) << 6) |
02087 (my_wc_t) (s[3] ^ 0x80);
02088 return 4;
02089 }
02090 return MY_CS_ILSEQ;
02091 }
02092
02093
02094 int
02095 my_wc_mb_utf8mb4(const CHARSET_INFO * const,
02096 my_wc_t wc, unsigned char *r, unsigned char *e)
02097 {
02098 int count;
02099
02100 if (r >= e)
02101 return MY_CS_TOOSMALL;
02102
02103 if (wc < 0x80)
02104 count= 1;
02105 else if (wc < 0x800)
02106 count= 2;
02107 else if (wc < 0x10000)
02108 count= 3;
02109 else if (wc < 0x200000)
02110 count= 4;
02111 else return MY_CS_ILUNI;
02112
02113 if (r + count > e)
02114 return my_cs_toosmalln(count);
02115
02116 switch (count) {
02117
02118 case 4: r[3] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
02119 case 3: r[2] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
02120 case 2: r[1] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0;
02121 case 1: r[0] = (unsigned char) wc;
02122 }
02123 return count;
02124 }
02125
02126
02127
02128
02129
02130 static int
02131 my_wc_mb_utf8mb4_no_range(const CHARSET_INFO * const,
02132 my_wc_t wc, unsigned char *r)
02133 {
02134 int count;
02135
02136 if (wc < 0x80)
02137 count= 1;
02138 else if (wc < 0x800)
02139 count= 2;
02140 else if (wc < 0x10000)
02141 count= 3;
02142 else if (wc < 0x200000)
02143 count= 4;
02144 else
02145 return MY_CS_ILUNI;
02146
02147 switch (count)
02148 {
02149
02150 case 4: r[3]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x10000;
02151 case 3: r[2]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
02152 case 2: r[1]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
02153 case 1: r[0]= (unsigned char) wc;
02154 }
02155 return count;
02156 }
02157
02158
02159 #define REPLACEMENT_CHAR 0xFFFD;
02160
02161
02162 static inline void
02163 my_tolower_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].tolower;
02168 }
02169
02170
02171 static inline void
02172 my_toupper_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
02173 {
02174 int page= *wc >> 8;
02175 if (page < 256 && uni_plane[page])
02176 *wc= uni_plane[page][*wc & 0xFF].toupper;
02177 }
02178
02179
02180 static inline void
02181 my_tosort_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
02182 {
02183 int page= *wc >> 8;
02184 if (page < 256)
02185 {
02186 if (uni_plane[page])
02187 *wc= uni_plane[page][*wc & 0xFF].sort;
02188 }
02189 else
02190 {
02191 *wc= REPLACEMENT_CHAR;
02192 }
02193 }
02194
02195
02196 size_t
02197 my_caseup_utf8mb4(const CHARSET_INFO * const cs, char *src, size_t srclen,
02198 char *dst, size_t dstlen)
02199 {
02200 my_wc_t wc;
02201 int srcres, dstres;
02202 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
02203 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02204 assert(src != dst || cs->caseup_multiply == 1);
02205
02206 while ((src < srcend) &&
02207 (srcres= my_mb_wc_utf8mb4(cs, &wc,
02208 (unsigned char *) src, (unsigned char*) srcend)) > 0)
02209 {
02210 my_toupper_utf8mb4(uni_plane, &wc);
02211 if ((dstres= my_wc_mb_utf8mb4(cs, wc, (unsigned char*) dst, (unsigned char*) dstend)) <= 0)
02212 break;
02213 src+= srcres;
02214 dst+= dstres;
02215 }
02216 return (size_t) (dst - dst0);
02217 }
02218
02219
02220 static inline void
02221 my_hash_add(uint32_t *n1, uint32_t *n2, uint32_t ch)
02222 {
02223 n1[0]^= (((n1[0] & 63) + n2[0]) * (ch)) + (n1[0] << 8);
02224 n2[0]+= 3;
02225 }
02226
02227
02228 void my_hash_sort_utf8mb4(const CHARSET_INFO * const cs,
02229 const unsigned char *s, size_t slen,
02230 uint32_t *n1, uint32_t *n2)
02231 {
02232 my_wc_t wc;
02233 int res;
02234 const unsigned char *e= s + slen;
02235 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02236
02237
02238
02239
02240
02241 while (e > s && e[-1] == ' ')
02242 e--;
02243
02244 while ((res= my_mb_wc_utf8mb4(cs, &wc, (const unsigned char*) s, (const unsigned char*) e)) > 0)
02245 {
02246 my_tosort_utf8mb4(uni_plane, &wc);
02247 my_hash_add(n1, n2, (uint32_t) (wc & 0xFF));
02248 my_hash_add(n1, n2, (uint32_t) (wc >> 8) & 0xFF);
02249 if (wc > 0xFFFF)
02250 {
02251
02252
02253
02254
02255
02256
02257
02258 my_hash_add(n1, n2, (uint32_t) (wc >> 16) & 0xFF);
02259 }
02260 s+= res;
02261 }
02262 }
02263
02264
02265 size_t
02266 my_caseup_str_utf8mb4(const CHARSET_INFO * const cs, char *src)
02267 {
02268 my_wc_t wc;
02269 int srcres, dstres;
02270 char *dst= src, *dst0= src;
02271 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02272 assert(cs->caseup_multiply == 1);
02273
02274 while (*src &&
02275 (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (unsigned char *) src)) > 0)
02276 {
02277 my_toupper_utf8mb4(uni_plane, &wc);
02278 if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (unsigned char*) dst)) <= 0)
02279 break;
02280 src+= srcres;
02281 dst+= dstres;
02282 }
02283 *dst= '\0';
02284 return (size_t) (dst - dst0);
02285 }
02286
02287
02288 size_t
02289 my_casedn_utf8mb4(const CHARSET_INFO * const cs,
02290 char *src, size_t srclen,
02291 char *dst, size_t dstlen)
02292 {
02293 my_wc_t wc;
02294 int srcres, dstres;
02295 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
02296 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02297 assert(src != dst || cs->casedn_multiply == 1);
02298
02299 while ((src < srcend) &&
02300 (srcres= my_mb_wc_utf8mb4(cs, &wc,
02301 (unsigned char*) src, (unsigned char*) srcend)) > 0)
02302 {
02303 my_tolower_utf8mb4(uni_plane, &wc);
02304 if ((dstres= my_wc_mb_utf8mb4(cs, wc, (unsigned char*) dst, (unsigned char*) dstend)) <= 0)
02305 break;
02306 src+= srcres;
02307 dst+= dstres;
02308 }
02309 return (size_t) (dst - dst0);
02310 }
02311
02312
02313 size_t
02314 my_casedn_str_utf8mb4(const CHARSET_INFO * const cs, char *src)
02315 {
02316 my_wc_t wc;
02317 int srcres, dstres;
02318 char *dst= src, *dst0= src;
02319 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02320 assert(cs->casedn_multiply == 1);
02321
02322 while (*src &&
02323 (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (unsigned char *) src)) > 0)
02324 {
02325 my_tolower_utf8mb4(uni_plane, &wc);
02326 if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (unsigned char*) dst)) <= 0)
02327 break;
02328 src+= srcres;
02329 dst+= dstres;
02330 }
02331
02332
02333
02334
02335
02336
02337
02338
02339
02340
02341
02342
02343
02344
02345
02346
02347 *dst= '\0';
02348 return (size_t) (dst - dst0);
02349 }
02350
02351
02352 int
02353 my_strnncoll_utf8mb4(const CHARSET_INFO * const cs,
02354 const unsigned char *s, size_t slen,
02355 const unsigned char *t, size_t tlen,
02356 bool t_is_prefix)
02357 {
02358 my_wc_t s_wc=0;
02359 my_wc_t t_wc=0;
02360 const unsigned char *se= s + slen;
02361 const unsigned char *te= t + tlen;
02362 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02363
02364 while ( s < se && t < te )
02365 {
02366 int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
02367 int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
02368
02369 if ( s_res <= 0 || t_res <= 0 )
02370 {
02371
02372 return bincmp_utf8mb4(s, se, t, te);
02373 }
02374
02375 my_tosort_utf8mb4(uni_plane, &s_wc);
02376 my_tosort_utf8mb4(uni_plane, &t_wc);
02377
02378 if ( s_wc != t_wc )
02379 {
02380 return s_wc > t_wc ? 1 : -1;
02381 }
02382
02383 s+= s_res;
02384 t+= t_res;
02385 }
02386 return (int) (t_is_prefix ? (t - te) : ((se - s) - (te - t)));
02387 }
02388
02389
02417 int
02418 my_strnncollsp_utf8mb4(const CHARSET_INFO * const cs,
02419 const unsigned char *s, size_t slen,
02420 const unsigned char *t, size_t tlen,
02421 bool diff_if_only_endspace_difference)
02422 {
02423 int res;
02424 my_wc_t s_wc=0;
02425 my_wc_t t_wc=0;
02426 const unsigned char *se= s + slen, *te= t + tlen;
02427 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02428
02429 #ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
02430 diff_if_only_endspace_difference= false;
02431 #endif
02432
02433 while ( s < se && t < te )
02434 {
02435 int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
02436 int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
02437
02438 if ( s_res <= 0 || t_res <= 0 )
02439 {
02440
02441 return bincmp_utf8mb4(s, se, t, te);
02442 }
02443
02444 my_tosort_utf8mb4(uni_plane, &s_wc);
02445 my_tosort_utf8mb4(uni_plane, &t_wc);
02446
02447 if ( s_wc != t_wc )
02448 {
02449 return s_wc > t_wc ? 1 : -1;
02450 }
02451
02452 s+=s_res;
02453 t+=t_res;
02454 }
02455
02456 slen= (size_t) (se-s);
02457 tlen= (size_t) (te-t);
02458 res= 0;
02459
02460 if (slen != tlen)
02461 {
02462 int swap= 1;
02463 if (diff_if_only_endspace_difference)
02464 res= 1;
02465 if (slen < tlen)
02466 {
02467 slen= tlen;
02468 s= t;
02469 se= te;
02470 swap= -1;
02471 res= -res;
02472 }
02473
02474
02475
02476
02477
02478
02479
02480
02481
02482
02483 for ( ; s < se; s++)
02484 {
02485 if (*s != ' ')
02486 return (*s < ' ') ? -swap : swap;
02487 }
02488 }
02489 return res;
02490 }
02491
02492
02506 int my_strcasecmp_utf8mb4(const CHARSET_INFO * const cs,
02507 const char *s, const char *t)
02508 {
02509 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
02510 while (s[0] && t[0])
02511 {
02512 my_wc_t s_wc,t_wc;
02513
02514 if ((unsigned char) s[0] < 128)
02515 {
02516
02517
02518
02519
02520
02521 s_wc= plane00[(unsigned char) s[0]].tolower;
02522 s++;
02523 }
02524 else
02525 {
02526 int res= my_mb_wc_utf8mb4_no_range(cs, &s_wc, (const unsigned char*) s);
02527
02528
02529
02530
02531
02532 if (res <= 0)
02533 return strcmp(s, t);
02534 s+= res;
02535
02536 my_tolower_utf8mb4(uni_plane, &s_wc);
02537 }
02538
02539
02540
02541
02542 if ((unsigned char) t[0] < 128)
02543 {
02544
02545 t_wc= plane00[(unsigned char) t[0]].tolower;
02546 t++;
02547 }
02548 else
02549 {
02550 int res= my_mb_wc_utf8mb4_no_range(cs, &t_wc, (const unsigned char*) t);
02551 if (res <= 0)
02552 return strcmp(s, t);
02553 t+= res;
02554
02555 my_tolower_utf8mb4(uni_plane, &t_wc);
02556 }
02557
02558
02559 if ( s_wc != t_wc )
02560 return ((int) s_wc) - ((int) t_wc);
02561 }
02562 return ((int) (unsigned char) s[0]) - ((int) (unsigned char) t[0]);
02563 }
02564
02565
02566 int
02567 my_wildcmp_utf8mb4(const CHARSET_INFO * const cs,
02568 const char *str, const char *strend,
02569 const char *wildstr, const char *wildend,
02570 int escape, int w_one, int w_many)
02571 {
02572 return my_wildcmp_unicode(cs, str, strend, wildstr, wildend,
02573 escape, w_one, w_many, cs->caseinfo);
02574 }
02575
02576
02577 size_t
02578 my_strnxfrmlen_utf8mb4(const CHARSET_INFO * const, size_t len)
02579 {
02580
02581 return (len * 2 + 2) / 4;
02582 }
02583
02584
02585 size_t
02586 my_strnxfrm_utf8mb4(const CHARSET_INFO * const cs,
02587 unsigned char *dst, size_t dstlen, uint32_t nweights,
02588 const unsigned char *src, size_t srclen, uint32_t flags)
02589 {
02590 my_wc_t wc;
02591 int res;
02592 unsigned char *dst0= dst;
02593 unsigned char *de= dst + dstlen;
02594 unsigned char *de_beg= de - 1;
02595 const unsigned char *se = src + srclen;
02596 MY_UNICASE_INFO **uni_plane= (cs->state & MY_CS_BINSORT) ?
02597 NULL : cs->caseinfo;
02598
02599 for (; dst < de_beg && nweights; nweights--)
02600 {
02601 if ((res= my_mb_wc_utf8mb4(cs,&wc, src, se)) <= 0)
02602 break;
02603 src+=res;
02604
02605 if (uni_plane)
02606 my_tosort_utf8mb4(uni_plane, &wc);
02607
02608 *dst++= (unsigned char)(wc >> 8);
02609 *dst++= (unsigned char)(wc & 0xFF);
02610
02611 }
02612
02613 if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
02614 {
02615
02616 for (; dst < de_beg && nweights; nweights--)
02617 {
02618 *dst++= 0x00;
02619 *dst++= 0x20;
02620 }
02621
02622 if (dst < de)
02623 *dst++= 0x00;
02624 }
02625 my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
02626 return dst - dst0;
02627 }
02628
02629
02630 unsigned int my_ismbchar_utf8mb4(const CHARSET_INFO * const cs,
02631 const char *b, const char *e)
02632 {
02633 my_wc_t wc;
02634 int res= my_mb_wc_utf8mb4(cs,&wc, (const unsigned char*)b, (const unsigned char*)e);
02635 return (res > 1) ? res : 0;
02636 }
02637
02638
02639 unsigned int my_mbcharlen_utf8mb4(const CHARSET_INFO * const, uint32_t c)
02640 {
02641 if (c < 0x80)
02642 return 1;
02643 if (c < 0xc2)
02644 return 0;
02645 if (c < 0xe0)
02646 return 2;
02647 if (c < 0xf0)
02648 return 3;
02649 if (c < 0xf8)
02650 return 4;
02651 return 0; ;
02652 }
02653
02654
02655 static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
02656 {
02657 NULL,
02658 my_strnncoll_utf8mb4,
02659 my_strnncollsp_utf8mb4,
02660 my_strnxfrm_utf8mb4,
02661 my_strnxfrmlen_utf8mb4,
02662 my_like_range_mb,
02663 my_wildcmp_utf8mb4,
02664 my_strcasecmp_utf8mb4,
02665 my_instr_mb,
02666 my_hash_sort_utf8mb4,
02667 my_propagate_complex
02668 };
02669
02670
02671 static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
02672 {
02673 NULL,
02674 my_strnncoll_mb_bin,
02675 my_strnncollsp_mb_bin,
02676 my_strnxfrm_utf8mb4,
02677 my_strnxfrmlen_utf8mb4,
02678 my_like_range_mb,
02679 my_wildcmp_mb_bin,
02680 my_strcasecmp_mb_bin,
02681 my_instr_mb,
02682 my_hash_sort_mb_bin,
02683 my_propagate_simple
02684 };
02685
02686
02687 MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
02688 {
02689 NULL,
02690 my_ismbchar_utf8mb4,
02691 my_mbcharlen_utf8mb4,
02692 my_numchars_mb,
02693 my_charpos_mb,
02694 my_well_formed_len_mb,
02695 my_lengthsp_8bit,
02696 my_numcells_mb,
02697 my_mb_wc_utf8mb4,
02698 my_wc_mb_utf8mb4,
02699 my_mb_ctype_mb,
02700 my_caseup_str_utf8mb4,
02701 my_casedn_str_utf8mb4,
02702 my_caseup_utf8mb4,
02703 my_casedn_utf8mb4,
02704 my_snprintf_8bit,
02705 my_long10_to_str_8bit,
02706 my_int64_t10_to_str_8bit,
02707 my_fill_8bit,
02708 my_strntol_8bit,
02709 my_strntoul_8bit,
02710 my_strntoll_8bit,
02711 my_strntoull_8bit,
02712 my_strntod_8bit,
02713 my_strtoll10_8bit,
02714 my_strntoull10rnd_8bit,
02715 my_scan_8bit
02716 };
02717
02718
02719
02720 DRIZZLED_API CHARSET_INFO my_charset_utf8mb4_general_ci=
02721 {
02722 45,0,0,
02723 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE,
02724 MY_UTF8MB4,
02725 MY_UTF8MB4_GENERAL_CI,
02726 "UTF-8 Unicode",
02727 NULL,
02728 ctype_utf8mb4,
02729 to_lower_utf8mb4,
02730 to_upper_utf8mb4,
02731 to_upper_utf8mb4,
02732 NULL,
02733 NULL,
02734 NULL,
02735 NULL,
02736 my_unicase_default,
02737 NULL,
02738 NULL,
02739 1,
02740 1,
02741 1,
02742 1,
02743 4,
02744 0,
02745 0xFFFF,
02746 ' ',
02747 0,
02748 1,
02749 1,
02750 &my_charset_utf8mb4_handler,
02751 &my_collation_utf8mb4_general_ci_handler
02752 };
02753
02754
02755 DRIZZLED_API CHARSET_INFO my_charset_utf8mb4_bin=
02756 {
02757 46,0,0,
02758 MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE,
02759 MY_UTF8MB4,
02760 MY_UTF8MB4_BIN,
02761 "UTF-8 Unicode",
02762 NULL,
02763 ctype_utf8mb4,
02764 to_lower_utf8mb4,
02765 to_upper_utf8mb4,
02766 NULL,
02767 NULL,
02768 NULL,
02769 NULL,
02770 NULL,
02771 my_unicase_default,
02772 NULL,
02773 NULL,
02774 1,
02775 1,
02776 1,
02777 1,
02778 4,
02779 0,
02780 0xFFFF,
02781 ' ',
02782 0,
02783 1,
02784 1,
02785 &my_charset_utf8mb4_handler,
02786 &my_collation_utf8mb4_bin_handler
02787 };
02788
02789
02790
02791 static inline int bincmp(const unsigned char *s, const unsigned char *se,
02792 const unsigned char *t, const unsigned char *te)
02793 {
02794 int slen= (int) (se-s), tlen= (int) (te-t);
02795 int len= min(slen,tlen);
02796 int cmp= memcmp(s,t,len);
02797 return cmp ? cmp : slen-tlen;
02798 }
02799
02800
02801
02802
02803
02804
02805
02806
02807
02808
02809
02810
02811
02812
02813
02814
02815
02816
02817
02818
02819
02820
02821
02822
02823
02824 }
02825
02826 #ifdef MY_TEST_UTF8
02827 #include <stdio.h>
02828
02829 static void test_mb(CHARSET_INFO *cs, unsigned char *s)
02830 {
02831 while(*s)
02832 {
02833 if (my_ismbhead_utf8(cs,*s))
02834 {
02835 uint32_t len=my_mbcharlen_utf8(cs,*s);
02836 while(len--)
02837 {
02838 printf("%c",*s);
02839 s++;
02840 }
02841 printf("\n");
02842 }
02843 else
02844 {
02845 printf("%c\n",*s);
02846 s++;
02847 }
02848 }
02849 }
02850
02851 int main()
02852 {
02853 char str[1024]=" utf8 test проба ПЕРА по-РУССКИ";
02854 CHARSET_INFO *cs;
02855
02856 test_mb(cs,(unsigned char*)str);
02857
02858 printf("orig :'%s'\n",str);
02859
02860 my_caseup_utf8(cs,str,15);
02861 printf("caseup :'%s'\n",str);
02862
02863 my_caseup_str_utf8(cs,str);
02864 printf("caseup_str:'%s'\n",str);
02865
02866 my_casedn_utf8(cs,str,15);
02867 printf("casedn :'%s'\n",str);
02868
02869 my_casedn_str_utf8(cs,str);
02870 printf("casedn_str:'%s'\n",str);
02871
02872 return 0;
02873 }
02874
02875 #endif