• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

ut_case.h

Go to the documentation of this file.
00001 /* AbiSource Program Utilities
00002  * Copyright (C) 2001 Tomas Frydrych
00003  *
00004  * This program is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU General Public License
00006  * as published by the Free Software Foundation; either version 2
00007  * of the License, or (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
00017  * 02110-1301 USA.
00018  */
00019 
00020 #ifndef UT_CASE_H
00021 #define UT_CASE_H
00022 
00023 // this file is to be included in ut_string.cpp only !!!
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 /*  the following structure works this way: low indicates lower boundary, and high
00036     upper boundary of a range that is to be treated in the same way, depending on type
00037 
00038     if type is Lu/Ll, then the character is Upper/Lowecase and the other can be found
00039     by adding the diff
00040 
00041     if type is Lu_even, then all even characters in this range are Upper-, while odd
00042     characters are Lower-case; a lowecase character is obtained by adding diff while
00043     uppercase character is obtained by subtracting diff.
00044 
00045     if type is Lu_odd, the all odd characters in this range are Upper-, while even
00046     characters are Lower-case; a lowercase character is obtained by adding the diff,
00047     while uppercase character is obtained by subtracting diff.
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}, /* Coptic */
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 // must stay sorted !!!
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     /* Coptic */
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}, // had to add this by hand, for some reason in Unicode 3.1 it is marked as CS, not WS
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 // TODO: extend to some Unicode standard compliance
01475 
01476 ucs_range digits_table[] =
01477 {
01478     // needs to be monotonic
01479     {0x0030, 0x0039},
01480     {0x0660, 0x0669}, // arabic common
01481     {0x06F0, 0x06F9}, // arabic variants
01482     {0x0966, 0x096F}, // devanagari
01483     {0x09E6, 0x09EF}, // bengali
01484     {0x0A66, 0x0A6F}, // gurmukhi
01485     {0x0AE6, 0x0AEF}, // gujarati
01486     {0x0B66, 0x0B6F}, // oriya
01487     {0x0BE6, 0x0BEF}, // tamil
01488     {0x0C66, 0x0C6F}, // telugu
01489     {0x0CE6, 0x0CEF}, // kannada
01490     {0x0D66, 0x0D6F}, // malayalam
01491     {0x0E50, 0x0E59}, // thai
01492     {0x0ED0, 0x096F}, // lao
01493     {0x0F20, 0x0F33}, // tibetan
01494     {0xFF10, 0xFF19}  // full-width
01495 };
01496 
01497 #endif

Generated on Sun Feb 14 2021 for AbiWord by  doxygen 1.7.1