00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef UT_CASE_H
00021 #define UT_CASE_H
00022
00023
00024 #ifndef UT_STRING_CPP
00025 #error !!! This file can only be included in ut_string.cpp !!!
00026 #endif
00027
00028 struct case_entry
00029 {
00030 UT_UCSChar code;
00031 UT_Byte type;
00032 UT_UCSChar other;
00033 };
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #if 0
00051 struct case_entry2
00052 {
00053 UT_UCSChar low;
00054 UT_UCSChar high;
00055 UT_Byte type;
00056 UT_sint32 diff;
00057 }
00058
00059 case_entry2 case_table2[] =
00060 {
00061 {0x0041, 0x005a, Lu, 0x0020},
00062 {0x0061, 0x007a, Ll, -0x0020},
00063 {0x00b5, 0x00b5, Ll, 0x02e7},
00064 {0x00c0, 0x00d6, Lu, 0x0020},
00065 {0x00d8, 0x00de, Lu, 0x0020},
00066 {0x00e0, 0x00f6, Ll, -0x0020},
00067 {0x00f8, 0x00fe, Ll, -0x0020},
00068 {0x00ff, 0x00ff, Ll, 0x0079},
00069 {0x0100, 0x012f, Lu_even, 0x0001},
00070 {0x0130, 0x0130, Lu, -0x00c7},
00071 {0x0131, 0x0131, Ll, -0x00e8},
00072 {0x0132, 0x0137, Lu_even, 0x0001},
00073 {0x0139, 0x0148, Lu_odd, 0x0001},
00074 {0x014A, 0x0177, Lu_even, 0x0001},
00075 {0x0178, 0x0178, Ll, -0x0079},
00076 {0x0179, 0x017e, Lu_odd, 0x0001},
00077 {0x017f, 0x017f, Ll, -0x0125},
00078 {0x0181, 0x0181, Lu, 0x00d2},
00079 {0x0182, 0x0188, Lu_even, 0x0001},
00080 {0x2c80, 0x2ce3, Lu_even, 0x0001},
00081
00082 }
00083 #endif
00084
00085 #define Lu 1
00086 #define Ll 0
00087
00088 static int s_cmp_case(const void * c1, const void * c2)
00089 {
00090 const UT_UCSChar * C1 = (const UT_UCSChar *) c1;
00091 const case_entry * C2 = (const case_entry *) c2;
00092
00093 return *C1 - C2->code;
00094 }
00095
00096
00097
00098 case_entry case_table[] =
00099 {
00100 {0x0041, Lu, 0x0061},
00101 {0x0042, Lu, 0x0062},
00102 {0x0043, Lu, 0x0063},
00103 {0x0044, Lu, 0x0064},
00104 {0x0045, Lu, 0x0065},
00105 {0x0046, Lu, 0x0066},
00106 {0x0047, Lu, 0x0067},
00107 {0x0048, Lu, 0x0068},
00108 {0x0049, Lu, 0x0069},
00109 {0x004A, Lu, 0x006A},
00110 {0x004B, Lu, 0x006B},
00111 {0x004C, Lu, 0x006C},
00112 {0x004D, Lu, 0x006D},
00113 {0x004E, Lu, 0x006E},
00114 {0x004F, Lu, 0x006F},
00115 {0x0050, Lu, 0x0070},
00116 {0x0051, Lu, 0x0071},
00117 {0x0052, Lu, 0x0072},
00118 {0x0053, Lu, 0x0073},
00119 {0x0054, Lu, 0x0074},
00120 {0x0055, Lu, 0x0075},
00121 {0x0056, Lu, 0x0076},
00122 {0x0057, Lu, 0x0077},
00123 {0x0058, Lu, 0x0078},
00124 {0x0059, Lu, 0x0079},
00125 {0x005A, Lu, 0x007A},
00126 {0x0061, Ll, 0x0041},
00127 {0x0062, Ll, 0x0042},
00128 {0x0063, Ll, 0x0043},
00129 {0x0064, Ll, 0x0044},
00130 {0x0065, Ll, 0x0045},
00131 {0x0066, Ll, 0x0046},
00132 {0x0067, Ll, 0x0047},
00133 {0x0068, Ll, 0x0048},
00134 {0x0069, Ll, 0x0049},
00135 {0x006A, Ll, 0x004A},
00136 {0x006B, Ll, 0x004B},
00137 {0x006C, Ll, 0x004C},
00138 {0x006D, Ll, 0x004D},
00139 {0x006E, Ll, 0x004E},
00140 {0x006F, Ll, 0x004F},
00141 {0x0070, Ll, 0x0050},
00142 {0x0071, Ll, 0x0051},
00143 {0x0072, Ll, 0x0052},
00144 {0x0073, Ll, 0x0053},
00145 {0x0074, Ll, 0x0054},
00146 {0x0075, Ll, 0x0055},
00147 {0x0076, Ll, 0x0056},
00148 {0x0077, Ll, 0x0057},
00149 {0x0078, Ll, 0x0058},
00150 {0x0079, Ll, 0x0059},
00151 {0x007A, Ll, 0x005A},
00152 {0x00B5, Ll, 0x039C},
00153 {0x00C0, Lu, 0x00E0},
00154 {0x00C1, Lu, 0x00E1},
00155 {0x00C2, Lu, 0x00E2},
00156 {0x00C3, Lu, 0x00E3},
00157 {0x00C4, Lu, 0x00E4},
00158 {0x00C5, Lu, 0x00E5},
00159 {0x00C6, Lu, 0x00E6},
00160 {0x00C7, Lu, 0x00E7},
00161 {0x00C8, Lu, 0x00E8},
00162 {0x00C9, Lu, 0x00E9},
00163 {0x00CA, Lu, 0x00EA},
00164 {0x00CB, Lu, 0x00EB},
00165 {0x00CC, Lu, 0x00EC},
00166 {0x00CD, Lu, 0x00ED},
00167 {0x00CE, Lu, 0x00EE},
00168 {0x00CF, Lu, 0x00EF},
00169 {0x00D0, Lu, 0x00F0},
00170 {0x00D1, Lu, 0x00F1},
00171 {0x00D2, Lu, 0x00F2},
00172 {0x00D3, Lu, 0x00F3},
00173 {0x00D4, Lu, 0x00F4},
00174 {0x00D5, Lu, 0x00F5},
00175 {0x00D6, Lu, 0x00F6},
00176 {0x00D8, Lu, 0x00F8},
00177 {0x00D9, Lu, 0x00F9},
00178 {0x00DA, Lu, 0x00FA},
00179 {0x00DB, Lu, 0x00FB},
00180 {0x00DC, Lu, 0x00FC},
00181 {0x00DD, Lu, 0x00FD},
00182 {0x00DE, Lu, 0x00FE},
00183 {0x00E0, Ll, 0x00C0},
00184 {0x00E1, Ll, 0x00C1},
00185 {0x00E2, Ll, 0x00C2},
00186 {0x00E3, Ll, 0x00C3},
00187 {0x00E4, Ll, 0x00C4},
00188 {0x00E5, Ll, 0x00C5},
00189 {0x00E6, Ll, 0x00C6},
00190 {0x00E7, Ll, 0x00C7},
00191 {0x00E8, Ll, 0x00C8},
00192 {0x00E9, Ll, 0x00C9},
00193 {0x00EA, Ll, 0x00CA},
00194 {0x00EB, Ll, 0x00CB},
00195 {0x00EC, Ll, 0x00CC},
00196 {0x00ED, Ll, 0x00CD},
00197 {0x00EE, Ll, 0x00CE},
00198 {0x00EF, Ll, 0x00CF},
00199 {0x00F0, Ll, 0x00D0},
00200 {0x00F1, Ll, 0x00D1},
00201 {0x00F2, Ll, 0x00D2},
00202 {0x00F3, Ll, 0x00D3},
00203 {0x00F4, Ll, 0x00D4},
00204 {0x00F5, Ll, 0x00D5},
00205 {0x00F6, Ll, 0x00D6},
00206 {0x00F8, Ll, 0x00D8},
00207 {0x00F9, Ll, 0x00D9},
00208 {0x00FA, Ll, 0x00DA},
00209 {0x00FB, Ll, 0x00DB},
00210 {0x00FC, Ll, 0x00DC},
00211 {0x00FD, Ll, 0x00DD},
00212 {0x00FE, Ll, 0x00DE},
00213 {0x00FF, Ll, 0x0178},
00214 {0x0100, Lu, 0x0101},
00215 {0x0101, Ll, 0x0100},
00216 {0x0102, Lu, 0x0103},
00217 {0x0103, Ll, 0x0102},
00218 {0x0104, Lu, 0x0105},
00219 {0x0105, Ll, 0x0104},
00220 {0x0106, Lu, 0x0107},
00221 {0x0107, Ll, 0x0106},
00222 {0x0108, Lu, 0x0109},
00223 {0x0109, Ll, 0x0108},
00224 {0x010A, Lu, 0x010B},
00225 {0x010B, Ll, 0x010A},
00226 {0x010C, Lu, 0x010D},
00227 {0x010D, Ll, 0x010C},
00228 {0x010E, Lu, 0x010F},
00229 {0x010F, Ll, 0x010E},
00230 {0x0110, Lu, 0x0111},
00231 {0x0111, Ll, 0x0110},
00232 {0x0112, Lu, 0x0113},
00233 {0x0113, Ll, 0x0112},
00234 {0x0114, Lu, 0x0115},
00235 {0x0115, Ll, 0x0114},
00236 {0x0116, Lu, 0x0117},
00237 {0x0117, Ll, 0x0116},
00238 {0x0118, Lu, 0x0119},
00239 {0x0119, Ll, 0x0118},
00240 {0x011A, Lu, 0x011B},
00241 {0x011B, Ll, 0x011A},
00242 {0x011C, Lu, 0x011D},
00243 {0x011D, Ll, 0x011C},
00244 {0x011E, Lu, 0x011F},
00245 {0x011F, Ll, 0x011E},
00246 {0x0120, Lu, 0x0121},
00247 {0x0121, Ll, 0x0120},
00248 {0x0122, Lu, 0x0123},
00249 {0x0123, Ll, 0x0122},
00250 {0x0124, Lu, 0x0125},
00251 {0x0125, Ll, 0x0124},
00252 {0x0126, Lu, 0x0127},
00253 {0x0127, Ll, 0x0126},
00254 {0x0128, Lu, 0x0129},
00255 {0x0129, Ll, 0x0128},
00256 {0x012A, Lu, 0x012B},
00257 {0x012B, Ll, 0x012A},
00258 {0x012C, Lu, 0x012D},
00259 {0x012D, Ll, 0x012C},
00260 {0x012E, Lu, 0x012F},
00261 {0x012F, Ll, 0x012E},
00262 {0x0130, Lu, 0x0069},
00263 {0x0131, Ll, 0x0049},
00264 {0x0132, Lu, 0x0133},
00265 {0x0133, Ll, 0x0132},
00266 {0x0134, Lu, 0x0135},
00267 {0x0135, Ll, 0x0134},
00268 {0x0136, Lu, 0x0137},
00269 {0x0137, Ll, 0x0136},
00270 {0x0139, Lu, 0x013A},
00271 {0x013A, Ll, 0x0139},
00272 {0x013B, Lu, 0x013C},
00273 {0x013C, Ll, 0x013B},
00274 {0x013D, Lu, 0x013E},
00275 {0x013E, Ll, 0x013D},
00276 {0x013F, Lu, 0x0140},
00277 {0x0140, Ll, 0x013F},
00278 {0x0141, Lu, 0x0142},
00279 {0x0142, Ll, 0x0141},
00280 {0x0143, Lu, 0x0144},
00281 {0x0144, Ll, 0x0143},
00282 {0x0145, Lu, 0x0146},
00283 {0x0146, Ll, 0x0145},
00284 {0x0147, Lu, 0x0148},
00285 {0x0148, Ll, 0x0147},
00286 {0x014A, Lu, 0x014B},
00287 {0x014B, Ll, 0x014A},
00288 {0x014C, Lu, 0x014D},
00289 {0x014D, Ll, 0x014C},
00290 {0x014E, Lu, 0x014F},
00291 {0x014F, Ll, 0x014E},
00292 {0x0150, Lu, 0x0151},
00293 {0x0151, Ll, 0x0150},
00294 {0x0152, Lu, 0x0153},
00295 {0x0153, Ll, 0x0152},
00296 {0x0154, Lu, 0x0155},
00297 {0x0155, Ll, 0x0154},
00298 {0x0156, Lu, 0x0157},
00299 {0x0157, Ll, 0x0156},
00300 {0x0158, Lu, 0x0159},
00301 {0x0159, Ll, 0x0158},
00302 {0x015A, Lu, 0x015B},
00303 {0x015B, Ll, 0x015A},
00304 {0x015C, Lu, 0x015D},
00305 {0x015D, Ll, 0x015C},
00306 {0x015E, Lu, 0x015F},
00307 {0x015F, Ll, 0x015E},
00308 {0x0160, Lu, 0x0161},
00309 {0x0161, Ll, 0x0160},
00310 {0x0162, Lu, 0x0163},
00311 {0x0163, Ll, 0x0162},
00312 {0x0164, Lu, 0x0165},
00313 {0x0165, Ll, 0x0164},
00314 {0x0166, Lu, 0x0167},
00315 {0x0167, Ll, 0x0166},
00316 {0x0168, Lu, 0x0169},
00317 {0x0169, Ll, 0x0168},
00318 {0x016A, Lu, 0x016B},
00319 {0x016B, Ll, 0x016A},
00320 {0x016C, Lu, 0x016D},
00321 {0x016D, Ll, 0x016C},
00322 {0x016E, Lu, 0x016F},
00323 {0x016F, Ll, 0x016E},
00324 {0x0170, Lu, 0x0171},
00325 {0x0171, Ll, 0x0170},
00326 {0x0172, Lu, 0x0173},
00327 {0x0173, Ll, 0x0172},
00328 {0x0174, Lu, 0x0175},
00329 {0x0175, Ll, 0x0174},
00330 {0x0176, Lu, 0x0177},
00331 {0x0177, Ll, 0x0176},
00332 {0x0178, Lu, 0x00FF},
00333 {0x0179, Lu, 0x017A},
00334 {0x017A, Ll, 0x0179},
00335 {0x017B, Lu, 0x017C},
00336 {0x017C, Ll, 0x017B},
00337 {0x017D, Lu, 0x017E},
00338 {0x017E, Ll, 0x017D},
00339 {0x017F, Ll, 0x0053},
00340 {0x0181, Lu, 0x0253},
00341 {0x0182, Lu, 0x0183},
00342 {0x0183, Ll, 0x0182},
00343 {0x0184, Lu, 0x0185},
00344 {0x0185, Ll, 0x0184},
00345 {0x0186, Lu, 0x0254},
00346 {0x0187, Lu, 0x0188},
00347 {0x0188, Ll, 0x0187},
00348 {0x0189, Lu, 0x0256},
00349 {0x018A, Lu, 0x0257},
00350 {0x018B, Lu, 0x018C},
00351 {0x018C, Ll, 0x018B},
00352 {0x018E, Lu, 0x01DD},
00353 {0x018F, Lu, 0x0259},
00354 {0x0190, Lu, 0x025B},
00355 {0x0191, Lu, 0x0192},
00356 {0x0192, Ll, 0x0191},
00357 {0x0193, Lu, 0x0260},
00358 {0x0194, Lu, 0x0263},
00359 {0x0195, Ll, 0x01F6},
00360 {0x0196, Lu, 0x0269},
00361 {0x0197, Lu, 0x0268},
00362 {0x0198, Lu, 0x0199},
00363 {0x0199, Ll, 0x0198},
00364 {0x019C, Lu, 0x026F},
00365 {0x019D, Lu, 0x0272},
00366 {0x019F, Lu, 0x0275},
00367 {0x01A0, Lu, 0x01A1},
00368 {0x01A1, Ll, 0x01A0},
00369 {0x01A2, Lu, 0x01A3},
00370 {0x01A3, Ll, 0x01A2},
00371 {0x01A4, Lu, 0x01A5},
00372 {0x01A5, Ll, 0x01A4},
00373 {0x01A6, Lu, 0x0280},
00374 {0x01A7, Lu, 0x01A8},
00375 {0x01A8, Ll, 0x01A7},
00376 {0x01A9, Lu, 0x0283},
00377 {0x01AC, Lu, 0x01AD},
00378 {0x01AD, Ll, 0x01AC},
00379 {0x01AE, Lu, 0x0288},
00380 {0x01AF, Lu, 0x01B0},
00381 {0x01B0, Ll, 0x01AF},
00382 {0x01B1, Lu, 0x028A},
00383 {0x01B2, Lu, 0x028B},
00384 {0x01B3, Lu, 0x01B4},
00385 {0x01B4, Ll, 0x01B3},
00386 {0x01B5, Lu, 0x01B6},
00387 {0x01B6, Ll, 0x01B5},
00388 {0x01B7, Lu, 0x0292},
00389 {0x01B8, Lu, 0x01B9},
00390 {0x01B9, Ll, 0x01B8},
00391 {0x01BC, Lu, 0x01BD},
00392 {0x01BD, Ll, 0x01BC},
00393 {0x01BF, Ll, 0x01F7},
00394 {0x01C4, Lu, 0x01C6},
00395 {0x01C6, Ll, 0x01C5},
00396 {0x01C7, Lu, 0x01C9},
00397 {0x01C9, Ll, 0x01C8},
00398 {0x01CA, Lu, 0x01CC},
00399 {0x01CC, Ll, 0x01CB},
00400 {0x01CD, Lu, 0x01CE},
00401 {0x01CE, Ll, 0x01CD},
00402 {0x01CF, Lu, 0x01D0},
00403 {0x01D0, Ll, 0x01CF},
00404 {0x01D1, Lu, 0x01D2},
00405 {0x01D2, Ll, 0x01D1},
00406 {0x01D3, Lu, 0x01D4},
00407 {0x01D4, Ll, 0x01D3},
00408 {0x01D5, Lu, 0x01D6},
00409 {0x01D6, Ll, 0x01D5},
00410 {0x01D7, Lu, 0x01D8},
00411 {0x01D8, Ll, 0x01D7},
00412 {0x01D9, Lu, 0x01DA},
00413 {0x01DA, Ll, 0x01D9},
00414 {0x01DB, Lu, 0x01DC},
00415 {0x01DC, Ll, 0x01DB},
00416 {0x01DD, Ll, 0x018E},
00417 {0x01DE, Lu, 0x01DF},
00418 {0x01DF, Ll, 0x01DE},
00419 {0x01E0, Lu, 0x01E1},
00420 {0x01E1, Ll, 0x01E0},
00421 {0x01E2, Lu, 0x01E3},
00422 {0x01E3, Ll, 0x01E2},
00423 {0x01E4, Lu, 0x01E5},
00424 {0x01E5, Ll, 0x01E4},
00425 {0x01E6, Lu, 0x01E7},
00426 {0x01E7, Ll, 0x01E6},
00427 {0x01E8, Lu, 0x01E9},
00428 {0x01E9, Ll, 0x01E8},
00429 {0x01EA, Lu, 0x01EB},
00430 {0x01EB, Ll, 0x01EA},
00431 {0x01EC, Lu, 0x01ED},
00432 {0x01ED, Ll, 0x01EC},
00433 {0x01EE, Lu, 0x01EF},
00434 {0x01EF, Ll, 0x01EE},
00435 {0x01F1, Lu, 0x01F3},
00436 {0x01F3, Ll, 0x01F2},
00437 {0x01F4, Lu, 0x01F5},
00438 {0x01F5, Ll, 0x01F4},
00439 {0x01F6, Lu, 0x0195},
00440 {0x01F7, Lu, 0x01BF},
00441 {0x01F8, Lu, 0x01F9},
00442 {0x01F9, Ll, 0x01F8},
00443 {0x01FA, Lu, 0x01FB},
00444 {0x01FB, Ll, 0x01FA},
00445 {0x01FC, Lu, 0x01FD},
00446 {0x01FD, Ll, 0x01FC},
00447 {0x01FE, Lu, 0x01FF},
00448 {0x01FF, Ll, 0x01FE},
00449 {0x0200, Lu, 0x0201},
00450 {0x0201, Ll, 0x0200},
00451 {0x0202, Lu, 0x0203},
00452 {0x0203, Ll, 0x0202},
00453 {0x0204, Lu, 0x0205},
00454 {0x0205, Ll, 0x0204},
00455 {0x0206, Lu, 0x0207},
00456 {0x0207, Ll, 0x0206},
00457 {0x0208, Lu, 0x0209},
00458 {0x0209, Ll, 0x0208},
00459 {0x020A, Lu, 0x020B},
00460 {0x020B, Ll, 0x020A},
00461 {0x020C, Lu, 0x020D},
00462 {0x020D, Ll, 0x020C},
00463 {0x020E, Lu, 0x020F},
00464 {0x020F, Ll, 0x020E},
00465 {0x0210, Lu, 0x0211},
00466 {0x0211, Ll, 0x0210},
00467 {0x0212, Lu, 0x0213},
00468 {0x0213, Ll, 0x0212},
00469 {0x0214, Lu, 0x0215},
00470 {0x0215, Ll, 0x0214},
00471 {0x0216, Lu, 0x0217},
00472 {0x0217, Ll, 0x0216},
00473 {0x0218, Lu, 0x0219},
00474 {0x0219, Ll, 0x0218},
00475 {0x021A, Lu, 0x021B},
00476 {0x021B, Ll, 0x021A},
00477 {0x021C, Lu, 0x021D},
00478 {0x021D, Ll, 0x021C},
00479 {0x021E, Lu, 0x021F},
00480 {0x021F, Ll, 0x021E},
00481 {0x0222, Lu, 0x0223},
00482 {0x0223, Ll, 0x0222},
00483 {0x0224, Lu, 0x0225},
00484 {0x0225, Ll, 0x0224},
00485 {0x0226, Lu, 0x0227},
00486 {0x0227, Ll, 0x0226},
00487 {0x0228, Lu, 0x0229},
00488 {0x0229, Ll, 0x0228},
00489 {0x022A, Lu, 0x022B},
00490 {0x022B, Ll, 0x022A},
00491 {0x022C, Lu, 0x022D},
00492 {0x022D, Ll, 0x022C},
00493 {0x022E, Lu, 0x022F},
00494 {0x022F, Ll, 0x022E},
00495 {0x0230, Lu, 0x0231},
00496 {0x0231, Ll, 0x0230},
00497 {0x0232, Lu, 0x0233},
00498 {0x0233, Ll, 0x0232},
00499 {0x0253, Ll, 0x0181},
00500 {0x0254, Ll, 0x0186},
00501 {0x0256, Ll, 0x0189},
00502 {0x0257, Ll, 0x018A},
00503 {0x0259, Ll, 0x018F},
00504 {0x025B, Ll, 0x0190},
00505 {0x0260, Ll, 0x0193},
00506 {0x0263, Ll, 0x0194},
00507 {0x0268, Ll, 0x0197},
00508 {0x0269, Ll, 0x0196},
00509 {0x026F, Ll, 0x019C},
00510 {0x0272, Ll, 0x019D},
00511 {0x0275, Ll, 0x019F},
00512 {0x0280, Ll, 0x01A6},
00513 {0x0283, Ll, 0x01A9},
00514 {0x0288, Ll, 0x01AE},
00515 {0x028A, Ll, 0x01B1},
00516 {0x028B, Ll, 0x01B2},
00517 {0x0292, Ll, 0x01B7},
00518 {0x0386, Lu, 0x03AC},
00519 {0x0388, Lu, 0x03AD},
00520 {0x0389, Lu, 0x03AE},
00521 {0x038A, Lu, 0x03AF},
00522 {0x038C, Lu, 0x03CC},
00523 {0x038E, Lu, 0x03CD},
00524 {0x038F, Lu, 0x03CE},
00525 {0x0391, Lu, 0x03B1},
00526 {0x0392, Lu, 0x03B2},
00527 {0x0393, Lu, 0x03B3},
00528 {0x0394, Lu, 0x03B4},
00529 {0x0395, Lu, 0x03B5},
00530 {0x0396, Lu, 0x03B6},
00531 {0x0397, Lu, 0x03B7},
00532 {0x0398, Lu, 0x03B8},
00533 {0x0399, Lu, 0x03B9},
00534 {0x039A, Lu, 0x03BA},
00535 {0x039B, Lu, 0x03BB},
00536 {0x039C, Lu, 0x03BC},
00537 {0x039D, Lu, 0x03BD},
00538 {0x039E, Lu, 0x03BE},
00539 {0x039F, Lu, 0x03BF},
00540 {0x03A0, Lu, 0x03C0},
00541 {0x03A1, Lu, 0x03C1},
00542 {0x03A3, Lu, 0x03C3},
00543 {0x03A4, Lu, 0x03C4},
00544 {0x03A5, Lu, 0x03C5},
00545 {0x03A6, Lu, 0x03C6},
00546 {0x03A7, Lu, 0x03C7},
00547 {0x03A8, Lu, 0x03C8},
00548 {0x03A9, Lu, 0x03C9},
00549 {0x03AA, Lu, 0x03CA},
00550 {0x03AB, Lu, 0x03CB},
00551 {0x03AC, Ll, 0x0386},
00552 {0x03AD, Ll, 0x0388},
00553 {0x03AE, Ll, 0x0389},
00554 {0x03AF, Ll, 0x038A},
00555 {0x03B1, Ll, 0x0391},
00556 {0x03B2, Ll, 0x0392},
00557 {0x03B3, Ll, 0x0393},
00558 {0x03B4, Ll, 0x0394},
00559 {0x03B5, Ll, 0x0395},
00560 {0x03B6, Ll, 0x0396},
00561 {0x03B7, Ll, 0x0397},
00562 {0x03B8, Ll, 0x0398},
00563 {0x03B9, Ll, 0x0399},
00564 {0x03BA, Ll, 0x039A},
00565 {0x03BB, Ll, 0x039B},
00566 {0x03BC, Ll, 0x039C},
00567 {0x03BD, Ll, 0x039D},
00568 {0x03BE, Ll, 0x039E},
00569 {0x03BF, Ll, 0x039F},
00570 {0x03C0, Ll, 0x03A0},
00571 {0x03C1, Ll, 0x03A1},
00572 {0x03C2, Ll, 0x03A3},
00573 {0x03C3, Ll, 0x03A3},
00574 {0x03C4, Ll, 0x03A4},
00575 {0x03C5, Ll, 0x03A5},
00576 {0x03C6, Ll, 0x03A6},
00577 {0x03C7, Ll, 0x03A7},
00578 {0x03C8, Ll, 0x03A8},
00579 {0x03C9, Ll, 0x03A9},
00580 {0x03CA, Ll, 0x03AA},
00581 {0x03CB, Ll, 0x03AB},
00582 {0x03CC, Ll, 0x038C},
00583 {0x03CD, Ll, 0x038E},
00584 {0x03CE, Ll, 0x038F},
00585 {0x03D0, Ll, 0x0392},
00586 {0x03D1, Ll, 0x0398},
00587 {0x03D5, Ll, 0x03A6},
00588 {0x03D6, Ll, 0x03A0},
00589 {0x03DA, Lu, 0x03DB},
00590 {0x03DB, Ll, 0x03DA},
00591 {0x03DC, Lu, 0x03DD},
00592 {0x03DD, Ll, 0x03DC},
00593 {0x03DE, Lu, 0x03DF},
00594 {0x03DF, Ll, 0x03DE},
00595 {0x03E0, Lu, 0x03E1},
00596 {0x03E1, Ll, 0x03E0},
00597 {0x03E2, Lu, 0x03E3},
00598 {0x03E3, Ll, 0x03E2},
00599 {0x03E4, Lu, 0x03E5},
00600 {0x03E5, Ll, 0x03E4},
00601 {0x03E6, Lu, 0x03E7},
00602 {0x03E7, Ll, 0x03E6},
00603 {0x03E8, Lu, 0x03E9},
00604 {0x03E9, Ll, 0x03E8},
00605 {0x03EA, Lu, 0x03EB},
00606 {0x03EB, Ll, 0x03EA},
00607 {0x03EC, Lu, 0x03ED},
00608 {0x03ED, Ll, 0x03EC},
00609 {0x03EE, Lu, 0x03EF},
00610 {0x03EF, Ll, 0x03EE},
00611 {0x03F0, Ll, 0x039A},
00612 {0x03F1, Ll, 0x03A1},
00613 {0x03F2, Ll, 0x03A3},
00614 {0x03F4, Lu, 0x03B8},
00615 {0x03F5, Ll, 0x0395},
00616 {0x0400, Lu, 0x0450},
00617 {0x0401, Lu, 0x0451},
00618 {0x0402, Lu, 0x0452},
00619 {0x0403, Lu, 0x0453},
00620 {0x0404, Lu, 0x0454},
00621 {0x0405, Lu, 0x0455},
00622 {0x0406, Lu, 0x0456},
00623 {0x0407, Lu, 0x0457},
00624 {0x0408, Lu, 0x0458},
00625 {0x0409, Lu, 0x0459},
00626 {0x040A, Lu, 0x045A},
00627 {0x040B, Lu, 0x045B},
00628 {0x040C, Lu, 0x045C},
00629 {0x040D, Lu, 0x045D},
00630 {0x040E, Lu, 0x045E},
00631 {0x040F, Lu, 0x045F},
00632 {0x0410, Lu, 0x0430},
00633 {0x0411, Lu, 0x0431},
00634 {0x0412, Lu, 0x0432},
00635 {0x0413, Lu, 0x0433},
00636 {0x0414, Lu, 0x0434},
00637 {0x0415, Lu, 0x0435},
00638 {0x0416, Lu, 0x0436},
00639 {0x0417, Lu, 0x0437},
00640 {0x0418, Lu, 0x0438},
00641 {0x0419, Lu, 0x0439},
00642 {0x041A, Lu, 0x043A},
00643 {0x041B, Lu, 0x043B},
00644 {0x041C, Lu, 0x043C},
00645 {0x041D, Lu, 0x043D},
00646 {0x041E, Lu, 0x043E},
00647 {0x041F, Lu, 0x043F},
00648 {0x0420, Lu, 0x0440},
00649 {0x0421, Lu, 0x0441},
00650 {0x0422, Lu, 0x0442},
00651 {0x0423, Lu, 0x0443},
00652 {0x0424, Lu, 0x0444},
00653 {0x0425, Lu, 0x0445},
00654 {0x0426, Lu, 0x0446},
00655 {0x0427, Lu, 0x0447},
00656 {0x0428, Lu, 0x0448},
00657 {0x0429, Lu, 0x0449},
00658 {0x042A, Lu, 0x044A},
00659 {0x042B, Lu, 0x044B},
00660 {0x042C, Lu, 0x044C},
00661 {0x042D, Lu, 0x044D},
00662 {0x042E, Lu, 0x044E},
00663 {0x042F, Lu, 0x044F},
00664 {0x0430, Ll, 0x0410},
00665 {0x0431, Ll, 0x0411},
00666 {0x0432, Ll, 0x0412},
00667 {0x0433, Ll, 0x0413},
00668 {0x0434, Ll, 0x0414},
00669 {0x0435, Ll, 0x0415},
00670 {0x0436, Ll, 0x0416},
00671 {0x0437, Ll, 0x0417},
00672 {0x0438, Ll, 0x0418},
00673 {0x0439, Ll, 0x0419},
00674 {0x043A, Ll, 0x041A},
00675 {0x043B, Ll, 0x041B},
00676 {0x043C, Ll, 0x041C},
00677 {0x043D, Ll, 0x041D},
00678 {0x043E, Ll, 0x041E},
00679 {0x043F, Ll, 0x041F},
00680 {0x0440, Ll, 0x0420},
00681 {0x0441, Ll, 0x0421},
00682 {0x0442, Ll, 0x0422},
00683 {0x0443, Ll, 0x0423},
00684 {0x0444, Ll, 0x0424},
00685 {0x0445, Ll, 0x0425},
00686 {0x0446, Ll, 0x0426},
00687 {0x0447, Ll, 0x0427},
00688 {0x0448, Ll, 0x0428},
00689 {0x0449, Ll, 0x0429},
00690 {0x044A, Ll, 0x042A},
00691 {0x044B, Ll, 0x042B},
00692 {0x044C, Ll, 0x042C},
00693 {0x044D, Ll, 0x042D},
00694 {0x044E, Ll, 0x042E},
00695 {0x044F, Ll, 0x042F},
00696 {0x0450, Ll, 0x0400},
00697 {0x0451, Ll, 0x0401},
00698 {0x0452, Ll, 0x0402},
00699 {0x0453, Ll, 0x0403},
00700 {0x0454, Ll, 0x0404},
00701 {0x0455, Ll, 0x0405},
00702 {0x0456, Ll, 0x0406},
00703 {0x0457, Ll, 0x0407},
00704 {0x0458, Ll, 0x0408},
00705 {0x0459, Ll, 0x0409},
00706 {0x045A, Ll, 0x040A},
00707 {0x045B, Ll, 0x040B},
00708 {0x045C, Ll, 0x040C},
00709 {0x045D, Ll, 0x040D},
00710 {0x045E, Ll, 0x040E},
00711 {0x045F, Ll, 0x040F},
00712 {0x0460, Lu, 0x0461},
00713 {0x0461, Ll, 0x0460},
00714 {0x0462, Lu, 0x0463},
00715 {0x0463, Ll, 0x0462},
00716 {0x0464, Lu, 0x0465},
00717 {0x0465, Ll, 0x0464},
00718 {0x0466, Lu, 0x0467},
00719 {0x0467, Ll, 0x0466},
00720 {0x0468, Lu, 0x0469},
00721 {0x0469, Ll, 0x0468},
00722 {0x046A, Lu, 0x046B},
00723 {0x046B, Ll, 0x046A},
00724 {0x046C, Lu, 0x046D},
00725 {0x046D, Ll, 0x046C},
00726 {0x046E, Lu, 0x046F},
00727 {0x046F, Ll, 0x046E},
00728 {0x0470, Lu, 0x0471},
00729 {0x0471, Ll, 0x0470},
00730 {0x0472, Lu, 0x0473},
00731 {0x0473, Ll, 0x0472},
00732 {0x0474, Lu, 0x0475},
00733 {0x0475, Ll, 0x0474},
00734 {0x0476, Lu, 0x0477},
00735 {0x0477, Ll, 0x0476},
00736 {0x0478, Lu, 0x0479},
00737 {0x0479, Ll, 0x0478},
00738 {0x047A, Lu, 0x047B},
00739 {0x047B, Ll, 0x047A},
00740 {0x047C, Lu, 0x047D},
00741 {0x047D, Ll, 0x047C},
00742 {0x047E, Lu, 0x047F},
00743 {0x047F, Ll, 0x047E},
00744 {0x0480, Lu, 0x0481},
00745 {0x0481, Ll, 0x0480},
00746 {0x048C, Lu, 0x048D},
00747 {0x048D, Ll, 0x048C},
00748 {0x048E, Lu, 0x048F},
00749 {0x048F, Ll, 0x048E},
00750 {0x0490, Lu, 0x0491},
00751 {0x0491, Ll, 0x0490},
00752 {0x0492, Lu, 0x0493},
00753 {0x0493, Ll, 0x0492},
00754 {0x0494, Lu, 0x0495},
00755 {0x0495, Ll, 0x0494},
00756 {0x0496, Lu, 0x0497},
00757 {0x0497, Ll, 0x0496},
00758 {0x0498, Lu, 0x0499},
00759 {0x0499, Ll, 0x0498},
00760 {0x049A, Lu, 0x049B},
00761 {0x049B, Ll, 0x049A},
00762 {0x049C, Lu, 0x049D},
00763 {0x049D, Ll, 0x049C},
00764 {0x049E, Lu, 0x049F},
00765 {0x049F, Ll, 0x049E},
00766 {0x04A0, Lu, 0x04A1},
00767 {0x04A1, Ll, 0x04A0},
00768 {0x04A2, Lu, 0x04A3},
00769 {0x04A3, Ll, 0x04A2},
00770 {0x04A4, Lu, 0x04A5},
00771 {0x04A5, Ll, 0x04A4},
00772 {0x04A6, Lu, 0x04A7},
00773 {0x04A7, Ll, 0x04A6},
00774 {0x04A8, Lu, 0x04A9},
00775 {0x04A9, Ll, 0x04A8},
00776 {0x04AA, Lu, 0x04AB},
00777 {0x04AB, Ll, 0x04AA},
00778 {0x04AC, Lu, 0x04AD},
00779 {0x04AD, Ll, 0x04AC},
00780 {0x04AE, Lu, 0x04AF},
00781 {0x04AF, Ll, 0x04AE},
00782 {0x04B0, Lu, 0x04B1},
00783 {0x04B1, Ll, 0x04B0},
00784 {0x04B2, Lu, 0x04B3},
00785 {0x04B3, Ll, 0x04B2},
00786 {0x04B4, Lu, 0x04B5},
00787 {0x04B5, Ll, 0x04B4},
00788 {0x04B6, Lu, 0x04B7},
00789 {0x04B7, Ll, 0x04B6},
00790 {0x04B8, Lu, 0x04B9},
00791 {0x04B9, Ll, 0x04B8},
00792 {0x04BA, Lu, 0x04BB},
00793 {0x04BB, Ll, 0x04BA},
00794 {0x04BC, Lu, 0x04BD},
00795 {0x04BD, Ll, 0x04BC},
00796 {0x04BE, Lu, 0x04BF},
00797 {0x04BF, Ll, 0x04BE},
00798 {0x04C1, Lu, 0x04C2},
00799 {0x04C2, Ll, 0x04C1},
00800 {0x04C3, Lu, 0x04C4},
00801 {0x04C4, Ll, 0x04C3},
00802 {0x04C7, Lu, 0x04C8},
00803 {0x04C8, Ll, 0x04C7},
00804 {0x04CB, Lu, 0x04CC},
00805 {0x04CC, Ll, 0x04CB},
00806 {0x04D0, Lu, 0x04D1},
00807 {0x04D1, Ll, 0x04D0},
00808 {0x04D2, Lu, 0x04D3},
00809 {0x04D3, Ll, 0x04D2},
00810 {0x04D4, Lu, 0x04D5},
00811 {0x04D5, Ll, 0x04D4},
00812 {0x04D6, Lu, 0x04D7},
00813 {0x04D7, Ll, 0x04D6},
00814 {0x04D8, Lu, 0x04D9},
00815 {0x04D9, Ll, 0x04D8},
00816 {0x04DA, Lu, 0x04DB},
00817 {0x04DB, Ll, 0x04DA},
00818 {0x04DC, Lu, 0x04DD},
00819 {0x04DD, Ll, 0x04DC},
00820 {0x04DE, Lu, 0x04DF},
00821 {0x04DF, Ll, 0x04DE},
00822 {0x04E0, Lu, 0x04E1},
00823 {0x04E1, Ll, 0x04E0},
00824 {0x04E2, Lu, 0x04E3},
00825 {0x04E3, Ll, 0x04E2},
00826 {0x04E4, Lu, 0x04E5},
00827 {0x04E5, Ll, 0x04E4},
00828 {0x04E6, Lu, 0x04E7},
00829 {0x04E7, Ll, 0x04E6},
00830 {0x04E8, Lu, 0x04E9},
00831 {0x04E9, Ll, 0x04E8},
00832 {0x04EA, Lu, 0x04EB},
00833 {0x04EB, Ll, 0x04EA},
00834 {0x04EC, Lu, 0x04ED},
00835 {0x04ED, Ll, 0x04EC},
00836 {0x04EE, Lu, 0x04EF},
00837 {0x04EF, Ll, 0x04EE},
00838 {0x04F0, Lu, 0x04F1},
00839 {0x04F1, Ll, 0x04F0},
00840 {0x04F2, Lu, 0x04F3},
00841 {0x04F3, Ll, 0x04F2},
00842 {0x04F4, Lu, 0x04F5},
00843 {0x04F5, Ll, 0x04F4},
00844 {0x04F8, Lu, 0x04F9},
00845 {0x04F9, Ll, 0x04F8},
00846 {0x0531, Lu, 0x0561},
00847 {0x0532, Lu, 0x0562},
00848 {0x0533, Lu, 0x0563},
00849 {0x0534, Lu, 0x0564},
00850 {0x0535, Lu, 0x0565},
00851 {0x0536, Lu, 0x0566},
00852 {0x0537, Lu, 0x0567},
00853 {0x0538, Lu, 0x0568},
00854 {0x0539, Lu, 0x0569},
00855 {0x053A, Lu, 0x056A},
00856 {0x053B, Lu, 0x056B},
00857 {0x053C, Lu, 0x056C},
00858 {0x053D, Lu, 0x056D},
00859 {0x053E, Lu, 0x056E},
00860 {0x053F, Lu, 0x056F},
00861 {0x0540, Lu, 0x0570},
00862 {0x0541, Lu, 0x0571},
00863 {0x0542, Lu, 0x0572},
00864 {0x0543, Lu, 0x0573},
00865 {0x0544, Lu, 0x0574},
00866 {0x0545, Lu, 0x0575},
00867 {0x0546, Lu, 0x0576},
00868 {0x0547, Lu, 0x0577},
00869 {0x0548, Lu, 0x0578},
00870 {0x0549, Lu, 0x0579},
00871 {0x054A, Lu, 0x057A},
00872 {0x054B, Lu, 0x057B},
00873 {0x054C, Lu, 0x057C},
00874 {0x054D, Lu, 0x057D},
00875 {0x054E, Lu, 0x057E},
00876 {0x054F, Lu, 0x057F},
00877 {0x0550, Lu, 0x0580},
00878 {0x0551, Lu, 0x0581},
00879 {0x0552, Lu, 0x0582},
00880 {0x0553, Lu, 0x0583},
00881 {0x0554, Lu, 0x0584},
00882 {0x0555, Lu, 0x0585},
00883 {0x0556, Lu, 0x0586},
00884 {0x0561, Ll, 0x0531},
00885 {0x0562, Ll, 0x0532},
00886 {0x0563, Ll, 0x0533},
00887 {0x0564, Ll, 0x0534},
00888 {0x0565, Ll, 0x0535},
00889 {0x0566, Ll, 0x0536},
00890 {0x0567, Ll, 0x0537},
00891 {0x0568, Ll, 0x0538},
00892 {0x0569, Ll, 0x0539},
00893 {0x056A, Ll, 0x053A},
00894 {0x056B, Ll, 0x053B},
00895 {0x056C, Ll, 0x053C},
00896 {0x056D, Ll, 0x053D},
00897 {0x056E, Ll, 0x053E},
00898 {0x056F, Ll, 0x053F},
00899 {0x0570, Ll, 0x0540},
00900 {0x0571, Ll, 0x0541},
00901 {0x0572, Ll, 0x0542},
00902 {0x0573, Ll, 0x0543},
00903 {0x0574, Ll, 0x0544},
00904 {0x0575, Ll, 0x0545},
00905 {0x0576, Ll, 0x0546},
00906 {0x0577, Ll, 0x0547},
00907 {0x0578, Ll, 0x0548},
00908 {0x0579, Ll, 0x0549},
00909 {0x057A, Ll, 0x054A},
00910 {0x057B, Ll, 0x054B},
00911 {0x057C, Ll, 0x054C},
00912 {0x057D, Ll, 0x054D},
00913 {0x057E, Ll, 0x054E},
00914 {0x057F, Ll, 0x054F},
00915 {0x0580, Ll, 0x0550},
00916 {0x0581, Ll, 0x0551},
00917 {0x0582, Ll, 0x0552},
00918 {0x0583, Ll, 0x0553},
00919 {0x0584, Ll, 0x0554},
00920 {0x0585, Ll, 0x0555},
00921 {0x0586, Ll, 0x0556},
00922
00923
00924
00925 {0x2C80, Lu, 0x2C81},
00926 {0x2C81, Ll, 0x2C80},
00927 {0x2C82, Lu, 0x2C83},
00928 {0x2C83, Ll, 0x2C82},
00929 {0x2C84, Lu, 0x2C85},
00930 {0x2C85, Ll, 0x2C84},
00931 {0x2C86, Lu, 0x2C87},
00932 {0x2C87, Ll, 0x2C86},
00933 {0x2C88, Lu, 0x2C89},
00934 {0x2C89, Ll, 0x2C88},
00935 {0x2C8A, Lu, 0x2C8B},
00936 {0x2C8B, Ll, 0x2C8A},
00937 {0x2C8C, Lu, 0x2C8D},
00938 {0x2C8D, Ll, 0x2C8C},
00939 {0x2C8E, Lu, 0x2C8F},
00940 {0x2C8F, Ll, 0x2C8E},
00941 {0x2C90, Lu, 0x2C91},
00942 {0x2C91, Ll, 0x2C90},
00943 {0x2C92, Lu, 0x2C93},
00944 {0x2C93, Ll, 0x2C92},
00945 {0x2C94, Lu, 0x2C95},
00946 {0x2C95, Ll, 0x2C94},
00947 {0x2C96, Lu, 0x2C97},
00948 {0x2C97, Ll, 0x2C96},
00949 {0x2C98, Lu, 0x2C99},
00950 {0x2C99, Ll, 0x2C98},
00951 {0x2C9A, Lu, 0x2C9B},
00952 {0x2C9B, Ll, 0x2C9A},
00953 {0x2C9C, Lu, 0x2C9D},
00954 {0x2C9D, Ll, 0x2C9C},
00955 {0x2C9E, Lu, 0x2C9F},
00956 {0x2C9F, Ll, 0x2C9E},
00957 {0x2CA0, Lu, 0x2CA1},
00958 {0x2CA1, Ll, 0x2CA0},
00959 {0x2CA2, Lu, 0x2CA3},
00960 {0x2CA3, Ll, 0x2CA2},
00961 {0x2CA4, Lu, 0x2CA5},
00962 {0x2CA5, Ll, 0x2CA4},
00963 {0x2CA6, Lu, 0x2CA7},
00964 {0x2CA7, Ll, 0x2CA6},
00965 {0x2CA8, Lu, 0x2CA9},
00966 {0x2CA9, Ll, 0x2CA8},
00967 {0x2CAA, Lu, 0x2CAB},
00968 {0x2CAB, Ll, 0x2CAA},
00969 {0x2CAC, Lu, 0x2CAD},
00970 {0x2CAD, Ll, 0x2CAC},
00971 {0x2CAE, Lu, 0x2CAF},
00972 {0x2CAF, Ll, 0x2CAE},
00973 {0x2CB0, Lu, 0x2CB1},
00974 {0x2CB1, Ll, 0x2CB0},
00975
00976
00977 {0x1E00, Lu, 0x1E01},
00978 {0x1E01, Ll, 0x1E00},
00979 {0x1E02, Lu, 0x1E03},
00980 {0x1E03, Ll, 0x1E02},
00981 {0x1E04, Lu, 0x1E05},
00982 {0x1E05, Ll, 0x1E04},
00983 {0x1E06, Lu, 0x1E07},
00984 {0x1E07, Ll, 0x1E06},
00985 {0x1E08, Lu, 0x1E09},
00986 {0x1E09, Ll, 0x1E08},
00987 {0x1E0A, Lu, 0x1E0B},
00988 {0x1E0B, Ll, 0x1E0A},
00989 {0x1E0C, Lu, 0x1E0D},
00990 {0x1E0D, Ll, 0x1E0C},
00991 {0x1E0E, Lu, 0x1E0F},
00992 {0x1E0F, Ll, 0x1E0E},
00993 {0x1E10, Lu, 0x1E11},
00994 {0x1E11, Ll, 0x1E10},
00995 {0x1E12, Lu, 0x1E13},
00996 {0x1E13, Ll, 0x1E12},
00997 {0x1E14, Lu, 0x1E15},
00998 {0x1E15, Ll, 0x1E14},
00999 {0x1E16, Lu, 0x1E17},
01000 {0x1E17, Ll, 0x1E16},
01001 {0x1E18, Lu, 0x1E19},
01002 {0x1E19, Ll, 0x1E18},
01003 {0x1E1A, Lu, 0x1E1B},
01004 {0x1E1B, Ll, 0x1E1A},
01005 {0x1E1C, Lu, 0x1E1D},
01006 {0x1E1D, Ll, 0x1E1C},
01007 {0x1E1E, Lu, 0x1E1F},
01008 {0x1E1F, Ll, 0x1E1E},
01009 {0x1E20, Lu, 0x1E21},
01010 {0x1E21, Ll, 0x1E20},
01011 {0x1E22, Lu, 0x1E23},
01012 {0x1E23, Ll, 0x1E22},
01013 {0x1E24, Lu, 0x1E25},
01014 {0x1E25, Ll, 0x1E24},
01015 {0x1E26, Lu, 0x1E27},
01016 {0x1E27, Ll, 0x1E26},
01017 {0x1E28, Lu, 0x1E29},
01018 {0x1E29, Ll, 0x1E28},
01019 {0x1E2A, Lu, 0x1E2B},
01020 {0x1E2B, Ll, 0x1E2A},
01021 {0x1E2C, Lu, 0x1E2D},
01022 {0x1E2D, Ll, 0x1E2C},
01023 {0x1E2E, Lu, 0x1E2F},
01024 {0x1E2F, Ll, 0x1E2E},
01025 {0x1E30, Lu, 0x1E31},
01026 {0x1E31, Ll, 0x1E30},
01027 {0x1E32, Lu, 0x1E33},
01028 {0x1E33, Ll, 0x1E32},
01029 {0x1E34, Lu, 0x1E35},
01030 {0x1E35, Ll, 0x1E34},
01031 {0x1E36, Lu, 0x1E37},
01032 {0x1E37, Ll, 0x1E36},
01033 {0x1E38, Lu, 0x1E39},
01034 {0x1E39, Ll, 0x1E38},
01035 {0x1E3A, Lu, 0x1E3B},
01036 {0x1E3B, Ll, 0x1E3A},
01037 {0x1E3C, Lu, 0x1E3D},
01038 {0x1E3D, Ll, 0x1E3C},
01039 {0x1E3E, Lu, 0x1E3F},
01040 {0x1E3F, Ll, 0x1E3E},
01041 {0x1E40, Lu, 0x1E41},
01042 {0x1E41, Ll, 0x1E40},
01043 {0x1E42, Lu, 0x1E43},
01044 {0x1E43, Ll, 0x1E42},
01045 {0x1E44, Lu, 0x1E45},
01046 {0x1E45, Ll, 0x1E44},
01047 {0x1E46, Lu, 0x1E47},
01048 {0x1E47, Ll, 0x1E46},
01049 {0x1E48, Lu, 0x1E49},
01050 {0x1E49, Ll, 0x1E48},
01051 {0x1E4A, Lu, 0x1E4B},
01052 {0x1E4B, Ll, 0x1E4A},
01053 {0x1E4C, Lu, 0x1E4D},
01054 {0x1E4D, Ll, 0x1E4C},
01055 {0x1E4E, Lu, 0x1E4F},
01056 {0x1E4F, Ll, 0x1E4E},
01057 {0x1E50, Lu, 0x1E51},
01058 {0x1E51, Ll, 0x1E50},
01059 {0x1E52, Lu, 0x1E53},
01060 {0x1E53, Ll, 0x1E52},
01061 {0x1E54, Lu, 0x1E55},
01062 {0x1E55, Ll, 0x1E54},
01063 {0x1E56, Lu, 0x1E57},
01064 {0x1E57, Ll, 0x1E56},
01065 {0x1E58, Lu, 0x1E59},
01066 {0x1E59, Ll, 0x1E58},
01067 {0x1E5A, Lu, 0x1E5B},
01068 {0x1E5B, Ll, 0x1E5A},
01069 {0x1E5C, Lu, 0x1E5D},
01070 {0x1E5D, Ll, 0x1E5C},
01071 {0x1E5E, Lu, 0x1E5F},
01072 {0x1E5F, Ll, 0x1E5E},
01073 {0x1E60, Lu, 0x1E61},
01074 {0x1E61, Ll, 0x1E60},
01075 {0x1E62, Lu, 0x1E63},
01076 {0x1E63, Ll, 0x1E62},
01077 {0x1E64, Lu, 0x1E65},
01078 {0x1E65, Ll, 0x1E64},
01079 {0x1E66, Lu, 0x1E67},
01080 {0x1E67, Ll, 0x1E66},
01081 {0x1E68, Lu, 0x1E69},
01082 {0x1E69, Ll, 0x1E68},
01083 {0x1E6A, Lu, 0x1E6B},
01084 {0x1E6B, Ll, 0x1E6A},
01085 {0x1E6C, Lu, 0x1E6D},
01086 {0x1E6D, Ll, 0x1E6C},
01087 {0x1E6E, Lu, 0x1E6F},
01088 {0x1E6F, Ll, 0x1E6E},
01089 {0x1E70, Lu, 0x1E71},
01090 {0x1E71, Ll, 0x1E70},
01091 {0x1E72, Lu, 0x1E73},
01092 {0x1E73, Ll, 0x1E72},
01093 {0x1E74, Lu, 0x1E75},
01094 {0x1E75, Ll, 0x1E74},
01095 {0x1E76, Lu, 0x1E77},
01096 {0x1E77, Ll, 0x1E76},
01097 {0x1E78, Lu, 0x1E79},
01098 {0x1E79, Ll, 0x1E78},
01099 {0x1E7A, Lu, 0x1E7B},
01100 {0x1E7B, Ll, 0x1E7A},
01101 {0x1E7C, Lu, 0x1E7D},
01102 {0x1E7D, Ll, 0x1E7C},
01103 {0x1E7E, Lu, 0x1E7F},
01104 {0x1E7F, Ll, 0x1E7E},
01105 {0x1E80, Lu, 0x1E81},
01106 {0x1E81, Ll, 0x1E80},
01107 {0x1E82, Lu, 0x1E83},
01108 {0x1E83, Ll, 0x1E82},
01109 {0x1E84, Lu, 0x1E85},
01110 {0x1E85, Ll, 0x1E84},
01111 {0x1E86, Lu, 0x1E87},
01112 {0x1E87, Ll, 0x1E86},
01113 {0x1E88, Lu, 0x1E89},
01114 {0x1E89, Ll, 0x1E88},
01115 {0x1E8A, Lu, 0x1E8B},
01116 {0x1E8B, Ll, 0x1E8A},
01117 {0x1E8C, Lu, 0x1E8D},
01118 {0x1E8D, Ll, 0x1E8C},
01119 {0x1E8E, Lu, 0x1E8F},
01120 {0x1E8F, Ll, 0x1E8E},
01121 {0x1E90, Lu, 0x1E91},
01122 {0x1E91, Ll, 0x1E90},
01123 {0x1E92, Lu, 0x1E93},
01124 {0x1E93, Ll, 0x1E92},
01125 {0x1E94, Lu, 0x1E95},
01126 {0x1E95, Ll, 0x1E94},
01127 {0x1E9B, Ll, 0x1E60},
01128 {0x1EA0, Lu, 0x1EA1},
01129 {0x1EA1, Ll, 0x1EA0},
01130 {0x1EA2, Lu, 0x1EA3},
01131 {0x1EA3, Ll, 0x1EA2},
01132 {0x1EA4, Lu, 0x1EA5},
01133 {0x1EA5, Ll, 0x1EA4},
01134 {0x1EA6, Lu, 0x1EA7},
01135 {0x1EA7, Ll, 0x1EA6},
01136 {0x1EA8, Lu, 0x1EA9},
01137 {0x1EA9, Ll, 0x1EA8},
01138 {0x1EAA, Lu, 0x1EAB},
01139 {0x1EAB, Ll, 0x1EAA},
01140 {0x1EAC, Lu, 0x1EAD},
01141 {0x1EAD, Ll, 0x1EAC},
01142 {0x1EAE, Lu, 0x1EAF},
01143 {0x1EAF, Ll, 0x1EAE},
01144 {0x1EB0, Lu, 0x1EB1},
01145 {0x1EB1, Ll, 0x1EB0},
01146 {0x1EB2, Lu, 0x1EB3},
01147 {0x1EB3, Ll, 0x1EB2},
01148 {0x1EB4, Lu, 0x1EB5},
01149 {0x1EB5, Ll, 0x1EB4},
01150 {0x1EB6, Lu, 0x1EB7},
01151 {0x1EB7, Ll, 0x1EB6},
01152 {0x1EB8, Lu, 0x1EB9},
01153 {0x1EB9, Ll, 0x1EB8},
01154 {0x1EBA, Lu, 0x1EBB},
01155 {0x1EBB, Ll, 0x1EBA},
01156 {0x1EBC, Lu, 0x1EBD},
01157 {0x1EBD, Ll, 0x1EBC},
01158 {0x1EBE, Lu, 0x1EBF},
01159 {0x1EBF, Ll, 0x1EBE},
01160 {0x1EC0, Lu, 0x1EC1},
01161 {0x1EC1, Ll, 0x1EC0},
01162 {0x1EC2, Lu, 0x1EC3},
01163 {0x1EC3, Ll, 0x1EC2},
01164 {0x1EC4, Lu, 0x1EC5},
01165 {0x1EC5, Ll, 0x1EC4},
01166 {0x1EC6, Lu, 0x1EC7},
01167 {0x1EC7, Ll, 0x1EC6},
01168 {0x1EC8, Lu, 0x1EC9},
01169 {0x1EC9, Ll, 0x1EC8},
01170 {0x1ECA, Lu, 0x1ECB},
01171 {0x1ECB, Ll, 0x1ECA},
01172 {0x1ECC, Lu, 0x1ECD},
01173 {0x1ECD, Ll, 0x1ECC},
01174 {0x1ECE, Lu, 0x1ECF},
01175 {0x1ECF, Ll, 0x1ECE},
01176 {0x1ED0, Lu, 0x1ED1},
01177 {0x1ED1, Ll, 0x1ED0},
01178 {0x1ED2, Lu, 0x1ED3},
01179 {0x1ED3, Ll, 0x1ED2},
01180 {0x1ED4, Lu, 0x1ED5},
01181 {0x1ED5, Ll, 0x1ED4},
01182 {0x1ED6, Lu, 0x1ED7},
01183 {0x1ED7, Ll, 0x1ED6},
01184 {0x1ED8, Lu, 0x1ED9},
01185 {0x1ED9, Ll, 0x1ED8},
01186 {0x1EDA, Lu, 0x1EDB},
01187 {0x1EDB, Ll, 0x1EDA},
01188 {0x1EDC, Lu, 0x1EDD},
01189 {0x1EDD, Ll, 0x1EDC},
01190 {0x1EDE, Lu, 0x1EDF},
01191 {0x1EDF, Ll, 0x1EDE},
01192 {0x1EE0, Lu, 0x1EE1},
01193 {0x1EE1, Ll, 0x1EE0},
01194 {0x1EE2, Lu, 0x1EE3},
01195 {0x1EE3, Ll, 0x1EE2},
01196 {0x1EE4, Lu, 0x1EE5},
01197 {0x1EE5, Ll, 0x1EE4},
01198 {0x1EE6, Lu, 0x1EE7},
01199 {0x1EE7, Ll, 0x1EE6},
01200 {0x1EE8, Lu, 0x1EE9},
01201 {0x1EE9, Ll, 0x1EE8},
01202 {0x1EEA, Lu, 0x1EEB},
01203 {0x1EEB, Ll, 0x1EEA},
01204 {0x1EEC, Lu, 0x1EED},
01205 {0x1EED, Ll, 0x1EEC},
01206 {0x1EEE, Lu, 0x1EEF},
01207 {0x1EEF, Ll, 0x1EEE},
01208 {0x1EF0, Lu, 0x1EF1},
01209 {0x1EF1, Ll, 0x1EF0},
01210 {0x1EF2, Lu, 0x1EF3},
01211 {0x1EF3, Ll, 0x1EF2},
01212 {0x1EF4, Lu, 0x1EF5},
01213 {0x1EF5, Ll, 0x1EF4},
01214 {0x1EF6, Lu, 0x1EF7},
01215 {0x1EF7, Ll, 0x1EF6},
01216 {0x1EF8, Lu, 0x1EF9},
01217 {0x1EF9, Ll, 0x1EF8},
01218 {0x1F00, Ll, 0x1F08},
01219 {0x1F01, Ll, 0x1F09},
01220 {0x1F02, Ll, 0x1F0A},
01221 {0x1F03, Ll, 0x1F0B},
01222 {0x1F04, Ll, 0x1F0C},
01223 {0x1F05, Ll, 0x1F0D},
01224 {0x1F06, Ll, 0x1F0E},
01225 {0x1F07, Ll, 0x1F0F},
01226 {0x1F08, Lu, 0x1F00},
01227 {0x1F09, Lu, 0x1F01},
01228 {0x1F0A, Lu, 0x1F02},
01229 {0x1F0B, Lu, 0x1F03},
01230 {0x1F0C, Lu, 0x1F04},
01231 {0x1F0D, Lu, 0x1F05},
01232 {0x1F0E, Lu, 0x1F06},
01233 {0x1F0F, Lu, 0x1F07},
01234 {0x1F10, Ll, 0x1F18},
01235 {0x1F11, Ll, 0x1F19},
01236 {0x1F12, Ll, 0x1F1A},
01237 {0x1F13, Ll, 0x1F1B},
01238 {0x1F14, Ll, 0x1F1C},
01239 {0x1F15, Ll, 0x1F1D},
01240 {0x1F18, Lu, 0x1F10},
01241 {0x1F19, Lu, 0x1F11},
01242 {0x1F1A, Lu, 0x1F12},
01243 {0x1F1B, Lu, 0x1F13},
01244 {0x1F1C, Lu, 0x1F14},
01245 {0x1F1D, Lu, 0x1F15},
01246 {0x1F20, Ll, 0x1F28},
01247 {0x1F21, Ll, 0x1F29},
01248 {0x1F22, Ll, 0x1F2A},
01249 {0x1F23, Ll, 0x1F2B},
01250 {0x1F24, Ll, 0x1F2C},
01251 {0x1F25, Ll, 0x1F2D},
01252 {0x1F26, Ll, 0x1F2E},
01253 {0x1F27, Ll, 0x1F2F},
01254 {0x1F28, Lu, 0x1F20},
01255 {0x1F29, Lu, 0x1F21},
01256 {0x1F2A, Lu, 0x1F22},
01257 {0x1F2B, Lu, 0x1F23},
01258 {0x1F2C, Lu, 0x1F24},
01259 {0x1F2D, Lu, 0x1F25},
01260 {0x1F2E, Lu, 0x1F26},
01261 {0x1F2F, Lu, 0x1F27},
01262 {0x1F30, Ll, 0x1F38},
01263 {0x1F31, Ll, 0x1F39},
01264 {0x1F32, Ll, 0x1F3A},
01265 {0x1F33, Ll, 0x1F3B},
01266 {0x1F34, Ll, 0x1F3C},
01267 {0x1F35, Ll, 0x1F3D},
01268 {0x1F36, Ll, 0x1F3E},
01269 {0x1F37, Ll, 0x1F3F},
01270 {0x1F38, Lu, 0x1F30},
01271 {0x1F39, Lu, 0x1F31},
01272 {0x1F3A, Lu, 0x1F32},
01273 {0x1F3B, Lu, 0x1F33},
01274 {0x1F3C, Lu, 0x1F34},
01275 {0x1F3D, Lu, 0x1F35},
01276 {0x1F3E, Lu, 0x1F36},
01277 {0x1F3F, Lu, 0x1F37},
01278 {0x1F40, Ll, 0x1F48},
01279 {0x1F41, Ll, 0x1F49},
01280 {0x1F42, Ll, 0x1F4A},
01281 {0x1F43, Ll, 0x1F4B},
01282 {0x1F44, Ll, 0x1F4C},
01283 {0x1F45, Ll, 0x1F4D},
01284 {0x1F48, Lu, 0x1F40},
01285 {0x1F49, Lu, 0x1F41},
01286 {0x1F4A, Lu, 0x1F42},
01287 {0x1F4B, Lu, 0x1F43},
01288 {0x1F4C, Lu, 0x1F44},
01289 {0x1F4D, Lu, 0x1F45},
01290 {0x1F51, Ll, 0x1F59},
01291 {0x1F53, Ll, 0x1F5B},
01292 {0x1F55, Ll, 0x1F5D},
01293 {0x1F57, Ll, 0x1F5F},
01294 {0x1F59, Lu, 0x1F51},
01295 {0x1F5B, Lu, 0x1F53},
01296 {0x1F5D, Lu, 0x1F55},
01297 {0x1F5F, Lu, 0x1F57},
01298 {0x1F60, Ll, 0x1F68},
01299 {0x1F61, Ll, 0x1F69},
01300 {0x1F62, Ll, 0x1F6A},
01301 {0x1F63, Ll, 0x1F6B},
01302 {0x1F64, Ll, 0x1F6C},
01303 {0x1F65, Ll, 0x1F6D},
01304 {0x1F66, Ll, 0x1F6E},
01305 {0x1F67, Ll, 0x1F6F},
01306 {0x1F68, Lu, 0x1F60},
01307 {0x1F69, Lu, 0x1F61},
01308 {0x1F6A, Lu, 0x1F62},
01309 {0x1F6B, Lu, 0x1F63},
01310 {0x1F6C, Lu, 0x1F64},
01311 {0x1F6D, Lu, 0x1F65},
01312 {0x1F6E, Lu, 0x1F66},
01313 {0x1F6F, Lu, 0x1F67},
01314 {0x1F70, Ll, 0x1FBA},
01315 {0x1F71, Ll, 0x1FBB},
01316 {0x1F72, Ll, 0x1FC8},
01317 {0x1F73, Ll, 0x1FC9},
01318 {0x1F74, Ll, 0x1FCA},
01319 {0x1F75, Ll, 0x1FCB},
01320 {0x1F76, Ll, 0x1FDA},
01321 {0x1F77, Ll, 0x1FDB},
01322 {0x1F78, Ll, 0x1FF8},
01323 {0x1F79, Ll, 0x1FF9},
01324 {0x1F7A, Ll, 0x1FEA},
01325 {0x1F7B, Ll, 0x1FEB},
01326 {0x1F7C, Ll, 0x1FFA},
01327 {0x1F7D, Ll, 0x1FFB},
01328 {0x1F80, Ll, 0x1F88},
01329 {0x1F81, Ll, 0x1F89},
01330 {0x1F82, Ll, 0x1F8A},
01331 {0x1F83, Ll, 0x1F8B},
01332 {0x1F84, Ll, 0x1F8C},
01333 {0x1F85, Ll, 0x1F8D},
01334 {0x1F86, Ll, 0x1F8E},
01335 {0x1F87, Ll, 0x1F8F},
01336 {0x1F90, Ll, 0x1F98},
01337 {0x1F91, Ll, 0x1F99},
01338 {0x1F92, Ll, 0x1F9A},
01339 {0x1F93, Ll, 0x1F9B},
01340 {0x1F94, Ll, 0x1F9C},
01341 {0x1F95, Ll, 0x1F9D},
01342 {0x1F96, Ll, 0x1F9E},
01343 {0x1F97, Ll, 0x1F9F},
01344 {0x1FA0, Ll, 0x1FA8},
01345 {0x1FA1, Ll, 0x1FA9},
01346 {0x1FA2, Ll, 0x1FAA},
01347 {0x1FA3, Ll, 0x1FAB},
01348 {0x1FA4, Ll, 0x1FAC},
01349 {0x1FA5, Ll, 0x1FAD},
01350 {0x1FA6, Ll, 0x1FAE},
01351 {0x1FA7, Ll, 0x1FAF},
01352 {0x1FB0, Ll, 0x1FB8},
01353 {0x1FB1, Ll, 0x1FB9},
01354 {0x1FB3, Ll, 0x1FBC},
01355 {0x1FB8, Lu, 0x1FB0},
01356 {0x1FB9, Lu, 0x1FB1},
01357 {0x1FBA, Lu, 0x1F70},
01358 {0x1FBB, Lu, 0x1F71},
01359 {0x1FBE, Ll, 0x0399},
01360 {0x1FC3, Ll, 0x1FCC},
01361 {0x1FC8, Lu, 0x1F72},
01362 {0x1FC9, Lu, 0x1F73},
01363 {0x1FCA, Lu, 0x1F74},
01364 {0x1FCB, Lu, 0x1F75},
01365 {0x1FD0, Ll, 0x1FD8},
01366 {0x1FD1, Ll, 0x1FD9},
01367 {0x1FD8, Lu, 0x1FD0},
01368 {0x1FD9, Lu, 0x1FD1},
01369 {0x1FDA, Lu, 0x1F76},
01370 {0x1FDB, Lu, 0x1F77},
01371 {0x1FE0, Ll, 0x1FE8},
01372 {0x1FE1, Ll, 0x1FE9},
01373 {0x1FE5, Ll, 0x1FEC},
01374 {0x1FE8, Lu, 0x1FE0},
01375 {0x1FE9, Lu, 0x1FE1},
01376 {0x1FEA, Lu, 0x1F7A},
01377 {0x1FEB, Lu, 0x1F7B},
01378 {0x1FEC, Lu, 0x1FE5},
01379 {0x1FF3, Ll, 0x1FFC},
01380 {0x1FF8, Lu, 0x1F78},
01381 {0x1FF9, Lu, 0x1F79},
01382 {0x1FFA, Lu, 0x1F7C},
01383 {0x1FFB, Lu, 0x1F7D},
01384 {0x2126, Lu, 0x03C9},
01385 {0x212A, Lu, 0x006B},
01386 {0x212B, Lu, 0x00E5},
01387 {0xFF21, Lu, 0xFF41},
01388 {0xFF22, Lu, 0xFF42},
01389 {0xFF23, Lu, 0xFF43},
01390 {0xFF24, Lu, 0xFF44},
01391 {0xFF25, Lu, 0xFF45},
01392 {0xFF26, Lu, 0xFF46},
01393 {0xFF27, Lu, 0xFF47},
01394 {0xFF28, Lu, 0xFF48},
01395 {0xFF29, Lu, 0xFF49},
01396 {0xFF2A, Lu, 0xFF4A},
01397 {0xFF2B, Lu, 0xFF4B},
01398 {0xFF2C, Lu, 0xFF4C},
01399 {0xFF2D, Lu, 0xFF4D},
01400 {0xFF2E, Lu, 0xFF4E},
01401 {0xFF2F, Lu, 0xFF4F},
01402 {0xFF30, Lu, 0xFF50},
01403 {0xFF31, Lu, 0xFF51},
01404 {0xFF32, Lu, 0xFF52},
01405 {0xFF33, Lu, 0xFF53},
01406 {0xFF34, Lu, 0xFF54},
01407 {0xFF35, Lu, 0xFF55},
01408 {0xFF36, Lu, 0xFF56},
01409 {0xFF37, Lu, 0xFF57},
01410 {0xFF38, Lu, 0xFF58},
01411 {0xFF39, Lu, 0xFF59},
01412 {0xFF3A, Lu, 0xFF5A},
01413 {0xFF41, Ll, 0xFF21},
01414 {0xFF42, Ll, 0xFF22},
01415 {0xFF43, Ll, 0xFF23},
01416 {0xFF44, Ll, 0xFF24},
01417 {0xFF45, Ll, 0xFF25},
01418 {0xFF46, Ll, 0xFF26},
01419 {0xFF47, Ll, 0xFF27},
01420 {0xFF48, Ll, 0xFF28},
01421 {0xFF49, Ll, 0xFF29},
01422 {0xFF4A, Ll, 0xFF2A},
01423 {0xFF4B, Ll, 0xFF2B},
01424 {0xFF4C, Ll, 0xFF2C},
01425 {0xFF4D, Ll, 0xFF2D},
01426 {0xFF4E, Ll, 0xFF2E},
01427 {0xFF4F, Ll, 0xFF2F},
01428 {0xFF50, Ll, 0xFF30},
01429 {0xFF51, Ll, 0xFF31},
01430 {0xFF52, Ll, 0xFF32},
01431 {0xFF53, Ll, 0xFF33},
01432 {0xFF54, Ll, 0xFF34},
01433 {0xFF55, Ll, 0xFF35},
01434 {0xFF56, Ll, 0xFF36},
01435 {0xFF57, Ll, 0xFF37},
01436 {0xFF58, Ll, 0xFF38},
01437 {0xFF59, Ll, 0xFF39},
01438 {0xFF5A, Ll, 0xFF3A}
01439 };
01440
01441 #undef Lu
01442 #undef Ll
01443
01444 struct ucs_range
01445 {
01446 UT_UCSChar low;
01447 UT_UCSChar high;
01448 };
01449
01450 ucs_range whitespace_table[] =
01451 {
01452 {0x0009, 0x000d},
01453 {0x001c, 0x0020},
01454 {0x0085, 0x0085},
01455 {0x00A0, 0x00A0},
01456 {0x1680, 0x1680},
01457 {0x2000, 0x200a},
01458 {0x2028, 0x2029},
01459 {0x202f, 0x202f},
01460 {0x3000, 0x3000}
01461 };
01462
01463 static int s_cmp_digits(const void * c1, const void * c2)
01464 {
01465 const UT_UCSChar * C1 = (const UT_UCSChar *) c1;
01466 const ucs_range * C2 = (const ucs_range *) c2;
01467
01468 if (*C1 > C2->high) return +1;
01469 if (*C1 < C2->low) return -1;
01470
01471 return 0;
01472 }
01473
01474
01475
01476 ucs_range digits_table[] =
01477 {
01478
01479 {0x0030, 0x0039},
01480 {0x0660, 0x0669},
01481 {0x06F0, 0x06F9},
01482 {0x0966, 0x096F},
01483 {0x09E6, 0x09EF},
01484 {0x0A66, 0x0A6F},
01485 {0x0AE6, 0x0AEF},
01486 {0x0B66, 0x0B6F},
01487 {0x0BE6, 0x0BEF},
01488 {0x0C66, 0x0C6F},
01489 {0x0CE6, 0x0CEF},
01490 {0x0D66, 0x0D6F},
01491 {0x0E50, 0x0E59},
01492 {0x0ED0, 0x096F},
01493 {0x0F20, 0x0F33},
01494 {0xFF10, 0xFF19}
01495 };
01496
01497 #endif