summaryrefslogtreecommitdiffstats
path: root/core/ucaps.h
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2014-02-09 22:10:30 -0300
committerJuan Linietsky <reduzio@gmail.com>2014-02-09 22:10:30 -0300
commit0b806ee0fc9097fa7bda7ac0109191c9c5e0a1ac (patch)
tree276c4d099e178eb67fbd14f61d77b05e3808e9e3 /core/ucaps.h
parent0e49da1687bc8192ed210947da52c9e5c5f301bb (diff)
downloadredot-engine-0b806ee0fc9097fa7bda7ac0109191c9c5e0a1ac.tar.gz
GODOT IS OPEN SOURCE
Diffstat (limited to 'core/ucaps.h')
-rw-r--r--core/ucaps.h1391
1 files changed, 1391 insertions, 0 deletions
diff --git a/core/ucaps.h b/core/ucaps.h
new file mode 100644
index 0000000000..855a946c21
--- /dev/null
+++ b/core/ucaps.h
@@ -0,0 +1,1391 @@
+#ifndef UCAPS_H
+#define UCAPS_H
+
+//satan invented unicode?
+#define CAPS_LEN 666
+
+static const int caps_table[CAPS_LEN][2]={
+{0x0061,0x0041},
+{0x0062,0x0042},
+{0x0063,0x0043},
+{0x0064,0x0044},
+{0x0065,0x0045},
+{0x0066,0x0046},
+{0x0067,0x0047},
+{0x0068,0x0048},
+{0x0069,0x0049},
+{0x006A,0x004A},
+{0x006B,0x004B},
+{0x006C,0x004C},
+{0x006D,0x004D},
+{0x006E,0x004E},
+{0x006F,0x004F},
+{0x0070,0x0050},
+{0x0071,0x0051},
+{0x0072,0x0052},
+{0x0073,0x0053},
+{0x0074,0x0054},
+{0x0075,0x0055},
+{0x0076,0x0056},
+{0x0077,0x0057},
+{0x0078,0x0058},
+{0x0079,0x0059},
+{0x007A,0x005A},
+{0x00E0,0x00C0},
+{0x00E1,0x00C1},
+{0x00E2,0x00C2},
+{0x00E3,0x00C3},
+{0x00E4,0x00C4},
+{0x00E5,0x00C5},
+{0x00E6,0x00C6},
+{0x00E7,0x00C7},
+{0x00E8,0x00C8},
+{0x00E9,0x00C9},
+{0x00EA,0x00CA},
+{0x00EB,0x00CB},
+{0x00EC,0x00CC},
+{0x00ED,0x00CD},
+{0x00EE,0x00CE},
+{0x00EF,0x00CF},
+{0x00F0,0x00D0},
+{0x00F1,0x00D1},
+{0x00F2,0x00D2},
+{0x00F3,0x00D3},
+{0x00F4,0x00D4},
+{0x00F5,0x00D5},
+{0x00F6,0x00D6},
+{0x00F8,0x00D8},
+{0x00F9,0x00D9},
+{0x00FA,0x00DA},
+{0x00FB,0x00DB},
+{0x00FC,0x00DC},
+{0x00FD,0x00DD},
+{0x00FE,0x00DE},
+{0x00FF,0x0178},
+{0x0101,0x0100},
+{0x0103,0x0102},
+{0x0105,0x0104},
+{0x0107,0x0106},
+{0x0109,0x0108},
+{0x010B,0x010A},
+{0x010D,0x010C},
+{0x010F,0x010E},
+{0x0111,0x0110},
+{0x0113,0x0112},
+{0x0115,0x0114},
+{0x0117,0x0116},
+{0x0119,0x0118},
+{0x011B,0x011A},
+{0x011D,0x011C},
+{0x011F,0x011E},
+{0x0121,0x0120},
+{0x0123,0x0122},
+{0x0125,0x0124},
+{0x0127,0x0126},
+{0x0129,0x0128},
+{0x012B,0x012A},
+{0x012D,0x012C},
+{0x012F,0x012E},
+{0x0131,0x0049},
+{0x0133,0x0132},
+{0x0135,0x0134},
+{0x0137,0x0136},
+{0x013A,0x0139},
+{0x013C,0x013B},
+{0x013E,0x013D},
+{0x0140,0x013F},
+{0x0142,0x0141},
+{0x0144,0x0143},
+{0x0146,0x0145},
+{0x0148,0x0147},
+{0x014B,0x014A},
+{0x014D,0x014C},
+{0x014F,0x014E},
+{0x0151,0x0150},
+{0x0153,0x0152},
+{0x0155,0x0154},
+{0x0157,0x0156},
+{0x0159,0x0158},
+{0x015B,0x015A},
+{0x015D,0x015C},
+{0x015F,0x015E},
+{0x0161,0x0160},
+{0x0163,0x0162},
+{0x0165,0x0164},
+{0x0167,0x0166},
+{0x0169,0x0168},
+{0x016B,0x016A},
+{0x016D,0x016C},
+{0x016F,0x016E},
+{0x0171,0x0170},
+{0x0173,0x0172},
+{0x0175,0x0174},
+{0x0177,0x0176},
+{0x017A,0x0179},
+{0x017C,0x017B},
+{0x017E,0x017D},
+{0x0183,0x0182},
+{0x0185,0x0184},
+{0x0188,0x0187},
+{0x018C,0x018B},
+{0x0192,0x0191},
+{0x0199,0x0198},
+{0x01A1,0x01A0},
+{0x01A3,0x01A2},
+{0x01A5,0x01A4},
+{0x01A8,0x01A7},
+{0x01AD,0x01AC},
+{0x01B0,0x01AF},
+{0x01B4,0x01B3},
+{0x01B6,0x01B5},
+{0x01B9,0x01B8},
+{0x01BD,0x01BC},
+{0x01C6,0x01C4},
+{0x01C9,0x01C7},
+{0x01CC,0x01CA},
+{0x01CE,0x01CD},
+{0x01D0,0x01CF},
+{0x01D2,0x01D1},
+{0x01D4,0x01D3},
+{0x01D6,0x01D5},
+{0x01D8,0x01D7},
+{0x01DA,0x01D9},
+{0x01DC,0x01DB},
+{0x01DF,0x01DE},
+{0x01E1,0x01E0},
+{0x01E3,0x01E2},
+{0x01E5,0x01E4},
+{0x01E7,0x01E6},
+{0x01E9,0x01E8},
+{0x01EB,0x01EA},
+{0x01ED,0x01EC},
+{0x01EF,0x01EE},
+{0x01F3,0x01F1},
+{0x01F5,0x01F4},
+{0x01FB,0x01FA},
+{0x01FD,0x01FC},
+{0x01FF,0x01FE},
+{0x0201,0x0200},
+{0x0203,0x0202},
+{0x0205,0x0204},
+{0x0207,0x0206},
+{0x0209,0x0208},
+{0x020B,0x020A},
+{0x020D,0x020C},
+{0x020F,0x020E},
+{0x0211,0x0210},
+{0x0213,0x0212},
+{0x0215,0x0214},
+{0x0217,0x0216},
+{0x0253,0x0181},
+{0x0254,0x0186},
+{0x0257,0x018A},
+{0x0258,0x018E},
+{0x0259,0x018F},
+{0x025B,0x0190},
+{0x0260,0x0193},
+{0x0263,0x0194},
+{0x0268,0x0197},
+{0x0269,0x0196},
+{0x026F,0x019C},
+{0x0272,0x019D},
+{0x0275,0x019F},
+{0x0283,0x01A9},
+{0x0288,0x01AE},
+{0x028A,0x01B1},
+{0x028B,0x01B2},
+{0x0292,0x01B7},
+{0x03AC,0x0386},
+{0x03AD,0x0388},
+{0x03AE,0x0389},
+{0x03AF,0x038A},
+{0x03B1,0x0391},
+{0x03B2,0x0392},
+{0x03B3,0x0393},
+{0x03B4,0x0394},
+{0x03B5,0x0395},
+{0x03B6,0x0396},
+{0x03B7,0x0397},
+{0x03B8,0x0398},
+{0x03B9,0x0399},
+{0x03BA,0x039A},
+{0x03BB,0x039B},
+{0x03BC,0x039C},
+{0x03BD,0x039D},
+{0x03BE,0x039E},
+{0x03BF,0x039F},
+{0x03C0,0x03A0},
+{0x03C1,0x03A1},
+{0x03C3,0x03A3},
+{0x03C4,0x03A4},
+{0x03C5,0x03A5},
+{0x03C6,0x03A6},
+{0x03C7,0x03A7},
+{0x03C8,0x03A8},
+{0x03C9,0x03A9},
+{0x03CA,0x03AA},
+{0x03CB,0x03AB},
+{0x03CC,0x038C},
+{0x03CD,0x038E},
+{0x03CE,0x038F},
+{0x03E3,0x03E2},
+{0x03E5,0x03E4},
+{0x03E7,0x03E6},
+{0x03E9,0x03E8},
+{0x03EB,0x03EA},
+{0x03ED,0x03EC},
+{0x03EF,0x03EE},
+{0x0430,0x0410},
+{0x0431,0x0411},
+{0x0432,0x0412},
+{0x0433,0x0413},
+{0x0434,0x0414},
+{0x0435,0x0415},
+{0x0436,0x0416},
+{0x0437,0x0417},
+{0x0438,0x0418},
+{0x0439,0x0419},
+{0x043A,0x041A},
+{0x043B,0x041B},
+{0x043C,0x041C},
+{0x043D,0x041D},
+{0x043E,0x041E},
+{0x043F,0x041F},
+{0x0440,0x0420},
+{0x0441,0x0421},
+{0x0442,0x0422},
+{0x0443,0x0423},
+{0x0444,0x0424},
+{0x0445,0x0425},
+{0x0446,0x0426},
+{0x0447,0x0427},
+{0x0448,0x0428},
+{0x0449,0x0429},
+{0x044A,0x042A},
+{0x044B,0x042B},
+{0x044C,0x042C},
+{0x044D,0x042D},
+{0x044E,0x042E},
+{0x044F,0x042F},
+{0x0451,0x0401},
+{0x0452,0x0402},
+{0x0453,0x0403},
+{0x0454,0x0404},
+{0x0455,0x0405},
+{0x0456,0x0406},
+{0x0457,0x0407},
+{0x0458,0x0408},
+{0x0459,0x0409},
+{0x045A,0x040A},
+{0x045B,0x040B},
+{0x045C,0x040C},
+{0x045E,0x040E},
+{0x045F,0x040F},
+{0x0461,0x0460},
+{0x0463,0x0462},
+{0x0465,0x0464},
+{0x0467,0x0466},
+{0x0469,0x0468},
+{0x046B,0x046A},
+{0x046D,0x046C},
+{0x046F,0x046E},
+{0x0471,0x0470},
+{0x0473,0x0472},
+{0x0475,0x0474},
+{0x0477,0x0476},
+{0x0479,0x0478},
+{0x047B,0x047A},
+{0x047D,0x047C},
+{0x047F,0x047E},
+{0x0481,0x0480},
+{0x0491,0x0490},
+{0x0493,0x0492},
+{0x0495,0x0494},
+{0x0497,0x0496},
+{0x0499,0x0498},
+{0x049B,0x049A},
+{0x049D,0x049C},
+{0x049F,0x049E},
+{0x04A1,0x04A0},
+{0x04A3,0x04A2},
+{0x04A5,0x04A4},
+{0x04A7,0x04A6},
+{0x04A9,0x04A8},
+{0x04AB,0x04AA},
+{0x04AD,0x04AC},
+{0x04AF,0x04AE},
+{0x04B1,0x04B0},
+{0x04B3,0x04B2},
+{0x04B5,0x04B4},
+{0x04B7,0x04B6},
+{0x04B9,0x04B8},
+{0x04BB,0x04BA},
+{0x04BD,0x04BC},
+{0x04BF,0x04BE},
+{0x04C2,0x04C1},
+{0x04C4,0x04C3},
+{0x04C8,0x04C7},
+{0x04CC,0x04CB},
+{0x04D1,0x04D0},
+{0x04D3,0x04D2},
+{0x04D5,0x04D4},
+{0x04D7,0x04D6},
+{0x04D9,0x04D8},
+{0x04DB,0x04DA},
+{0x04DD,0x04DC},
+{0x04DF,0x04DE},
+{0x04E1,0x04E0},
+{0x04E3,0x04E2},
+{0x04E5,0x04E4},
+{0x04E7,0x04E6},
+{0x04E9,0x04E8},
+{0x04EB,0x04EA},
+{0x04EF,0x04EE},
+{0x04F1,0x04F0},
+{0x04F3,0x04F2},
+{0x04F5,0x04F4},
+{0x04F9,0x04F8},
+{0x0561,0x0531},
+{0x0562,0x0532},
+{0x0563,0x0533},
+{0x0564,0x0534},
+{0x0565,0x0535},
+{0x0566,0x0536},
+{0x0567,0x0537},
+{0x0568,0x0538},
+{0x0569,0x0539},
+{0x056A,0x053A},
+{0x056B,0x053B},
+{0x056C,0x053C},
+{0x056D,0x053D},
+{0x056E,0x053E},
+{0x056F,0x053F},
+{0x0570,0x0540},
+{0x0571,0x0541},
+{0x0572,0x0542},
+{0x0573,0x0543},
+{0x0574,0x0544},
+{0x0575,0x0545},
+{0x0576,0x0546},
+{0x0577,0x0547},
+{0x0578,0x0548},
+{0x0579,0x0549},
+{0x057A,0x054A},
+{0x057B,0x054B},
+{0x057C,0x054C},
+{0x057D,0x054D},
+{0x057E,0x054E},
+{0x057F,0x054F},
+{0x0580,0x0550},
+{0x0581,0x0551},
+{0x0582,0x0552},
+{0x0583,0x0553},
+{0x0584,0x0554},
+{0x0585,0x0555},
+{0x0586,0x0556},
+{0x10D0,0x10A0},
+{0x10D1,0x10A1},
+{0x10D2,0x10A2},
+{0x10D3,0x10A3},
+{0x10D4,0x10A4},
+{0x10D5,0x10A5},
+{0x10D6,0x10A6},
+{0x10D7,0x10A7},
+{0x10D8,0x10A8},
+{0x10D9,0x10A9},
+{0x10DA,0x10AA},
+{0x10DB,0x10AB},
+{0x10DC,0x10AC},
+{0x10DD,0x10AD},
+{0x10DE,0x10AE},
+{0x10DF,0x10AF},
+{0x10E0,0x10B0},
+{0x10E1,0x10B1},
+{0x10E2,0x10B2},
+{0x10E3,0x10B3},
+{0x10E4,0x10B4},
+{0x10E5,0x10B5},
+{0x10E6,0x10B6},
+{0x10E7,0x10B7},
+{0x10E8,0x10B8},
+{0x10E9,0x10B9},
+{0x10EA,0x10BA},
+{0x10EB,0x10BB},
+{0x10EC,0x10BC},
+{0x10ED,0x10BD},
+{0x10EE,0x10BE},
+{0x10EF,0x10BF},
+{0x10F0,0x10C0},
+{0x10F1,0x10C1},
+{0x10F2,0x10C2},
+{0x10F3,0x10C3},
+{0x10F4,0x10C4},
+{0x10F5,0x10C5},
+{0x1E01,0x1E00},
+{0x1E03,0x1E02},
+{0x1E05,0x1E04},
+{0x1E07,0x1E06},
+{0x1E09,0x1E08},
+{0x1E0B,0x1E0A},
+{0x1E0D,0x1E0C},
+{0x1E0F,0x1E0E},
+{0x1E11,0x1E10},
+{0x1E13,0x1E12},
+{0x1E15,0x1E14},
+{0x1E17,0x1E16},
+{0x1E19,0x1E18},
+{0x1E1B,0x1E1A},
+{0x1E1D,0x1E1C},
+{0x1E1F,0x1E1E},
+{0x1E21,0x1E20},
+{0x1E23,0x1E22},
+{0x1E25,0x1E24},
+{0x1E27,0x1E26},
+{0x1E29,0x1E28},
+{0x1E2B,0x1E2A},
+{0x1E2D,0x1E2C},
+{0x1E2F,0x1E2E},
+{0x1E31,0x1E30},
+{0x1E33,0x1E32},
+{0x1E35,0x1E34},
+{0x1E37,0x1E36},
+{0x1E39,0x1E38},
+{0x1E3B,0x1E3A},
+{0x1E3D,0x1E3C},
+{0x1E3F,0x1E3E},
+{0x1E41,0x1E40},
+{0x1E43,0x1E42},
+{0x1E45,0x1E44},
+{0x1E47,0x1E46},
+{0x1E49,0x1E48},
+{0x1E4B,0x1E4A},
+{0x1E4D,0x1E4C},
+{0x1E4F,0x1E4E},
+{0x1E51,0x1E50},
+{0x1E53,0x1E52},
+{0x1E55,0x1E54},
+{0x1E57,0x1E56},
+{0x1E59,0x1E58},
+{0x1E5B,0x1E5A},
+{0x1E5D,0x1E5C},
+{0x1E5F,0x1E5E},
+{0x1E61,0x1E60},
+{0x1E63,0x1E62},
+{0x1E65,0x1E64},
+{0x1E67,0x1E66},
+{0x1E69,0x1E68},
+{0x1E6B,0x1E6A},
+{0x1E6D,0x1E6C},
+{0x1E6F,0x1E6E},
+{0x1E71,0x1E70},
+{0x1E73,0x1E72},
+{0x1E75,0x1E74},
+{0x1E77,0x1E76},
+{0x1E79,0x1E78},
+{0x1E7B,0x1E7A},
+{0x1E7D,0x1E7C},
+{0x1E7F,0x1E7E},
+{0x1E81,0x1E80},
+{0x1E83,0x1E82},
+{0x1E85,0x1E84},
+{0x1E87,0x1E86},
+{0x1E89,0x1E88},
+{0x1E8B,0x1E8A},
+{0x1E8D,0x1E8C},
+{0x1E8F,0x1E8E},
+{0x1E91,0x1E90},
+{0x1E93,0x1E92},
+{0x1E95,0x1E94},
+{0x1EA1,0x1EA0},
+{0x1EA3,0x1EA2},
+{0x1EA5,0x1EA4},
+{0x1EA7,0x1EA6},
+{0x1EA9,0x1EA8},
+{0x1EAB,0x1EAA},
+{0x1EAD,0x1EAC},
+{0x1EAF,0x1EAE},
+{0x1EB1,0x1EB0},
+{0x1EB3,0x1EB2},
+{0x1EB5,0x1EB4},
+{0x1EB7,0x1EB6},
+{0x1EB9,0x1EB8},
+{0x1EBB,0x1EBA},
+{0x1EBD,0x1EBC},
+{0x1EBF,0x1EBE},
+{0x1EC1,0x1EC0},
+{0x1EC3,0x1EC2},
+{0x1EC5,0x1EC4},
+{0x1EC7,0x1EC6},
+{0x1EC9,0x1EC8},
+{0x1ECB,0x1ECA},
+{0x1ECD,0x1ECC},
+{0x1ECF,0x1ECE},
+{0x1ED1,0x1ED0},
+{0x1ED3,0x1ED2},
+{0x1ED5,0x1ED4},
+{0x1ED7,0x1ED6},
+{0x1ED9,0x1ED8},
+{0x1EDB,0x1EDA},
+{0x1EDD,0x1EDC},
+{0x1EDF,0x1EDE},
+{0x1EE1,0x1EE0},
+{0x1EE3,0x1EE2},
+{0x1EE5,0x1EE4},
+{0x1EE7,0x1EE6},
+{0x1EE9,0x1EE8},
+{0x1EEB,0x1EEA},
+{0x1EED,0x1EEC},
+{0x1EEF,0x1EEE},
+{0x1EF1,0x1EF0},
+{0x1EF3,0x1EF2},
+{0x1EF5,0x1EF4},
+{0x1EF7,0x1EF6},
+{0x1EF9,0x1EF8},
+{0x1F00,0x1F08},
+{0x1F01,0x1F09},
+{0x1F02,0x1F0A},
+{0x1F03,0x1F0B},
+{0x1F04,0x1F0C},
+{0x1F05,0x1F0D},
+{0x1F06,0x1F0E},
+{0x1F07,0x1F0F},
+{0x1F10,0x1F18},
+{0x1F11,0x1F19},
+{0x1F12,0x1F1A},
+{0x1F13,0x1F1B},
+{0x1F14,0x1F1C},
+{0x1F15,0x1F1D},
+{0x1F20,0x1F28},
+{0x1F21,0x1F29},
+{0x1F22,0x1F2A},
+{0x1F23,0x1F2B},
+{0x1F24,0x1F2C},
+{0x1F25,0x1F2D},
+{0x1F26,0x1F2E},
+{0x1F27,0x1F2F},
+{0x1F30,0x1F38},
+{0x1F31,0x1F39},
+{0x1F32,0x1F3A},
+{0x1F33,0x1F3B},
+{0x1F34,0x1F3C},
+{0x1F35,0x1F3D},
+{0x1F36,0x1F3E},
+{0x1F37,0x1F3F},
+{0x1F40,0x1F48},
+{0x1F41,0x1F49},
+{0x1F42,0x1F4A},
+{0x1F43,0x1F4B},
+{0x1F44,0x1F4C},
+{0x1F45,0x1F4D},
+{0x1F51,0x1F59},
+{0x1F53,0x1F5B},
+{0x1F55,0x1F5D},
+{0x1F57,0x1F5F},
+{0x1F60,0x1F68},
+{0x1F61,0x1F69},
+{0x1F62,0x1F6A},
+{0x1F63,0x1F6B},
+{0x1F64,0x1F6C},
+{0x1F65,0x1F6D},
+{0x1F66,0x1F6E},
+{0x1F67,0x1F6F},
+{0x1F80,0x1F88},
+{0x1F81,0x1F89},
+{0x1F82,0x1F8A},
+{0x1F83,0x1F8B},
+{0x1F84,0x1F8C},
+{0x1F85,0x1F8D},
+{0x1F86,0x1F8E},
+{0x1F87,0x1F8F},
+{0x1F90,0x1F98},
+{0x1F91,0x1F99},
+{0x1F92,0x1F9A},
+{0x1F93,0x1F9B},
+{0x1F94,0x1F9C},
+{0x1F95,0x1F9D},
+{0x1F96,0x1F9E},
+{0x1F97,0x1F9F},
+{0x1FA0,0x1FA8},
+{0x1FA1,0x1FA9},
+{0x1FA2,0x1FAA},
+{0x1FA3,0x1FAB},
+{0x1FA4,0x1FAC},
+{0x1FA5,0x1FAD},
+{0x1FA6,0x1FAE},
+{0x1FA7,0x1FAF},
+{0x1FB0,0x1FB8},
+{0x1FB1,0x1FB9},
+{0x1FD0,0x1FD8},
+{0x1FD1,0x1FD9},
+{0x1FE0,0x1FE8},
+{0x1FE1,0x1FE9},
+{0x24D0,0x24B6},
+{0x24D1,0x24B7},
+{0x24D2,0x24B8},
+{0x24D3,0x24B9},
+{0x24D4,0x24BA},
+{0x24D5,0x24BB},
+{0x24D6,0x24BC},
+{0x24D7,0x24BD},
+{0x24D8,0x24BE},
+{0x24D9,0x24BF},
+{0x24DA,0x24C0},
+{0x24DB,0x24C1},
+{0x24DC,0x24C2},
+{0x24DD,0x24C3},
+{0x24DE,0x24C4},
+{0x24DF,0x24C5},
+{0x24E0,0x24C6},
+{0x24E1,0x24C7},
+{0x24E2,0x24C8},
+{0x24E3,0x24C9},
+{0x24E4,0x24CA},
+{0x24E5,0x24CB},
+{0x24E6,0x24CC},
+{0x24E7,0x24CD},
+{0x24E8,0x24CE},
+{0x24E9,0x24CF},
+{0xFF41,0xFF21},
+{0xFF42,0xFF22},
+{0xFF43,0xFF23},
+{0xFF44,0xFF24},
+{0xFF45,0xFF25},
+{0xFF46,0xFF26},
+{0xFF47,0xFF27},
+{0xFF48,0xFF28},
+{0xFF49,0xFF29},
+{0xFF4A,0xFF2A},
+{0xFF4B,0xFF2B},
+{0xFF4C,0xFF2C},
+{0xFF4D,0xFF2D},
+{0xFF4E,0xFF2E},
+{0xFF4F,0xFF2F},
+{0xFF50,0xFF30},
+{0xFF51,0xFF31},
+{0xFF52,0xFF32},
+{0xFF53,0xFF33},
+{0xFF54,0xFF34},
+{0xFF55,0xFF35},
+{0xFF56,0xFF36},
+{0xFF57,0xFF37},
+{0xFF58,0xFF38},
+{0xFF59,0xFF39},
+{0xFF5A,0xFF3A},
+};
+
+static const int reverse_caps_table[CAPS_LEN][2]={
+{0x41,0x61},
+{0x42,0x62},
+{0x43,0x63},
+{0x44,0x64},
+{0x45,0x65},
+{0x46,0x66},
+{0x47,0x67},
+{0x48,0x68},
+{0x49,0x69},
+{0x4a,0x6a},
+{0x4b,0x6b},
+{0x4c,0x6c},
+{0x4d,0x6d},
+{0x4e,0x6e},
+{0x4f,0x6f},
+{0x50,0x70},
+{0x51,0x71},
+{0x52,0x72},
+{0x53,0x73},
+{0x54,0x74},
+{0x55,0x75},
+{0x56,0x76},
+{0x57,0x77},
+{0x58,0x78},
+{0x59,0x79},
+{0x5a,0x7a},
+{0xc0,0xe0},
+{0xc1,0xe1},
+{0xc2,0xe2},
+{0xc3,0xe3},
+{0xc4,0xe4},
+{0xc5,0xe5},
+{0xc6,0xe6},
+{0xc7,0xe7},
+{0xc8,0xe8},
+{0xc9,0xe9},
+{0xca,0xea},
+{0xcb,0xeb},
+{0xcc,0xec},
+{0xcd,0xed},
+{0xce,0xee},
+{0xcf,0xef},
+{0xd0,0xf0},
+{0xd1,0xf1},
+{0xd2,0xf2},
+{0xd3,0xf3},
+{0xd4,0xf4},
+{0xd5,0xf5},
+{0xd6,0xf6},
+{0xd8,0xf8},
+{0xd9,0xf9},
+{0xda,0xfa},
+{0xdb,0xfb},
+{0xdc,0xfc},
+{0xdd,0xfd},
+{0xde,0xfe},
+{0x178,0xff},
+{0x100,0x101},
+{0x102,0x103},
+{0x104,0x105},
+{0x106,0x107},
+{0x108,0x109},
+{0x10a,0x10b},
+{0x10c,0x10d},
+{0x10e,0x10f},
+{0x110,0x111},
+{0x112,0x113},
+{0x114,0x115},
+{0x116,0x117},
+{0x118,0x119},
+{0x11a,0x11b},
+{0x11c,0x11d},
+{0x11e,0x11f},
+{0x120,0x121},
+{0x122,0x123},
+{0x124,0x125},
+{0x126,0x127},
+{0x128,0x129},
+{0x12a,0x12b},
+{0x12c,0x12d},
+{0x12e,0x12f},
+{0x49,0x131},
+{0x132,0x133},
+{0x134,0x135},
+{0x136,0x137},
+{0x139,0x13a},
+{0x13b,0x13c},
+{0x13d,0x13e},
+{0x13f,0x140},
+{0x141,0x142},
+{0x143,0x144},
+{0x145,0x146},
+{0x147,0x148},
+{0x14a,0x14b},
+{0x14c,0x14d},
+{0x14e,0x14f},
+{0x150,0x151},
+{0x152,0x153},
+{0x154,0x155},
+{0x156,0x157},
+{0x158,0x159},
+{0x15a,0x15b},
+{0x15c,0x15d},
+{0x15e,0x15f},
+{0x160,0x161},
+{0x162,0x163},
+{0x164,0x165},
+{0x166,0x167},
+{0x168,0x169},
+{0x16a,0x16b},
+{0x16c,0x16d},
+{0x16e,0x16f},
+{0x170,0x171},
+{0x172,0x173},
+{0x174,0x175},
+{0x176,0x177},
+{0x179,0x17a},
+{0x17b,0x17c},
+{0x17d,0x17e},
+{0x182,0x183},
+{0x184,0x185},
+{0x187,0x188},
+{0x18b,0x18c},
+{0x191,0x192},
+{0x198,0x199},
+{0x1a0,0x1a1},
+{0x1a2,0x1a3},
+{0x1a4,0x1a5},
+{0x1a7,0x1a8},
+{0x1ac,0x1ad},
+{0x1af,0x1b0},
+{0x1b3,0x1b4},
+{0x1b5,0x1b6},
+{0x1b8,0x1b9},
+{0x1bc,0x1bd},
+{0x1c4,0x1c6},
+{0x1c7,0x1c9},
+{0x1ca,0x1cc},
+{0x1cd,0x1ce},
+{0x1cf,0x1d0},
+{0x1d1,0x1d2},
+{0x1d3,0x1d4},
+{0x1d5,0x1d6},
+{0x1d7,0x1d8},
+{0x1d9,0x1da},
+{0x1db,0x1dc},
+{0x1de,0x1df},
+{0x1e0,0x1e1},
+{0x1e2,0x1e3},
+{0x1e4,0x1e5},
+{0x1e6,0x1e7},
+{0x1e8,0x1e9},
+{0x1ea,0x1eb},
+{0x1ec,0x1ed},
+{0x1ee,0x1ef},
+{0x1f1,0x1f3},
+{0x1f4,0x1f5},
+{0x1fa,0x1fb},
+{0x1fc,0x1fd},
+{0x1fe,0x1ff},
+{0x200,0x201},
+{0x202,0x203},
+{0x204,0x205},
+{0x206,0x207},
+{0x208,0x209},
+{0x20a,0x20b},
+{0x20c,0x20d},
+{0x20e,0x20f},
+{0x210,0x211},
+{0x212,0x213},
+{0x214,0x215},
+{0x216,0x217},
+{0x181,0x253},
+{0x186,0x254},
+{0x18a,0x257},
+{0x18e,0x258},
+{0x18f,0x259},
+{0x190,0x25b},
+{0x193,0x260},
+{0x194,0x263},
+{0x197,0x268},
+{0x196,0x269},
+{0x19c,0x26f},
+{0x19d,0x272},
+{0x19f,0x275},
+{0x1a9,0x283},
+{0x1ae,0x288},
+{0x1b1,0x28a},
+{0x1b2,0x28b},
+{0x1b7,0x292},
+{0x386,0x3ac},
+{0x388,0x3ad},
+{0x389,0x3ae},
+{0x38a,0x3af},
+{0x391,0x3b1},
+{0x392,0x3b2},
+{0x393,0x3b3},
+{0x394,0x3b4},
+{0x395,0x3b5},
+{0x396,0x3b6},
+{0x397,0x3b7},
+{0x398,0x3b8},
+{0x399,0x3b9},
+{0x39a,0x3ba},
+{0x39b,0x3bb},
+{0x39c,0x3bc},
+{0x39d,0x3bd},
+{0x39e,0x3be},
+{0x39f,0x3bf},
+{0x3a0,0x3c0},
+{0x3a1,0x3c1},
+{0x3a3,0x3c3},
+{0x3a4,0x3c4},
+{0x3a5,0x3c5},
+{0x3a6,0x3c6},
+{0x3a7,0x3c7},
+{0x3a8,0x3c8},
+{0x3a9,0x3c9},
+{0x3aa,0x3ca},
+{0x3ab,0x3cb},
+{0x38c,0x3cc},
+{0x38e,0x3cd},
+{0x38f,0x3ce},
+{0x3e2,0x3e3},
+{0x3e4,0x3e5},
+{0x3e6,0x3e7},
+{0x3e8,0x3e9},
+{0x3ea,0x3eb},
+{0x3ec,0x3ed},
+{0x3ee,0x3ef},
+{0x410,0x430},
+{0x411,0x431},
+{0x412,0x432},
+{0x413,0x433},
+{0x414,0x434},
+{0x415,0x435},
+{0x416,0x436},
+{0x417,0x437},
+{0x418,0x438},
+{0x419,0x439},
+{0x41a,0x43a},
+{0x41b,0x43b},
+{0x41c,0x43c},
+{0x41d,0x43d},
+{0x41e,0x43e},
+{0x41f,0x43f},
+{0x420,0x440},
+{0x421,0x441},
+{0x422,0x442},
+{0x423,0x443},
+{0x424,0x444},
+{0x425,0x445},
+{0x426,0x446},
+{0x427,0x447},
+{0x428,0x448},
+{0x429,0x449},
+{0x42a,0x44a},
+{0x42b,0x44b},
+{0x42c,0x44c},
+{0x42d,0x44d},
+{0x42e,0x44e},
+{0x42f,0x44f},
+{0x401,0x451},
+{0x402,0x452},
+{0x403,0x453},
+{0x404,0x454},
+{0x405,0x455},
+{0x406,0x456},
+{0x407,0x457},
+{0x408,0x458},
+{0x409,0x459},
+{0x40a,0x45a},
+{0x40b,0x45b},
+{0x40c,0x45c},
+{0x40e,0x45e},
+{0x40f,0x45f},
+{0x460,0x461},
+{0x462,0x463},
+{0x464,0x465},
+{0x466,0x467},
+{0x468,0x469},
+{0x46a,0x46b},
+{0x46c,0x46d},
+{0x46e,0x46f},
+{0x470,0x471},
+{0x472,0x473},
+{0x474,0x475},
+{0x476,0x477},
+{0x478,0x479},
+{0x47a,0x47b},
+{0x47c,0x47d},
+{0x47e,0x47f},
+{0x480,0x481},
+{0x490,0x491},
+{0x492,0x493},
+{0x494,0x495},
+{0x496,0x497},
+{0x498,0x499},
+{0x49a,0x49b},
+{0x49c,0x49d},
+{0x49e,0x49f},
+{0x4a0,0x4a1},
+{0x4a2,0x4a3},
+{0x4a4,0x4a5},
+{0x4a6,0x4a7},
+{0x4a8,0x4a9},
+{0x4aa,0x4ab},
+{0x4ac,0x4ad},
+{0x4ae,0x4af},
+{0x4b0,0x4b1},
+{0x4b2,0x4b3},
+{0x4b4,0x4b5},
+{0x4b6,0x4b7},
+{0x4b8,0x4b9},
+{0x4ba,0x4bb},
+{0x4bc,0x4bd},
+{0x4be,0x4bf},
+{0x4c1,0x4c2},
+{0x4c3,0x4c4},
+{0x4c7,0x4c8},
+{0x4cb,0x4cc},
+{0x4d0,0x4d1},
+{0x4d2,0x4d3},
+{0x4d4,0x4d5},
+{0x4d6,0x4d7},
+{0x4d8,0x4d9},
+{0x4da,0x4db},
+{0x4dc,0x4dd},
+{0x4de,0x4df},
+{0x4e0,0x4e1},
+{0x4e2,0x4e3},
+{0x4e4,0x4e5},
+{0x4e6,0x4e7},
+{0x4e8,0x4e9},
+{0x4ea,0x4eb},
+{0x4ee,0x4ef},
+{0x4f0,0x4f1},
+{0x4f2,0x4f3},
+{0x4f4,0x4f5},
+{0x4f8,0x4f9},
+{0x531,0x561},
+{0x532,0x562},
+{0x533,0x563},
+{0x534,0x564},
+{0x535,0x565},
+{0x536,0x566},
+{0x537,0x567},
+{0x538,0x568},
+{0x539,0x569},
+{0x53a,0x56a},
+{0x53b,0x56b},
+{0x53c,0x56c},
+{0x53d,0x56d},
+{0x53e,0x56e},
+{0x53f,0x56f},
+{0x540,0x570},
+{0x541,0x571},
+{0x542,0x572},
+{0x543,0x573},
+{0x544,0x574},
+{0x545,0x575},
+{0x546,0x576},
+{0x547,0x577},
+{0x548,0x578},
+{0x549,0x579},
+{0x54a,0x57a},
+{0x54b,0x57b},
+{0x54c,0x57c},
+{0x54d,0x57d},
+{0x54e,0x57e},
+{0x54f,0x57f},
+{0x550,0x580},
+{0x551,0x581},
+{0x552,0x582},
+{0x553,0x583},
+{0x554,0x584},
+{0x555,0x585},
+{0x556,0x586},
+{0x10a0,0x10d0},
+{0x10a1,0x10d1},
+{0x10a2,0x10d2},
+{0x10a3,0x10d3},
+{0x10a4,0x10d4},
+{0x10a5,0x10d5},
+{0x10a6,0x10d6},
+{0x10a7,0x10d7},
+{0x10a8,0x10d8},
+{0x10a9,0x10d9},
+{0x10aa,0x10da},
+{0x10ab,0x10db},
+{0x10ac,0x10dc},
+{0x10ad,0x10dd},
+{0x10ae,0x10de},
+{0x10af,0x10df},
+{0x10b0,0x10e0},
+{0x10b1,0x10e1},
+{0x10b2,0x10e2},
+{0x10b3,0x10e3},
+{0x10b4,0x10e4},
+{0x10b5,0x10e5},
+{0x10b6,0x10e6},
+{0x10b7,0x10e7},
+{0x10b8,0x10e8},
+{0x10b9,0x10e9},
+{0x10ba,0x10ea},
+{0x10bb,0x10eb},
+{0x10bc,0x10ec},
+{0x10bd,0x10ed},
+{0x10be,0x10ee},
+{0x10bf,0x10ef},
+{0x10c0,0x10f0},
+{0x10c1,0x10f1},
+{0x10c2,0x10f2},
+{0x10c3,0x10f3},
+{0x10c4,0x10f4},
+{0x10c5,0x10f5},
+{0x1e00,0x1e01},
+{0x1e02,0x1e03},
+{0x1e04,0x1e05},
+{0x1e06,0x1e07},
+{0x1e08,0x1e09},
+{0x1e0a,0x1e0b},
+{0x1e0c,0x1e0d},
+{0x1e0e,0x1e0f},
+{0x1e10,0x1e11},
+{0x1e12,0x1e13},
+{0x1e14,0x1e15},
+{0x1e16,0x1e17},
+{0x1e18,0x1e19},
+{0x1e1a,0x1e1b},
+{0x1e1c,0x1e1d},
+{0x1e1e,0x1e1f},
+{0x1e20,0x1e21},
+{0x1e22,0x1e23},
+{0x1e24,0x1e25},
+{0x1e26,0x1e27},
+{0x1e28,0x1e29},
+{0x1e2a,0x1e2b},
+{0x1e2c,0x1e2d},
+{0x1e2e,0x1e2f},
+{0x1e30,0x1e31},
+{0x1e32,0x1e33},
+{0x1e34,0x1e35},
+{0x1e36,0x1e37},
+{0x1e38,0x1e39},
+{0x1e3a,0x1e3b},
+{0x1e3c,0x1e3d},
+{0x1e3e,0x1e3f},
+{0x1e40,0x1e41},
+{0x1e42,0x1e43},
+{0x1e44,0x1e45},
+{0x1e46,0x1e47},
+{0x1e48,0x1e49},
+{0x1e4a,0x1e4b},
+{0x1e4c,0x1e4d},
+{0x1e4e,0x1e4f},
+{0x1e50,0x1e51},
+{0x1e52,0x1e53},
+{0x1e54,0x1e55},
+{0x1e56,0x1e57},
+{0x1e58,0x1e59},
+{0x1e5a,0x1e5b},
+{0x1e5c,0x1e5d},
+{0x1e5e,0x1e5f},
+{0x1e60,0x1e61},
+{0x1e62,0x1e63},
+{0x1e64,0x1e65},
+{0x1e66,0x1e67},
+{0x1e68,0x1e69},
+{0x1e6a,0x1e6b},
+{0x1e6c,0x1e6d},
+{0x1e6e,0x1e6f},
+{0x1e70,0x1e71},
+{0x1e72,0x1e73},
+{0x1e74,0x1e75},
+{0x1e76,0x1e77},
+{0x1e78,0x1e79},
+{0x1e7a,0x1e7b},
+{0x1e7c,0x1e7d},
+{0x1e7e,0x1e7f},
+{0x1e80,0x1e81},
+{0x1e82,0x1e83},
+{0x1e84,0x1e85},
+{0x1e86,0x1e87},
+{0x1e88,0x1e89},
+{0x1e8a,0x1e8b},
+{0x1e8c,0x1e8d},
+{0x1e8e,0x1e8f},
+{0x1e90,0x1e91},
+{0x1e92,0x1e93},
+{0x1e94,0x1e95},
+{0x1ea0,0x1ea1},
+{0x1ea2,0x1ea3},
+{0x1ea4,0x1ea5},
+{0x1ea6,0x1ea7},
+{0x1ea8,0x1ea9},
+{0x1eaa,0x1eab},
+{0x1eac,0x1ead},
+{0x1eae,0x1eaf},
+{0x1eb0,0x1eb1},
+{0x1eb2,0x1eb3},
+{0x1eb4,0x1eb5},
+{0x1eb6,0x1eb7},
+{0x1eb8,0x1eb9},
+{0x1eba,0x1ebb},
+{0x1ebc,0x1ebd},
+{0x1ebe,0x1ebf},
+{0x1ec0,0x1ec1},
+{0x1ec2,0x1ec3},
+{0x1ec4,0x1ec5},
+{0x1ec6,0x1ec7},
+{0x1ec8,0x1ec9},
+{0x1eca,0x1ecb},
+{0x1ecc,0x1ecd},
+{0x1ece,0x1ecf},
+{0x1ed0,0x1ed1},
+{0x1ed2,0x1ed3},
+{0x1ed4,0x1ed5},
+{0x1ed6,0x1ed7},
+{0x1ed8,0x1ed9},
+{0x1eda,0x1edb},
+{0x1edc,0x1edd},
+{0x1ede,0x1edf},
+{0x1ee0,0x1ee1},
+{0x1ee2,0x1ee3},
+{0x1ee4,0x1ee5},
+{0x1ee6,0x1ee7},
+{0x1ee8,0x1ee9},
+{0x1eea,0x1eeb},
+{0x1eec,0x1eed},
+{0x1eee,0x1eef},
+{0x1ef0,0x1ef1},
+{0x1ef2,0x1ef3},
+{0x1ef4,0x1ef5},
+{0x1ef6,0x1ef7},
+{0x1ef8,0x1ef9},
+{0x1f08,0x1f00},
+{0x1f09,0x1f01},
+{0x1f0a,0x1f02},
+{0x1f0b,0x1f03},
+{0x1f0c,0x1f04},
+{0x1f0d,0x1f05},
+{0x1f0e,0x1f06},
+{0x1f0f,0x1f07},
+{0x1f18,0x1f10},
+{0x1f19,0x1f11},
+{0x1f1a,0x1f12},
+{0x1f1b,0x1f13},
+{0x1f1c,0x1f14},
+{0x1f1d,0x1f15},
+{0x1f28,0x1f20},
+{0x1f29,0x1f21},
+{0x1f2a,0x1f22},
+{0x1f2b,0x1f23},
+{0x1f2c,0x1f24},
+{0x1f2d,0x1f25},
+{0x1f2e,0x1f26},
+{0x1f2f,0x1f27},
+{0x1f38,0x1f30},
+{0x1f39,0x1f31},
+{0x1f3a,0x1f32},
+{0x1f3b,0x1f33},
+{0x1f3c,0x1f34},
+{0x1f3d,0x1f35},
+{0x1f3e,0x1f36},
+{0x1f3f,0x1f37},
+{0x1f48,0x1f40},
+{0x1f49,0x1f41},
+{0x1f4a,0x1f42},
+{0x1f4b,0x1f43},
+{0x1f4c,0x1f44},
+{0x1f4d,0x1f45},
+{0x1f59,0x1f51},
+{0x1f5b,0x1f53},
+{0x1f5d,0x1f55},
+{0x1f5f,0x1f57},
+{0x1f68,0x1f60},
+{0x1f69,0x1f61},
+{0x1f6a,0x1f62},
+{0x1f6b,0x1f63},
+{0x1f6c,0x1f64},
+{0x1f6d,0x1f65},
+{0x1f6e,0x1f66},
+{0x1f6f,0x1f67},
+{0x1f88,0x1f80},
+{0x1f89,0x1f81},
+{0x1f8a,0x1f82},
+{0x1f8b,0x1f83},
+{0x1f8c,0x1f84},
+{0x1f8d,0x1f85},
+{0x1f8e,0x1f86},
+{0x1f8f,0x1f87},
+{0x1f98,0x1f90},
+{0x1f99,0x1f91},
+{0x1f9a,0x1f92},
+{0x1f9b,0x1f93},
+{0x1f9c,0x1f94},
+{0x1f9d,0x1f95},
+{0x1f9e,0x1f96},
+{0x1f9f,0x1f97},
+{0x1fa8,0x1fa0},
+{0x1fa9,0x1fa1},
+{0x1faa,0x1fa2},
+{0x1fab,0x1fa3},
+{0x1fac,0x1fa4},
+{0x1fad,0x1fa5},
+{0x1fae,0x1fa6},
+{0x1faf,0x1fa7},
+{0x1fb8,0x1fb0},
+{0x1fb9,0x1fb1},
+{0x1fd8,0x1fd0},
+{0x1fd9,0x1fd1},
+{0x1fe8,0x1fe0},
+{0x1fe9,0x1fe1},
+{0x24b6,0x24d0},
+{0x24b7,0x24d1},
+{0x24b8,0x24d2},
+{0x24b9,0x24d3},
+{0x24ba,0x24d4},
+{0x24bb,0x24d5},
+{0x24bc,0x24d6},
+{0x24bd,0x24d7},
+{0x24be,0x24d8},
+{0x24bf,0x24d9},
+{0x24c0,0x24da},
+{0x24c1,0x24db},
+{0x24c2,0x24dc},
+{0x24c3,0x24dd},
+{0x24c4,0x24de},
+{0x24c5,0x24df},
+{0x24c6,0x24e0},
+{0x24c7,0x24e1},
+{0x24c8,0x24e2},
+{0x24c9,0x24e3},
+{0x24ca,0x24e4},
+{0x24cb,0x24e5},
+{0x24cc,0x24e6},
+{0x24cd,0x24e7},
+{0x24ce,0x24e8},
+{0x24cf,0x24e9},
+{0xff21,0xff41},
+{0xff22,0xff42},
+{0xff23,0xff43},
+{0xff24,0xff44},
+{0xff25,0xff45},
+{0xff26,0xff46},
+{0xff27,0xff47},
+{0xff28,0xff48},
+{0xff29,0xff49},
+{0xff2a,0xff4a},
+{0xff2b,0xff4b},
+{0xff2c,0xff4c},
+{0xff2d,0xff4d},
+{0xff2e,0xff4e},
+{0xff2f,0xff4f},
+{0xff30,0xff50},
+{0xff31,0xff51},
+{0xff32,0xff52},
+{0xff33,0xff53},
+{0xff34,0xff54},
+{0xff35,0xff55},
+{0xff36,0xff56},
+{0xff37,0xff57},
+{0xff38,0xff58},
+{0xff39,0xff59},
+{0xff3a,0xff5a}
+};
+
+static int _find_upper(int ch) {
+
+
+ int low = 0;
+ int high = CAPS_LEN -1;
+ int middle;
+
+ while( low <= high )
+ {
+ middle = ( low + high ) / 2;
+
+ if( ch < caps_table[ middle][0] ) {
+ high = middle - 1; //search low end of array
+ } else if ( caps_table[middle][0] < ch) {
+ low = middle + 1; //search high end of array
+ } else {
+ return caps_table[middle][1];
+ }
+ }
+
+ return ch;
+}
+
+
+static int _find_lower(int ch) {
+
+
+ int low = 0;
+ int high = CAPS_LEN -1;
+ int middle;
+
+ while( low <= high )
+ {
+ middle = ( low + high ) / 2;
+
+ if( ch < reverse_caps_table[ middle][0] ) {
+ high = middle - 1; //search low end of array
+ } else if ( reverse_caps_table[middle][0] < ch) {
+ low = middle + 1; //search high end of array
+ } else {
+ return reverse_caps_table[middle][1];
+ }
+ }
+
+ return ch;
+}
+#endif