1
/* Copyright (C) 2000 MySQL AB
3
This library is free software; you can redistribute it and/or
4
modify it under the terms of the GNU Library General Public
5
License as published by the Free Software Foundation; version 2
8
This library is distributed in the hope that it will be useful,
9
but WITHOUT ANY WARRANTY; without even the implied warranty of
10
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
Library General Public License for more details.
13
You should have received a copy of the GNU Library General Public
14
License along with this library; if not, write to the Free
15
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18
/* UTF8 according RFC 2279 */
19
/* Written by Alexander Barkov <bar@udm.net> */
23
#include "drizzled/internal/m_string.h"
24
#include "drizzled/charset_info.h"
34
#define MY_UTF8MB3_GENERAL_CI MY_UTF8MB3 "_general_ci"
35
#define MY_UTF8MB3_BIN MY_UTF8MB3 "_bin"
36
#define MY_UTF8MB4_GENERAL_CI MY_UTF8MB4 "_general_ci"
37
#define MY_UTF8MB4_BIN MY_UTF8MB4 "_bin"
45
void my_hash_sort_utf8mb4(const CHARSET_INFO * const cs,
46
const unsigned char *s, size_t slen,
47
uint32_t *n1, uint32_t *n2);
49
static MY_UNICASE_INFO plane00[]={
50
{0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
51
{0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
52
{0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
53
{0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
54
{0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
55
{0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
56
{0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
57
{0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
58
{0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
59
{0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
60
{0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
61
{0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
62
{0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
63
{0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
64
{0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
65
{0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
66
{0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
67
{0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
68
{0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
69
{0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
70
{0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
71
{0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
72
{0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
73
{0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
74
{0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
75
{0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
76
{0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
77
{0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
78
{0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
79
{0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
80
{0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
81
{0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
82
{0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
83
{0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
84
{0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
85
{0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
86
{0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
87
{0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
88
{0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
89
{0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
90
{0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
91
{0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
92
{0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
93
{0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
94
{0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
95
{0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
96
{0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
97
{0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
98
{0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
99
{0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
100
{0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
101
{0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
102
{0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
103
{0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
104
{0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
105
{0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
106
{0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
107
{0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
108
{0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
109
{0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
110
{0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
111
{0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
112
{0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
113
{0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
114
{0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
115
{0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
116
{0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
117
{0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
118
{0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
119
{0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
120
{0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
121
{0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
122
{0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
123
{0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
124
{0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
125
{0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
126
{0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
127
{0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
128
{0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
129
{0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
130
{0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
131
{0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
132
{0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
133
{0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
134
{0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
135
{0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
136
{0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
137
{0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
138
{0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
139
{0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
140
{0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
141
{0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
142
{0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
143
{0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
144
{0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
145
{0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
146
{0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
147
{0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
148
{0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
149
{0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
150
{0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
151
{0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
152
{0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
153
{0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
154
{0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
155
{0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
156
{0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
157
{0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
158
{0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
159
{0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
160
{0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
161
{0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053},
162
{0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
163
{0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
164
{0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
165
{0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
166
{0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
167
{0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
168
{0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
169
{0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
170
{0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
171
{0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
172
{0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
173
{0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
174
{0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
175
{0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
176
{0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
177
{0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
182
static MY_UNICASE_INFO plane01[]={
183
{0x0100,0x0101,0x0041}, {0x0100,0x0101,0x0041},
184
{0x0102,0x0103,0x0041}, {0x0102,0x0103,0x0041},
185
{0x0104,0x0105,0x0041}, {0x0104,0x0105,0x0041},
186
{0x0106,0x0107,0x0043}, {0x0106,0x0107,0x0043},
187
{0x0108,0x0109,0x0043}, {0x0108,0x0109,0x0043},
188
{0x010A,0x010B,0x0043}, {0x010A,0x010B,0x0043},
189
{0x010C,0x010D,0x0043}, {0x010C,0x010D,0x0043},
190
{0x010E,0x010F,0x0044}, {0x010E,0x010F,0x0044},
191
{0x0110,0x0111,0x0110}, {0x0110,0x0111,0x0110},
192
{0x0112,0x0113,0x0045}, {0x0112,0x0113,0x0045},
193
{0x0114,0x0115,0x0045}, {0x0114,0x0115,0x0045},
194
{0x0116,0x0117,0x0045}, {0x0116,0x0117,0x0045},
195
{0x0118,0x0119,0x0045}, {0x0118,0x0119,0x0045},
196
{0x011A,0x011B,0x0045}, {0x011A,0x011B,0x0045},
197
{0x011C,0x011D,0x0047}, {0x011C,0x011D,0x0047},
198
{0x011E,0x011F,0x0047}, {0x011E,0x011F,0x0047},
199
{0x0120,0x0121,0x0047}, {0x0120,0x0121,0x0047},
200
{0x0122,0x0123,0x0047}, {0x0122,0x0123,0x0047},
201
{0x0124,0x0125,0x0048}, {0x0124,0x0125,0x0048},
202
{0x0126,0x0127,0x0126}, {0x0126,0x0127,0x0126},
203
{0x0128,0x0129,0x0049}, {0x0128,0x0129,0x0049},
204
{0x012A,0x012B,0x0049}, {0x012A,0x012B,0x0049},
205
{0x012C,0x012D,0x0049}, {0x012C,0x012D,0x0049},
206
{0x012E,0x012F,0x0049}, {0x012E,0x012F,0x0049},
207
{0x0130,0x0069,0x0049}, {0x0049,0x0131,0x0049},
208
{0x0132,0x0133,0x0132}, {0x0132,0x0133,0x0132},
209
{0x0134,0x0135,0x004A}, {0x0134,0x0135,0x004A},
210
{0x0136,0x0137,0x004B}, {0x0136,0x0137,0x004B},
211
{0x0138,0x0138,0x0138}, {0x0139,0x013A,0x004C},
212
{0x0139,0x013A,0x004C}, {0x013B,0x013C,0x004C},
213
{0x013B,0x013C,0x004C}, {0x013D,0x013E,0x004C},
214
{0x013D,0x013E,0x004C}, {0x013F,0x0140,0x013F},
215
{0x013F,0x0140,0x013F}, {0x0141,0x0142,0x0141},
216
{0x0141,0x0142,0x0141}, {0x0143,0x0144,0x004E},
217
{0x0143,0x0144,0x004E}, {0x0145,0x0146,0x004E},
218
{0x0145,0x0146,0x004E}, {0x0147,0x0148,0x004E},
219
{0x0147,0x0148,0x004E}, {0x0149,0x0149,0x0149},
220
{0x014A,0x014B,0x014A}, {0x014A,0x014B,0x014A},
221
{0x014C,0x014D,0x004F}, {0x014C,0x014D,0x004F},
222
{0x014E,0x014F,0x004F}, {0x014E,0x014F,0x004F},
223
{0x0150,0x0151,0x004F}, {0x0150,0x0151,0x004F},
224
{0x0152,0x0153,0x0152}, {0x0152,0x0153,0x0152},
225
{0x0154,0x0155,0x0052}, {0x0154,0x0155,0x0052},
226
{0x0156,0x0157,0x0052}, {0x0156,0x0157,0x0052},
227
{0x0158,0x0159,0x0052}, {0x0158,0x0159,0x0052},
228
{0x015A,0x015B,0x0053}, {0x015A,0x015B,0x0053},
229
{0x015C,0x015D,0x0053}, {0x015C,0x015D,0x0053},
230
{0x015E,0x015F,0x0053}, {0x015E,0x015F,0x0053},
231
{0x0160,0x0161,0x0053}, {0x0160,0x0161,0x0053},
232
{0x0162,0x0163,0x0054}, {0x0162,0x0163,0x0054},
233
{0x0164,0x0165,0x0054}, {0x0164,0x0165,0x0054},
234
{0x0166,0x0167,0x0166}, {0x0166,0x0167,0x0166},
235
{0x0168,0x0169,0x0055}, {0x0168,0x0169,0x0055},
236
{0x016A,0x016B,0x0055}, {0x016A,0x016B,0x0055},
237
{0x016C,0x016D,0x0055}, {0x016C,0x016D,0x0055},
238
{0x016E,0x016F,0x0055}, {0x016E,0x016F,0x0055},
239
{0x0170,0x0171,0x0055}, {0x0170,0x0171,0x0055},
240
{0x0172,0x0173,0x0055}, {0x0172,0x0173,0x0055},
241
{0x0174,0x0175,0x0057}, {0x0174,0x0175,0x0057},
242
{0x0176,0x0177,0x0059}, {0x0176,0x0177,0x0059},
243
{0x0178,0x00FF,0x0059}, {0x0179,0x017A,0x005A},
244
{0x0179,0x017A,0x005A}, {0x017B,0x017C,0x005A},
245
{0x017B,0x017C,0x005A}, {0x017D,0x017E,0x005A},
246
{0x017D,0x017E,0x005A}, {0x0053,0x017F,0x0053},
247
{0x0180,0x0180,0x0180}, {0x0181,0x0253,0x0181},
248
{0x0182,0x0183,0x0182}, {0x0182,0x0183,0x0182},
249
{0x0184,0x0185,0x0184}, {0x0184,0x0185,0x0184},
250
{0x0186,0x0254,0x0186}, {0x0187,0x0188,0x0187},
251
{0x0187,0x0188,0x0187}, {0x0189,0x0256,0x0189},
252
{0x018A,0x0257,0x018A}, {0x018B,0x018C,0x018B},
253
{0x018B,0x018C,0x018B}, {0x018D,0x018D,0x018D},
254
{0x018E,0x01DD,0x018E}, {0x018F,0x0259,0x018F},
255
{0x0190,0x025B,0x0190}, {0x0191,0x0192,0x0191},
256
{0x0191,0x0192,0x0191}, {0x0193,0x0260,0x0193},
257
{0x0194,0x0263,0x0194}, {0x01F6,0x0195,0x01F6},
258
{0x0196,0x0269,0x0196}, {0x0197,0x0268,0x0197},
259
{0x0198,0x0199,0x0198}, {0x0198,0x0199,0x0198},
260
{0x019A,0x019A,0x019A}, {0x019B,0x019B,0x019B},
261
{0x019C,0x026F,0x019C}, {0x019D,0x0272,0x019D},
262
{0x019E,0x019E,0x019E}, {0x019F,0x0275,0x019F},
263
{0x01A0,0x01A1,0x004F}, {0x01A0,0x01A1,0x004F},
264
{0x01A2,0x01A3,0x01A2}, {0x01A2,0x01A3,0x01A2},
265
{0x01A4,0x01A5,0x01A4}, {0x01A4,0x01A5,0x01A4},
266
{0x01A6,0x0280,0x01A6}, {0x01A7,0x01A8,0x01A7},
267
{0x01A7,0x01A8,0x01A7}, {0x01A9,0x0283,0x01A9},
268
{0x01AA,0x01AA,0x01AA}, {0x01AB,0x01AB,0x01AB},
269
{0x01AC,0x01AD,0x01AC}, {0x01AC,0x01AD,0x01AC},
270
{0x01AE,0x0288,0x01AE}, {0x01AF,0x01B0,0x0055},
271
{0x01AF,0x01B0,0x0055}, {0x01B1,0x028A,0x01B1},
272
{0x01B2,0x028B,0x01B2}, {0x01B3,0x01B4,0x01B3},
273
{0x01B3,0x01B4,0x01B3}, {0x01B5,0x01B6,0x01B5},
274
{0x01B5,0x01B6,0x01B5}, {0x01B7,0x0292,0x01B7},
275
{0x01B8,0x01B9,0x01B8}, {0x01B8,0x01B9,0x01B8},
276
{0x01BA,0x01BA,0x01BA}, {0x01BB,0x01BB,0x01BB},
277
{0x01BC,0x01BD,0x01BC}, {0x01BC,0x01BD,0x01BC},
278
{0x01BE,0x01BE,0x01BE}, {0x01F7,0x01BF,0x01F7},
279
{0x01C0,0x01C0,0x01C0}, {0x01C1,0x01C1,0x01C1},
280
{0x01C2,0x01C2,0x01C2}, {0x01C3,0x01C3,0x01C3},
281
{0x01C4,0x01C6,0x01C4}, {0x01C4,0x01C6,0x01C4},
282
{0x01C4,0x01C6,0x01C4}, {0x01C7,0x01C9,0x01C7},
283
{0x01C7,0x01C9,0x01C7}, {0x01C7,0x01C9,0x01C7},
284
{0x01CA,0x01CC,0x01CA}, {0x01CA,0x01CC,0x01CA},
285
{0x01CA,0x01CC,0x01CA}, {0x01CD,0x01CE,0x0041},
286
{0x01CD,0x01CE,0x0041}, {0x01CF,0x01D0,0x0049},
287
{0x01CF,0x01D0,0x0049}, {0x01D1,0x01D2,0x004F},
288
{0x01D1,0x01D2,0x004F}, {0x01D3,0x01D4,0x0055},
289
{0x01D3,0x01D4,0x0055}, {0x01D5,0x01D6,0x0055},
290
{0x01D5,0x01D6,0x0055}, {0x01D7,0x01D8,0x0055},
291
{0x01D7,0x01D8,0x0055}, {0x01D9,0x01DA,0x0055},
292
{0x01D9,0x01DA,0x0055}, {0x01DB,0x01DC,0x0055},
293
{0x01DB,0x01DC,0x0055}, {0x018E,0x01DD,0x018E},
294
{0x01DE,0x01DF,0x0041}, {0x01DE,0x01DF,0x0041},
295
{0x01E0,0x01E1,0x0041}, {0x01E0,0x01E1,0x0041},
296
{0x01E2,0x01E3,0x00C6}, {0x01E2,0x01E3,0x00C6},
297
{0x01E4,0x01E5,0x01E4}, {0x01E4,0x01E5,0x01E4},
298
{0x01E6,0x01E7,0x0047}, {0x01E6,0x01E7,0x0047},
299
{0x01E8,0x01E9,0x004B}, {0x01E8,0x01E9,0x004B},
300
{0x01EA,0x01EB,0x004F}, {0x01EA,0x01EB,0x004F},
301
{0x01EC,0x01ED,0x004F}, {0x01EC,0x01ED,0x004F},
302
{0x01EE,0x01EF,0x01B7}, {0x01EE,0x01EF,0x01B7},
303
{0x01F0,0x01F0,0x004A}, {0x01F1,0x01F3,0x01F1},
304
{0x01F1,0x01F3,0x01F1}, {0x01F1,0x01F3,0x01F1},
305
{0x01F4,0x01F5,0x0047}, {0x01F4,0x01F5,0x0047},
306
{0x01F6,0x0195,0x01F6}, {0x01F7,0x01BF,0x01F7},
307
{0x01F8,0x01F9,0x004E}, {0x01F8,0x01F9,0x004E},
308
{0x01FA,0x01FB,0x0041}, {0x01FA,0x01FB,0x0041},
309
{0x01FC,0x01FD,0x00C6}, {0x01FC,0x01FD,0x00C6},
310
{0x01FE,0x01FF,0x00D8}, {0x01FE,0x01FF,0x00D8}
313
static MY_UNICASE_INFO plane02[]={
314
{0x0200,0x0201,0x0041}, {0x0200,0x0201,0x0041},
315
{0x0202,0x0203,0x0041}, {0x0202,0x0203,0x0041},
316
{0x0204,0x0205,0x0045}, {0x0204,0x0205,0x0045},
317
{0x0206,0x0207,0x0045}, {0x0206,0x0207,0x0045},
318
{0x0208,0x0209,0x0049}, {0x0208,0x0209,0x0049},
319
{0x020A,0x020B,0x0049}, {0x020A,0x020B,0x0049},
320
{0x020C,0x020D,0x004F}, {0x020C,0x020D,0x004F},
321
{0x020E,0x020F,0x004F}, {0x020E,0x020F,0x004F},
322
{0x0210,0x0211,0x0052}, {0x0210,0x0211,0x0052},
323
{0x0212,0x0213,0x0052}, {0x0212,0x0213,0x0052},
324
{0x0214,0x0215,0x0055}, {0x0214,0x0215,0x0055},
325
{0x0216,0x0217,0x0055}, {0x0216,0x0217,0x0055},
326
{0x0218,0x0219,0x0053}, {0x0218,0x0219,0x0053},
327
{0x021A,0x021B,0x0054}, {0x021A,0x021B,0x0054},
328
{0x021C,0x021D,0x021C}, {0x021C,0x021D,0x021C},
329
{0x021E,0x021F,0x0048}, {0x021E,0x021F,0x0048},
330
{0x0220,0x0220,0x0220}, {0x0221,0x0221,0x0221},
331
{0x0222,0x0223,0x0222}, {0x0222,0x0223,0x0222},
332
{0x0224,0x0225,0x0224}, {0x0224,0x0225,0x0224},
333
{0x0226,0x0227,0x0041}, {0x0226,0x0227,0x0041},
334
{0x0228,0x0229,0x0045}, {0x0228,0x0229,0x0045},
335
{0x022A,0x022B,0x004F}, {0x022A,0x022B,0x004F},
336
{0x022C,0x022D,0x004F}, {0x022C,0x022D,0x004F},
337
{0x022E,0x022F,0x004F}, {0x022E,0x022F,0x004F},
338
{0x0230,0x0231,0x004F}, {0x0230,0x0231,0x004F},
339
{0x0232,0x0233,0x0059}, {0x0232,0x0233,0x0059},
340
{0x0234,0x0234,0x0234}, {0x0235,0x0235,0x0235},
341
{0x0236,0x0236,0x0236}, {0x0237,0x0237,0x0237},
342
{0x0238,0x0238,0x0238}, {0x0239,0x0239,0x0239},
343
{0x023A,0x023A,0x023A}, {0x023B,0x023B,0x023B},
344
{0x023C,0x023C,0x023C}, {0x023D,0x023D,0x023D},
345
{0x023E,0x023E,0x023E}, {0x023F,0x023F,0x023F},
346
{0x0240,0x0240,0x0240}, {0x0241,0x0241,0x0241},
347
{0x0242,0x0242,0x0242}, {0x0243,0x0243,0x0243},
348
{0x0244,0x0244,0x0244}, {0x0245,0x0245,0x0245},
349
{0x0246,0x0246,0x0246}, {0x0247,0x0247,0x0247},
350
{0x0248,0x0248,0x0248}, {0x0249,0x0249,0x0249},
351
{0x024A,0x024A,0x024A}, {0x024B,0x024B,0x024B},
352
{0x024C,0x024C,0x024C}, {0x024D,0x024D,0x024D},
353
{0x024E,0x024E,0x024E}, {0x024F,0x024F,0x024F},
354
{0x0250,0x0250,0x0250}, {0x0251,0x0251,0x0251},
355
{0x0252,0x0252,0x0252}, {0x0181,0x0253,0x0181},
356
{0x0186,0x0254,0x0186}, {0x0255,0x0255,0x0255},
357
{0x0189,0x0256,0x0189}, {0x018A,0x0257,0x018A},
358
{0x0258,0x0258,0x0258}, {0x018F,0x0259,0x018F},
359
{0x025A,0x025A,0x025A}, {0x0190,0x025B,0x0190},
360
{0x025C,0x025C,0x025C}, {0x025D,0x025D,0x025D},
361
{0x025E,0x025E,0x025E}, {0x025F,0x025F,0x025F},
362
{0x0193,0x0260,0x0193}, {0x0261,0x0261,0x0261},
363
{0x0262,0x0262,0x0262}, {0x0194,0x0263,0x0194},
364
{0x0264,0x0264,0x0264}, {0x0265,0x0265,0x0265},
365
{0x0266,0x0266,0x0266}, {0x0267,0x0267,0x0267},
366
{0x0197,0x0268,0x0197}, {0x0196,0x0269,0x0196},
367
{0x026A,0x026A,0x026A}, {0x026B,0x026B,0x026B},
368
{0x026C,0x026C,0x026C}, {0x026D,0x026D,0x026D},
369
{0x026E,0x026E,0x026E}, {0x019C,0x026F,0x019C},
370
{0x0270,0x0270,0x0270}, {0x0271,0x0271,0x0271},
371
{0x019D,0x0272,0x019D}, {0x0273,0x0273,0x0273},
372
{0x0274,0x0274,0x0274}, {0x019F,0x0275,0x019F},
373
{0x0276,0x0276,0x0276}, {0x0277,0x0277,0x0277},
374
{0x0278,0x0278,0x0278}, {0x0279,0x0279,0x0279},
375
{0x027A,0x027A,0x027A}, {0x027B,0x027B,0x027B},
376
{0x027C,0x027C,0x027C}, {0x027D,0x027D,0x027D},
377
{0x027E,0x027E,0x027E}, {0x027F,0x027F,0x027F},
378
{0x01A6,0x0280,0x01A6}, {0x0281,0x0281,0x0281},
379
{0x0282,0x0282,0x0282}, {0x01A9,0x0283,0x01A9},
380
{0x0284,0x0284,0x0284}, {0x0285,0x0285,0x0285},
381
{0x0286,0x0286,0x0286}, {0x0287,0x0287,0x0287},
382
{0x01AE,0x0288,0x01AE}, {0x0289,0x0289,0x0289},
383
{0x01B1,0x028A,0x01B1}, {0x01B2,0x028B,0x01B2},
384
{0x028C,0x028C,0x028C}, {0x028D,0x028D,0x028D},
385
{0x028E,0x028E,0x028E}, {0x028F,0x028F,0x028F},
386
{0x0290,0x0290,0x0290}, {0x0291,0x0291,0x0291},
387
{0x01B7,0x0292,0x01B7}, {0x0293,0x0293,0x0293},
388
{0x0294,0x0294,0x0294}, {0x0295,0x0295,0x0295},
389
{0x0296,0x0296,0x0296}, {0x0297,0x0297,0x0297},
390
{0x0298,0x0298,0x0298}, {0x0299,0x0299,0x0299},
391
{0x029A,0x029A,0x029A}, {0x029B,0x029B,0x029B},
392
{0x029C,0x029C,0x029C}, {0x029D,0x029D,0x029D},
393
{0x029E,0x029E,0x029E}, {0x029F,0x029F,0x029F},
394
{0x02A0,0x02A0,0x02A0}, {0x02A1,0x02A1,0x02A1},
395
{0x02A2,0x02A2,0x02A2}, {0x02A3,0x02A3,0x02A3},
396
{0x02A4,0x02A4,0x02A4}, {0x02A5,0x02A5,0x02A5},
397
{0x02A6,0x02A6,0x02A6}, {0x02A7,0x02A7,0x02A7},
398
{0x02A8,0x02A8,0x02A8}, {0x02A9,0x02A9,0x02A9},
399
{0x02AA,0x02AA,0x02AA}, {0x02AB,0x02AB,0x02AB},
400
{0x02AC,0x02AC,0x02AC}, {0x02AD,0x02AD,0x02AD},
401
{0x02AE,0x02AE,0x02AE}, {0x02AF,0x02AF,0x02AF},
402
{0x02B0,0x02B0,0x02B0}, {0x02B1,0x02B1,0x02B1},
403
{0x02B2,0x02B2,0x02B2}, {0x02B3,0x02B3,0x02B3},
404
{0x02B4,0x02B4,0x02B4}, {0x02B5,0x02B5,0x02B5},
405
{0x02B6,0x02B6,0x02B6}, {0x02B7,0x02B7,0x02B7},
406
{0x02B8,0x02B8,0x02B8}, {0x02B9,0x02B9,0x02B9},
407
{0x02BA,0x02BA,0x02BA}, {0x02BB,0x02BB,0x02BB},
408
{0x02BC,0x02BC,0x02BC}, {0x02BD,0x02BD,0x02BD},
409
{0x02BE,0x02BE,0x02BE}, {0x02BF,0x02BF,0x02BF},
410
{0x02C0,0x02C0,0x02C0}, {0x02C1,0x02C1,0x02C1},
411
{0x02C2,0x02C2,0x02C2}, {0x02C3,0x02C3,0x02C3},
412
{0x02C4,0x02C4,0x02C4}, {0x02C5,0x02C5,0x02C5},
413
{0x02C6,0x02C6,0x02C6}, {0x02C7,0x02C7,0x02C7},
414
{0x02C8,0x02C8,0x02C8}, {0x02C9,0x02C9,0x02C9},
415
{0x02CA,0x02CA,0x02CA}, {0x02CB,0x02CB,0x02CB},
416
{0x02CC,0x02CC,0x02CC}, {0x02CD,0x02CD,0x02CD},
417
{0x02CE,0x02CE,0x02CE}, {0x02CF,0x02CF,0x02CF},
418
{0x02D0,0x02D0,0x02D0}, {0x02D1,0x02D1,0x02D1},
419
{0x02D2,0x02D2,0x02D2}, {0x02D3,0x02D3,0x02D3},
420
{0x02D4,0x02D4,0x02D4}, {0x02D5,0x02D5,0x02D5},
421
{0x02D6,0x02D6,0x02D6}, {0x02D7,0x02D7,0x02D7},
422
{0x02D8,0x02D8,0x02D8}, {0x02D9,0x02D9,0x02D9},
423
{0x02DA,0x02DA,0x02DA}, {0x02DB,0x02DB,0x02DB},
424
{0x02DC,0x02DC,0x02DC}, {0x02DD,0x02DD,0x02DD},
425
{0x02DE,0x02DE,0x02DE}, {0x02DF,0x02DF,0x02DF},
426
{0x02E0,0x02E0,0x02E0}, {0x02E1,0x02E1,0x02E1},
427
{0x02E2,0x02E2,0x02E2}, {0x02E3,0x02E3,0x02E3},
428
{0x02E4,0x02E4,0x02E4}, {0x02E5,0x02E5,0x02E5},
429
{0x02E6,0x02E6,0x02E6}, {0x02E7,0x02E7,0x02E7},
430
{0x02E8,0x02E8,0x02E8}, {0x02E9,0x02E9,0x02E9},
431
{0x02EA,0x02EA,0x02EA}, {0x02EB,0x02EB,0x02EB},
432
{0x02EC,0x02EC,0x02EC}, {0x02ED,0x02ED,0x02ED},
433
{0x02EE,0x02EE,0x02EE}, {0x02EF,0x02EF,0x02EF},
434
{0x02F0,0x02F0,0x02F0}, {0x02F1,0x02F1,0x02F1},
435
{0x02F2,0x02F2,0x02F2}, {0x02F3,0x02F3,0x02F3},
436
{0x02F4,0x02F4,0x02F4}, {0x02F5,0x02F5,0x02F5},
437
{0x02F6,0x02F6,0x02F6}, {0x02F7,0x02F7,0x02F7},
438
{0x02F8,0x02F8,0x02F8}, {0x02F9,0x02F9,0x02F9},
439
{0x02FA,0x02FA,0x02FA}, {0x02FB,0x02FB,0x02FB},
440
{0x02FC,0x02FC,0x02FC}, {0x02FD,0x02FD,0x02FD},
441
{0x02FE,0x02FE,0x02FE}, {0x02FF,0x02FF,0x02FF}
444
static MY_UNICASE_INFO plane03[]={
445
{0x0300,0x0300,0x0300}, {0x0301,0x0301,0x0301},
446
{0x0302,0x0302,0x0302}, {0x0303,0x0303,0x0303},
447
{0x0304,0x0304,0x0304}, {0x0305,0x0305,0x0305},
448
{0x0306,0x0306,0x0306}, {0x0307,0x0307,0x0307},
449
{0x0308,0x0308,0x0308}, {0x0309,0x0309,0x0309},
450
{0x030A,0x030A,0x030A}, {0x030B,0x030B,0x030B},
451
{0x030C,0x030C,0x030C}, {0x030D,0x030D,0x030D},
452
{0x030E,0x030E,0x030E}, {0x030F,0x030F,0x030F},
453
{0x0310,0x0310,0x0310}, {0x0311,0x0311,0x0311},
454
{0x0312,0x0312,0x0312}, {0x0313,0x0313,0x0313},
455
{0x0314,0x0314,0x0314}, {0x0315,0x0315,0x0315},
456
{0x0316,0x0316,0x0316}, {0x0317,0x0317,0x0317},
457
{0x0318,0x0318,0x0318}, {0x0319,0x0319,0x0319},
458
{0x031A,0x031A,0x031A}, {0x031B,0x031B,0x031B},
459
{0x031C,0x031C,0x031C}, {0x031D,0x031D,0x031D},
460
{0x031E,0x031E,0x031E}, {0x031F,0x031F,0x031F},
461
{0x0320,0x0320,0x0320}, {0x0321,0x0321,0x0321},
462
{0x0322,0x0322,0x0322}, {0x0323,0x0323,0x0323},
463
{0x0324,0x0324,0x0324}, {0x0325,0x0325,0x0325},
464
{0x0326,0x0326,0x0326}, {0x0327,0x0327,0x0327},
465
{0x0328,0x0328,0x0328}, {0x0329,0x0329,0x0329},
466
{0x032A,0x032A,0x032A}, {0x032B,0x032B,0x032B},
467
{0x032C,0x032C,0x032C}, {0x032D,0x032D,0x032D},
468
{0x032E,0x032E,0x032E}, {0x032F,0x032F,0x032F},
469
{0x0330,0x0330,0x0330}, {0x0331,0x0331,0x0331},
470
{0x0332,0x0332,0x0332}, {0x0333,0x0333,0x0333},
471
{0x0334,0x0334,0x0334}, {0x0335,0x0335,0x0335},
472
{0x0336,0x0336,0x0336}, {0x0337,0x0337,0x0337},
473
{0x0338,0x0338,0x0338}, {0x0339,0x0339,0x0339},
474
{0x033A,0x033A,0x033A}, {0x033B,0x033B,0x033B},
475
{0x033C,0x033C,0x033C}, {0x033D,0x033D,0x033D},
476
{0x033E,0x033E,0x033E}, {0x033F,0x033F,0x033F},
477
{0x0340,0x0340,0x0340}, {0x0341,0x0341,0x0341},
478
{0x0342,0x0342,0x0342}, {0x0343,0x0343,0x0343},
479
{0x0344,0x0344,0x0344}, {0x0399,0x0345,0x0399},
480
{0x0346,0x0346,0x0346}, {0x0347,0x0347,0x0347},
481
{0x0348,0x0348,0x0348}, {0x0349,0x0349,0x0349},
482
{0x034A,0x034A,0x034A}, {0x034B,0x034B,0x034B},
483
{0x034C,0x034C,0x034C}, {0x034D,0x034D,0x034D},
484
{0x034E,0x034E,0x034E}, {0x034F,0x034F,0x034F},
485
{0x0350,0x0350,0x0350}, {0x0351,0x0351,0x0351},
486
{0x0352,0x0352,0x0352}, {0x0353,0x0353,0x0353},
487
{0x0354,0x0354,0x0354}, {0x0355,0x0355,0x0355},
488
{0x0356,0x0356,0x0356}, {0x0357,0x0357,0x0357},
489
{0x0358,0x0358,0x0358}, {0x0359,0x0359,0x0359},
490
{0x035A,0x035A,0x035A}, {0x035B,0x035B,0x035B},
491
{0x035C,0x035C,0x035C}, {0x035D,0x035D,0x035D},
492
{0x035E,0x035E,0x035E}, {0x035F,0x035F,0x035F},
493
{0x0360,0x0360,0x0360}, {0x0361,0x0361,0x0361},
494
{0x0362,0x0362,0x0362}, {0x0363,0x0363,0x0363},
495
{0x0364,0x0364,0x0364}, {0x0365,0x0365,0x0365},
496
{0x0366,0x0366,0x0366}, {0x0367,0x0367,0x0367},
497
{0x0368,0x0368,0x0368}, {0x0369,0x0369,0x0369},
498
{0x036A,0x036A,0x036A}, {0x036B,0x036B,0x036B},
499
{0x036C,0x036C,0x036C}, {0x036D,0x036D,0x036D},
500
{0x036E,0x036E,0x036E}, {0x036F,0x036F,0x036F},
501
{0x0370,0x0370,0x0370}, {0x0371,0x0371,0x0371},
502
{0x0372,0x0372,0x0372}, {0x0373,0x0373,0x0373},
503
{0x0374,0x0374,0x0374}, {0x0375,0x0375,0x0375},
504
{0x0376,0x0376,0x0376}, {0x0377,0x0377,0x0377},
505
{0x0378,0x0378,0x0378}, {0x0379,0x0379,0x0379},
506
{0x037A,0x037A,0x037A}, {0x037B,0x037B,0x037B},
507
{0x037C,0x037C,0x037C}, {0x037D,0x037D,0x037D},
508
{0x037E,0x037E,0x037E}, {0x037F,0x037F,0x037F},
509
{0x0380,0x0380,0x0380}, {0x0381,0x0381,0x0381},
510
{0x0382,0x0382,0x0382}, {0x0383,0x0383,0x0383},
511
{0x0384,0x0384,0x0384}, {0x0385,0x0385,0x0385},
512
{0x0386,0x03AC,0x0391}, {0x0387,0x0387,0x0387},
513
{0x0388,0x03AD,0x0395}, {0x0389,0x03AE,0x0397},
514
{0x038A,0x03AF,0x0399}, {0x038B,0x038B,0x038B},
515
{0x038C,0x03CC,0x039F}, {0x038D,0x038D,0x038D},
516
{0x038E,0x03CD,0x03A5}, {0x038F,0x03CE,0x03A9},
517
{0x0390,0x0390,0x0399}, {0x0391,0x03B1,0x0391},
518
{0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
519
{0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
520
{0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
521
{0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
522
{0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
523
{0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
524
{0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
525
{0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
526
{0x03A2,0x03A2,0x03A2}, {0x03A3,0x03C3,0x03A3},
527
{0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
528
{0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
529
{0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
530
{0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
531
{0x0386,0x03AC,0x0391}, {0x0388,0x03AD,0x0395},
532
{0x0389,0x03AE,0x0397}, {0x038A,0x03AF,0x0399},
533
{0x03B0,0x03B0,0x03A5}, {0x0391,0x03B1,0x0391},
534
{0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
535
{0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
536
{0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
537
{0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
538
{0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
539
{0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
540
{0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
541
{0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
542
{0x03A3,0x03C2,0x03A3}, {0x03A3,0x03C3,0x03A3},
543
{0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
544
{0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
545
{0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
546
{0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
547
{0x038C,0x03CC,0x039F}, {0x038E,0x03CD,0x03A5},
548
{0x038F,0x03CE,0x03A9}, {0x03CF,0x03CF,0x03CF},
549
{0x0392,0x03D0,0x0392}, {0x0398,0x03D1,0x0398},
550
{0x03D2,0x03D2,0x03D2}, {0x03D3,0x03D3,0x03D2},
551
{0x03D4,0x03D4,0x03D2}, {0x03A6,0x03D5,0x03A6},
552
{0x03A0,0x03D6,0x03A0}, {0x03D7,0x03D7,0x03D7},
553
{0x03D8,0x03D8,0x03D8}, {0x03D9,0x03D9,0x03D9},
554
{0x03DA,0x03DB,0x03DA}, {0x03DA,0x03DB,0x03DA},
555
{0x03DC,0x03DD,0x03DC}, {0x03DC,0x03DD,0x03DC},
556
{0x03DE,0x03DF,0x03DE}, {0x03DE,0x03DF,0x03DE},
557
{0x03E0,0x03E1,0x03E0}, {0x03E0,0x03E1,0x03E0},
558
{0x03E2,0x03E3,0x03E2}, {0x03E2,0x03E3,0x03E2},
559
{0x03E4,0x03E5,0x03E4}, {0x03E4,0x03E5,0x03E4},
560
{0x03E6,0x03E7,0x03E6}, {0x03E6,0x03E7,0x03E6},
561
{0x03E8,0x03E9,0x03E8}, {0x03E8,0x03E9,0x03E8},
562
{0x03EA,0x03EB,0x03EA}, {0x03EA,0x03EB,0x03EA},
563
{0x03EC,0x03ED,0x03EC}, {0x03EC,0x03ED,0x03EC},
564
{0x03EE,0x03EF,0x03EE}, {0x03EE,0x03EF,0x03EE},
565
{0x039A,0x03F0,0x039A}, {0x03A1,0x03F1,0x03A1},
566
{0x03A3,0x03F2,0x03A3}, {0x03F3,0x03F3,0x03F3},
567
{0x03F4,0x03F4,0x03F4}, {0x03F5,0x03F5,0x03F5},
568
{0x03F6,0x03F6,0x03F6}, {0x03F7,0x03F7,0x03F7},
569
{0x03F8,0x03F8,0x03F8}, {0x03F9,0x03F9,0x03F9},
570
{0x03FA,0x03FA,0x03FA}, {0x03FB,0x03FB,0x03FB},
571
{0x03FC,0x03FC,0x03FC}, {0x03FD,0x03FD,0x03FD},
572
{0x03FE,0x03FE,0x03FE}, {0x03FF,0x03FF,0x03FF}
575
static MY_UNICASE_INFO plane04[]={
576
{0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
577
{0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
578
{0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
579
{0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
580
{0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
581
{0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
582
{0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
583
{0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
584
{0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
585
{0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
586
{0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
587
{0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
588
{0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
589
{0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
590
{0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
591
{0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
592
{0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
593
{0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
594
{0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
595
{0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
596
{0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
597
{0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
598
{0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
599
{0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
600
{0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
601
{0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
602
{0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
603
{0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
604
{0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
605
{0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
606
{0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
607
{0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
608
{0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
609
{0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
610
{0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
611
{0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
612
{0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
613
{0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
614
{0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
615
{0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
616
{0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
617
{0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
618
{0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
619
{0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
620
{0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
621
{0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
622
{0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
623
{0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
624
{0x0460,0x0461,0x0460}, {0x0460,0x0461,0x0460},
625
{0x0462,0x0463,0x0462}, {0x0462,0x0463,0x0462},
626
{0x0464,0x0465,0x0464}, {0x0464,0x0465,0x0464},
627
{0x0466,0x0467,0x0466}, {0x0466,0x0467,0x0466},
628
{0x0468,0x0469,0x0468}, {0x0468,0x0469,0x0468},
629
{0x046A,0x046B,0x046A}, {0x046A,0x046B,0x046A},
630
{0x046C,0x046D,0x046C}, {0x046C,0x046D,0x046C},
631
{0x046E,0x046F,0x046E}, {0x046E,0x046F,0x046E},
632
{0x0470,0x0471,0x0470}, {0x0470,0x0471,0x0470},
633
{0x0472,0x0473,0x0472}, {0x0472,0x0473,0x0472},
634
{0x0474,0x0475,0x0474}, {0x0474,0x0475,0x0474},
635
{0x0476,0x0477,0x0474}, {0x0476,0x0477,0x0474},
636
{0x0478,0x0479,0x0478}, {0x0478,0x0479,0x0478},
637
{0x047A,0x047B,0x047A}, {0x047A,0x047B,0x047A},
638
{0x047C,0x047D,0x047C}, {0x047C,0x047D,0x047C},
639
{0x047E,0x047F,0x047E}, {0x047E,0x047F,0x047E},
640
{0x0480,0x0481,0x0480}, {0x0480,0x0481,0x0480},
641
{0x0482,0x0482,0x0482}, {0x0483,0x0483,0x0483},
642
{0x0484,0x0484,0x0484}, {0x0485,0x0485,0x0485},
643
{0x0486,0x0486,0x0486}, {0x0487,0x0487,0x0487},
644
{0x0488,0x0488,0x0488}, {0x0489,0x0489,0x0489},
645
{0x048A,0x048A,0x048A}, {0x048B,0x048B,0x048B},
646
{0x048C,0x048D,0x048C}, {0x048C,0x048D,0x048C},
647
{0x048E,0x048F,0x048E}, {0x048E,0x048F,0x048E},
648
{0x0490,0x0491,0x0490}, {0x0490,0x0491,0x0490},
649
{0x0492,0x0493,0x0492}, {0x0492,0x0493,0x0492},
650
{0x0494,0x0495,0x0494}, {0x0494,0x0495,0x0494},
651
{0x0496,0x0497,0x0496}, {0x0496,0x0497,0x0496},
652
{0x0498,0x0499,0x0498}, {0x0498,0x0499,0x0498},
653
{0x049A,0x049B,0x049A}, {0x049A,0x049B,0x049A},
654
{0x049C,0x049D,0x049C}, {0x049C,0x049D,0x049C},
655
{0x049E,0x049F,0x049E}, {0x049E,0x049F,0x049E},
656
{0x04A0,0x04A1,0x04A0}, {0x04A0,0x04A1,0x04A0},
657
{0x04A2,0x04A3,0x04A2}, {0x04A2,0x04A3,0x04A2},
658
{0x04A4,0x04A5,0x04A4}, {0x04A4,0x04A5,0x04A4},
659
{0x04A6,0x04A7,0x04A6}, {0x04A6,0x04A7,0x04A6},
660
{0x04A8,0x04A9,0x04A8}, {0x04A8,0x04A9,0x04A8},
661
{0x04AA,0x04AB,0x04AA}, {0x04AA,0x04AB,0x04AA},
662
{0x04AC,0x04AD,0x04AC}, {0x04AC,0x04AD,0x04AC},
663
{0x04AE,0x04AF,0x04AE}, {0x04AE,0x04AF,0x04AE},
664
{0x04B0,0x04B1,0x04B0}, {0x04B0,0x04B1,0x04B0},
665
{0x04B2,0x04B3,0x04B2}, {0x04B2,0x04B3,0x04B2},
666
{0x04B4,0x04B5,0x04B4}, {0x04B4,0x04B5,0x04B4},
667
{0x04B6,0x04B7,0x04B6}, {0x04B6,0x04B7,0x04B6},
668
{0x04B8,0x04B9,0x04B8}, {0x04B8,0x04B9,0x04B8},
669
{0x04BA,0x04BB,0x04BA}, {0x04BA,0x04BB,0x04BA},
670
{0x04BC,0x04BD,0x04BC}, {0x04BC,0x04BD,0x04BC},
671
{0x04BE,0x04BF,0x04BE}, {0x04BE,0x04BF,0x04BE},
672
{0x04C0,0x04C0,0x04C0}, {0x04C1,0x04C2,0x0416},
673
{0x04C1,0x04C2,0x0416}, {0x04C3,0x04C4,0x04C3},
674
{0x04C3,0x04C4,0x04C3}, {0x04C5,0x04C5,0x04C5},
675
{0x04C6,0x04C6,0x04C6}, {0x04C7,0x04C8,0x04C7},
676
{0x04C7,0x04C8,0x04C7}, {0x04C9,0x04C9,0x04C9},
677
{0x04CA,0x04CA,0x04CA}, {0x04CB,0x04CC,0x04CB},
678
{0x04CB,0x04CC,0x04CB}, {0x04CD,0x04CD,0x04CD},
679
{0x04CE,0x04CE,0x04CE}, {0x04CF,0x04CF,0x04CF},
680
{0x04D0,0x04D1,0x0410}, {0x04D0,0x04D1,0x0410},
681
{0x04D2,0x04D3,0x0410}, {0x04D2,0x04D3,0x0410},
682
{0x04D4,0x04D5,0x04D4}, {0x04D4,0x04D5,0x04D4},
683
{0x04D6,0x04D7,0x0415}, {0x04D6,0x04D7,0x0415},
684
{0x04D8,0x04D9,0x04D8}, {0x04D8,0x04D9,0x04D8},
685
{0x04DA,0x04DB,0x04D8}, {0x04DA,0x04DB,0x04D8},
686
{0x04DC,0x04DD,0x0416}, {0x04DC,0x04DD,0x0416},
687
{0x04DE,0x04DF,0x0417}, {0x04DE,0x04DF,0x0417},
688
{0x04E0,0x04E1,0x04E0}, {0x04E0,0x04E1,0x04E0},
689
{0x04E2,0x04E3,0x0418}, {0x04E2,0x04E3,0x0418},
690
{0x04E4,0x04E5,0x0418}, {0x04E4,0x04E5,0x0418},
691
{0x04E6,0x04E7,0x041E}, {0x04E6,0x04E7,0x041E},
692
{0x04E8,0x04E9,0x04E8}, {0x04E8,0x04E9,0x04E8},
693
{0x04EA,0x04EB,0x04E8}, {0x04EA,0x04EB,0x04E8},
694
{0x04EC,0x04ED,0x042D}, {0x04EC,0x04ED,0x042D},
695
{0x04EE,0x04EF,0x0423}, {0x04EE,0x04EF,0x0423},
696
{0x04F0,0x04F1,0x0423}, {0x04F0,0x04F1,0x0423},
697
{0x04F2,0x04F3,0x0423}, {0x04F2,0x04F3,0x0423},
698
{0x04F4,0x04F5,0x0427}, {0x04F4,0x04F5,0x0427},
699
{0x04F6,0x04F6,0x04F6}, {0x04F7,0x04F7,0x04F7},
700
{0x04F8,0x04F9,0x042B}, {0x04F8,0x04F9,0x042B},
701
{0x04FA,0x04FA,0x04FA}, {0x04FB,0x04FB,0x04FB},
702
{0x04FC,0x04FC,0x04FC}, {0x04FD,0x04FD,0x04FD},
703
{0x04FE,0x04FE,0x04FE}, {0x04FF,0x04FF,0x04FF}
706
static MY_UNICASE_INFO plane05[]={
707
{0x0500,0x0500,0x0500}, {0x0501,0x0501,0x0501},
708
{0x0502,0x0502,0x0502}, {0x0503,0x0503,0x0503},
709
{0x0504,0x0504,0x0504}, {0x0505,0x0505,0x0505},
710
{0x0506,0x0506,0x0506}, {0x0507,0x0507,0x0507},
711
{0x0508,0x0508,0x0508}, {0x0509,0x0509,0x0509},
712
{0x050A,0x050A,0x050A}, {0x050B,0x050B,0x050B},
713
{0x050C,0x050C,0x050C}, {0x050D,0x050D,0x050D},
714
{0x050E,0x050E,0x050E}, {0x050F,0x050F,0x050F},
715
{0x0510,0x0510,0x0510}, {0x0511,0x0511,0x0511},
716
{0x0512,0x0512,0x0512}, {0x0513,0x0513,0x0513},
717
{0x0514,0x0514,0x0514}, {0x0515,0x0515,0x0515},
718
{0x0516,0x0516,0x0516}, {0x0517,0x0517,0x0517},
719
{0x0518,0x0518,0x0518}, {0x0519,0x0519,0x0519},
720
{0x051A,0x051A,0x051A}, {0x051B,0x051B,0x051B},
721
{0x051C,0x051C,0x051C}, {0x051D,0x051D,0x051D},
722
{0x051E,0x051E,0x051E}, {0x051F,0x051F,0x051F},
723
{0x0520,0x0520,0x0520}, {0x0521,0x0521,0x0521},
724
{0x0522,0x0522,0x0522}, {0x0523,0x0523,0x0523},
725
{0x0524,0x0524,0x0524}, {0x0525,0x0525,0x0525},
726
{0x0526,0x0526,0x0526}, {0x0527,0x0527,0x0527},
727
{0x0528,0x0528,0x0528}, {0x0529,0x0529,0x0529},
728
{0x052A,0x052A,0x052A}, {0x052B,0x052B,0x052B},
729
{0x052C,0x052C,0x052C}, {0x052D,0x052D,0x052D},
730
{0x052E,0x052E,0x052E}, {0x052F,0x052F,0x052F},
731
{0x0530,0x0530,0x0530}, {0x0531,0x0561,0x0531},
732
{0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
733
{0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
734
{0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
735
{0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
736
{0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
737
{0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
738
{0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
739
{0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
740
{0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
741
{0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
742
{0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
743
{0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
744
{0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
745
{0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
746
{0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
747
{0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
748
{0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
749
{0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
750
{0x0556,0x0586,0x0556}, {0x0557,0x0557,0x0557},
751
{0x0558,0x0558,0x0558}, {0x0559,0x0559,0x0559},
752
{0x055A,0x055A,0x055A}, {0x055B,0x055B,0x055B},
753
{0x055C,0x055C,0x055C}, {0x055D,0x055D,0x055D},
754
{0x055E,0x055E,0x055E}, {0x055F,0x055F,0x055F},
755
{0x0560,0x0560,0x0560}, {0x0531,0x0561,0x0531},
756
{0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
757
{0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
758
{0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
759
{0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
760
{0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
761
{0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
762
{0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
763
{0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
764
{0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
765
{0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
766
{0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
767
{0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
768
{0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
769
{0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
770
{0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
771
{0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
772
{0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
773
{0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
774
{0x0556,0x0586,0x0556}, {0x0587,0x0587,0x0587},
775
{0x0588,0x0588,0x0588}, {0x0589,0x0589,0x0589},
776
{0x058A,0x058A,0x058A}, {0x058B,0x058B,0x058B},
777
{0x058C,0x058C,0x058C}, {0x058D,0x058D,0x058D},
778
{0x058E,0x058E,0x058E}, {0x058F,0x058F,0x058F},
779
{0x0590,0x0590,0x0590}, {0x0591,0x0591,0x0591},
780
{0x0592,0x0592,0x0592}, {0x0593,0x0593,0x0593},
781
{0x0594,0x0594,0x0594}, {0x0595,0x0595,0x0595},
782
{0x0596,0x0596,0x0596}, {0x0597,0x0597,0x0597},
783
{0x0598,0x0598,0x0598}, {0x0599,0x0599,0x0599},
784
{0x059A,0x059A,0x059A}, {0x059B,0x059B,0x059B},
785
{0x059C,0x059C,0x059C}, {0x059D,0x059D,0x059D},
786
{0x059E,0x059E,0x059E}, {0x059F,0x059F,0x059F},
787
{0x05A0,0x05A0,0x05A0}, {0x05A1,0x05A1,0x05A1},
788
{0x05A2,0x05A2,0x05A2}, {0x05A3,0x05A3,0x05A3},
789
{0x05A4,0x05A4,0x05A4}, {0x05A5,0x05A5,0x05A5},
790
{0x05A6,0x05A6,0x05A6}, {0x05A7,0x05A7,0x05A7},
791
{0x05A8,0x05A8,0x05A8}, {0x05A9,0x05A9,0x05A9},
792
{0x05AA,0x05AA,0x05AA}, {0x05AB,0x05AB,0x05AB},
793
{0x05AC,0x05AC,0x05AC}, {0x05AD,0x05AD,0x05AD},
794
{0x05AE,0x05AE,0x05AE}, {0x05AF,0x05AF,0x05AF},
795
{0x05B0,0x05B0,0x05B0}, {0x05B1,0x05B1,0x05B1},
796
{0x05B2,0x05B2,0x05B2}, {0x05B3,0x05B3,0x05B3},
797
{0x05B4,0x05B4,0x05B4}, {0x05B5,0x05B5,0x05B5},
798
{0x05B6,0x05B6,0x05B6}, {0x05B7,0x05B7,0x05B7},
799
{0x05B8,0x05B8,0x05B8}, {0x05B9,0x05B9,0x05B9},
800
{0x05BA,0x05BA,0x05BA}, {0x05BB,0x05BB,0x05BB},
801
{0x05BC,0x05BC,0x05BC}, {0x05BD,0x05BD,0x05BD},
802
{0x05BE,0x05BE,0x05BE}, {0x05BF,0x05BF,0x05BF},
803
{0x05C0,0x05C0,0x05C0}, {0x05C1,0x05C1,0x05C1},
804
{0x05C2,0x05C2,0x05C2}, {0x05C3,0x05C3,0x05C3},
805
{0x05C4,0x05C4,0x05C4}, {0x05C5,0x05C5,0x05C5},
806
{0x05C6,0x05C6,0x05C6}, {0x05C7,0x05C7,0x05C7},
807
{0x05C8,0x05C8,0x05C8}, {0x05C9,0x05C9,0x05C9},
808
{0x05CA,0x05CA,0x05CA}, {0x05CB,0x05CB,0x05CB},
809
{0x05CC,0x05CC,0x05CC}, {0x05CD,0x05CD,0x05CD},
810
{0x05CE,0x05CE,0x05CE}, {0x05CF,0x05CF,0x05CF},
811
{0x05D0,0x05D0,0x05D0}, {0x05D1,0x05D1,0x05D1},
812
{0x05D2,0x05D2,0x05D2}, {0x05D3,0x05D3,0x05D3},
813
{0x05D4,0x05D4,0x05D4}, {0x05D5,0x05D5,0x05D5},
814
{0x05D6,0x05D6,0x05D6}, {0x05D7,0x05D7,0x05D7},
815
{0x05D8,0x05D8,0x05D8}, {0x05D9,0x05D9,0x05D9},
816
{0x05DA,0x05DA,0x05DA}, {0x05DB,0x05DB,0x05DB},
817
{0x05DC,0x05DC,0x05DC}, {0x05DD,0x05DD,0x05DD},
818
{0x05DE,0x05DE,0x05DE}, {0x05DF,0x05DF,0x05DF},
819
{0x05E0,0x05E0,0x05E0}, {0x05E1,0x05E1,0x05E1},
820
{0x05E2,0x05E2,0x05E2}, {0x05E3,0x05E3,0x05E3},
821
{0x05E4,0x05E4,0x05E4}, {0x05E5,0x05E5,0x05E5},
822
{0x05E6,0x05E6,0x05E6}, {0x05E7,0x05E7,0x05E7},
823
{0x05E8,0x05E8,0x05E8}, {0x05E9,0x05E9,0x05E9},
824
{0x05EA,0x05EA,0x05EA}, {0x05EB,0x05EB,0x05EB},
825
{0x05EC,0x05EC,0x05EC}, {0x05ED,0x05ED,0x05ED},
826
{0x05EE,0x05EE,0x05EE}, {0x05EF,0x05EF,0x05EF},
827
{0x05F0,0x05F0,0x05F0}, {0x05F1,0x05F1,0x05F1},
828
{0x05F2,0x05F2,0x05F2}, {0x05F3,0x05F3,0x05F3},
829
{0x05F4,0x05F4,0x05F4}, {0x05F5,0x05F5,0x05F5},
830
{0x05F6,0x05F6,0x05F6}, {0x05F7,0x05F7,0x05F7},
831
{0x05F8,0x05F8,0x05F8}, {0x05F9,0x05F9,0x05F9},
832
{0x05FA,0x05FA,0x05FA}, {0x05FB,0x05FB,0x05FB},
833
{0x05FC,0x05FC,0x05FC}, {0x05FD,0x05FD,0x05FD},
834
{0x05FE,0x05FE,0x05FE}, {0x05FF,0x05FF,0x05FF}
837
static MY_UNICASE_INFO plane1E[]={
838
{0x1E00,0x1E01,0x0041}, {0x1E00,0x1E01,0x0041},
839
{0x1E02,0x1E03,0x0042}, {0x1E02,0x1E03,0x0042},
840
{0x1E04,0x1E05,0x0042}, {0x1E04,0x1E05,0x0042},
841
{0x1E06,0x1E07,0x0042}, {0x1E06,0x1E07,0x0042},
842
{0x1E08,0x1E09,0x0043}, {0x1E08,0x1E09,0x0043},
843
{0x1E0A,0x1E0B,0x0044}, {0x1E0A,0x1E0B,0x0044},
844
{0x1E0C,0x1E0D,0x0044}, {0x1E0C,0x1E0D,0x0044},
845
{0x1E0E,0x1E0F,0x0044}, {0x1E0E,0x1E0F,0x0044},
846
{0x1E10,0x1E11,0x0044}, {0x1E10,0x1E11,0x0044},
847
{0x1E12,0x1E13,0x0044}, {0x1E12,0x1E13,0x0044},
848
{0x1E14,0x1E15,0x0045}, {0x1E14,0x1E15,0x0045},
849
{0x1E16,0x1E17,0x0045}, {0x1E16,0x1E17,0x0045},
850
{0x1E18,0x1E19,0x0045}, {0x1E18,0x1E19,0x0045},
851
{0x1E1A,0x1E1B,0x0045}, {0x1E1A,0x1E1B,0x0045},
852
{0x1E1C,0x1E1D,0x0045}, {0x1E1C,0x1E1D,0x0045},
853
{0x1E1E,0x1E1F,0x0046}, {0x1E1E,0x1E1F,0x0046},
854
{0x1E20,0x1E21,0x0047}, {0x1E20,0x1E21,0x0047},
855
{0x1E22,0x1E23,0x0048}, {0x1E22,0x1E23,0x0048},
856
{0x1E24,0x1E25,0x0048}, {0x1E24,0x1E25,0x0048},
857
{0x1E26,0x1E27,0x0048}, {0x1E26,0x1E27,0x0048},
858
{0x1E28,0x1E29,0x0048}, {0x1E28,0x1E29,0x0048},
859
{0x1E2A,0x1E2B,0x0048}, {0x1E2A,0x1E2B,0x0048},
860
{0x1E2C,0x1E2D,0x0049}, {0x1E2C,0x1E2D,0x0049},
861
{0x1E2E,0x1E2F,0x0049}, {0x1E2E,0x1E2F,0x0049},
862
{0x1E30,0x1E31,0x004B}, {0x1E30,0x1E31,0x004B},
863
{0x1E32,0x1E33,0x004B}, {0x1E32,0x1E33,0x004B},
864
{0x1E34,0x1E35,0x004B}, {0x1E34,0x1E35,0x004B},
865
{0x1E36,0x1E37,0x004C}, {0x1E36,0x1E37,0x004C},
866
{0x1E38,0x1E39,0x004C}, {0x1E38,0x1E39,0x004C},
867
{0x1E3A,0x1E3B,0x004C}, {0x1E3A,0x1E3B,0x004C},
868
{0x1E3C,0x1E3D,0x004C}, {0x1E3C,0x1E3D,0x004C},
869
{0x1E3E,0x1E3F,0x004D}, {0x1E3E,0x1E3F,0x004D},
870
{0x1E40,0x1E41,0x004D}, {0x1E40,0x1E41,0x004D},
871
{0x1E42,0x1E43,0x004D}, {0x1E42,0x1E43,0x004D},
872
{0x1E44,0x1E45,0x004E}, {0x1E44,0x1E45,0x004E},
873
{0x1E46,0x1E47,0x004E}, {0x1E46,0x1E47,0x004E},
874
{0x1E48,0x1E49,0x004E}, {0x1E48,0x1E49,0x004E},
875
{0x1E4A,0x1E4B,0x004E}, {0x1E4A,0x1E4B,0x004E},
876
{0x1E4C,0x1E4D,0x004F}, {0x1E4C,0x1E4D,0x004F},
877
{0x1E4E,0x1E4F,0x004F}, {0x1E4E,0x1E4F,0x004F},
878
{0x1E50,0x1E51,0x004F}, {0x1E50,0x1E51,0x004F},
879
{0x1E52,0x1E53,0x004F}, {0x1E52,0x1E53,0x004F},
880
{0x1E54,0x1E55,0x0050}, {0x1E54,0x1E55,0x0050},
881
{0x1E56,0x1E57,0x0050}, {0x1E56,0x1E57,0x0050},
882
{0x1E58,0x1E59,0x0052}, {0x1E58,0x1E59,0x0052},
883
{0x1E5A,0x1E5B,0x0052}, {0x1E5A,0x1E5B,0x0052},
884
{0x1E5C,0x1E5D,0x0052}, {0x1E5C,0x1E5D,0x0052},
885
{0x1E5E,0x1E5F,0x0052}, {0x1E5E,0x1E5F,0x0052},
886
{0x1E60,0x1E61,0x0053}, {0x1E60,0x1E61,0x0053},
887
{0x1E62,0x1E63,0x0053}, {0x1E62,0x1E63,0x0053},
888
{0x1E64,0x1E65,0x0053}, {0x1E64,0x1E65,0x0053},
889
{0x1E66,0x1E67,0x0053}, {0x1E66,0x1E67,0x0053},
890
{0x1E68,0x1E69,0x0053}, {0x1E68,0x1E69,0x0053},
891
{0x1E6A,0x1E6B,0x0054}, {0x1E6A,0x1E6B,0x0054},
892
{0x1E6C,0x1E6D,0x0054}, {0x1E6C,0x1E6D,0x0054},
893
{0x1E6E,0x1E6F,0x0054}, {0x1E6E,0x1E6F,0x0054},
894
{0x1E70,0x1E71,0x0054}, {0x1E70,0x1E71,0x0054},
895
{0x1E72,0x1E73,0x0055}, {0x1E72,0x1E73,0x0055},
896
{0x1E74,0x1E75,0x0055}, {0x1E74,0x1E75,0x0055},
897
{0x1E76,0x1E77,0x0055}, {0x1E76,0x1E77,0x0055},
898
{0x1E78,0x1E79,0x0055}, {0x1E78,0x1E79,0x0055},
899
{0x1E7A,0x1E7B,0x0055}, {0x1E7A,0x1E7B,0x0055},
900
{0x1E7C,0x1E7D,0x0056}, {0x1E7C,0x1E7D,0x0056},
901
{0x1E7E,0x1E7F,0x0056}, {0x1E7E,0x1E7F,0x0056},
902
{0x1E80,0x1E81,0x0057}, {0x1E80,0x1E81,0x0057},
903
{0x1E82,0x1E83,0x0057}, {0x1E82,0x1E83,0x0057},
904
{0x1E84,0x1E85,0x0057}, {0x1E84,0x1E85,0x0057},
905
{0x1E86,0x1E87,0x0057}, {0x1E86,0x1E87,0x0057},
906
{0x1E88,0x1E89,0x0057}, {0x1E88,0x1E89,0x0057},
907
{0x1E8A,0x1E8B,0x0058}, {0x1E8A,0x1E8B,0x0058},
908
{0x1E8C,0x1E8D,0x0058}, {0x1E8C,0x1E8D,0x0058},
909
{0x1E8E,0x1E8F,0x0059}, {0x1E8E,0x1E8F,0x0059},
910
{0x1E90,0x1E91,0x005A}, {0x1E90,0x1E91,0x005A},
911
{0x1E92,0x1E93,0x005A}, {0x1E92,0x1E93,0x005A},
912
{0x1E94,0x1E95,0x005A}, {0x1E94,0x1E95,0x005A},
913
{0x1E96,0x1E96,0x0048}, {0x1E97,0x1E97,0x0054},
914
{0x1E98,0x1E98,0x0057}, {0x1E99,0x1E99,0x0059},
915
{0x1E9A,0x1E9A,0x1E9A}, {0x1E60,0x1E9B,0x0053},
916
{0x1E9C,0x1E9C,0x1E9C}, {0x1E9D,0x1E9D,0x1E9D},
917
{0x1E9E,0x1E9E,0x1E9E}, {0x1E9F,0x1E9F,0x1E9F},
918
{0x1EA0,0x1EA1,0x0041}, {0x1EA0,0x1EA1,0x0041},
919
{0x1EA2,0x1EA3,0x0041}, {0x1EA2,0x1EA3,0x0041},
920
{0x1EA4,0x1EA5,0x0041}, {0x1EA4,0x1EA5,0x0041},
921
{0x1EA6,0x1EA7,0x0041}, {0x1EA6,0x1EA7,0x0041},
922
{0x1EA8,0x1EA9,0x0041}, {0x1EA8,0x1EA9,0x0041},
923
{0x1EAA,0x1EAB,0x0041}, {0x1EAA,0x1EAB,0x0041},
924
{0x1EAC,0x1EAD,0x0041}, {0x1EAC,0x1EAD,0x0041},
925
{0x1EAE,0x1EAF,0x0041}, {0x1EAE,0x1EAF,0x0041},
926
{0x1EB0,0x1EB1,0x0041}, {0x1EB0,0x1EB1,0x0041},
927
{0x1EB2,0x1EB3,0x0041}, {0x1EB2,0x1EB3,0x0041},
928
{0x1EB4,0x1EB5,0x0041}, {0x1EB4,0x1EB5,0x0041},
929
{0x1EB6,0x1EB7,0x0041}, {0x1EB6,0x1EB7,0x0041},
930
{0x1EB8,0x1EB9,0x0045}, {0x1EB8,0x1EB9,0x0045},
931
{0x1EBA,0x1EBB,0x0045}, {0x1EBA,0x1EBB,0x0045},
932
{0x1EBC,0x1EBD,0x0045}, {0x1EBC,0x1EBD,0x0045},
933
{0x1EBE,0x1EBF,0x0045}, {0x1EBE,0x1EBF,0x0045},
934
{0x1EC0,0x1EC1,0x0045}, {0x1EC0,0x1EC1,0x0045},
935
{0x1EC2,0x1EC3,0x0045}, {0x1EC2,0x1EC3,0x0045},
936
{0x1EC4,0x1EC5,0x0045}, {0x1EC4,0x1EC5,0x0045},
937
{0x1EC6,0x1EC7,0x0045}, {0x1EC6,0x1EC7,0x0045},
938
{0x1EC8,0x1EC9,0x0049}, {0x1EC8,0x1EC9,0x0049},
939
{0x1ECA,0x1ECB,0x0049}, {0x1ECA,0x1ECB,0x0049},
940
{0x1ECC,0x1ECD,0x004F}, {0x1ECC,0x1ECD,0x004F},
941
{0x1ECE,0x1ECF,0x004F}, {0x1ECE,0x1ECF,0x004F},
942
{0x1ED0,0x1ED1,0x004F}, {0x1ED0,0x1ED1,0x004F},
943
{0x1ED2,0x1ED3,0x004F}, {0x1ED2,0x1ED3,0x004F},
944
{0x1ED4,0x1ED5,0x004F}, {0x1ED4,0x1ED5,0x004F},
945
{0x1ED6,0x1ED7,0x004F}, {0x1ED6,0x1ED7,0x004F},
946
{0x1ED8,0x1ED9,0x004F}, {0x1ED8,0x1ED9,0x004F},
947
{0x1EDA,0x1EDB,0x004F}, {0x1EDA,0x1EDB,0x004F},
948
{0x1EDC,0x1EDD,0x004F}, {0x1EDC,0x1EDD,0x004F},
949
{0x1EDE,0x1EDF,0x004F}, {0x1EDE,0x1EDF,0x004F},
950
{0x1EE0,0x1EE1,0x004F}, {0x1EE0,0x1EE1,0x004F},
951
{0x1EE2,0x1EE3,0x004F}, {0x1EE2,0x1EE3,0x004F},
952
{0x1EE4,0x1EE5,0x0055}, {0x1EE4,0x1EE5,0x0055},
953
{0x1EE6,0x1EE7,0x0055}, {0x1EE6,0x1EE7,0x0055},
954
{0x1EE8,0x1EE9,0x0055}, {0x1EE8,0x1EE9,0x0055},
955
{0x1EEA,0x1EEB,0x0055}, {0x1EEA,0x1EEB,0x0055},
956
{0x1EEC,0x1EED,0x0055}, {0x1EEC,0x1EED,0x0055},
957
{0x1EEE,0x1EEF,0x0055}, {0x1EEE,0x1EEF,0x0055},
958
{0x1EF0,0x1EF1,0x0055}, {0x1EF0,0x1EF1,0x0055},
959
{0x1EF2,0x1EF3,0x0059}, {0x1EF2,0x1EF3,0x0059},
960
{0x1EF4,0x1EF5,0x0059}, {0x1EF4,0x1EF5,0x0059},
961
{0x1EF6,0x1EF7,0x0059}, {0x1EF6,0x1EF7,0x0059},
962
{0x1EF8,0x1EF9,0x0059}, {0x1EF8,0x1EF9,0x0059},
963
{0x1EFA,0x1EFA,0x1EFA}, {0x1EFB,0x1EFB,0x1EFB},
964
{0x1EFC,0x1EFC,0x1EFC}, {0x1EFD,0x1EFD,0x1EFD},
965
{0x1EFE,0x1EFE,0x1EFE}, {0x1EFF,0x1EFF,0x1EFF}
968
static MY_UNICASE_INFO plane1F[]={
969
{0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
970
{0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
971
{0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
972
{0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
973
{0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
974
{0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
975
{0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
976
{0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
977
{0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
978
{0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
979
{0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
980
{0x1F16,0x1F16,0x1F16}, {0x1F17,0x1F17,0x1F17},
981
{0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
982
{0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
983
{0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
984
{0x1F1E,0x1F1E,0x1F1E}, {0x1F1F,0x1F1F,0x1F1F},
985
{0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
986
{0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
987
{0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
988
{0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
989
{0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
990
{0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
991
{0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
992
{0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
993
{0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
994
{0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
995
{0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
996
{0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
997
{0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
998
{0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
999
{0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1000
{0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1001
{0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1002
{0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1003
{0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1004
{0x1F46,0x1F46,0x1F46}, {0x1F47,0x1F47,0x1F47},
1005
{0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1006
{0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1007
{0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1008
{0x1F4E,0x1F4E,0x1F4E}, {0x1F4F,0x1F4F,0x1F4F},
1009
{0x1F50,0x1F50,0x03A5}, {0x1F59,0x1F51,0x03A5},
1010
{0x1F52,0x1F52,0x03A5}, {0x1F5B,0x1F53,0x03A5},
1011
{0x1F54,0x1F54,0x03A5}, {0x1F5D,0x1F55,0x03A5},
1012
{0x1F56,0x1F56,0x03A5}, {0x1F5F,0x1F57,0x03A5},
1013
{0x1F58,0x1F58,0x1F58}, {0x1F59,0x1F51,0x03A5},
1014
{0x1F5A,0x1F5A,0x1F5A}, {0x1F5B,0x1F53,0x03A5},
1015
{0x1F5C,0x1F5C,0x1F5C}, {0x1F5D,0x1F55,0x03A5},
1016
{0x1F5E,0x1F5E,0x1F5E}, {0x1F5F,0x1F57,0x03A5},
1017
{0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1018
{0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1019
{0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1020
{0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1021
{0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1022
{0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1023
{0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1024
{0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1025
{0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1026
{0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1027
{0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1028
{0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1029
{0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1030
{0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1031
{0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1032
{0x1F7E,0x1F7E,0x1F7E}, {0x1F7F,0x1F7F,0x1F7F},
1033
{0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1034
{0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1035
{0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1036
{0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1037
{0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1038
{0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1039
{0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1040
{0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1041
{0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1042
{0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1043
{0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1044
{0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1045
{0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1046
{0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1047
{0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1048
{0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1049
{0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1050
{0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1051
{0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1052
{0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1053
{0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1054
{0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1055
{0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1056
{0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1057
{0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1058
{0x1FB2,0x1FB2,0x0391}, {0x1FBC,0x1FB3,0x0391},
1059
{0x1FB4,0x1FB4,0x0391}, {0x1FB5,0x1FB5,0x1FB5},
1060
{0x1FB6,0x1FB6,0x0391}, {0x1FB7,0x1FB7,0x0391},
1061
{0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1062
{0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1063
{0x1FBC,0x1FB3,0x0391}, {0x1FBD,0x1FBD,0x1FBD},
1064
{0x0399,0x1FBE,0x0399}, {0x1FBF,0x1FBF,0x1FBF},
1065
{0x1FC0,0x1FC0,0x1FC0}, {0x1FC1,0x1FC1,0x1FC1},
1066
{0x1FC2,0x1FC2,0x0397}, {0x1FCC,0x1FC3,0x0397},
1067
{0x1FC4,0x1FC4,0x0397}, {0x1FC5,0x1FC5,0x1FC5},
1068
{0x1FC6,0x1FC6,0x0397}, {0x1FC7,0x1FC7,0x0397},
1069
{0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1070
{0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1071
{0x1FCC,0x1FC3,0x0397}, {0x1FCD,0x1FCD,0x1FCD},
1072
{0x1FCE,0x1FCE,0x1FCE}, {0x1FCF,0x1FCF,0x1FCF},
1073
{0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1074
{0x1FD2,0x1FD2,0x0399}, {0x1FD3,0x1FD3,0x1FD3},
1075
{0x1FD4,0x1FD4,0x1FD4}, {0x1FD5,0x1FD5,0x1FD5},
1076
{0x1FD6,0x1FD6,0x0399}, {0x1FD7,0x1FD7,0x0399},
1077
{0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1078
{0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1079
{0x1FDC,0x1FDC,0x1FDC}, {0x1FDD,0x1FDD,0x1FDD},
1080
{0x1FDE,0x1FDE,0x1FDE}, {0x1FDF,0x1FDF,0x1FDF},
1081
{0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1082
{0x1FE2,0x1FE2,0x03A5}, {0x1FE3,0x1FE3,0x1FE3},
1083
{0x1FE4,0x1FE4,0x03A1}, {0x1FEC,0x1FE5,0x03A1},
1084
{0x1FE6,0x1FE6,0x03A5}, {0x1FE7,0x1FE7,0x03A5},
1085
{0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1086
{0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1087
{0x1FEC,0x1FE5,0x03A1}, {0x1FED,0x1FED,0x1FED},
1088
{0x1FEE,0x1FEE,0x1FEE}, {0x1FEF,0x1FEF,0x1FEF},
1089
{0x1FF0,0x1FF0,0x1FF0}, {0x1FF1,0x1FF1,0x1FF1},
1090
{0x1FF2,0x1FF2,0x03A9}, {0x1FFC,0x1FF3,0x03A9},
1091
{0x1FF4,0x1FF4,0x03A9}, {0x1FF5,0x1FF5,0x1FF5},
1092
{0x1FF6,0x1FF6,0x03A9}, {0x1FF7,0x1FF7,0x03A9},
1093
{0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1094
{0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1095
{0x1FFC,0x1FF3,0x03A9}, {0x1FFD,0x1FFD,0x1FFD},
1096
{0x1FFE,0x1FFE,0x1FFE}, {0x1FFF,0x1FFF,0x1FFF}
1099
static MY_UNICASE_INFO plane21[]={
1100
{0x2100,0x2100,0x2100}, {0x2101,0x2101,0x2101},
1101
{0x2102,0x2102,0x2102}, {0x2103,0x2103,0x2103},
1102
{0x2104,0x2104,0x2104}, {0x2105,0x2105,0x2105},
1103
{0x2106,0x2106,0x2106}, {0x2107,0x2107,0x2107},
1104
{0x2108,0x2108,0x2108}, {0x2109,0x2109,0x2109},
1105
{0x210A,0x210A,0x210A}, {0x210B,0x210B,0x210B},
1106
{0x210C,0x210C,0x210C}, {0x210D,0x210D,0x210D},
1107
{0x210E,0x210E,0x210E}, {0x210F,0x210F,0x210F},
1108
{0x2110,0x2110,0x2110}, {0x2111,0x2111,0x2111},
1109
{0x2112,0x2112,0x2112}, {0x2113,0x2113,0x2113},
1110
{0x2114,0x2114,0x2114}, {0x2115,0x2115,0x2115},
1111
{0x2116,0x2116,0x2116}, {0x2117,0x2117,0x2117},
1112
{0x2118,0x2118,0x2118}, {0x2119,0x2119,0x2119},
1113
{0x211A,0x211A,0x211A}, {0x211B,0x211B,0x211B},
1114
{0x211C,0x211C,0x211C}, {0x211D,0x211D,0x211D},
1115
{0x211E,0x211E,0x211E}, {0x211F,0x211F,0x211F},
1116
{0x2120,0x2120,0x2120}, {0x2121,0x2121,0x2121},
1117
{0x2122,0x2122,0x2122}, {0x2123,0x2123,0x2123},
1118
{0x2124,0x2124,0x2124}, {0x2125,0x2125,0x2125},
1119
{0x2126,0x03C9,0x2126}, {0x2127,0x2127,0x2127},
1120
{0x2128,0x2128,0x2128}, {0x2129,0x2129,0x2129},
1121
{0x212A,0x006B,0x212A}, {0x212B,0x00E5,0x212B},
1122
{0x212C,0x212C,0x212C}, {0x212D,0x212D,0x212D},
1123
{0x212E,0x212E,0x212E}, {0x212F,0x212F,0x212F},
1124
{0x2130,0x2130,0x2130}, {0x2131,0x2131,0x2131},
1125
{0x2132,0x2132,0x2132}, {0x2133,0x2133,0x2133},
1126
{0x2134,0x2134,0x2134}, {0x2135,0x2135,0x2135},
1127
{0x2136,0x2136,0x2136}, {0x2137,0x2137,0x2137},
1128
{0x2138,0x2138,0x2138}, {0x2139,0x2139,0x2139},
1129
{0x213A,0x213A,0x213A}, {0x213B,0x213B,0x213B},
1130
{0x213C,0x213C,0x213C}, {0x213D,0x213D,0x213D},
1131
{0x213E,0x213E,0x213E}, {0x213F,0x213F,0x213F},
1132
{0x2140,0x2140,0x2140}, {0x2141,0x2141,0x2141},
1133
{0x2142,0x2142,0x2142}, {0x2143,0x2143,0x2143},
1134
{0x2144,0x2144,0x2144}, {0x2145,0x2145,0x2145},
1135
{0x2146,0x2146,0x2146}, {0x2147,0x2147,0x2147},
1136
{0x2148,0x2148,0x2148}, {0x2149,0x2149,0x2149},
1137
{0x214A,0x214A,0x214A}, {0x214B,0x214B,0x214B},
1138
{0x214C,0x214C,0x214C}, {0x214D,0x214D,0x214D},
1139
{0x214E,0x214E,0x214E}, {0x214F,0x214F,0x214F},
1140
{0x2150,0x2150,0x2150}, {0x2151,0x2151,0x2151},
1141
{0x2152,0x2152,0x2152}, {0x2153,0x2153,0x2153},
1142
{0x2154,0x2154,0x2154}, {0x2155,0x2155,0x2155},
1143
{0x2156,0x2156,0x2156}, {0x2157,0x2157,0x2157},
1144
{0x2158,0x2158,0x2158}, {0x2159,0x2159,0x2159},
1145
{0x215A,0x215A,0x215A}, {0x215B,0x215B,0x215B},
1146
{0x215C,0x215C,0x215C}, {0x215D,0x215D,0x215D},
1147
{0x215E,0x215E,0x215E}, {0x215F,0x215F,0x215F},
1148
{0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1149
{0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1150
{0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1151
{0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1152
{0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1153
{0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1154
{0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1155
{0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1156
{0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1157
{0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1158
{0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1159
{0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1160
{0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1161
{0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1162
{0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1163
{0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1164
{0x2180,0x2180,0x2180}, {0x2181,0x2181,0x2181},
1165
{0x2182,0x2182,0x2182}, {0x2183,0x2183,0x2183},
1166
{0x2184,0x2184,0x2184}, {0x2185,0x2185,0x2185},
1167
{0x2186,0x2186,0x2186}, {0x2187,0x2187,0x2187},
1168
{0x2188,0x2188,0x2188}, {0x2189,0x2189,0x2189},
1169
{0x218A,0x218A,0x218A}, {0x218B,0x218B,0x218B},
1170
{0x218C,0x218C,0x218C}, {0x218D,0x218D,0x218D},
1171
{0x218E,0x218E,0x218E}, {0x218F,0x218F,0x218F},
1172
{0x2190,0x2190,0x2190}, {0x2191,0x2191,0x2191},
1173
{0x2192,0x2192,0x2192}, {0x2193,0x2193,0x2193},
1174
{0x2194,0x2194,0x2194}, {0x2195,0x2195,0x2195},
1175
{0x2196,0x2196,0x2196}, {0x2197,0x2197,0x2197},
1176
{0x2198,0x2198,0x2198}, {0x2199,0x2199,0x2199},
1177
{0x219A,0x219A,0x219A}, {0x219B,0x219B,0x219B},
1178
{0x219C,0x219C,0x219C}, {0x219D,0x219D,0x219D},
1179
{0x219E,0x219E,0x219E}, {0x219F,0x219F,0x219F},
1180
{0x21A0,0x21A0,0x21A0}, {0x21A1,0x21A1,0x21A1},
1181
{0x21A2,0x21A2,0x21A2}, {0x21A3,0x21A3,0x21A3},
1182
{0x21A4,0x21A4,0x21A4}, {0x21A5,0x21A5,0x21A5},
1183
{0x21A6,0x21A6,0x21A6}, {0x21A7,0x21A7,0x21A7},
1184
{0x21A8,0x21A8,0x21A8}, {0x21A9,0x21A9,0x21A9},
1185
{0x21AA,0x21AA,0x21AA}, {0x21AB,0x21AB,0x21AB},
1186
{0x21AC,0x21AC,0x21AC}, {0x21AD,0x21AD,0x21AD},
1187
{0x21AE,0x21AE,0x21AE}, {0x21AF,0x21AF,0x21AF},
1188
{0x21B0,0x21B0,0x21B0}, {0x21B1,0x21B1,0x21B1},
1189
{0x21B2,0x21B2,0x21B2}, {0x21B3,0x21B3,0x21B3},
1190
{0x21B4,0x21B4,0x21B4}, {0x21B5,0x21B5,0x21B5},
1191
{0x21B6,0x21B6,0x21B6}, {0x21B7,0x21B7,0x21B7},
1192
{0x21B8,0x21B8,0x21B8}, {0x21B9,0x21B9,0x21B9},
1193
{0x21BA,0x21BA,0x21BA}, {0x21BB,0x21BB,0x21BB},
1194
{0x21BC,0x21BC,0x21BC}, {0x21BD,0x21BD,0x21BD},
1195
{0x21BE,0x21BE,0x21BE}, {0x21BF,0x21BF,0x21BF},
1196
{0x21C0,0x21C0,0x21C0}, {0x21C1,0x21C1,0x21C1},
1197
{0x21C2,0x21C2,0x21C2}, {0x21C3,0x21C3,0x21C3},
1198
{0x21C4,0x21C4,0x21C4}, {0x21C5,0x21C5,0x21C5},
1199
{0x21C6,0x21C6,0x21C6}, {0x21C7,0x21C7,0x21C7},
1200
{0x21C8,0x21C8,0x21C8}, {0x21C9,0x21C9,0x21C9},
1201
{0x21CA,0x21CA,0x21CA}, {0x21CB,0x21CB,0x21CB},
1202
{0x21CC,0x21CC,0x21CC}, {0x21CD,0x21CD,0x21CD},
1203
{0x21CE,0x21CE,0x21CE}, {0x21CF,0x21CF,0x21CF},
1204
{0x21D0,0x21D0,0x21D0}, {0x21D1,0x21D1,0x21D1},
1205
{0x21D2,0x21D2,0x21D2}, {0x21D3,0x21D3,0x21D3},
1206
{0x21D4,0x21D4,0x21D4}, {0x21D5,0x21D5,0x21D5},
1207
{0x21D6,0x21D6,0x21D6}, {0x21D7,0x21D7,0x21D7},
1208
{0x21D8,0x21D8,0x21D8}, {0x21D9,0x21D9,0x21D9},
1209
{0x21DA,0x21DA,0x21DA}, {0x21DB,0x21DB,0x21DB},
1210
{0x21DC,0x21DC,0x21DC}, {0x21DD,0x21DD,0x21DD},
1211
{0x21DE,0x21DE,0x21DE}, {0x21DF,0x21DF,0x21DF},
1212
{0x21E0,0x21E0,0x21E0}, {0x21E1,0x21E1,0x21E1},
1213
{0x21E2,0x21E2,0x21E2}, {0x21E3,0x21E3,0x21E3},
1214
{0x21E4,0x21E4,0x21E4}, {0x21E5,0x21E5,0x21E5},
1215
{0x21E6,0x21E6,0x21E6}, {0x21E7,0x21E7,0x21E7},
1216
{0x21E8,0x21E8,0x21E8}, {0x21E9,0x21E9,0x21E9},
1217
{0x21EA,0x21EA,0x21EA}, {0x21EB,0x21EB,0x21EB},
1218
{0x21EC,0x21EC,0x21EC}, {0x21ED,0x21ED,0x21ED},
1219
{0x21EE,0x21EE,0x21EE}, {0x21EF,0x21EF,0x21EF},
1220
{0x21F0,0x21F0,0x21F0}, {0x21F1,0x21F1,0x21F1},
1221
{0x21F2,0x21F2,0x21F2}, {0x21F3,0x21F3,0x21F3},
1222
{0x21F4,0x21F4,0x21F4}, {0x21F5,0x21F5,0x21F5},
1223
{0x21F6,0x21F6,0x21F6}, {0x21F7,0x21F7,0x21F7},
1224
{0x21F8,0x21F8,0x21F8}, {0x21F9,0x21F9,0x21F9},
1225
{0x21FA,0x21FA,0x21FA}, {0x21FB,0x21FB,0x21FB},
1226
{0x21FC,0x21FC,0x21FC}, {0x21FD,0x21FD,0x21FD},
1227
{0x21FE,0x21FE,0x21FE}, {0x21FF,0x21FF,0x21FF}
1230
static MY_UNICASE_INFO plane24[]={
1231
{0x2400,0x2400,0x2400}, {0x2401,0x2401,0x2401},
1232
{0x2402,0x2402,0x2402}, {0x2403,0x2403,0x2403},
1233
{0x2404,0x2404,0x2404}, {0x2405,0x2405,0x2405},
1234
{0x2406,0x2406,0x2406}, {0x2407,0x2407,0x2407},
1235
{0x2408,0x2408,0x2408}, {0x2409,0x2409,0x2409},
1236
{0x240A,0x240A,0x240A}, {0x240B,0x240B,0x240B},
1237
{0x240C,0x240C,0x240C}, {0x240D,0x240D,0x240D},
1238
{0x240E,0x240E,0x240E}, {0x240F,0x240F,0x240F},
1239
{0x2410,0x2410,0x2410}, {0x2411,0x2411,0x2411},
1240
{0x2412,0x2412,0x2412}, {0x2413,0x2413,0x2413},
1241
{0x2414,0x2414,0x2414}, {0x2415,0x2415,0x2415},
1242
{0x2416,0x2416,0x2416}, {0x2417,0x2417,0x2417},
1243
{0x2418,0x2418,0x2418}, {0x2419,0x2419,0x2419},
1244
{0x241A,0x241A,0x241A}, {0x241B,0x241B,0x241B},
1245
{0x241C,0x241C,0x241C}, {0x241D,0x241D,0x241D},
1246
{0x241E,0x241E,0x241E}, {0x241F,0x241F,0x241F},
1247
{0x2420,0x2420,0x2420}, {0x2421,0x2421,0x2421},
1248
{0x2422,0x2422,0x2422}, {0x2423,0x2423,0x2423},
1249
{0x2424,0x2424,0x2424}, {0x2425,0x2425,0x2425},
1250
{0x2426,0x2426,0x2426}, {0x2427,0x2427,0x2427},
1251
{0x2428,0x2428,0x2428}, {0x2429,0x2429,0x2429},
1252
{0x242A,0x242A,0x242A}, {0x242B,0x242B,0x242B},
1253
{0x242C,0x242C,0x242C}, {0x242D,0x242D,0x242D},
1254
{0x242E,0x242E,0x242E}, {0x242F,0x242F,0x242F},
1255
{0x2430,0x2430,0x2430}, {0x2431,0x2431,0x2431},
1256
{0x2432,0x2432,0x2432}, {0x2433,0x2433,0x2433},
1257
{0x2434,0x2434,0x2434}, {0x2435,0x2435,0x2435},
1258
{0x2436,0x2436,0x2436}, {0x2437,0x2437,0x2437},
1259
{0x2438,0x2438,0x2438}, {0x2439,0x2439,0x2439},
1260
{0x243A,0x243A,0x243A}, {0x243B,0x243B,0x243B},
1261
{0x243C,0x243C,0x243C}, {0x243D,0x243D,0x243D},
1262
{0x243E,0x243E,0x243E}, {0x243F,0x243F,0x243F},
1263
{0x2440,0x2440,0x2440}, {0x2441,0x2441,0x2441},
1264
{0x2442,0x2442,0x2442}, {0x2443,0x2443,0x2443},
1265
{0x2444,0x2444,0x2444}, {0x2445,0x2445,0x2445},
1266
{0x2446,0x2446,0x2446}, {0x2447,0x2447,0x2447},
1267
{0x2448,0x2448,0x2448}, {0x2449,0x2449,0x2449},
1268
{0x244A,0x244A,0x244A}, {0x244B,0x244B,0x244B},
1269
{0x244C,0x244C,0x244C}, {0x244D,0x244D,0x244D},
1270
{0x244E,0x244E,0x244E}, {0x244F,0x244F,0x244F},
1271
{0x2450,0x2450,0x2450}, {0x2451,0x2451,0x2451},
1272
{0x2452,0x2452,0x2452}, {0x2453,0x2453,0x2453},
1273
{0x2454,0x2454,0x2454}, {0x2455,0x2455,0x2455},
1274
{0x2456,0x2456,0x2456}, {0x2457,0x2457,0x2457},
1275
{0x2458,0x2458,0x2458}, {0x2459,0x2459,0x2459},
1276
{0x245A,0x245A,0x245A}, {0x245B,0x245B,0x245B},
1277
{0x245C,0x245C,0x245C}, {0x245D,0x245D,0x245D},
1278
{0x245E,0x245E,0x245E}, {0x245F,0x245F,0x245F},
1279
{0x2460,0x2460,0x2460}, {0x2461,0x2461,0x2461},
1280
{0x2462,0x2462,0x2462}, {0x2463,0x2463,0x2463},
1281
{0x2464,0x2464,0x2464}, {0x2465,0x2465,0x2465},
1282
{0x2466,0x2466,0x2466}, {0x2467,0x2467,0x2467},
1283
{0x2468,0x2468,0x2468}, {0x2469,0x2469,0x2469},
1284
{0x246A,0x246A,0x246A}, {0x246B,0x246B,0x246B},
1285
{0x246C,0x246C,0x246C}, {0x246D,0x246D,0x246D},
1286
{0x246E,0x246E,0x246E}, {0x246F,0x246F,0x246F},
1287
{0x2470,0x2470,0x2470}, {0x2471,0x2471,0x2471},
1288
{0x2472,0x2472,0x2472}, {0x2473,0x2473,0x2473},
1289
{0x2474,0x2474,0x2474}, {0x2475,0x2475,0x2475},
1290
{0x2476,0x2476,0x2476}, {0x2477,0x2477,0x2477},
1291
{0x2478,0x2478,0x2478}, {0x2479,0x2479,0x2479},
1292
{0x247A,0x247A,0x247A}, {0x247B,0x247B,0x247B},
1293
{0x247C,0x247C,0x247C}, {0x247D,0x247D,0x247D},
1294
{0x247E,0x247E,0x247E}, {0x247F,0x247F,0x247F},
1295
{0x2480,0x2480,0x2480}, {0x2481,0x2481,0x2481},
1296
{0x2482,0x2482,0x2482}, {0x2483,0x2483,0x2483},
1297
{0x2484,0x2484,0x2484}, {0x2485,0x2485,0x2485},
1298
{0x2486,0x2486,0x2486}, {0x2487,0x2487,0x2487},
1299
{0x2488,0x2488,0x2488}, {0x2489,0x2489,0x2489},
1300
{0x248A,0x248A,0x248A}, {0x248B,0x248B,0x248B},
1301
{0x248C,0x248C,0x248C}, {0x248D,0x248D,0x248D},
1302
{0x248E,0x248E,0x248E}, {0x248F,0x248F,0x248F},
1303
{0x2490,0x2490,0x2490}, {0x2491,0x2491,0x2491},
1304
{0x2492,0x2492,0x2492}, {0x2493,0x2493,0x2493},
1305
{0x2494,0x2494,0x2494}, {0x2495,0x2495,0x2495},
1306
{0x2496,0x2496,0x2496}, {0x2497,0x2497,0x2497},
1307
{0x2498,0x2498,0x2498}, {0x2499,0x2499,0x2499},
1308
{0x249A,0x249A,0x249A}, {0x249B,0x249B,0x249B},
1309
{0x249C,0x249C,0x249C}, {0x249D,0x249D,0x249D},
1310
{0x249E,0x249E,0x249E}, {0x249F,0x249F,0x249F},
1311
{0x24A0,0x24A0,0x24A0}, {0x24A1,0x24A1,0x24A1},
1312
{0x24A2,0x24A2,0x24A2}, {0x24A3,0x24A3,0x24A3},
1313
{0x24A4,0x24A4,0x24A4}, {0x24A5,0x24A5,0x24A5},
1314
{0x24A6,0x24A6,0x24A6}, {0x24A7,0x24A7,0x24A7},
1315
{0x24A8,0x24A8,0x24A8}, {0x24A9,0x24A9,0x24A9},
1316
{0x24AA,0x24AA,0x24AA}, {0x24AB,0x24AB,0x24AB},
1317
{0x24AC,0x24AC,0x24AC}, {0x24AD,0x24AD,0x24AD},
1318
{0x24AE,0x24AE,0x24AE}, {0x24AF,0x24AF,0x24AF},
1319
{0x24B0,0x24B0,0x24B0}, {0x24B1,0x24B1,0x24B1},
1320
{0x24B2,0x24B2,0x24B2}, {0x24B3,0x24B3,0x24B3},
1321
{0x24B4,0x24B4,0x24B4}, {0x24B5,0x24B5,0x24B5},
1322
{0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1323
{0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1324
{0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1325
{0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1326
{0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1327
{0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1328
{0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1329
{0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1330
{0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1331
{0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1332
{0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1333
{0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1334
{0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1335
{0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1336
{0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1337
{0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1338
{0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1339
{0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1340
{0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1341
{0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1342
{0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1343
{0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1344
{0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1345
{0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1346
{0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1347
{0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1348
{0x24EA,0x24EA,0x24EA}, {0x24EB,0x24EB,0x24EB},
1349
{0x24EC,0x24EC,0x24EC}, {0x24ED,0x24ED,0x24ED},
1350
{0x24EE,0x24EE,0x24EE}, {0x24EF,0x24EF,0x24EF},
1351
{0x24F0,0x24F0,0x24F0}, {0x24F1,0x24F1,0x24F1},
1352
{0x24F2,0x24F2,0x24F2}, {0x24F3,0x24F3,0x24F3},
1353
{0x24F4,0x24F4,0x24F4}, {0x24F5,0x24F5,0x24F5},
1354
{0x24F6,0x24F6,0x24F6}, {0x24F7,0x24F7,0x24F7},
1355
{0x24F8,0x24F8,0x24F8}, {0x24F9,0x24F9,0x24F9},
1356
{0x24FA,0x24FA,0x24FA}, {0x24FB,0x24FB,0x24FB},
1357
{0x24FC,0x24FC,0x24FC}, {0x24FD,0x24FD,0x24FD},
1358
{0x24FE,0x24FE,0x24FE}, {0x24FF,0x24FF,0x24FF}
1361
static MY_UNICASE_INFO planeFF[]={
1362
{0xFF00,0xFF00,0xFF00}, {0xFF01,0xFF01,0xFF01},
1363
{0xFF02,0xFF02,0xFF02}, {0xFF03,0xFF03,0xFF03},
1364
{0xFF04,0xFF04,0xFF04}, {0xFF05,0xFF05,0xFF05},
1365
{0xFF06,0xFF06,0xFF06}, {0xFF07,0xFF07,0xFF07},
1366
{0xFF08,0xFF08,0xFF08}, {0xFF09,0xFF09,0xFF09},
1367
{0xFF0A,0xFF0A,0xFF0A}, {0xFF0B,0xFF0B,0xFF0B},
1368
{0xFF0C,0xFF0C,0xFF0C}, {0xFF0D,0xFF0D,0xFF0D},
1369
{0xFF0E,0xFF0E,0xFF0E}, {0xFF0F,0xFF0F,0xFF0F},
1370
{0xFF10,0xFF10,0xFF10}, {0xFF11,0xFF11,0xFF11},
1371
{0xFF12,0xFF12,0xFF12}, {0xFF13,0xFF13,0xFF13},
1372
{0xFF14,0xFF14,0xFF14}, {0xFF15,0xFF15,0xFF15},
1373
{0xFF16,0xFF16,0xFF16}, {0xFF17,0xFF17,0xFF17},
1374
{0xFF18,0xFF18,0xFF18}, {0xFF19,0xFF19,0xFF19},
1375
{0xFF1A,0xFF1A,0xFF1A}, {0xFF1B,0xFF1B,0xFF1B},
1376
{0xFF1C,0xFF1C,0xFF1C}, {0xFF1D,0xFF1D,0xFF1D},
1377
{0xFF1E,0xFF1E,0xFF1E}, {0xFF1F,0xFF1F,0xFF1F},
1378
{0xFF20,0xFF20,0xFF20}, {0xFF21,0xFF41,0xFF21},
1379
{0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1380
{0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1381
{0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1382
{0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1383
{0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1384
{0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1385
{0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1386
{0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1387
{0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1388
{0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1389
{0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1390
{0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1391
{0xFF3A,0xFF5A,0xFF3A}, {0xFF3B,0xFF3B,0xFF3B},
1392
{0xFF3C,0xFF3C,0xFF3C}, {0xFF3D,0xFF3D,0xFF3D},
1393
{0xFF3E,0xFF3E,0xFF3E}, {0xFF3F,0xFF3F,0xFF3F},
1394
{0xFF40,0xFF40,0xFF40}, {0xFF21,0xFF41,0xFF21},
1395
{0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1396
{0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1397
{0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1398
{0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1399
{0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1400
{0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1401
{0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1402
{0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1403
{0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1404
{0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1405
{0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1406
{0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1407
{0xFF3A,0xFF5A,0xFF3A}, {0xFF5B,0xFF5B,0xFF5B},
1408
{0xFF5C,0xFF5C,0xFF5C}, {0xFF5D,0xFF5D,0xFF5D},
1409
{0xFF5E,0xFF5E,0xFF5E}, {0xFF5F,0xFF5F,0xFF5F},
1410
{0xFF60,0xFF60,0xFF60}, {0xFF61,0xFF61,0xFF61},
1411
{0xFF62,0xFF62,0xFF62}, {0xFF63,0xFF63,0xFF63},
1412
{0xFF64,0xFF64,0xFF64}, {0xFF65,0xFF65,0xFF65},
1413
{0xFF66,0xFF66,0xFF66}, {0xFF67,0xFF67,0xFF67},
1414
{0xFF68,0xFF68,0xFF68}, {0xFF69,0xFF69,0xFF69},
1415
{0xFF6A,0xFF6A,0xFF6A}, {0xFF6B,0xFF6B,0xFF6B},
1416
{0xFF6C,0xFF6C,0xFF6C}, {0xFF6D,0xFF6D,0xFF6D},
1417
{0xFF6E,0xFF6E,0xFF6E}, {0xFF6F,0xFF6F,0xFF6F},
1418
{0xFF70,0xFF70,0xFF70}, {0xFF71,0xFF71,0xFF71},
1419
{0xFF72,0xFF72,0xFF72}, {0xFF73,0xFF73,0xFF73},
1420
{0xFF74,0xFF74,0xFF74}, {0xFF75,0xFF75,0xFF75},
1421
{0xFF76,0xFF76,0xFF76}, {0xFF77,0xFF77,0xFF77},
1422
{0xFF78,0xFF78,0xFF78}, {0xFF79,0xFF79,0xFF79},
1423
{0xFF7A,0xFF7A,0xFF7A}, {0xFF7B,0xFF7B,0xFF7B},
1424
{0xFF7C,0xFF7C,0xFF7C}, {0xFF7D,0xFF7D,0xFF7D},
1425
{0xFF7E,0xFF7E,0xFF7E}, {0xFF7F,0xFF7F,0xFF7F},
1426
{0xFF80,0xFF80,0xFF80}, {0xFF81,0xFF81,0xFF81},
1427
{0xFF82,0xFF82,0xFF82}, {0xFF83,0xFF83,0xFF83},
1428
{0xFF84,0xFF84,0xFF84}, {0xFF85,0xFF85,0xFF85},
1429
{0xFF86,0xFF86,0xFF86}, {0xFF87,0xFF87,0xFF87},
1430
{0xFF88,0xFF88,0xFF88}, {0xFF89,0xFF89,0xFF89},
1431
{0xFF8A,0xFF8A,0xFF8A}, {0xFF8B,0xFF8B,0xFF8B},
1432
{0xFF8C,0xFF8C,0xFF8C}, {0xFF8D,0xFF8D,0xFF8D},
1433
{0xFF8E,0xFF8E,0xFF8E}, {0xFF8F,0xFF8F,0xFF8F},
1434
{0xFF90,0xFF90,0xFF90}, {0xFF91,0xFF91,0xFF91},
1435
{0xFF92,0xFF92,0xFF92}, {0xFF93,0xFF93,0xFF93},
1436
{0xFF94,0xFF94,0xFF94}, {0xFF95,0xFF95,0xFF95},
1437
{0xFF96,0xFF96,0xFF96}, {0xFF97,0xFF97,0xFF97},
1438
{0xFF98,0xFF98,0xFF98}, {0xFF99,0xFF99,0xFF99},
1439
{0xFF9A,0xFF9A,0xFF9A}, {0xFF9B,0xFF9B,0xFF9B},
1440
{0xFF9C,0xFF9C,0xFF9C}, {0xFF9D,0xFF9D,0xFF9D},
1441
{0xFF9E,0xFF9E,0xFF9E}, {0xFF9F,0xFF9F,0xFF9F},
1442
{0xFFA0,0xFFA0,0xFFA0}, {0xFFA1,0xFFA1,0xFFA1},
1443
{0xFFA2,0xFFA2,0xFFA2}, {0xFFA3,0xFFA3,0xFFA3},
1444
{0xFFA4,0xFFA4,0xFFA4}, {0xFFA5,0xFFA5,0xFFA5},
1445
{0xFFA6,0xFFA6,0xFFA6}, {0xFFA7,0xFFA7,0xFFA7},
1446
{0xFFA8,0xFFA8,0xFFA8}, {0xFFA9,0xFFA9,0xFFA9},
1447
{0xFFAA,0xFFAA,0xFFAA}, {0xFFAB,0xFFAB,0xFFAB},
1448
{0xFFAC,0xFFAC,0xFFAC}, {0xFFAD,0xFFAD,0xFFAD},
1449
{0xFFAE,0xFFAE,0xFFAE}, {0xFFAF,0xFFAF,0xFFAF},
1450
{0xFFB0,0xFFB0,0xFFB0}, {0xFFB1,0xFFB1,0xFFB1},
1451
{0xFFB2,0xFFB2,0xFFB2}, {0xFFB3,0xFFB3,0xFFB3},
1452
{0xFFB4,0xFFB4,0xFFB4}, {0xFFB5,0xFFB5,0xFFB5},
1453
{0xFFB6,0xFFB6,0xFFB6}, {0xFFB7,0xFFB7,0xFFB7},
1454
{0xFFB8,0xFFB8,0xFFB8}, {0xFFB9,0xFFB9,0xFFB9},
1455
{0xFFBA,0xFFBA,0xFFBA}, {0xFFBB,0xFFBB,0xFFBB},
1456
{0xFFBC,0xFFBC,0xFFBC}, {0xFFBD,0xFFBD,0xFFBD},
1457
{0xFFBE,0xFFBE,0xFFBE}, {0xFFBF,0xFFBF,0xFFBF},
1458
{0xFFC0,0xFFC0,0xFFC0}, {0xFFC1,0xFFC1,0xFFC1},
1459
{0xFFC2,0xFFC2,0xFFC2}, {0xFFC3,0xFFC3,0xFFC3},
1460
{0xFFC4,0xFFC4,0xFFC4}, {0xFFC5,0xFFC5,0xFFC5},
1461
{0xFFC6,0xFFC6,0xFFC6}, {0xFFC7,0xFFC7,0xFFC7},
1462
{0xFFC8,0xFFC8,0xFFC8}, {0xFFC9,0xFFC9,0xFFC9},
1463
{0xFFCA,0xFFCA,0xFFCA}, {0xFFCB,0xFFCB,0xFFCB},
1464
{0xFFCC,0xFFCC,0xFFCC}, {0xFFCD,0xFFCD,0xFFCD},
1465
{0xFFCE,0xFFCE,0xFFCE}, {0xFFCF,0xFFCF,0xFFCF},
1466
{0xFFD0,0xFFD0,0xFFD0}, {0xFFD1,0xFFD1,0xFFD1},
1467
{0xFFD2,0xFFD2,0xFFD2}, {0xFFD3,0xFFD3,0xFFD3},
1468
{0xFFD4,0xFFD4,0xFFD4}, {0xFFD5,0xFFD5,0xFFD5},
1469
{0xFFD6,0xFFD6,0xFFD6}, {0xFFD7,0xFFD7,0xFFD7},
1470
{0xFFD8,0xFFD8,0xFFD8}, {0xFFD9,0xFFD9,0xFFD9},
1471
{0xFFDA,0xFFDA,0xFFDA}, {0xFFDB,0xFFDB,0xFFDB},
1472
{0xFFDC,0xFFDC,0xFFDC}, {0xFFDD,0xFFDD,0xFFDD},
1473
{0xFFDE,0xFFDE,0xFFDE}, {0xFFDF,0xFFDF,0xFFDF},
1474
{0xFFE0,0xFFE0,0xFFE0}, {0xFFE1,0xFFE1,0xFFE1},
1475
{0xFFE2,0xFFE2,0xFFE2}, {0xFFE3,0xFFE3,0xFFE3},
1476
{0xFFE4,0xFFE4,0xFFE4}, {0xFFE5,0xFFE5,0xFFE5},
1477
{0xFFE6,0xFFE6,0xFFE6}, {0xFFE7,0xFFE7,0xFFE7},
1478
{0xFFE8,0xFFE8,0xFFE8}, {0xFFE9,0xFFE9,0xFFE9},
1479
{0xFFEA,0xFFEA,0xFFEA}, {0xFFEB,0xFFEB,0xFFEB},
1480
{0xFFEC,0xFFEC,0xFFEC}, {0xFFED,0xFFED,0xFFED},
1481
{0xFFEE,0xFFEE,0xFFEE}, {0xFFEF,0xFFEF,0xFFEF},
1482
{0xFFF0,0xFFF0,0xFFF0}, {0xFFF1,0xFFF1,0xFFF1},
1483
{0xFFF2,0xFFF2,0xFFF2}, {0xFFF3,0xFFF3,0xFFF3},
1484
{0xFFF4,0xFFF4,0xFFF4}, {0xFFF5,0xFFF5,0xFFF5},
1485
{0xFFF6,0xFFF6,0xFFF6}, {0xFFF7,0xFFF7,0xFFF7},
1486
{0xFFF8,0xFFF8,0xFFF8}, {0xFFF9,0xFFF9,0xFFF9},
1487
{0xFFFA,0xFFFA,0xFFFA}, {0xFFFB,0xFFFB,0xFFFB},
1488
{0xFFFC,0xFFFC,0xFFFC}, {0xFFFD,0xFFFD,0xFFFD},
1489
{0xFFFE,0xFFFE,0xFFFE}, {0xFFFF,0xFFFF,0xFFFF}
1492
MY_UNICASE_INFO *my_unicase_default[256]={
1493
plane00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1494
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1495
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1496
NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1497
NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1498
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1499
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1500
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1501
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1502
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1503
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1504
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1505
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1506
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1507
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1508
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1509
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1510
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1511
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1512
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1513
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1514
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1515
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1516
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1517
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1518
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1519
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1520
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1521
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1522
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1523
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1524
NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1530
Turkish lower/upper mapping:
1531
1. LOWER(0x0049 LATIN CAPITAL LETTER I) ->
1532
0x0131 LATIN SMALL LETTER DOTLESS I
1533
2. UPPER(0x0069 LATIN SMALL LETTER I) ->
1534
0x0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
1537
static MY_UNICASE_INFO turk00[]=
1539
{0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
1540
{0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
1541
{0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
1542
{0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
1543
{0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
1544
{0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
1545
{0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
1546
{0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
1547
{0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
1548
{0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
1549
{0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
1550
{0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
1551
{0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
1552
{0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
1553
{0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
1554
{0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
1555
{0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
1556
{0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
1557
{0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
1558
{0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
1559
{0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
1560
{0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
1561
{0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
1562
{0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
1563
{0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
1564
{0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
1565
{0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
1566
{0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
1567
{0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
1568
{0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
1569
{0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
1570
{0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
1571
{0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
1572
{0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1573
{0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1574
{0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1575
{0x0048,0x0068,0x0048}, {0x0049,0x0131,0x0049},
1576
{0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1577
{0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1578
{0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1579
{0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1580
{0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1581
{0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1582
{0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1583
{0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1584
{0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
1585
{0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
1586
{0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
1587
{0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
1588
{0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1589
{0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1590
{0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1591
{0x0048,0x0068,0x0048}, {0x0130,0x0069,0x0049},
1592
{0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1593
{0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1594
{0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1595
{0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1596
{0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1597
{0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1598
{0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1599
{0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1600
{0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
1601
{0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
1602
{0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
1603
{0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
1604
{0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
1605
{0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
1606
{0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
1607
{0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
1608
{0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
1609
{0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
1610
{0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
1611
{0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
1612
{0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
1613
{0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
1614
{0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
1615
{0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
1616
{0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
1617
{0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
1618
{0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
1619
{0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
1620
{0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
1621
{0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
1622
{0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
1623
{0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
1624
{0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
1625
{0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
1626
{0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
1627
{0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
1628
{0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
1629
{0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
1630
{0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
1631
{0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
1632
{0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
1633
{0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
1634
{0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
1635
{0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1636
{0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1637
{0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1638
{0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1639
{0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1640
{0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1641
{0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1642
{0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1643
{0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1644
{0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1645
{0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1646
{0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
1647
{0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1648
{0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1649
{0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1650
{0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
1651
{0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1652
{0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1653
{0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1654
{0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1655
{0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1656
{0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1657
{0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1658
{0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1659
{0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1660
{0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1661
{0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1662
{0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
1663
{0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1664
{0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1665
{0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1666
{0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
1671
MY_UNICASE_INFO *my_unicase_turkish[256]=
1673
turk00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1674
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1675
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1676
NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1677
NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1678
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1679
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1680
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1681
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1682
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1683
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1684
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1685
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1686
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1687
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1688
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1689
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1690
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1691
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1692
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1693
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1694
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1695
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1696
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1697
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1698
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1699
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1700
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1701
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1702
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1703
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1704
NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1710
Compare string against string with wildcard
1711
This function is used for utf8mb3, utf8mb4, ucs2, utf16, utf32
1713
@param cs Character set.
1715
@str_end End of string.
1716
@wildstr Wildcard pattern.
1717
@wildend End of wildcard pattern.
1718
@escape Escape characters, typically \\.
1719
@w_one "One character", typically _.
1720
@w_many "Many characters", typically %.
1722
@return Comparison result.
1723
@retval 0 if matched.
1724
@retval -1 if not matched with wildcard.
1725
@retval 1 if matched with wildcard.
1728
int my_wildcmp_unicode(const CHARSET_INFO * const cs,
1729
const char *str,const char *str_end,
1730
const char *wildstr,const char *wildend,
1731
int escape, int w_one, int w_many,
1732
MY_UNICASE_INFO **weights)
1734
int result= -1; /* Not found, using wildcards */
1735
my_wc_t s_wc=0, w_wc=0;
1737
my_charset_conv_mb_wc mb_wc;
1738
mb_wc= cs->cset->mb_wc;
1740
while (wildstr != wildend)
1745
if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
1746
(const unsigned char*)wildend)) <= 0)
1749
if (w_wc == (my_wc_t)w_many)
1751
result= 1; /* Found an anchor char */
1756
if (w_wc == (my_wc_t)escape && wildstr < wildend)
1758
if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
1759
(const unsigned char*)wildend)) <= 0)
1765
if ((scan= mb_wc(cs, &s_wc, (const unsigned char*)str,
1766
(const unsigned char*)str_end)) <= 0)
1770
if (!escaped && w_wc == (my_wc_t)w_one)
1772
result= 1; /* Found an anchor char */
1780
plane=(s_wc>>8) & 0xFF;
1781
s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
1785
plane=(w_wc>>8) & 0xFF;
1786
w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
1790
return 1; /* No match */
1792
if (wildstr == wildend)
1793
return (str != str_end); /* Match if both are at end */
1797
if (w_wc == (my_wc_t)w_many)
1798
{ /* Found w_many */
1800
/* Remove any '%' and '_' from the wild search string */
1801
for (; wildstr != wildend ;)
1803
if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
1804
(const unsigned char*)wildend)) <= 0)
1807
if (w_wc == (my_wc_t)w_many)
1813
if (w_wc == (my_wc_t)w_one)
1816
if ((scan= mb_wc(cs, &s_wc, (const unsigned char*)str,
1817
(const unsigned char*)str_end)) <=0)
1822
break; /* Not a wild character */
1825
if (wildstr == wildend)
1826
return 0; /* Ok if w_many is last */
1831
if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
1832
(const unsigned char*)wildend)) <=0)
1836
if (w_wc == (my_wc_t)escape)
1838
if (wildstr < wildend)
1840
if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
1841
(const unsigned char*)wildend)) <=0)
1849
/* Skip until the first character from wildstr is found */
1850
while (str != str_end)
1852
if ((scan= mb_wc(cs, &s_wc, (const unsigned char*)str,
1853
(const unsigned char*)str_end)) <=0)
1857
plane=(s_wc>>8) & 0xFF;
1858
s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
1859
plane=(w_wc>>8) & 0xFF;
1860
w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
1871
result= my_wildcmp_unicode(cs, str, str_end, wildstr, wildend,
1872
escape, w_one, w_many,
1879
return (str != str_end ? 1 : 0);
1883
int make_escape_code(const CHARSET_INFO * const cs, const char *escape)
1885
my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
1887
int rc= mb_wc(cs, &escape_wc,
1888
(const unsigned char*) escape,
1889
(const unsigned char*) escape + strlen(escape));
1890
return (int)(rc > 0 ? escape_wc : '\\');
1894
We consider bytes with code more than 127 as a letter.
1895
This garantees that word boundaries work fine with regular
1896
expressions. Note, there is no need to mark byte 255 as a
1897
letter, it is illegal byte in UTF8.
1899
static unsigned char ctype_utf8mb4[]=
1902
32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
1903
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
1904
72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1905
132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
1906
16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1907
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
1908
16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1909
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
1910
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1911
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1912
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1913
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1914
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1915
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1916
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1917
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
1921
static unsigned char to_lower_utf8mb4[]=
1923
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1924
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1925
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1926
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1927
64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
1928
112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
1929
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
1930
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
1931
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
1932
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
1933
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
1934
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
1935
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
1936
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
1937
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
1938
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
1942
static unsigned char to_upper_utf8mb4[]=
1944
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1945
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1946
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1947
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1948
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1949
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
1950
96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1951
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
1952
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
1953
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
1954
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
1955
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
1956
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
1957
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
1958
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
1959
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
1964
bincmp_utf8mb4(const unsigned char *s, const unsigned char *se,
1965
const unsigned char *t, const unsigned char *te)
1967
int slen= (int) (se - s), tlen= (int) (te - t);
1968
int len= min(slen, tlen);
1969
int cmp= memcmp(s, t, len);
1970
return cmp ? cmp : slen - tlen;
1975
my_mb_wc_utf8mb4(const CHARSET_INFO * const,
1976
my_wc_t * pwc, const unsigned char *s, const unsigned char *e)
1981
return MY_CS_TOOSMALL;
1993
if (s + 2 > e) /* We need 2 characters */
1994
return MY_CS_TOOSMALL2;
1996
if (!((s[1] ^ 0x80) < 0x40))
1999
*pwc= ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
2004
if (s + 3 > e) /* We need 3 characters */
2005
return MY_CS_TOOSMALL3;
2007
if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 &&
2008
(c >= 0xe1 || s[1] >= 0xa0)))
2011
*pwc= ((my_wc_t) (c & 0x0f) << 12) |
2012
((my_wc_t) (s[1] ^ 0x80) << 6) |
2013
(my_wc_t) (s[2] ^ 0x80);
2018
if (s + 4 > e) /* We need 4 characters */
2019
return MY_CS_TOOSMALL4;
2021
if (!((s[1] ^ 0x80) < 0x40 &&
2022
(s[2] ^ 0x80) < 0x40 &&
2023
(s[3] ^ 0x80) < 0x40 &&
2024
(c >= 0xf1 || s[1] >= 0x90)))
2026
*pwc = ((my_wc_t) (c & 0x07) << 18) |
2027
((my_wc_t) (s[1] ^ 0x80) << 12) |
2028
((my_wc_t) (s[2] ^ 0x80) << 6) |
2029
(my_wc_t) (s[3] ^ 0x80);
2037
The same as above, but without range check
2038
for example, for a null-terminated string
2041
my_mb_wc_utf8mb4_no_range(const CHARSET_INFO * const,
2042
my_wc_t *pwc, const unsigned char *s)
2058
if (!((s[1] ^ 0x80) < 0x40))
2061
*pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
2067
if (!((s[1] ^ 0x80) < 0x40 &&
2068
(s[2] ^ 0x80) < 0x40 &&
2069
(c >= 0xe1 || s[1] >= 0xa0)))
2071
*pwc= ((my_wc_t) (c & 0x0f) << 12) |
2072
((my_wc_t) (s[1] ^ 0x80) << 6) |
2073
(my_wc_t) (s[2] ^ 0x80);
2079
if (!((s[1] ^ 0x80) < 0x40 &&
2080
(s[2] ^ 0x80) < 0x40 &&
2081
(s[3] ^ 0x80) < 0x40 &&
2082
(c >= 0xf1 || s[1] >= 0x90)))
2084
*pwc = ((my_wc_t) (c & 0x07) << 18) |
2085
((my_wc_t) (s[1] ^ 0x80) << 12) |
2086
((my_wc_t) (s[2] ^ 0x80) << 6) |
2087
(my_wc_t) (s[3] ^ 0x80);
2095
my_wc_mb_utf8mb4(const CHARSET_INFO * const,
2096
my_wc_t wc, unsigned char *r, unsigned char *e)
2101
return MY_CS_TOOSMALL;
2105
else if (wc < 0x800)
2107
else if (wc < 0x10000)
2109
else if (wc < 0x200000)
2111
else return MY_CS_ILUNI;
2114
return MY_CS_TOOSMALLN(count);
2117
/* Fall through all cases!!! */
2118
case 4: r[3] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
2119
case 3: r[2] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
2120
case 2: r[1] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0;
2121
case 1: r[0] = (unsigned char) wc;
2128
The same as above, but without range check.
2131
my_wc_mb_utf8mb4_no_range(const CHARSET_INFO * const,
2132
my_wc_t wc, unsigned char *r)
2138
else if (wc < 0x800)
2140
else if (wc < 0x10000)
2142
else if (wc < 0x200000)
2149
/* Fall through all cases!!! */
2150
case 4: r[3]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x10000;
2151
case 3: r[2]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
2152
case 2: r[1]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
2153
case 1: r[0]= (unsigned char) wc;
2159
#define REPLACEMENT_CHAR 0xFFFD;
2163
my_tolower_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
2166
if (page < 256 && uni_plane[page])
2167
*wc= uni_plane[page][*wc & 0xFF].tolower;
2172
my_toupper_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
2175
if (page < 256 && uni_plane[page])
2176
*wc= uni_plane[page][*wc & 0xFF].toupper;
2181
my_tosort_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
2186
if (uni_plane[page])
2187
*wc= uni_plane[page][*wc & 0xFF].sort;
2191
*wc= REPLACEMENT_CHAR;
2197
my_caseup_utf8mb4(const CHARSET_INFO * const cs, char *src, size_t srclen,
2198
char *dst, size_t dstlen)
2202
char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
2203
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2204
assert(src != dst || cs->caseup_multiply == 1);
2206
while ((src < srcend) &&
2207
(srcres= my_mb_wc_utf8mb4(cs, &wc,
2208
(unsigned char *) src, (unsigned char*) srcend)) > 0)
2210
my_toupper_utf8mb4(uni_plane, &wc);
2211
if ((dstres= my_wc_mb_utf8mb4(cs, wc, (unsigned char*) dst, (unsigned char*) dstend)) <= 0)
2216
return (size_t) (dst - dst0);
2221
my_hash_add(uint32_t *n1, uint32_t *n2, uint32_t ch)
2223
n1[0]^= (((n1[0] & 63) + n2[0]) * (ch)) + (n1[0] << 8);
2228
void my_hash_sort_utf8mb4(const CHARSET_INFO * const cs,
2229
const unsigned char *s, size_t slen,
2230
uint32_t *n1, uint32_t *n2)
2234
const unsigned char *e= s + slen;
2235
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2238
Remove end space. We do this to be able to compare
2239
'A ' and 'A' as identical
2241
while (e > s && e[-1] == ' ')
2244
while ((res= my_mb_wc_utf8mb4(cs, &wc, (const unsigned char*) s, (const unsigned char*) e)) > 0)
2246
my_tosort_utf8mb4(uni_plane, &wc);
2247
my_hash_add(n1, n2, (uint32_t) (wc & 0xFF));
2248
my_hash_add(n1, n2, (uint32_t) (wc >> 8) & 0xFF);
2252
Put the highest byte only if it is non-zero,
2253
to make hash functions for utf8mb3 and utf8mb4
2254
compatible for BMP characters.
2255
This is useful to keep order of records in
2256
test results, e.g. for "SHOW GRANTS".
2258
my_hash_add(n1, n2, (uint32_t) (wc >> 16) & 0xFF);
2266
my_caseup_str_utf8mb4(const CHARSET_INFO * const cs, char *src)
2270
char *dst= src, *dst0= src;
2271
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2272
assert(cs->caseup_multiply == 1);
2275
(srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (unsigned char *) src)) > 0)
2277
my_toupper_utf8mb4(uni_plane, &wc);
2278
if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (unsigned char*) dst)) <= 0)
2284
return (size_t) (dst - dst0);
2289
my_casedn_utf8mb4(const CHARSET_INFO * const cs,
2290
char *src, size_t srclen,
2291
char *dst, size_t dstlen)
2295
char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
2296
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2297
assert(src != dst || cs->casedn_multiply == 1);
2299
while ((src < srcend) &&
2300
(srcres= my_mb_wc_utf8mb4(cs, &wc,
2301
(unsigned char*) src, (unsigned char*) srcend)) > 0)
2303
my_tolower_utf8mb4(uni_plane, &wc);
2304
if ((dstres= my_wc_mb_utf8mb4(cs, wc, (unsigned char*) dst, (unsigned char*) dstend)) <= 0)
2309
return (size_t) (dst - dst0);
2314
my_casedn_str_utf8mb4(const CHARSET_INFO * const cs, char *src)
2318
char *dst= src, *dst0= src;
2319
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2320
assert(cs->casedn_multiply == 1);
2323
(srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (unsigned char *) src)) > 0)
2325
my_tolower_utf8mb4(uni_plane, &wc);
2326
if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (unsigned char*) dst)) <= 0)
2333
In rare cases lower string can be shorter than
2334
the original string, for example:
2336
"U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
2337
(which is 0xC4B0 in utf8, i.e. two bytes)
2341
"U+0069 LATIN SMALL LETTER I"
2342
(which is 0x69 in utf8, i.e. one byte)
2344
So, we need to put '\0' terminator after converting.
2348
return (size_t) (dst - dst0);
2353
my_strnncoll_utf8mb4(const CHARSET_INFO * const cs,
2354
const unsigned char *s, size_t slen,
2355
const unsigned char *t, size_t tlen,
2360
const unsigned char *se= s + slen;
2361
const unsigned char *te= t + tlen;
2362
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2364
while ( s < se && t < te )
2366
int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
2367
int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
2369
if ( s_res <= 0 || t_res <= 0 )
2371
/* Incorrect string, compare bytewise */
2372
return bincmp_utf8mb4(s, se, t, te);
2375
my_tosort_utf8mb4(uni_plane, &s_wc);
2376
my_tosort_utf8mb4(uni_plane, &t_wc);
2380
return s_wc > t_wc ? 1 : -1;
2386
return (int) (t_is_prefix ? (t - te) : ((se - s) - (te - t)));
2391
Compare strings, discarding end space
2393
If one string is shorter as the other, then we space extend the other
2394
so that the strings have equal length.
2396
This will ensure that the following things hold:
2402
@param cs Character set pinter.
2403
@param a First string to compare.
2404
@param a_length Length of 'a'.
2405
@param b Second string to compare.
2406
@param b_length Length of 'b'.
2407
@param diff_if_only_endspace_difference
2408
Set to 1 if the strings should be regarded as different
2409
if they only difference in end space
2411
@return Comparison result.
2412
@retval Negative number, if a less than b.
2413
@retval 0, if a is equal to b
2414
@retval Positive number, if a > b
2418
my_strnncollsp_utf8mb4(const CHARSET_INFO * const cs,
2419
const unsigned char *s, size_t slen,
2420
const unsigned char *t, size_t tlen,
2421
bool diff_if_only_endspace_difference)
2426
const unsigned char *se= s + slen, *te= t + tlen;
2427
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2429
#ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
2430
diff_if_only_endspace_difference= false;
2433
while ( s < se && t < te )
2435
int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
2436
int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
2438
if ( s_res <= 0 || t_res <= 0 )
2440
/* Incorrect string, compare bytewise */
2441
return bincmp_utf8mb4(s, se, t, te);
2444
my_tosort_utf8mb4(uni_plane, &s_wc);
2445
my_tosort_utf8mb4(uni_plane, &t_wc);
2449
return s_wc > t_wc ? 1 : -1;
2456
slen= (size_t) (se-s);
2457
tlen= (size_t) (te-t);
2463
if (diff_if_only_endspace_difference)
2464
res= 1; /* Assume 'a' is bigger */
2474
This following loop uses the fact that in UTF-8
2475
all multibyte characters are greater than space,
2476
and all multibyte head characters are greater than
2477
space. It means if we meet a character greater
2478
than space, it always means that the longer string
2479
is greater. So we can reuse the same loop from the
2480
8bit version, without having to process full multibute
2483
for ( ; s < se; s++)
2486
return (*s < ' ') ? -swap : swap;
2494
Compare 0-terminated UTF8 strings.
2496
@param cs character set handler
2497
@param s First 0-terminated string to compare
2498
@param t Second 0-terminated string to compare
2500
@return Comparison result.
2501
@retval negative number if s < t
2502
@retval positive number if s > t
2503
@retval 0 is the strings are equal
2506
int my_strcasecmp_utf8mb4(const CHARSET_INFO * const cs,
2507
const char *s, const char *t)
2509
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2510
while (s[0] && t[0])
2514
if ((unsigned char) s[0] < 128)
2517
s[0] is between 0 and 127.
2518
It represents a single byte character.
2519
Convert it into weight according to collation.
2521
s_wc= plane00[(unsigned char) s[0]].tolower;
2526
int res= my_mb_wc_utf8mb4_no_range(cs, &s_wc, (const unsigned char*) s);
2529
In the case of wrong multibyte sequence we will
2530
call strcmp() for byte-to-byte comparison.
2533
return strcmp(s, t);
2536
my_tolower_utf8mb4(uni_plane, &s_wc);
2540
/* Do the same for the second string */
2542
if ((unsigned char) t[0] < 128)
2544
/* Convert single byte character into weight */
2545
t_wc= plane00[(unsigned char) t[0]].tolower;
2550
int res= my_mb_wc_utf8mb4_no_range(cs, &t_wc, (const unsigned char*) t);
2552
return strcmp(s, t);
2555
my_tolower_utf8mb4(uni_plane, &t_wc);
2558
/* Now we have two weights, let's compare them */
2560
return ((int) s_wc) - ((int) t_wc);
2562
return ((int) (unsigned char) s[0]) - ((int) (unsigned char) t[0]);
2567
my_wildcmp_utf8mb4(const CHARSET_INFO * const cs,
2568
const char *str, const char *strend,
2569
const char *wildstr, const char *wildend,
2570
int escape, int w_one, int w_many)
2572
return my_wildcmp_unicode(cs, str, strend, wildstr, wildend,
2573
escape, w_one, w_many, cs->caseinfo);
2578
my_strnxfrmlen_utf8mb4(const CHARSET_INFO * const, size_t len)
2580
/* TODO: fix when working on WL "Unicode new version" */
2581
return (len * 2 + 2) / 4;
2586
my_strnxfrm_utf8mb4(const CHARSET_INFO * const cs,
2587
unsigned char *dst, size_t dstlen, uint32_t nweights,
2588
const unsigned char *src, size_t srclen, uint32_t flags)
2592
unsigned char *dst0= dst;
2593
unsigned char *de= dst + dstlen;
2594
unsigned char *de_beg= de - 1;
2595
const unsigned char *se = src + srclen;
2596
MY_UNICASE_INFO **uni_plane= (cs->state & MY_CS_BINSORT) ?
2597
NULL : cs->caseinfo;
2599
for (; dst < de_beg && nweights; nweights--)
2601
if ((res= my_mb_wc_utf8mb4(cs,&wc, src, se)) <= 0)
2606
my_tosort_utf8mb4(uni_plane, &wc);
2608
*dst++= (unsigned char)(wc >> 8);
2609
*dst++= (unsigned char)(wc & 0xFF);
2613
if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
2615
/* Fill the tail with keys for space character */
2616
for (; dst < de_beg && nweights; nweights--)
2622
if (dst < de) /* Clear the last byte, if "dstlen" was an odd number */
2625
my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
2630
unsigned int my_ismbchar_utf8mb4(const CHARSET_INFO * const cs,
2631
const char *b, const char *e)
2634
int res= my_mb_wc_utf8mb4(cs,&wc, (const unsigned char*)b, (const unsigned char*)e);
2635
return (res > 1) ? res : 0;
2639
unsigned int my_mbcharlen_utf8mb4(const CHARSET_INFO * const, uint32_t c)
2644
return 0; /* Illegal mb head */
2651
return 0; /* Illegal mb head */;
2655
static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
2658
my_strnncoll_utf8mb4,
2659
my_strnncollsp_utf8mb4,
2660
my_strnxfrm_utf8mb4,
2661
my_strnxfrmlen_utf8mb4,
2664
my_strcasecmp_utf8mb4,
2666
my_hash_sort_utf8mb4,
2667
my_propagate_complex
2671
static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
2674
my_strnncoll_mb_bin,
2675
my_strnncollsp_mb_bin,
2676
my_strnxfrm_utf8mb4,
2677
my_strnxfrmlen_utf8mb4,
2680
my_strcasecmp_mb_bin,
2682
my_hash_sort_mb_bin,
2687
MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
2690
my_ismbchar_utf8mb4,
2691
my_mbcharlen_utf8mb4,
2694
my_well_formed_len_mb,
2700
my_caseup_str_utf8mb4,
2701
my_casedn_str_utf8mb4,
2705
my_long10_to_str_8bit,
2706
my_int64_t10_to_str_8bit,
2714
my_strntoull10rnd_8bit,
2720
CHARSET_INFO my_charset_utf8mb4_general_ci=
2722
45,0,0, /* number */
2723
MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
2724
MY_UTF8MB4, /* cs name */
2725
MY_UTF8MB4_GENERAL_CI,/* name */
2726
"UTF-8 Unicode", /* comment */
2727
NULL, /* tailoring */
2728
ctype_utf8mb4, /* ctype */
2729
to_lower_utf8mb4, /* to_lower */
2730
to_upper_utf8mb4, /* to_upper */
2731
to_upper_utf8mb4, /* sort_order */
2732
NULL, /* contractions */
2733
NULL, /* sort_order_big*/
2734
NULL, /* tab_to_uni */
2735
NULL, /* tab_from_uni */
2736
my_unicase_default, /* caseinfo */
2737
NULL, /* state_map */
2738
NULL, /* ident_map */
2739
1, /* strxfrm_multiply */
2740
1, /* caseup_multiply */
2741
1, /* casedn_multiply */
2744
0, /* min_sort_char */
2745
0xFFFF, /* max_sort_char */
2747
0, /* escape_with_backslash_is_dangerous */
2748
1, /* levels_for_compare */
2749
1, /* levels_for_order */
2750
&my_charset_utf8mb4_handler,
2751
&my_collation_utf8mb4_general_ci_handler
2755
CHARSET_INFO my_charset_utf8mb4_bin=
2757
46,0,0, /* number */
2758
MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE, /* state */
2759
MY_UTF8MB4, /* cs name */
2760
MY_UTF8MB4_BIN, /* name */
2761
"UTF-8 Unicode", /* comment */
2762
NULL, /* tailoring */
2763
ctype_utf8mb4, /* ctype */
2764
to_lower_utf8mb4, /* to_lower */
2765
to_upper_utf8mb4, /* to_upper */
2766
NULL, /* sort_order */
2767
NULL, /* contractions */
2768
NULL, /* sort_order_big*/
2769
NULL, /* tab_to_uni */
2770
NULL, /* tab_from_uni */
2771
my_unicase_default, /* caseinfo */
2772
NULL, /* state_map */
2773
NULL, /* ident_map */
2774
1, /* strxfrm_multiply */
2775
1, /* caseup_multiply */
2776
1, /* casedn_multiply */
2779
0, /* min_sort_char */
2780
0xFFFF, /* max_sort_char */
2782
0, /* escape_with_backslash_is_dangerous */
2783
1, /* levels_for_compare */
2784
1, /* levels_for_order */
2785
&my_charset_utf8mb4_handler,
2786
&my_collation_utf8mb4_bin_handler
2791
static inline int bincmp(const unsigned char *s, const unsigned char *se,
2792
const unsigned char *t, const unsigned char *te)
2794
int slen= (int) (se-s), tlen= (int) (te-t);
2795
int len= min(slen,tlen);
2796
int cmp= memcmp(s,t,len);
2797
return cmp ? cmp : slen-tlen;
2802
File system encoding components:
2804
Code range Pattern Number Used Unused Blocks
2805
-----------------------------------------------------------------------------
2806
00C0..017F [.][0..4][g..z] 5*20= 100 97 3 Latin1 Supplement + Ext A
2807
0370..03FF [.][5..9][g..z] 5*20= 100 88 12 Greek + Coptic
2808
0400..052F [.][g..z][0..6] 20*7= 140 140 137 Cyrillic
2809
0530..058F [.][g..z][7..8] 20*2= 40 38 2 Armenian
2810
2160..217F [.][g..z][9] 20*1= 20 16 4 Number Forms
2811
0180..02AF [.][g..z][a..k] 28*11=220 203 17 Latin Ext B + IPA
2812
1E00..0EFF [.][g..z][l..r] 20*7= 140 136 4 Latin Additional Extended
2813
1F00..1FFF [.][g..z][s..z] 20*8= 160 144 16 Greek Extended
2814
.... .... [.][a..f][g..z] 6*20= 120 0 120 RESERVED
2815
24B6..24E9 [.][@][a..z] 26 26 0 Enclosed Alphanumerics
2816
FF21..FF5A [.][a..z][@] 26 26 0 Full Width forms
2818
All other characters are encoded using five bytes:
2820
[.][0..9a..z][0..9a..z][0..9a..z][0..9a..z]
2824
} /* namespace drizzled */
2829
static void test_mb(CHARSET_INFO *cs, unsigned char *s)
2833
if (my_ismbhead_utf8(cs,*s))
2835
uint32_t len=my_mbcharlen_utf8(cs,*s);
2853
char str[1024]=" utf8 test проба ПЕРА по-РУССКИ";
2856
test_mb(cs,(unsigned char*)str);
2858
printf("orig :'%s'\n",str);
2860
my_caseup_utf8(cs,str,15);
2861
printf("caseup :'%s'\n",str);
2863
my_caseup_str_utf8(cs,str);
2864
printf("caseup_str:'%s'\n",str);
2866
my_casedn_utf8(cs,str,15);
2867
printf("casedn :'%s'\n",str);
2869
my_casedn_str_utf8(cs,str);
2870
printf("casedn_str:'%s'\n",str);