diff --git a/src/tl/tl/tlString.cc b/src/tl/tl/tlString.cc index 9a4d885c5..f7f30e9a7 100644 --- a/src/tl/tl/tlString.cc +++ b/src/tl/tl/tlString.cc @@ -40,6 +40,31 @@ namespace tl static std::locale c_locale ("C"); +// ------------------------------------------------------------------------- +// lower and upper case for wchar_t + +#include "utf_casefolding.h" + +wchar_t wdowncase (wchar_t c) +{ + int ch = c >> 8; + if (ch >= 0 && ch < int (sizeof (uc_tab) / sizeof (uc_tab[0])) && uc_tab[ch]) { + return uc_tab[ch][c & 0xff]; + } else { + return c; + } +} + +wchar_t wupcase (wchar_t c) +{ + int ch = c >> 8; + if (ch >= 0 && ch < int (sizeof (lc_tab) / sizeof (lc_tab[0])) && lc_tab[ch]) { + return lc_tab[ch][c & 0xff]; + } else { + return c; + } +} + // ------------------------------------------------------------------------- // Conversion of UTF8 to wchar_t @@ -146,7 +171,7 @@ std::string to_upper_case (const std::string &s) { std::wstring ws = to_wstring (s); for (std::wstring::iterator c = ws.begin (); c != ws.end (); ++c) { - *c = towupper (*c); + *c = wupcase (*c); } return to_string (ws); } @@ -155,7 +180,7 @@ std::string to_lower_case (const std::string &s) { std::wstring ws = to_wstring (s); for (std::wstring::iterator c = ws.begin (); c != ws.end (); ++c) { - *c = towlower (*c); + *c = wdowncase (*c); } return to_string (ws); } diff --git a/src/tl/tl/utf_casefolding.h b/src/tl/tl/utf_casefolding.h new file mode 100644 index 000000000..b5c27546c --- /dev/null +++ b/src/tl/tl/utf_casefolding.h @@ -0,0 +1,6244 @@ +/** + * This is generated code. DO NOT EDIT. + */ + +// code page 0 +static wchar_t lc_tab_0[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0041, // 97 LATIN SMALL LETTER A LATIN CAPITAL LETTER A + 0x0042, // 98 LATIN SMALL LETTER B LATIN CAPITAL LETTER B + 0x0043, // 99 LATIN SMALL LETTER C LATIN CAPITAL LETTER C + 0x0044, // 100 LATIN SMALL LETTER D LATIN CAPITAL LETTER D + 0x0045, // 101 LATIN SMALL LETTER E LATIN CAPITAL LETTER E + 0x0046, // 102 LATIN SMALL LETTER F LATIN CAPITAL LETTER F + 0x0047, // 103 LATIN SMALL LETTER G LATIN CAPITAL LETTER G + 0x0048, // 104 LATIN SMALL LETTER H LATIN CAPITAL LETTER H + 0x0049, // 105 LATIN SMALL LETTER I LATIN CAPITAL LETTER I + 0x004a, // 106 LATIN SMALL LETTER J LATIN CAPITAL LETTER J + 0x004b, // 107 LATIN SMALL LETTER K LATIN CAPITAL LETTER K + 0x004c, // 108 LATIN SMALL LETTER L LATIN CAPITAL LETTER L + 0x004d, // 109 LATIN SMALL LETTER M LATIN CAPITAL LETTER M + 0x004e, // 110 LATIN SMALL LETTER N LATIN CAPITAL LETTER N + 0x004f, // 111 LATIN SMALL LETTER O LATIN CAPITAL LETTER O + 0x0050, // 112 LATIN SMALL LETTER P LATIN CAPITAL LETTER P + 0x0051, // 113 LATIN SMALL LETTER Q LATIN CAPITAL LETTER Q + 0x0052, // 114 LATIN SMALL LETTER R LATIN CAPITAL LETTER R + 0x0053, // 115 LATIN SMALL LETTER S LATIN CAPITAL LETTER S + 0x0054, // 116 LATIN SMALL LETTER T LATIN CAPITAL LETTER T + 0x0055, // 117 LATIN SMALL LETTER U LATIN CAPITAL LETTER U + 0x0056, // 118 LATIN SMALL LETTER V LATIN CAPITAL LETTER V + 0x0057, // 119 LATIN SMALL LETTER W LATIN CAPITAL LETTER W + 0x0058, // 120 LATIN SMALL LETTER X LATIN CAPITAL LETTER X + 0x0059, // 121 LATIN SMALL LETTER Y LATIN CAPITAL LETTER Y + 0x005a, // 122 LATIN SMALL LETTER Z LATIN CAPITAL LETTER Z + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00c0, // 224 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A GRAVE + 0x00c1, // 225 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A ACUTE + 0x00c2, // 226 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A CIRCUMFLEX + 0x00c3, // 227 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A TILDE + 0x00c4, // 228 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A DIAERESIS + 0x00c5, // 229 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A RING + 0x00c6, // 230 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A E + 0x00c7, // 231 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER C CEDILLA + 0x00c8, // 232 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER E GRAVE + 0x00c9, // 233 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER E ACUTE + 0x00ca, // 234 LATIN SMALL LETTER E CIRCUMFLEX LATIN CAPITAL LETTER E CIRCUMFLEX + 0x00cb, // 235 LATIN SMALL LETTER E DIAERESIS LATIN CAPITAL LETTER E DIAERESIS + 0x00cc, // 236 LATIN SMALL LETTER I GRAVE LATIN CAPITAL LETTER I GRAVE + 0x00cd, // 237 LATIN SMALL LETTER I ACUTE LATIN CAPITAL LETTER I ACUTE + 0x00ce, // 238 LATIN SMALL LETTER I CIRCUMFLEX LATIN CAPITAL LETTER I CIRCUMFLEX + 0x00cf, // 239 LATIN SMALL LETTER I DIAERESIS LATIN CAPITAL LETTER I DIAERESIS + 0x00d0, // 240 LATIN SMALL LETTER ETH LATIN CAPITAL LETTER ETH + 0x00d1, // 241 LATIN SMALL LETTER N TILDE LATIN CAPITAL LETTER N TILDE + 0x00d2, // 242 LATIN SMALL LETTER O GRAVE LATIN CAPITAL LETTER O GRAVE + 0x00d3, // 243 LATIN SMALL LETTER O ACUTE LATIN CAPITAL LETTER O ACUTE + 0x00d4, // 244 LATIN SMALL LETTER O CIRCUMFLEX LATIN CAPITAL LETTER O CIRCUMFLEX + 0x00d5, // 245 LATIN SMALL LETTER O TILDE LATIN CAPITAL LETTER O TILDE + 0x00d6, // 246 LATIN SMALL LETTER O DIAERESIS LATIN CAPITAL LETTER O DIAERESIS + 0x00f7, // 247 + 0x00d8, // 248 LATIN SMALL LETTER O SLASH LATIN CAPITAL LETTER O SLASH + 0x00d9, // 249 LATIN SMALL LETTER U GRAVE LATIN CAPITAL LETTER U GRAVE + 0x00da, // 250 LATIN SMALL LETTER U ACUTE LATIN CAPITAL LETTER U ACUTE + 0x00db, // 251 LATIN SMALL LETTER U CIRCUMFLEX LATIN CAPITAL LETTER U CIRCUMFLEX + 0x00dc, // 252 LATIN SMALL LETTER U DIAERESIS LATIN CAPITAL LETTER U DIAERESIS + 0x00dd, // 253 LATIN SMALL LETTER Y ACUTE LATIN CAPITAL LETTER Y ACUTE + 0x00de, // 254 LATIN SMALL LETTER THORN LATIN CAPITAL LETTER THORN + 0x0178 // 255 LATIN SMALL LETTER Y DIAERESIS LATIN CAPITAL LETTER Y WITH DIAERESIS +}; + +// code page 1 +static wchar_t lc_tab_1[] = { + 0x0000, // 0 + 0x0100, // 1 LATIN SMALL LETTER A WITH MACRON LATIN CAPITAL LETTER A WITH MACRON + 0x0002, // 2 + 0x0102, // 3 LATIN SMALL LETTER A WITH BREVE LATIN CAPITAL LETTER A WITH BREVE + 0x0004, // 4 + 0x0104, // 5 LATIN SMALL LETTER A WITH OGONEK LATIN CAPITAL LETTER A WITH OGONEK + 0x0006, // 6 + 0x0106, // 7 LATIN SMALL LETTER C WITH ACUTE LATIN CAPITAL LETTER C WITH ACUTE + 0x0008, // 8 + 0x0108, // 9 LATIN SMALL LETTER C WITH CIRCUMFLEX LATIN CAPITAL LETTER C WITH CIRCUMFLEX + 0x000a, // 10 + 0x010a, // 11 LATIN SMALL LETTER C WITH DOT ABOVE LATIN CAPITAL LETTER C WITH DOT ABOVE + 0x000c, // 12 + 0x010c, // 13 LATIN SMALL LETTER C WITH CARON LATIN CAPITAL LETTER C WITH CARON + 0x000e, // 14 + 0x010e, // 15 LATIN SMALL LETTER D WITH CARON LATIN CAPITAL LETTER D WITH CARON + 0x0010, // 16 + 0x0110, // 17 LATIN SMALL LETTER D WITH STROKE LATIN CAPITAL LETTER D WITH STROKE + 0x0012, // 18 + 0x0112, // 19 LATIN SMALL LETTER E WITH MACRON LATIN CAPITAL LETTER E WITH MACRON + 0x0014, // 20 + 0x0114, // 21 LATIN SMALL LETTER E WITH BREVE LATIN CAPITAL LETTER E WITH BREVE + 0x0016, // 22 + 0x0116, // 23 LATIN SMALL LETTER E WITH DOT ABOVE LATIN CAPITAL LETTER E WITH DOT ABOVE + 0x0018, // 24 + 0x0118, // 25 LATIN SMALL LETTER E WITH OGONEK LATIN CAPITAL LETTER E WITH OGONEK + 0x001a, // 26 + 0x011a, // 27 LATIN SMALL LETTER E WITH CARON LATIN CAPITAL LETTER E WITH CARON + 0x001c, // 28 + 0x011c, // 29 LATIN SMALL LETTER G WITH CIRCUMFLEX LATIN CAPITAL LETTER G WITH CIRCUMFLEX + 0x001e, // 30 + 0x011e, // 31 LATIN SMALL LETTER G WITH BREVE LATIN CAPITAL LETTER G WITH BREVE + 0x0020, // 32 + 0x0120, // 33 LATIN SMALL LETTER G WITH DOT ABOVE LATIN CAPITAL LETTER G WITH DOT ABOVE + 0x0022, // 34 + 0x0122, // 35 LATIN SMALL LETTER G WITH CEDILLA LATIN CAPITAL LETTER G WITH CEDILLA + 0x0024, // 36 + 0x0124, // 37 LATIN SMALL LETTER H WITH CIRCUMFLEX LATIN CAPITAL LETTER H WITH CIRCUMFLEX + 0x0026, // 38 + 0x0126, // 39 LATIN SMALL LETTER H WITH STROKE LATIN CAPITAL LETTER H WITH STROKE + 0x0028, // 40 + 0x0128, // 41 LATIN SMALL LETTER I WITH TILDE LATIN CAPITAL LETTER I WITH TILDE + 0x002a, // 42 + 0x012a, // 43 LATIN SMALL LETTER I WITH MACRON LATIN CAPITAL LETTER I WITH MACRON + 0x002c, // 44 + 0x012c, // 45 LATIN SMALL LETTER I WITH BREVE LATIN CAPITAL LETTER I WITH BREVE + 0x002e, // 46 + 0x012e, // 47 LATIN SMALL LETTER I WITH OGONEK LATIN CAPITAL LETTER I WITH OGONEK + 0x0030, // 48 + 0x0049, // 49 LATIN SMALL LETTER DOTLESS I LATIN CAPITAL LETTER I + 0x0032, // 50 + 0x0132, // 51 LATIN SMALL LIGATURE IJ LATIN CAPITAL LIGATURE IJ + 0x0034, // 52 + 0x0134, // 53 LATIN SMALL LETTER J WITH CIRCUMFLEX LATIN CAPITAL LETTER J WITH CIRCUMFLEX + 0x0036, // 54 + 0x0136, // 55 LATIN SMALL LETTER K WITH CEDILLA LATIN CAPITAL LETTER K WITH CEDILLA + 0x0038, // 56 + 0x0039, // 57 + 0x0139, // 58 LATIN SMALL LETTER L WITH ACUTE LATIN CAPITAL LETTER L WITH ACUTE + 0x003b, // 59 + 0x013b, // 60 LATIN SMALL LETTER L WITH CEDILLA LATIN CAPITAL LETTER L WITH CEDILLA + 0x003d, // 61 + 0x013d, // 62 LATIN SMALL LETTER L WITH CARON LATIN CAPITAL LETTER L WITH CARON + 0x003f, // 63 + 0x013f, // 64 LATIN SMALL LETTER L WITH MIDDLE DOT LATIN CAPITAL LETTER L WITH MIDDLE DOT + 0x0041, // 65 + 0x0141, // 66 LATIN SMALL LETTER L WITH STROKE LATIN CAPITAL LETTER L WITH STROKE + 0x0043, // 67 + 0x0143, // 68 LATIN SMALL LETTER N WITH ACUTE LATIN CAPITAL LETTER N WITH ACUTE + 0x0045, // 69 + 0x0145, // 70 LATIN SMALL LETTER N WITH CEDILLA LATIN CAPITAL LETTER N WITH CEDILLA + 0x0047, // 71 + 0x0147, // 72 LATIN SMALL LETTER N WITH CARON LATIN CAPITAL LETTER N WITH CARON + 0x0049, // 73 + 0x004a, // 74 + 0x014a, // 75 LATIN SMALL LETTER ENG (SAMI) LATIN CAPITAL LETTER ENG (SAMI) + 0x004c, // 76 + 0x014c, // 77 LATIN SMALL LETTER O WITH MACRON LATIN CAPITAL LETTER O WITH MACRON + 0x004e, // 78 + 0x014e, // 79 LATIN SMALL LETTER O WITH BREVE LATIN CAPITAL LETTER O WITH BREVE + 0x0050, // 80 + 0x0150, // 81 LATIN SMALL LETTER O WITH DOUBLE ACUTE LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + 0x0052, // 82 + 0x0152, // 83 LATIN SMALL LIGATURE OE LATIN CAPITAL LIGATURE OE + 0x0054, // 84 + 0x0154, // 85 LATIN SMALL LETTER R WITH ACUTE LATIN CAPITAL LETTER R WITH ACUTE + 0x0056, // 86 + 0x0156, // 87 LATIN SMALL LETTER R WITH CEDILLA LATIN CAPITAL LETTER R WITH CEDILLA + 0x0058, // 88 + 0x0158, // 89 LATIN SMALL LETTER R WITH CARON LATIN CAPITAL LETTER R WITH CARON + 0x005a, // 90 + 0x015a, // 91 LATIN SMALL LETTER S WITH ACUTE LATIN CAPITAL LETTER S WITH ACUTE + 0x005c, // 92 + 0x015c, // 93 LATIN SMALL LETTER S WITH CIRCUMFLEX LATIN CAPITAL LETTER S WITH CIRCUMFLEX + 0x005e, // 94 + 0x015e, // 95 LATIN SMALL LETTER S WITH CEDILLA LATIN CAPITAL LETTER S WITH CEDILLA + 0x0060, // 96 + 0x0160, // 97 LATIN SMALL LETTER S WITH CARON LATIN CAPITAL LETTER S WITH CARON + 0x0062, // 98 + 0x0162, // 99 LATIN SMALL LETTER T WITH CEDILLA LATIN CAPITAL LETTER T WITH CEDILLA + 0x0064, // 100 + 0x0164, // 101 LATIN SMALL LETTER T WITH CARON LATIN CAPITAL LETTER T WITH CARON + 0x0066, // 102 + 0x0166, // 103 LATIN SMALL LETTER T WITH STROKE LATIN CAPITAL LETTER T WITH STROKE + 0x0068, // 104 + 0x0168, // 105 LATIN SMALL LETTER U WITH TILDE LATIN CAPITAL LETTER U WITH TILDE + 0x006a, // 106 + 0x016a, // 107 LATIN SMALL LETTER U WITH MACRON LATIN CAPITAL LETTER U WITH MACRON + 0x006c, // 108 + 0x016c, // 109 LATIN SMALL LETTER U WITH BREVE LATIN CAPITAL LETTER U WITH BREVE + 0x006e, // 110 + 0x016e, // 111 LATIN SMALL LETTER U WITH RING ABOVE LATIN CAPITAL LETTER U WITH RING ABOVE + 0x0070, // 112 + 0x0170, // 113 LATIN SMALL LETTER U WITH DOUBLE ACUTE LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + 0x0072, // 114 + 0x0172, // 115 LATIN SMALL LETTER U WITH OGONEK LATIN CAPITAL LETTER U WITH OGONEK + 0x0074, // 116 + 0x0174, // 117 LATIN SMALL LETTER W WITH CIRCUMFLEX LATIN CAPITAL LETTER W WITH CIRCUMFLEX + 0x0076, // 118 + 0x0176, // 119 LATIN SMALL LETTER Y WITH CIRCUMFLEX LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + 0x0078, // 120 + 0x0079, // 121 + 0x0179, // 122 LATIN SMALL LETTER Z WITH ACUTE LATIN CAPITAL LETTER Z WITH ACUTE + 0x007b, // 123 + 0x017b, // 124 LATIN SMALL LETTER Z WITH DOT ABOVE LATIN CAPITAL LETTER Z WITH DOT ABOVE + 0x007d, // 125 + 0x017d, // 126 LATIN SMALL LETTER Z WITH CARON LATIN CAPITAL LETTER Z WITH CARON + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0182, // 131 LATIN SMALL LETTER B WITH TOPBAR LATIN CAPITAL LETTER B WITH TOPBAR + 0x0084, // 132 + 0x0184, // 133 LATIN SMALL LETTER TONE SIX LATIN CAPITAL LETTER TONE SIX + 0x0086, // 134 + 0x0087, // 135 + 0x0187, // 136 LATIN SMALL LETTER C WITH HOOK LATIN CAPITAL LETTER C WITH HOOK + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x018b, // 140 LATIN SMALL LETTER D WITH TOPBAR LATIN CAPITAL LETTER D WITH TOPBAR + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0191, // 146 LATIN SMALL LETTER F WITH HOOK LATIN CAPITAL LETTER F WITH HOOK + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0198, // 153 LATIN SMALL LETTER K WITH HOOK LATIN CAPITAL LETTER K WITH HOOK + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x01a0, // 161 LATIN SMALL LETTER O WITH HORN LATIN CAPITAL LETTER O WITH HORN + 0x00a2, // 162 + 0x01a2, // 163 LATIN SMALL LETTER OI LATIN CAPITAL LETTER OI + 0x00a4, // 164 + 0x01a4, // 165 LATIN SMALL LETTER P WITH HOOK LATIN CAPITAL LETTER P WITH HOOK + 0x00a6, // 166 + 0x00a7, // 167 + 0x01a7, // 168 LATIN SMALL LETTER TONE TWO LATIN CAPITAL LETTER TONE TWO + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x01ac, // 173 LATIN SMALL LETTER T WITH HOOK LATIN CAPITAL LETTER T WITH HOOK + 0x00ae, // 174 + 0x00af, // 175 + 0x01af, // 176 LATIN SMALL LETTER U WITH HORN LATIN CAPITAL LETTER U WITH HORN + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x01b3, // 180 LATIN SMALL LETTER Y WITH HOOK LATIN CAPITAL LETTER Y WITH HOOK + 0x00b5, // 181 + 0x01b5, // 182 LATIN SMALL LETTER Z WITH STROKE LATIN CAPITAL LETTER Z WITH STROKE + 0x00b7, // 183 + 0x00b8, // 184 + 0x01b8, // 185 LATIN SMALL LETTER EZH REVERSED LATIN CAPITAL LETTER EZH REVERSED + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x01bc, // 189 LATIN SMALL LETTER TONE FIVE LATIN CAPITAL LETTER TONE FIVE + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x01c4, // 198 LATIN SMALL LETTER DZ WITH CARON LATIN CAPITAL LETTER DZ WITH CARON + 0x00c7, // 199 + 0x00c8, // 200 + 0x01c7, // 201 LATIN SMALL LETTER LJ LATIN CAPITAL LETTER LJ + 0x00ca, // 202 + 0x00cb, // 203 + 0x01ca, // 204 LATIN SMALL LETTER NJ LATIN CAPITAL LETTER NJ + 0x00cd, // 205 + 0x01cd, // 206 LATIN SMALL LETTER A WITH CARON LATIN CAPITAL LETTER A WITH CARON + 0x00cf, // 207 + 0x01cf, // 208 LATIN SMALL LETTER I WITH CARON LATIN CAPITAL LETTER I WITH CARON + 0x00d1, // 209 + 0x01d1, // 210 LATIN SMALL LETTER O WITH CARON LATIN CAPITAL LETTER O WITH CARON + 0x00d3, // 211 + 0x01d3, // 212 LATIN SMALL LETTER U WITH CARON LATIN CAPITAL LETTER U WITH CARON + 0x00d5, // 213 + 0x01d5, // 214 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + 0x00d7, // 215 + 0x01d7, // 216 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + 0x00d9, // 217 + 0x01d9, // 218 LATIN SMALL LETTER U WITH DIAERESIS AND CARON LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + 0x00db, // 219 + 0x01db, // 220 LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + 0x00dd, // 221 + 0x00de, // 222 + 0x01de, // 223 LATIN SMALL LETTER A WITH DIAERESIS AND MACRON LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + 0x00e0, // 224 + 0x01e0, // 225 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + 0x00e2, // 226 + 0x01e2, // 227 LATIN SMALL LIGATURE AE WITH MACRON LATIN CAPITAL LIGATURE AE MTH MACRON + 0x00e4, // 228 + 0x01e4, // 229 LATIN SMALL LETTER G WITH STROKE LATIN CAPITAL LETTER G WITH STROKE + 0x00e6, // 230 + 0x01e6, // 231 LATIN SMALL LETTER G WITH CARON LATIN CAPITAL LETTER G WITH CARON + 0x00e8, // 232 + 0x01e8, // 233 LATIN SMALL LETTER K WITH CARON LATIN CAPITAL LETTER K WITH CARON + 0x00ea, // 234 + 0x01ea, // 235 LATIN SMALL LETTER O WITH OGONEK LATIN CAPITAL LETTER O WITH OGONEK + 0x00ec, // 236 + 0x01ec, // 237 LATIN SMALL LETTER O WITH OGONEK AND MACRON LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + 0x00ee, // 238 + 0x01ee, // 239 LATIN SMALL LETTER EZH WITH CARON LATIN CAPITAL LETTER EZH WITH CARON + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x01f1, // 243 LATIN SMALL LETTER DZ LATIN CAPITAL LETTER DZ + 0x00f4, // 244 + 0x01f4, // 245 LATIN SMALL LETTER G WITH ACUTE LATIN CAPITAL LETTER G WITH ACUTE + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x01fa, // 251 LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + 0x00fc, // 252 + 0x01fc, // 253 LATIN SMALL LIGATURE AE WITH ACUTE LATIN CAPITAL LIGATURE AE WITH ACUTE + 0x00fe, // 254 + 0x01fe // 255 LATIN SMALL LETTER O WITH STROKE AND ACUTE LATIN CAPITAL LETTER O WITH STROKE AND ACUTE +}; + +// code page 2 +static wchar_t lc_tab_2[] = { + 0x0000, // 0 + 0x0200, // 1 LATIN SMALL LETTER A WITH DOUBLE GRAVE LATIN CAPITAL LETTER A WITH DOUBLE GRAVE + 0x0002, // 2 + 0x0202, // 3 LATIN SMALL LETTER A WITH INVERTED BREVE LATIN CAPITAL LETTER A WITH INVERTED BREVE + 0x0004, // 4 + 0x0204, // 5 LATIN SMALL LETTER E WITH DOUBLE GRAVE LATIN CAPITAL LETTER E WITH DOUBLE GRAVE + 0x0006, // 6 + 0x0206, // 7 LATIN SMALL LETTER E WITH INVERTED BREVE LATIN CAPITAL LETTER E WITH INVERTED BREVE + 0x0008, // 8 + 0x0208, // 9 LATIN SMALL LETTER I WITH DOUBLE GRAVE LATIN CAPITAL LETTER I WITH DOUBLE GRAVE + 0x000a, // 10 + 0x020a, // 11 LATIN SMALL LETTER I WITH INVERTED BREVE LATIN CAPITAL LETTER I WITH INVERTED BREVE + 0x000c, // 12 + 0x020c, // 13 LATIN SMALL LETTER O WITH DOUBLE GRAVE LATIN CAPITAL LETTER O WITH DOUBLE GRAVE + 0x000e, // 14 + 0x020e, // 15 LATIN SMALL LETTER O WITH INVERTED BREVE LATIN CAPITAL LETTER O WITH INVERTED BREVE + 0x0010, // 16 + 0x0210, // 17 LATIN SMALL LETTER R WITH DOUBLE GRAVE LATIN CAPITAL LETTER R WITH DOUBLE GRAVE + 0x0012, // 18 + 0x0212, // 19 LATIN SMALL LETTER R WITH INVERTED BREVE LATIN CAPITAL LETTER R WITH INVERTED BREVE + 0x0014, // 20 + 0x0214, // 21 LATIN SMALL LETTER U WITH DOUBLE GRAVE LATIN CAPITAL LETTER U WITH DOUBLE GRAVE + 0x0016, // 22 + 0x0216, // 23 LATIN SMALL LETTER U WITH INVERTED BREVE LATIN CAPITAL LETTER U WITH INVERTED BREVE + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0181, // 83 LATIN SMALL LETTER B WITH HOOK LATIN CAPITAL LETTER B WITH HOOK + 0x0186, // 84 LATIN SMALL LETTER OPEN O LATIN CAPITAL LETTER OPEN O + 0x0055, // 85 + 0x0056, // 86 + 0x018a, // 87 LATIN SMALL LETTER D WITH HOOK LATIN CAPITAL LETTER D WITH HOOK + 0x018e, // 88 LATIN SMALL LETTER REVERSED E LATIN CAPITAL LETTER REVERSED E + 0x018f, // 89 LATIN SMALL LETTER SCHWA LATIN CAPITAL LETTER SCHWA + 0x005a, // 90 + 0x0190, // 91 LATIN SMALL LETTER OPEN E LATIN CAPITAL LETTER OPEN E + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0193, // 96 LATIN SMALL LETTER G WITH HOOK LATIN CAPITAL LETTER G WITH HOOK + 0x0061, // 97 + 0x0062, // 98 + 0x0194, // 99 LATIN SMALL LETTER GAMMA LATIN CAPITAL LETTER GAMMA + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0197, // 104 LATIN SMALL LETTER I WITH STROKE LATIN CAPITAL LETTER I WITH STROKE + 0x0196, // 105 LATIN SMALL LETTER IOTA LATIN CAPITAL LETTER IOTA + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x019c, // 111 LATIN SMALL LETTER TURNED M LATIN CAPITAL LETTER TURNED M + 0x0070, // 112 + 0x0071, // 113 + 0x019d, // 114 LATIN SMALL LETTER N WITH LEFT HOOK LATIN CAPITAL LETTER N WITH LEFT HOOK + 0x0073, // 115 + 0x0074, // 116 + 0x019f, // 117 LATIN SMALL LETTER BARRED O LATIN CAPITAL LETTER O WITH MIDDLE TILDE + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x01a9, // 131 LATIN SMALL LETTER ESH LATIN CAPITAL LETTER ESH + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x01ae, // 136 LATIN SMALL LETTER T WITH RETROFLEX HOOK LATIN CAPITAL LETTER T WITH RETROFLEX HOOK + 0x0089, // 137 + 0x01b1, // 138 LATIN SMALL LETTER UPSILON LATIN CAPITAL LETTER UPSILON + 0x01b2, // 139 LATIN SMALL LETTER V WITH HOOK LATIN CAPITAL LETTER V WITH HOOK + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x01b7, // 146 LATIN SMALL LETTER EZH LATIN CAPITAL LETTER EZH + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x00e8, // 232 + 0x00e9, // 233 + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 3 +static wchar_t lc_tab_3[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x0386, // 172 GREEK SMALL LETTER ALPHA WITH TONOS GREEK CAPITAL LETTER ALPHA WITH TONOS + 0x0388, // 173 GREEK SMALL LETTER EPSILON WITH TONOS GREEK CAPITAL LETTER EPSILON WITH TONOS + 0x0389, // 174 GREEK SMALL LETTER ETA WITH TONOS GREEK CAPITAL LETTER ETA WITH TONOS + 0x038a, // 175 GREEK SMALL LETTER IOTA WITH TONOS GREEK CAPITAL LETTER IOTA WITH TONOS + 0x00b0, // 176 + 0x0391, // 177 GREEK SMALL LETTER ALPHA GREEK CAPITAL LETTER ALPHA + 0x0392, // 178 GREEK SMALL LETTER BETA GREEK CAPITAL LETTER BETA + 0x0393, // 179 GREEK SMALL LETTER GAMMA GREEK CAPITAL LETTER GAMMA + 0x0394, // 180 GREEK SMALL LETTER DELTA GREEK CAPITAL LETTER DELTA + 0x0395, // 181 GREEK SMALL LETTER EPSILON GREEK CAPITAL LETTER EPSILON + 0x0396, // 182 GREEK SMALL LETTER ZETA GREEK CAPITAL LETTER ZETA + 0x0397, // 183 GREEK SMALL LETTER ETA GREEK CAPITAL LETTER ETA + 0x0398, // 184 GREEK SMALL LETTER THETA GREEK CAPITAL LETTER THETA + 0x0399, // 185 GREEK SMALL LETTER IOTA GREEK CAPITAL LETTER IOTA + 0x039a, // 186 GREEK SMALL LETTER KAPPA GREEK CAPITAL LETTER KAPPA + 0x039b, // 187 GREEK SMALL LETTER LAMDA GREEK CAPITAL LETTER LAMDA + 0x039c, // 188 GREEK SMALL LETTER MU GREEK CAPITAL LETTER MU + 0x039d, // 189 GREEK SMALL LETTER NU GREEK CAPITAL LETTER NU + 0x039e, // 190 GREEK SMALL LETTER XI GREEK CAPITAL LETTER XI + 0x039f, // 191 GREEK SMALL LETTER OMICRON GREEK CAPITAL LETTER OMICRON + 0x03a0, // 192 GREEK SMALL LETTER PI GREEK CAPITAL LETTER PI + 0x03a1, // 193 GREEK SMALL LETTER RHO GREEK CAPITAL LETTER RHO + 0x00c2, // 194 + 0x03a3, // 195 GREEK SMALL LETTER SIGMA GREEK CAPITAL LETTER SIGMA + 0x03a4, // 196 GREEK SMALL LETTER TAU GREEK CAPITAL LETTER TAU + 0x03a5, // 197 GREEK SMALL LETTER UPSILON GREEK CAPITAL LETTER UPSILON + 0x03a6, // 198 GREEK SMALL LETTER PHI GREEK CAPITAL LETTER PHI + 0x03a7, // 199 GREEK SMALL LETTER CHI GREEK CAPITAL LETTER CHI + 0x03a8, // 200 GREEK SMALL LETTER PSI GREEK CAPITAL LETTER PSI + 0x03a9, // 201 GREEK SMALL LETTER OMEGA GREEK CAPITAL LETTER OMEGA + 0x03aa, // 202 GREEK SMALL LETTER IOTA WITH DIALYTIKA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA + 0x03ab, // 203 GREEK SMALL LETTER UPSILON WITH DIALYTIKA GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA + 0x038c, // 204 GREEK SMALL LETTER OMICRON WITH TONOS GREEK CAPITAL LETTER OMICRON WITH TONOS + 0x038e, // 205 GREEK SMALL LETTER UPSILON WITH TONOS GREEK CAPITAL LETTER UPSILON WITH TONOS + 0x038f, // 206 GREEK SMALL LETTER OMEGA WITH TONOS GREEK CAPITAL LETTER OMEGA WITH TONOS + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x03e2, // 227 COPTIC SMALL LETTER SHEI COPTIC CAPITAL LETTER SHEI + 0x00e4, // 228 + 0x03e4, // 229 COPTIC SMALL LETTER FEI COPTIC CAPITAL LETTER FEI + 0x00e6, // 230 + 0x03e6, // 231 COPTIC SMALL LETTER KHEI COPTIC CAPITAL LETTER KHEI + 0x00e8, // 232 + 0x03e8, // 233 COPTIC SMALL LETTER HORI COPTIC CAPITAL LETTER HORI + 0x00ea, // 234 + 0x03ea, // 235 COPTIC SMALL LETTER GANGIA COPTIC CAPITAL LETTER GANGIA + 0x00ec, // 236 + 0x03ec, // 237 COPTIC SMALL LETTER SHIMA COPTIC CAPITAL LETTER SHIMA + 0x00ee, // 238 + 0x03ee, // 239 COPTIC SMALL LETTER DEI COPTIC CAPITAL LETTER DEI + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 4 +static wchar_t lc_tab_4[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0410, // 48 CYRILLIC SMALL LETTER A CYRILLIC CAPITAL LETTER A + 0x0411, // 49 CYRILLIC SMALL LETTER BE CYRILLIC CAPITAL LETTER BE + 0x0412, // 50 CYRILLIC SMALL LETTER VE CYRILLIC CAPITAL LETTER VE + 0x0413, // 51 CYRILLIC SMALL LETTER GHE CYRILLIC CAPITAL LETTER GHE + 0x0414, // 52 CYRILLIC SMALL LETTER DE CYRILLIC CAPITAL LETTER DE + 0x0415, // 53 CYRILLIC SMALL LETTER IE CYRILLIC CAPITAL LETTER IE + 0x0416, // 54 CYRILLIC SMALL LETTER ZHE CYRILLIC CAPITAL LETTER ZHE + 0x0417, // 55 CYRILLIC SMALL LETTER ZE CYRILLIC CAPITAL LETTER ZE + 0x0418, // 56 CYRILLIC SMALL LETTER I CYRILLIC CAPITAL LETTER I + 0x0419, // 57 CYRILLIC SMALL LETTER SHORT I CYRILLIC CAPITAL LETTER SHORT I + 0x041a, // 58 CYRILLIC SMALL LETTER KA CYRILLIC CAPITAL LETTER KA + 0x041b, // 59 CYRILLIC SMALL LETTER EL CYRILLIC CAPITAL LETTER EL + 0x041c, // 60 CYRILLIC SMALL LETTER EM CYRILLIC CAPITAL LETTER EM + 0x041d, // 61 CYRILLIC SMALL LETTER EN CYRILLIC CAPITAL LETTER EN + 0x041e, // 62 CYRILLIC SMALL LETTER O CYRILLIC CAPITAL LETTER O + 0x041f, // 63 CYRILLIC SMALL LETTER PE CYRILLIC CAPITAL LETTER PE + 0x0420, // 64 CYRILLIC SMALL LETTER ER CYRILLIC CAPITAL LETTER ER + 0x0421, // 65 CYRILLIC SMALL LETTER ES CYRILLIC CAPITAL LETTER ES + 0x0422, // 66 CYRILLIC SMALL LETTER TE CYRILLIC CAPITAL LETTER TE + 0x0423, // 67 CYRILLIC SMALL LETTER U CYRILLIC CAPITAL LETTER U + 0x0424, // 68 CYRILLIC SMALL LETTER EF CYRILLIC CAPITAL LETTER EF + 0x0425, // 69 CYRILLIC SMALL LETTER HA CYRILLIC CAPITAL LETTER HA + 0x0426, // 70 CYRILLIC SMALL LETTER TSE CYRILLIC CAPITAL LETTER TSE + 0x0427, // 71 CYRILLIC SMALL LETTER CHE CYRILLIC CAPITAL LETTER CHE + 0x0428, // 72 CYRILLIC SMALL LETTER SHA CYRILLIC CAPITAL LETTER SHA + 0x0429, // 73 CYRILLIC SMALL LETTER SHCHA CYRILLIC CAPITAL LETTER SHCHA + 0x042a, // 74 CYRILLIC SMALL LETTER HARD SIGN CYRILLIC CAPITAL LETTER HARD SIGN + 0x042b, // 75 CYRILLIC SMALL LETTER YERU CYRILLIC CAPITAL LETTER YERU + 0x042c, // 76 CYRILLIC SMALL LETTER SOFT SIGN CYRILLIC CAPITAL LETTER SOFT SIGN + 0x042d, // 77 CYRILLIC SMALL LETTER E CYRILLIC CAPITAL LETTER E + 0x042e, // 78 CYRILLIC SMALL LETTER YU CYRILLIC CAPITAL LETTER YU + 0x042f, // 79 CYRILLIC SMALL LETTER YA CYRILLIC CAPITAL LETTER YA + 0x0050, // 80 + 0x0401, // 81 CYRILLIC SMALL LETTER IO CYRILLIC CAPITAL LETTER IO + 0x0402, // 82 CYRILLIC SMALL LETTER DJE (SERBOCROATIAN) CYRILLIC CAPITAL LETTER DJE (SERBOCROATIAN) + 0x0403, // 83 CYRILLIC SMALL LETTER GJE CYRILLIC CAPITAL LETTER GJE + 0x0404, // 84 CYRILLIC SMALL LETTER UKRAINIAN IE CYRILLIC CAPITAL LETTER UKRAINIAN IE + 0x0405, // 85 CYRILLIC SMALL LETTER DZE CYRILLIC CAPITAL LETTER DZE + 0x0406, // 86 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I CYRILLIC CAPITAL LETTER BYELORUSSIAN_UKRAINIAN I + 0x0407, // 87 CYRILLIC SMALL LETTER YI (UKRAINIAN) CYRILLIC CAPITAL LETTER YI (UKRAINIAN) + 0x0408, // 88 CYRILLIC SMALL LETTER JE CYRILLIC CAPITAL LETTER JE + 0x0409, // 89 CYRILLIC SMALL LETTER LJE CYRILLIC CAPITAL LETTER LJE + 0x040a, // 90 CYRILLIC SMALL LETTER NJE CYRILLIC CAPITAL LETTER NJE + 0x040b, // 91 CYRILLIC SMALL LETTER TSHE (SERBOCROATIAN) CYRILLIC CAPITAL LETTER TSHE (SERBOCROATIAN) + 0x040c, // 92 CYRILLIC SMALL LETTER KJE CYRILLIC CAPITAL LETTER KJE + 0x005d, // 93 + 0x040e, // 94 CYRILLIC SMALL LETTER SHORT U (BYELORUSSIAN) CYRILLIC CAPITAL LETTER SHORT U (BYELORUSSIAN) + 0x040f, // 95 CYRILLIC SMALL LETTER DZHE CYRILLIC CAPITAL LETTER DZHE + 0x0060, // 96 + 0x0460, // 97 CYRILLIC SMALL LETTER OMEGA CYRILLIC CAPITAL LETTER OMEGA + 0x0062, // 98 + 0x0462, // 99 CYRILLIC SMALL LETTER YAT CYRILLIC CAPITAL LETTER YAT + 0x0064, // 100 + 0x0464, // 101 CYRILLIC SMALL LETTER IOTIFIED E CYRILLIC CAPITAL LETTER IOTIFIED E + 0x0066, // 102 + 0x0466, // 103 CYRILLIC SMALL LETTER LITTLE YUS CYRILLIC CAPITAL LETTER LITTLE YUS + 0x0068, // 104 + 0x0468, // 105 CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS + 0x006a, // 106 + 0x046a, // 107 CYRILLIC SMALL LETTER BIG YUS CYRILLIC CAPITAL LETTER BIG YUS + 0x006c, // 108 + 0x046c, // 109 CYRILLIC SMALL LETTER IOTIFIED BIG YUS CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS + 0x006e, // 110 + 0x046e, // 111 CYRILLIC SMALL LETTER KSI CYRILLIC CAPITAL LETTER KSI + 0x0070, // 112 + 0x0470, // 113 CYRILLIC SMALL LETTER PSI CYRILLIC CAPITAL LETTER PSI + 0x0072, // 114 + 0x0472, // 115 CYRILLIC SMALL LETTER FITA CYRILLIC CAPITAL LETTER FITA + 0x0074, // 116 + 0x0474, // 117 CYRILLIC SMALL LETTER IZHITSA CYRILLIC CAPITAL LETTER IZHITSA + 0x0076, // 118 + 0x0476, // 119 CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT + 0x0078, // 120 + 0x0478, // 121 CYRILLIC SMALL LETTER UK CYRILLIC CAPITAL LETTER UK + 0x007a, // 122 + 0x047a, // 123 CYRILLIC SMALL LETTER ROUND OMEGA CYRILLIC CAPITAL LETTER ROUND OMEGA + 0x007c, // 124 + 0x047c, // 125 CYRILLIC SMALL LETTER OMEGA WITH TITLO CYRILLIC CAPITAL LETTER OMEGA WITH TITLO + 0x007e, // 126 + 0x047e, // 127 CYRILLIC SMALL LETTER OT CYRILLIC CAPITAL LETTER OT + 0x0080, // 128 + 0x0480, // 129 CYRILLIC SMALL LETTER KOPPA CYRILLIC CAPITAL LETTER KOPPA + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0490, // 145 CYRILLIC SMALL LETTER GHE WITH UPTURN CYRILLIC CAPITAL LETTER GHE WITH UPTURN + 0x0092, // 146 + 0x0492, // 147 CYRILLIC SMALL LETTER GHE WITH STROKE CYRILLIC CAPITAL LETTER GHE WITH STROKE + 0x0094, // 148 + 0x0494, // 149 CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK + 0x0096, // 150 + 0x0496, // 151 CYRILLIC SMALL LETTER ZHE WITH DESCENDER CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER + 0x0098, // 152 + 0x0498, // 153 CYRILLIC SMALL LETTER ZE WITH DESCENDER CYRILLIC CAPITAL LETTER ZE WITH DESCENDER + 0x009a, // 154 + 0x049a, // 155 CYRILLIC SMALL LETTER KA WITH DESCENDER CYRILLIC CAPITAL LETTER KA WITH DESCENDER + 0x009c, // 156 + 0x049c, // 157 CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE + 0x009e, // 158 + 0x049e, // 159 CYRILLIC SMALL LETTER KA WITH STROKE CYRILLIC CAPITAL LETTER KA WITH STROKE + 0x00a0, // 160 + 0x04a0, // 161 CYRILLIC SMALL LETTER EASHKIR KA CYRILLIC CAPITAL LETTER BASHKIR KA + 0x00a2, // 162 + 0x04a2, // 163 CYRILLIC SMALL LETTER EN WITH DESCENOER CYRILLIC CAPITAL LETTER EN WITH DESCENDER + 0x00a4, // 164 + 0x04a4, // 165 CYRILLIC SMALL LIGATURE EN GHE CYRILLIC CAPITAL LIGATURE EN GHF + 0x00a6, // 166 + 0x04a6, // 167 CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK (ABKHASIAN) CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK (ABKHASIAN) + 0x00a8, // 168 + 0x04a8, // 169 CYRILLIC SMALL LETTER ABKHASIAN HA CYRILLIC CAPITAL LETTER ABKHASIAN HA + 0x00aa, // 170 + 0x04aa, // 171 CYRILLIC SMALL LETTER ES WITH DESCENDER CYRILLIC CAPITAL LETTER ES WITH DESCENDER + 0x00ac, // 172 + 0x04ac, // 173 CYRILLIC SMALL LETTER TE WITH DESCENDER CYRILLIC CAPITAL LETTER TE WITH DESCENDER + 0x00ae, // 174 + 0x04ae, // 175 CYRILLIC SMALL LETTER STRAIGHT U CYRILLIC CAPITAL LETTER STRAIGHT U + 0x00b0, // 176 + 0x04b0, // 177 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE + 0x00b2, // 178 + 0x04b2, // 179 CYRILLIC SMALL LETTER HA WITH DESCENDER CYRILLIC CAPITAL LETTER HA WITH DESCENDER + 0x00b4, // 180 + 0x04b4, // 181 CYRILLIC SMALL LIGATURE TE TSE (ABKHASIAN) CYRILLIC CAPITAL LIGATURE TE TSE (ABKHASIAN) + 0x00b6, // 182 + 0x04b6, // 183 CYRILLIC SMALL LETTER CHE WITH DESCENDER CYRILLIC CAPITAL LETTER CHE WITH DESCENDER + 0x00b8, // 184 + 0x04b8, // 185 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE + 0x00ba, // 186 + 0x04ba, // 187 CYRILLIC SMALL LETTER SHHA CYRILLIC CAPITAL LETTER SHHA + 0x00bc, // 188 + 0x04bc, // 189 CYRILLIC SMALL LETTER ABKHASIAN CHE CYRILLIC CAPITAL LETTER ABKHASIAN CHE + 0x00be, // 190 + 0x04be, // 191 CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER + 0x00c0, // 192 + 0x00c1, // 193 + 0x04c1, // 194 CYRILLIC SMALL LETTER ZHE WITH BREVE CYRILLIC CAPITAL LETTER ZHE WITH BREVE + 0x00c3, // 195 + 0x04c3, // 196 CYRILLIC SMALL LETTER KA WITH HOOK CYRILLIC CAPITAL LETTER KA WITH HOOK + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x04c7, // 200 CYRILLIC SMALL LETTER EN WITH HOOK CYRILLIC CAPITAL LETTER EN WITH HOOK + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x04cb, // 204 CYRILLIC SMALL LETTER KHAKASSIAN CHE CYRILLIC CAPITAL LETTER KHAKASSIAN CHE + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x04d0, // 209 CYRILLIC SMALL LETTER A WITH BREVE CYRILLIC CAPITAL LETTER A WITH BREVE + 0x00d2, // 210 + 0x04d2, // 211 CYRILLIC SMALL LETTER A WITH DIAERESIS CYRILLIC CAPITAL LETTER A WITH DIAERESIS + 0x00d4, // 212 + 0x04d4, // 213 CYRILLIC SMALL LIGATURE A IE CYRILLIC CAPITAL LIGATURE A IE + 0x00d6, // 214 + 0x04d6, // 215 CYRILLIC SMALL LETTER IE WITH BREVE CYRILLIC CAPITAL LETTER IE WITH BREVE + 0x00d8, // 216 + 0x04d8, // 217 CYRILLIC SMALL LETTER SCHWA CYRILLIC CAPITAL LETTER SCHWA + 0x00da, // 218 + 0x04da, // 219 CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS + 0x00dc, // 220 + 0x04dc, // 221 CYRILLIC SMALL LETTER ZHE WITH DIAERESIS CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS + 0x00de, // 222 + 0x04de, // 223 CYRILLIC SMALL LETTER ZE WITH DIAERESIS CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS + 0x00e0, // 224 + 0x04e0, // 225 CYRILLIC SMALL LETTER ABKHASIAN DZE CYRILLIC CAPITAL LETTER ABKHASIAN DZE + 0x00e2, // 226 + 0x04e2, // 227 CYRILLIC SMALL LETTER I WITH MACRON CYRILLIC CAPITAL LETTER I WITH MACRON + 0x00e4, // 228 + 0x04e4, // 229 CYRILLIC SMALL LETTER I WITH DIAERESIS CYRILLIC CAPITAL LETTER I WITH DIAERESIS + 0x00e6, // 230 + 0x04e6, // 231 CYRILLIC SMALL LETTER O WITH DIAERESIS CYRILLIC CAPITAL LETTER O WITH DIAERESIS + 0x00e8, // 232 + 0x04e8, // 233 CYRILLIC SMALL LETTER BARRED O CYRILLIC CAPITAL LETTER BARRED O + 0x00ea, // 234 + 0x04ea, // 235 CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x04ee, // 239 CYRILLIC SMALL LETTER U WITH MACRON CYRILLIC CAPITAL LETTER U WITH MACRON + 0x00f0, // 240 + 0x04f0, // 241 CYRILLIC SMALL LETTER U WITH DIAERESIS CYRILLIC CAPITAL LETTER U WITH DIAERESIS + 0x00f2, // 242 + 0x04f2, // 243 CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE + 0x00f4, // 244 + 0x04f4, // 245 CYRILLIC SMALL LETTER CHE AITH DIAERESIS CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x04f8, // 249 CYRILLIC SMALL LETTER YERU WITH DIAERESIS CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 5 +static wchar_t lc_tab_5[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0531, // 97 ARMENIAN SMALL LETTER AYB ARMENIAN CAPITAL LETTER AYB + 0x0532, // 98 ARMENIAN SMALL LETTER BEN ARMENIAN CAPITAL LETTER BEN + 0x0533, // 99 ARMENIAN SMALL LETTER GIM ARMENIAN CAPITAL LETTER GIM + 0x0534, // 100 ARMENIAN SMALL LETTER DA ARMENIAN CAPITAL LETTER DA + 0x0535, // 101 ARMENIAN SMALL LETTER ECH ARMENIAN CAPITAL LETTER ECH + 0x0536, // 102 ARMENIAN SMALL LETTER ZA ARMENIAN CAPITAL LETTER ZA + 0x0537, // 103 ARMENIAN SMALL LETTER EH ARMENIAN CAPITAL LETTER EH + 0x0538, // 104 ARMENIAN SMALL LETTER ET ARMENIAN CAPITAL LETTER ET + 0x0539, // 105 ARMENIAN SMALL LETTER TO ARMENIAN CAPITAL LETTER TO + 0x053a, // 106 ARMENIAN SMALL LETTER ZHE ARMENIAN CAPITAL LETTER ZHE + 0x053b, // 107 ARMENIAN SMALL LETTER INI ARMENIAN CAPITAL LETTER INI + 0x053c, // 108 ARMENIAN SMALL LETTER LIWN ARMENIAN CAPITAL LETTER LIWN + 0x053d, // 109 ARMENIAN SMALL LETTER XEH ARMENIAN CAPITAL LETTER XEH + 0x053e, // 110 ARMENIAN SMALL LETTER CA ARMENIAN CAPITAL LETTER CA + 0x053f, // 111 ARMENIAN SMALL LETTER KEN ARMENIAN CAPITAL LETTER KEN + 0x0540, // 112 ARMENIAN SMALL LETTER HO ARMENIAN CAPITAL LETTER HO + 0x0541, // 113 ARMENIAN SMALL LETTER JA ARMENIAN CAPITAL LETTER JA + 0x0542, // 114 ARMENIAN SMALL LETTER GHAD ARMENIAN CAPITAL LETTER GHAD + 0x0543, // 115 ARMENIAN SMALL LETTER CHEH ARMENIAN CAPITAL LETTER CHEH + 0x0544, // 116 ARMENIAN SMALL LETTER MEN ARMENIAN CAPITAL LETTER MEN + 0x0545, // 117 ARMENIAN SMALL LETTER YI ARMENIAN CAPITAL LETTER YI + 0x0546, // 118 ARMENIAN SMALL LETTER NOW ARMENIAN CAPITAL LETTER NOW + 0x0547, // 119 ARMENIAN SMALL LETTER SNA ARMENIAN CAPITAL LETTER SHA + 0x0548, // 120 ARMENIAN SMALL LETTER VO ARMENIAN CAPITAL LETTER VO + 0x0549, // 121 ARMENIAN SMALL LETTER CHA ARMENIAN CAPITAL LETTER CHA + 0x054a, // 122 ARMENIAN SMALL LETTER PEH ARMENIAN CAPITAL LETTER PEH + 0x054b, // 123 ARMENIAN SMALL LETTER JHEH ARMENIAN CAPITAL LETTER JHEH + 0x054c, // 124 ARMENIAN SMALL LETTER RA ARMENIAN CAPITAL LETTER RA + 0x054d, // 125 ARMENIAN SMALL LETTER SEH ARMENIAN CAPITAL LETTER SEH + 0x054e, // 126 ARMENIAN SMALL LETTER VEW ARMENIAN CAPITAL LETTER VEW + 0x054f, // 127 ARMENIAN SMALL LETTER TIWN ARMENIAN CAPITAL LETTER TIWN + 0x0550, // 128 ARMENIAN SMALL LETTER REH ARMENIAN CAPITAL LETTER REH + 0x0551, // 129 ARMENIAN SMALL LETTER CO ARMENIAN CAPITAL LETTER CO + 0x0552, // 130 ARMENIAN SMALL LETTER YIWN ARMENIAN CAPITAL LETTER YIWN + 0x0553, // 131 ARMENIAN SMALL LETTER PIWP ARMENIAN CAPITAL LETTER PIWR + 0x0554, // 132 ARMENIAN SMALL LETTER KEH ARMENIAN CAPITAL LETTER KEH + 0x0555, // 133 ARMENIAN SMALL LETTER OH ARMENIAN CAPITAL LETTER OH + 0x0556, // 134 ARMENIAN SMALL LETTER FEH ARMENIAN CAPITAL LETTER FEH + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x00e8, // 232 + 0x00e9, // 233 + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 16 +static wchar_t lc_tab_16[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x10a0, // 208 GEORGIAN LETTER AN GEORGIAN CAPITAL LETTER AN (KHUTSURI) + 0x10a1, // 209 GEORGIAN LETTER BAN GEORGIAN CAPITAL LETTER BAN (KHUTSURI) + 0x10a2, // 210 GEORGIAN LETTER GAN GEORGIAN CAPITAL LETTER GAN (KHUTSURI) + 0x10a3, // 211 GEORGIAN LETTER DON GEORGIAN CAPITAL LETTER DON (KHUTSURI) + 0x10a4, // 212 GEORGIAN LETTER EN GEORGIAN CAPITAL LETTER EN (KHUTSURI) + 0x10a5, // 213 GEORGIAN LETTER VIN GEORGIAN CAPITAL LETTER VIN (KHUTSURI) + 0x10a6, // 214 GEORGIAN LETTER ZEN GEORGIAN CAPITAL LETTER ZEN (KHUTSURI) + 0x10a7, // 215 GEORGIAN LETTER TAN GEORGIAN CAPITAL LETTER TAN (KHUTSURI) + 0x10a8, // 216 GEORGIAN LETTER IN GEORGIAN CAPITAL LETTER IN (KHUTSURI) + 0x10a9, // 217 GEORGIAN LETTER KAN GEORGIAN CAPITAL LETTER KAN (KHUTSURI) + 0x10aa, // 218 GEORGIAN LETTER LAS GEORGIAN CAPITAL LETTER LAS (KHUTSURI) + 0x10ab, // 219 GEORGIAN LETTER MAN GEORGIAN CAPITAL LETTER MAN (KHUTSURI) + 0x10ac, // 220 GEORGIAN LETTER NAR GEORGIAN CAPITAL LETTER NAR (KHUTSURI) + 0x10ad, // 221 GEORGIAN LETTER ON GEORGIAN CAPITAL LETTER ON (KHUTSURI) + 0x10ae, // 222 GEORGIAN LETTER PAR GEORGIAN CAPITAL LETTER PAR (KHUTSURI) + 0x10af, // 223 GEORGIAN LETTER ZHAR GEORGIAN CAPITAL LETTER ZHAR (KHUTSURI) + 0x10b0, // 224 GEORGIAN LETTER RAE GEORGIAN CAPITAL LETTER RAE (KHUTSURI) + 0x10b1, // 225 GEORGIAN LETTER SAN GEORGIAN CAPITAL LETTER SAN (KHUTSURI) + 0x10b2, // 226 GEORGIAN LETTER TAR GEORGIAN CAPITAL LETTER TAR (KHUTSURI) + 0x10b3, // 227 GEORGIAN LETTER UN GEORGIAN CAPITAL LETTER UN (KHUTSURI) + 0x10b4, // 228 GEORGIAN LETTER PHAR GEORGIAN CAPITAL LETTER PHAR (KHUTSURI) + 0x10b5, // 229 GEORGIAN LETTER KHAR GEORGIAN CAPITAL LETTER KHAR (KHUTSURI) + 0x10b6, // 230 GEORGIAN LETTER GHAN GEORGIAN CAPITAL LETTER GHAN (KHUTSURI) + 0x10b7, // 231 GEORGIAN LETTER QAR GEORGIAN CAPITAL LETTER QAR (KHUTSURI) + 0x10b8, // 232 GEORGIAN LETTER SHIN GEORGIAN CAPITAL LETTER SHIN (KHUTSURI) + 0x10b9, // 233 GEORGIAN LETTER CHIN GEORGIAN CAPITAL LETTER CHIN (KHUTSURI) + 0x10ba, // 234 GEORGIAN LETTER CAN GEORGIAN CAPITAL LETTER CAN (KHUTSURI) + 0x10bb, // 235 GEORGIAN LETTER JIL GEORGIAN CAPITAL LETTER JIL (KHUTSURI) + 0x10bc, // 236 GEORGIAN LETTER CIL GEORGIAN CAPITAL LETTER CIL (KHUTSURI) + 0x10bd, // 237 GEORGIAN LETTER CHAR GEORGIAN CAPITAL LETTER CHAR (KHUTSURI) + 0x10be, // 238 GEORGIAN LETTER XAN GEORGIAN CAPITAL LETTER XAN (KHUTSURI) + 0x10bf, // 239 GEORGIAN LETTER JHAN GEORGIAN CAPITAL LETTER JHAN (KHUTSURI) + 0x10c0, // 240 GEORGIAN LETTER HAE GEORGIAN CAPITAL LETTER HAE (KHUTSURI) + 0x10c1, // 241 GEORGIAN LETTER HE GEORGIAN CAPITAL LETTER HE (KHUTSURI) + 0x10c2, // 242 GEORGIAN LETTER HIE GEORGIAN CAPITAL LETTER HIE (KHUTSURI) + 0x10c3, // 243 GEORGIAN LETTER WE GEORGIAN CAPITAL LETTER WE (KHUTSURI) + 0x10c4, // 244 GEORGIAN LETTER HAR GEORGIAN CAPITAL LETTER HAR (KHUTSURI) + 0x10c5, // 245 GEORGIAN LETTER HOE GEORGIAN CAPITAL LETTER HOE (KHUTSURI) + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 30 +static wchar_t lc_tab_30[] = { + 0x0000, // 0 + 0x1e00, // 1 LATIN SMALL LETTER A WITH RING BELOW LATIN CAPITAL LETTER A WITH RING BELOW + 0x0002, // 2 + 0x1e02, // 3 LATIN SMALL LETTER B WITH DOT ABOVE LATIN CAPITAL LETTER B WITH DOT ABOVE + 0x0004, // 4 + 0x1e04, // 5 LATIN SMALL LETTER B WITH DOT BELOW LATIN CAPITAL LETTER B WITH DOT BELOW + 0x0006, // 6 + 0x1e06, // 7 LATIN SMALL LETTER B WITH LINE BELOW LATIN CAPITAL LETTER B WITH LINE BELOW + 0x0008, // 8 + 0x1e08, // 9 LATIN SMALL LETTER C WITH CEDILLA AND ACUTE LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + 0x000a, // 10 + 0x1e0a, // 11 LATIN SMALL LETTER D WITH DOT ABOVE LATIN CAPITAL LETTER D WITH DOT ABOVE + 0x000c, // 12 + 0x1e0c, // 13 LATIN SMALL LETTER D WITH DOT BELOW LATIN CAPITAL LETTER D WITH DOT BELOW + 0x000e, // 14 + 0x1e0e, // 15 LATIN SMALL LETTER D WITH LINE BELOW LATIN CAPITAL LETTER D WITH LINE BELOW + 0x0010, // 16 + 0x1e10, // 17 LATIN SMALL LETTER D WITH CEDILLA LATIN CAPITAL LETTER D WITH CEDILLA + 0x0012, // 18 + 0x1e12, // 19 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW + 0x0014, // 20 + 0x1e14, // 21 LATIN SMALL LETTER E WITH MACRON AND GRAVE LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + 0x0016, // 22 + 0x1e16, // 23 LATIN SMALL LETTER E WITH MACRON AND ACUTE LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + 0x0018, // 24 + 0x1e18, // 25 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW + 0x001a, // 26 + 0x1e1a, // 27 LATIN SMALL LETTER E WITH TILDE BELOW LATIN CAPITAL LETTER E WITH TILDE BELOW + 0x001c, // 28 + 0x1e1c, // 29 LATIN SMALL LETTER E WITH CEDILLA AND BREVE LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + 0x001e, // 30 + 0x1e1e, // 31 LATIN SMALL LETTER F WITH DOT ABOVE LATIN CAPITAL LETTER F WITH DOT ABOVE + 0x0020, // 32 + 0x1e20, // 33 LATIN SMALL LETTER G WITH MACRON LATIN CAPITAL LETTER G WITH MACRON + 0x0022, // 34 + 0x1e22, // 35 LATIN SMALL LETTER H WITH DOT ABOVE LATIN CAPITAL LETTER H WITH DOT ABOVE + 0x0024, // 36 + 0x1e24, // 37 LATIN SMALL LETTER H WITH DOT BELOW LATIN CAPITAL LETTER H WITH DOT BELOW + 0x0026, // 38 + 0x1e26, // 39 LATIN SMALL LETTER H WITH DIAERESIS LATIN CAPITAL LETTER H WITH DIAERESIS + 0x0028, // 40 + 0x1e28, // 41 LATIN SMALL LETTER H WITH CEDILLA LATIN CAPITAL LETTER H WITH CEDILLA + 0x002a, // 42 + 0x1e2a, // 43 LATIN SMALL LETTER H WITH BREVE BELOW LATIN CAPITAL LETTER H WITH BREVE BELOW + 0x002c, // 44 + 0x1e2c, // 45 LATIN SMALL LETTER I WITH TILDE BELOW LATIN CAPITAL LETTER I WITH TILDE BELOW + 0x002e, // 46 + 0x1e2e, // 47 LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + 0x0030, // 48 + 0x1e30, // 49 LATIN SMALL LETTER K WITH ACUTE LATIN CAPITAL LETTER K WITH ACUTE + 0x0032, // 50 + 0x1e32, // 51 LATIN SMALL LETTER K WITH DOT BELOW LATIN CAPITAL LETTER K WITH DOT BELOW + 0x0034, // 52 + 0x1e34, // 53 LATIN SMALL LETTER K WITH LINE BELOW LATIN CAPITAL LETTER K WITH LINE BELOW + 0x0036, // 54 + 0x1e36, // 55 LATIN SMALL LETTER L WITH DOT BELOW LATIN CAPITAL LETTER L WITH DOT BELOW + 0x0038, // 56 + 0x1e38, // 57 LATIN SMALL LETTER L WITH DOT BELOW AND MACRON LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + 0x003a, // 58 + 0x1e3a, // 59 LATIN SMALL LETTER L WITH LINE BELOW LATIN CAPITAL LETTER L WITH LINE BELOW + 0x003c, // 60 + 0x1e3c, // 61 LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW + 0x003e, // 62 + 0x1e3e, // 63 LATIN SMALL LETTER M WITH ACUTE LATIN CAPITAL LETTER M WITH ACUTE + 0x0040, // 64 + 0x1e40, // 65 LATIN SMALL LETTER M WITH DOT ABOVE LATIN CAPITAL LETTER M WITH DOT ABOVE + 0x0042, // 66 + 0x1e42, // 67 LATIN SMALL LETTER M WITH DOT BELOW LATIN CAPITAL LETTER M WITH DOT BELOW + 0x0044, // 68 + 0x1e44, // 69 LATIN SMALL LETTER N WITH DOT ABOVE LATIN CAPITAL LETTER N WITH DOT ABOVE + 0x0046, // 70 + 0x1e46, // 71 LATIN SMALL LETTER N WITH DOT BELOW LATIN CAPITAL LETTER N WITH DOT BELOW + 0x0048, // 72 + 0x1e48, // 73 LATIN SMALL LETTER N WITH LINE BELOW LATIN CAPITAL LETTER N WITH LINE BELOW + 0x004a, // 74 + 0x1e4a, // 75 LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW + 0x004c, // 76 + 0x1e4c, // 77 LATIN SMALL LETTER O WITH TILDE AND ACUTE LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + 0x004e, // 78 + 0x1e4e, // 79 LATIN SMALL LETTER O WITH TlLDE AND DIAERESIS LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + 0x0050, // 80 + 0x1e50, // 81 LATIN SMALL LETTER O WITH MACRON AND GRAVE LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + 0x0052, // 82 + 0x1e52, // 83 LATIN SMALL LETTER O WITH MACRON AND ACUTE LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + 0x0054, // 84 + 0x1e54, // 85 LATIN SMALL LETTER P WITH ACUTE LATIN CAPITAL LETTER P WITH ACUTE + 0x0056, // 86 + 0x1e56, // 87 LATIN SMALL LETTER P WITH DOT ABOVE LATIN CAPITAL LETTER P WITH DOT ABOVE + 0x0058, // 88 + 0x1e58, // 89 LATIN SMALL LETTER R WITH DOT ABOVE LATIN CAPITAL LETTER R WITH DOT ABOVE + 0x005a, // 90 + 0x1e5a, // 91 LATIN SMALL LETTER R WITH DOT BELOW LATIN CAPITAL LETTER R WITH DOT BELOW + 0x005c, // 92 + 0x1e5c, // 93 LATIN SMALL LETTER R WITH DOT BELOW AND MACRON LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + 0x005e, // 94 + 0x1e5e, // 95 LATIN SMALL LETTER R WITH LINE BELOW LATIN CAPITAL LETTER R WITH LINE BELOW + 0x0060, // 96 + 0x1e60, // 97 LATIN SMALL LETTER S WITH DOT ABOVE LATIN CAPITAL LETTER S WITH DOT ABOVE + 0x0062, // 98 + 0x1e62, // 99 LATIN SMALL LETTER S WITH DOT BELOW LATIN CAPITAL LETTER S WITH DOT BELOW + 0x0064, // 100 + 0x1e64, // 101 LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + 0x0066, // 102 + 0x1e66, // 103 LATIN SMALL LETTER S WITH CARON AND DOT ABOVE LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + 0x0068, // 104 + 0x1e68, // 105 LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + 0x006a, // 106 + 0x1e6a, // 107 LATIN SMALL LETTER T WITH DOT ABOVE LATIN CAPITAL LETTER T WITH DOT ABOVE + 0x006c, // 108 + 0x1e6c, // 109 LATIN SMALL LETTER T WITH DOT BELOW LATIN CAPITAL LETTER T WITH DOT BELOW + 0x006e, // 110 + 0x1e6e, // 111 LATIN SMALL LETTER T WITH LINE BELOW LATIN CAPITAL LETTER T WITH LINE BELOW + 0x0070, // 112 + 0x1e70, // 113 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW + 0x0072, // 114 + 0x1e72, // 115 LATIN SMALL LETTER U WITH DIAERESIS BELOW LATIN CAPITAL LETTER U WITH DIAERESIS BELOW + 0x0074, // 116 + 0x1e74, // 117 LATIN SMALL LETTER U WITH TILDE BELOW LATIN CAPITAL LETTER U WITH TILDE BELOW + 0x0076, // 118 + 0x1e76, // 119 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW + 0x0078, // 120 + 0x1e78, // 121 LATIN SMALL LETTER U WITH TILDE AND ACUTE LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + 0x007a, // 122 + 0x1e7a, // 123 LATIN SMALL LETTER U WITH MACRON AND DIAERESIS LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + 0x007c, // 124 + 0x1e7c, // 125 LATIN SMALL LETTER V WITH TILDE LATIN CAPITAL LETTER V WITH TILDE + 0x007e, // 126 + 0x1e7e, // 127 LATIN SMALL LETTER V WITH DOT BELOW LATIN CAPITAL LETTER V WITH DOT BELOW + 0x0080, // 128 + 0x1e80, // 129 LATIN SMALL LETTER W WITH GRAVE LATIN CAPITAL LETTER W WITH GRAVE + 0x0082, // 130 + 0x1e82, // 131 LATIN SMALL LETTER W WITH ACUTE LATIN CAPITAL LETTER W WITH ACUTE + 0x0084, // 132 + 0x1e84, // 133 LATIN SMALL LETTER W WITH DIAERESIS LATIN CAPITAL LETTER W WITH DIAERESIS + 0x0086, // 134 + 0x1e86, // 135 LATIN SMALL LETTER W WITH DOT ABOVE LATIN CAPITAL LETTER W WITH DOT ABOVE + 0x0088, // 136 + 0x1e88, // 137 LATIN SMALL LETTER W WITH DOT BELOW LATIN CAPITAL LETTER W WITH DOT BELOW + 0x008a, // 138 + 0x1e8a, // 139 LATIN SMALL LETTER X WITH DOT ABOVE LATIN CAPITAL LETTER X WITH DOT ABOVE + 0x008c, // 140 + 0x1e8c, // 141 LATIN SMALL LETTER X WITH DIAERESIS LATIN CAPITAL LETTER X5 WITH DIAERESIS + 0x008e, // 142 + 0x1e8e, // 143 LATIN SMALL LETTER Y WITH DOT ABOVE LATIN CAPITAL LETTER Y WITH DOT ABOVE + 0x0090, // 144 + 0x1e90, // 145 LATIN SMALL LETTER Z WITH CIRCUMFLEX LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + 0x0092, // 146 + 0x1e92, // 147 LATIN SMALL LETTER Z WITH DOT BELOW LATIN CAPITAL LETTER Z WITH DOT BELOW + 0x0094, // 148 + 0x1e94, // 149 LATIN SMALL LETTER Z WITH LINE BELOW LATIN CAPITAL LETTER Z WITH LINE BELOW + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x1ea0, // 161 LATIN SMALL LETTER A WITH DOT BELOW LATIN CAPITAL LETTER A WITH DOT BELOW + 0x00a2, // 162 + 0x1ea2, // 163 LATIN SMALL LETTER A WITH HOOK ABOVE LATIN CAPITAL LETTER A WITH HOOK ABOVE + 0x00a4, // 164 + 0x1ea4, // 165 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + 0x00a6, // 166 + 0x1ea6, // 167 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + 0x00a8, // 168 + 0x1ea8, // 169 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + 0x00aa, // 170 + 0x1eaa, // 171 LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + 0x00ac, // 172 + 0x1eac, // 173 LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + 0x00ae, // 174 + 0x1eae, // 175 LATIN SMALL LETTER A WITH BREVE AND ACUTE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + 0x00b0, // 176 + 0x1eb0, // 177 LATIN SMALL LETTER A WITH BREVE AND GRAVE LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + 0x00b2, // 178 + 0x1eb2, // 179 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + 0x00b4, // 180 + 0x1eb4, // 181 LATIN SMALL LETTER A WITH BREVE AND TILDE LATIN CAPITAL LETTER A WITH BREVE AND TILDE + 0x00b6, // 182 + 0x1eb6, // 183 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + 0x00b8, // 184 + 0x1eb8, // 185 LATIN SMALL LETTER E WITH DOT BELOW LATIN CAPITAL LETTER E WITH DOT BELOW + 0x00ba, // 186 + 0x1eba, // 187 LATIN SMALL LETTER E WITH HOOK ABOVE LATIN CAPITAL LETTER E WITH HOOK ABOVE + 0x00bc, // 188 + 0x1ebc, // 189 LATIN SMALL LETTER E WITH TILDE LATIN CAPITAL LETTER E WITH TILDE + 0x00be, // 190 + 0x1ebe, // 191 LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + 0x00c0, // 192 + 0x1ec0, // 193 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + 0x00c2, // 194 + 0x1ec2, // 195 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + 0x00c4, // 196 + 0x1ec4, // 197 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + 0x00c6, // 198 + 0x1ec6, // 199 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + 0x00c8, // 200 + 0x1ec8, // 201 LATIN SMALL LETTER I WITH HOOK ABOVE LATIN CAPITAL LETTER I WITH HOOK ABOVE + 0x00ca, // 202 + 0x1eca, // 203 LATIN SMALL LETTER I WITH DOT BELOW LATIN CAPITAL LETTER I WITH DOT BELOW + 0x00cc, // 204 + 0x1ecc, // 205 LATIN SMALL LETTER O WITH DOT BELOW LATIN CAPITAL LETTER O WITH DOT BELOW + 0x00ce, // 206 + 0x1ece, // 207 LATIN SMALL LETTER O WITH HOOK ABOVE LATIN CAPITAL LETTER O WITH HOOK ABOVE + 0x00d0, // 208 + 0x1ed0, // 209 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + 0x00d2, // 210 + 0x1ed2, // 211 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + 0x00d4, // 212 + 0x1ed4, // 213 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + 0x00d6, // 214 + 0x1ed6, // 215 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + 0x00d8, // 216 + 0x1ed8, // 217 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + 0x00da, // 218 + 0x1eda, // 219 LATIN SMALL LETTER O WITH HORN AND ACUTE LATIN CAPITAL LETTER O WITH HORN AND ACUTE + 0x00dc, // 220 + 0x1edc, // 221 LATIN SMALL LETTER O WITH HORN AND GRAVE LATIN CAPITAL LETTER O WITH HORN AND GRAVE + 0x00de, // 222 + 0x1ede, // 223 LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + 0x00e0, // 224 + 0x1ee0, // 225 LATIN SMALL LETTER O WITH HORN AND TILDE LATIN CAPITAL LETTER O WITH HORN AND TILDE + 0x00e2, // 226 + 0x1ee2, // 227 LATIN SMALL LETTER O WITH HORN AND DOT BELOW LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + 0x00e4, // 228 + 0x1ee4, // 229 LATIN SMALL LETTER U WITH DOT BELOW LATIN CAPITAL LETTER U WITH DOT BELOW + 0x00e6, // 230 + 0x1ee6, // 231 LATIN SMALL LETTER U WITH HOOK ABOVE LATIN CAPITAL LETTER U WITH HOOK ABOVE + 0x00e8, // 232 + 0x1ee8, // 233 LATIN SMALL LETTER U WITH HORN AND ACUTE LATIN CAPITAL LETTER U WITH HORN AND ACUTE + 0x00ea, // 234 + 0x1eea, // 235 LATIN SMALL LETTER U WITH HORN AND GRAVE LATIN CAPITAL LETTER U WITH HORN AND GRAVE + 0x00ec, // 236 + 0x1eec, // 237 LATIN SMALL LETTER U WITH HORN AND HOCK ABOVE LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + 0x00ee, // 238 + 0x1eee, // 239 LATIN SMALL LETTER U WITH HORN AND TILDE LATIN CAPITAL LETTER U WITH HORN AND TILDE + 0x00f0, // 240 + 0x1ef0, // 241 LATIN SMALL LETTER U WITH HORN AND DOT BELOW LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + 0x00f2, // 242 + 0x1ef2, // 243 LATIN SMALL LETTER Y WITH GRAVE LATIN CAPITAL LETTER Y WITH GRAVE + 0x00f4, // 244 + 0x1ef4, // 245 LATIN SMALL LETTER Y WITH DOT BELOW LATIN CAPITAL LETTER Y WITH DOT BELOW + 0x00f6, // 246 + 0x1ef6, // 247 LATIN SMALL LETTER Y WITH HOOK ABOVE LATIN CAPITAL LETTER Y WITH HOOK ABOVE + 0x00f8, // 248 + 0x1ef8, // 249 LATIN SMALL LETTER Y WITH TILDE LATIN CAPITAL LETTER Y WITH TILDE + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 31 +static wchar_t lc_tab_31[] = { + 0x1f08, // 0 GREEK SMALL LETTER ALPHA WITH PSILI GREEK CAPITAL LETTER ALPHA WITH PSILI + 0x1f09, // 1 GREEK SMALL LETTER ALPHA WITH DASIA GREEK CAPITAL LETTER ALPHA WITH DASIA + 0x1f0a, // 2 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + 0x1f0b, // 3 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + 0x1f0c, // 4 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + 0x1f0d, // 5 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + 0x1f0e, // 6 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + 0x1f0f, // 7 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x1f18, // 16 GREEK SMALL LETTER EPSILON WITH PSILI GREEK CAPITAL LETTER EPSILON WITH PSILI + 0x1f19, // 17 GREEK SMALL LETTER EPSILON WITH DASIA GREEK CAPITAL LETTER EPSILON WITH DASIA + 0x1f1a, // 18 GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + 0x1f1b, // 19 GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + 0x1f1c, // 20 GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + 0x1f1d, // 21 GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x1f28, // 32 GREEK SMALL LETTER ETA WITH PSILI GREEK CAPITAL LETTER ETA WITH PSILI + 0x1f29, // 33 GREEK SMALL LETTER ETA WITH DASIA GREEK CAPITAL LETTER ETA WITH DASIA + 0x1f2a, // 34 GREEK SMALL LETTER ETA WITH PSILI AND VARIA GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + 0x1f2b, // 35 GREEK SMALL LETTER ETA WITH DASIA AND VARIA GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + 0x1f2c, // 36 GREEK SMALL LETTER ETA WITH PSILI AND OXIA GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + 0x1f2d, // 37 GREEK SMALL LETTER ETA WITH DASIA AND OXIA GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + 0x1f2e, // 38 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + 0x1f2f, // 39 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x1f38, // 48 GREEK SMALL LETTER IOTA WITH PSILI GREEK CAPITAL LETTER IOTA WITH PSILI + 0x1f39, // 49 GREEK SMALL LETTER IOTA WITH DASIA GREEK CAPITAL LETTER IOTA WITH DASIA + 0x1f3a, // 50 GREEK SMALL LETTER IOTA WITH PSILI AND VARIA GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + 0x1f3b, // 51 GREEK SMALL LETTER IOTA WITH DASIA AND VARIA GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + 0x1f3c, // 52 GREEK SMALL LETTER IOTA WITH PSILI AND OXIA GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + 0x1f3d, // 53 GREEK SMALL LETTER IOTA WITH DASIA AND OXIA GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + 0x1f3e, // 54 GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + 0x1f3f, // 55 GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x1f48, // 64 GREEK SMALL LETTER OMICRON WITH PSILI GREEK CAPITAL LETTER OMICRON WITH PSILI + 0x1f49, // 65 GREEK SMALL LETTER OMICRON WITH DASIA GREEK CAPITAL LETTER OMICRON WITH DASIA + 0x1f4a, // 66 GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + 0x1f4b, // 67 GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + 0x1f4c, // 68 GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + 0x1f4d, // 69 GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x1f59, // 81 GREEK SMALL LETTER UPSILON WITH DASIA GREEK CAPITAL LETTER UPSILON WITH OASIS + 0x0052, // 82 + 0x1f5b, // 83 GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + 0x0054, // 84 + 0x1f5d, // 85 GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + 0x0056, // 86 + 0x1f5f, // 87 GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x1f68, // 96 GREEK SMALL LETTER OMEGA WITh PSILI GREEK CAPITAL LETTER OMEGA WITH PSILI + 0x1f69, // 97 GREEK SMALL LETTER OMEGA WITH DASIA GREEK CAPITAL LETTER OMEGA WITH DASIA + 0x1f6a, // 98 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + 0x1f6b, // 99 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + 0x1f6c, // 100 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + 0x1f6d, // 101 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + 0x1f6e, // 102 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + 0x1f6f, // 103 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x1f88, // 128 GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITh PSILI AND PROSGEGRAMMENI + 0x1f89, // 129 GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI + 0x1f8a, // 130 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + 0x1f8b, // 131 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + 0x1f8c, // 132 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMEN + 0x1f8d, // 133 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMEN + 0x1f8e, // 134 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + 0x1f8f, // 135 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x1f98, // 144 GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI + 0x1f99, // 145 GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI + 0x1f9a, // 146 GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + 0x1f9b, // 147 GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + 0x1f9c, // 148 GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + 0x1f9d, // 149 GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + 0x1f9e, // 150 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + 0x1f9f, // 151 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x1fa8, // 160 GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI + 0x1fa9, // 161 GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI + 0x1faa, // 162 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + 0x1fab, // 163 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + 0x1fac, // 164 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + 0x1fad, // 165 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + 0x1fae, // 166 GREEK SMALL LETTER OMEGA WITh PSILI AND PERISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + 0x1faf, // 167 GREEK SMALL LETTER OMEGA WITH DASIA AND PEPISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMECA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x1fb8, // 176 GREEK SMALL LETTER ALPHA WITH VRACHY GREEK CAPITAL LETTER ALPHA WITH VRACHY + 0x1fb9, // 177 GREEK SMALL LETTER ALPHA WITH MACRON GREEK CAPITAL LETTER ALPHA WITH MACRON + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x1fd8, // 208 GREEK SMALL LETTER IOTA WITH VRACHY GREEK CAPITAL LETTER IOTA WITH VRACHY + 0x1fd9, // 209 GREEK SMALL LETTER IOTA WITH MACRON GREEK CAPITAL LETTER IOTA WITH MACRON + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x1fe8, // 224 GREEK SMALL LETTER UPSILON WITH VRACHY GREEK CAPITAL LETTER UPSILON WITH VRACHY + 0x1fe9, // 225 GREEK SMALL LETTER UPSILON WITH MACRON GREEK CAPITAL LETTER UPSILON WITH MACRON + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x00e8, // 232 + 0x00e9, // 233 + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 36 +static wchar_t lc_tab_36[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x24b6, // 208 CIRCLED LATIN SMALL LETTER A CIRCLED LATIN CAPITAL LETTER A + 0x24b7, // 209 CIRCLED LATIN SMALL LETTER B CIRCLED LATIN CAPITAL LETTER B + 0x24b8, // 210 CIRCLED LATIN SMALL LETTER C CIRCLED LATIN CAPITAL LETTER C + 0x24b9, // 211 CIRCLED LATIN SMALL LETTER D CIRCLED LATIN CAPITAL LETTER D + 0x24ba, // 212 CIRCLED LATIN SMALL LETTER E CIRCLED LATIN CAPITAL LETTER E + 0x24bb, // 213 CIRCLED LATIN SMALL LETTER F CIRCLED LATIN CAPITAL LETTER F + 0x24bc, // 214 CIRCLED LATIN SMALL LETTER G CIRCLED LATIN CAPITAL LETTER G + 0x24bd, // 215 CIRCLED LATIN SMALL LETTER H CIRCLED LATIN CAPITAL LETTER H + 0x24be, // 216 CIRCLED LATIN SMALL LETTER I CIRCLED LATIN CAPITAL LETTER I + 0x24bf, // 217 CIRCLED LATIN SMALL LETTER J CIRCLED LATIN CAPITAL LETTER J + 0x24c0, // 218 CIRCLED LATIN SMALL LETTER K CIRCLED LATIN CAPITAL LETTER K + 0x24c1, // 219 CIRCLED LATIN SMALL LETTER L CIRCLED LATIN CAPITAL LETTER L + 0x24c2, // 220 CIRCLED LATIN SMALL LETTER M CIRCLED LATIN CAPITAL LETTER M + 0x24c3, // 221 CIRCLED LATIN SMALL LETTER N CIRCLED LATIN CAPITAL LETTER N + 0x24c4, // 222 CIRCLED LATIN SMALL LETTER O CIRCLED LATIN CAPITAL LETTER O + 0x24c5, // 223 CIRCLED LATIN SMALL LETTER P CIRCLED LATIN CAPITAL LETTER P + 0x24c6, // 224 CIRCLED LATIN SMALL LETTER Q CIRCLED LATIN CAPITAL LETTER Q + 0x24c7, // 225 CIRCLED LATIN SMALL LETTER R CIRCLED LATIN CAPITAL LETTER R + 0x24c8, // 226 CIRCLED LATIN SMALL LETTER S CIRCLED LATIN CAPITAL LETTER S + 0x24c9, // 227 CIRCLED LATIN SMALL LETTER T CIRCLED LATIN CAPITAL LETTER T + 0x24ca, // 228 CIRCLED LATIN SMALL LETTER U CIRCLED LATIN CAPITAL LETTER U + 0x24cb, // 229 CIRCLED LATIN SMALL LETTER V CIRCLED LATIN CAPITAL LETTER V + 0x24cc, // 230 CIRCLED LATIN SMALL LETTER W CIRCLED LATIN CAPITAL LETTER W + 0x24cd, // 231 CIRCLED LATIN SMALL LETTER X CIRCLED LATIN CAPITAL LETTER X + 0x24ce, // 232 CIRCLED LATIN SMALL LETTER Y CIRCLED LATIN CAPITAL LETTER Y + 0x24cf, // 233 CIRCLED LATIN SMALL LETTER Z CIRCLED LATIN CAPITAL LETTER Z + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 255 +static wchar_t lc_tab_255[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0xff21, // 65 FULLWIDTH LATIN SMALL LETTER A FULLWIDTH LATIN CAPITAL LETTER A + 0xff22, // 66 FULLWIDTH LATIN SMALL LETTER B FULLWIDTH LATIN CAPITAL LETTER B + 0xff23, // 67 FULLWIDTH LATIN SMALL LETTER C FULLWIDTH LATIN CAPITAL LETTER C + 0xff24, // 68 FULLWIDTH LATIN SMALL LETTER D FULLWIDTH LATIN CAPITAL LETTER D + 0xff25, // 69 FULLWIDTH LATIN SMALL LETTER E FULLWIDTH LATIN CAPITAL LETTER E + 0xff26, // 70 FULLWIDTH LATIN SMALL LETTER F FULLWIDTH LATIN CAPITAL LETTER F + 0xff27, // 71 FULLWIDTH LATIN SMALL LETTER G FULLWIDTH LATIN CAPITAL LETTER G + 0xff28, // 72 FULLWIDTH LATIN SMALL LETTER H FULLWIDTH LATIN CAPITAL LETTER H + 0xff29, // 73 FULLWIDTH LATIN SMALL LETTER I FULLWIDTH LATIN CAPITAL LETTER I + 0xff2a, // 74 FULLWIDTH LATIN SMALL LETTER J FULLWIDTH LATIN CAPITAL LETTER J + 0xff2b, // 75 FULLWIDTH LATIN SMALL LETTER K FULLWIDTH LATIN CAPITAL LETTER K + 0xff2c, // 76 FULLWIDTH LATIN SMALL LETTER L FULLWIDTH LATIN CAPITAL LETTER L + 0xff2d, // 77 FULLWIDTH LATIN SMALL LETTER M FULLWIDTH LATIN CAPITAL LETTER M + 0xff2e, // 78 FULLWIDTH LATIN SMALL LETTER N FULLWIDTH LATIN CAPITAL LETTER N + 0xff2f, // 79 FULLWIDTH LATIN SMALL LETTER O FULLWIDTH LATIN CAPITAL LETTER O + 0xff30, // 80 FULLWIDTH LATIN SMALL LETTER P FULLWIDTH LATIN CAPITAL LETTER P + 0xff31, // 81 FULLWIDTH LATIN SMALL LETTER Q FULLWIDTH LATIN CAPITAL LETTER Q + 0xff32, // 82 FULLWIDTH LATIN SMALL LETTER R FULLWIDTH LATIN CAPITAL LETTER R + 0xff33, // 83 FULLWIDTH LATIN SMALL LETTER S FULLWIDTH LATIN CAPITAL LETTER S + 0xff34, // 84 FULLWIDTH LATIN SMALL LETTER T FULLWIDTH LATIN CAPITAL LETTER T + 0xff35, // 85 FULLWIDTH LATIN SMALL LETTER U FULLWIDTH LATIN CAPITAL LETTER U + 0xff36, // 86 FULLWIDTH LATIN SMALL LETTER V FULLWIDTH LATIN CAPITAL LETTER V + 0xff37, // 87 FULLWIDTH LATIN SMALL LETTER W FULLWIDTH LATIN CAPITAL LETTER W + 0xff38, // 88 FULLWIDTH LATIN SMALL LETTER X FULLWIDTH LATIN CAPITAL LETTER X + 0xff39, // 89 FULLWIDTH LATIN SMALL LETTER Y FULLWIDTH LATIN CAPITAL LETTER Y + 0xff3a, // 90 FULLWIDTH LATIN SMALL LETTER Z FULLWIDTH LATIN CAPITAL LETTER Z + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x00e8, // 232 + 0x00e9, // 233 + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// per-page table +static wchar_t *lc_tab[] = { + lc_tab_0, + lc_tab_1, + lc_tab_2, + lc_tab_3, + lc_tab_4, + lc_tab_5, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + lc_tab_16, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + lc_tab_30, + lc_tab_31, + 0, + 0, + 0, + 0, + lc_tab_36, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + lc_tab_255 +}; + +// code page 0 +static wchar_t uc_tab_0[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0061, // 65 LATIN SMALL LETTER A LATIN CAPITAL LETTER A + 0x0062, // 66 LATIN SMALL LETTER B LATIN CAPITAL LETTER B + 0x0063, // 67 LATIN SMALL LETTER C LATIN CAPITAL LETTER C + 0x0064, // 68 LATIN SMALL LETTER D LATIN CAPITAL LETTER D + 0x0065, // 69 LATIN SMALL LETTER E LATIN CAPITAL LETTER E + 0x0066, // 70 LATIN SMALL LETTER F LATIN CAPITAL LETTER F + 0x0067, // 71 LATIN SMALL LETTER G LATIN CAPITAL LETTER G + 0x0068, // 72 LATIN SMALL LETTER H LATIN CAPITAL LETTER H + 0x0131, // 73 LATIN SMALL LETTER DOTLESS I LATIN CAPITAL LETTER I + 0x006a, // 74 LATIN SMALL LETTER J LATIN CAPITAL LETTER J + 0x006b, // 75 LATIN SMALL LETTER K LATIN CAPITAL LETTER K + 0x006c, // 76 LATIN SMALL LETTER L LATIN CAPITAL LETTER L + 0x006d, // 77 LATIN SMALL LETTER M LATIN CAPITAL LETTER M + 0x006e, // 78 LATIN SMALL LETTER N LATIN CAPITAL LETTER N + 0x006f, // 79 LATIN SMALL LETTER O LATIN CAPITAL LETTER O + 0x0070, // 80 LATIN SMALL LETTER P LATIN CAPITAL LETTER P + 0x0071, // 81 LATIN SMALL LETTER Q LATIN CAPITAL LETTER Q + 0x0072, // 82 LATIN SMALL LETTER R LATIN CAPITAL LETTER R + 0x0073, // 83 LATIN SMALL LETTER S LATIN CAPITAL LETTER S + 0x0074, // 84 LATIN SMALL LETTER T LATIN CAPITAL LETTER T + 0x0075, // 85 LATIN SMALL LETTER U LATIN CAPITAL LETTER U + 0x0076, // 86 LATIN SMALL LETTER V LATIN CAPITAL LETTER V + 0x0077, // 87 LATIN SMALL LETTER W LATIN CAPITAL LETTER W + 0x0078, // 88 LATIN SMALL LETTER X LATIN CAPITAL LETTER X + 0x0079, // 89 LATIN SMALL LETTER Y LATIN CAPITAL LETTER Y + 0x007a, // 90 LATIN SMALL LETTER Z LATIN CAPITAL LETTER Z + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00e0, // 192 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A GRAVE + 0x00e1, // 193 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A ACUTE + 0x00e2, // 194 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A CIRCUMFLEX + 0x00e3, // 195 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A TILDE + 0x00e4, // 196 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A DIAERESIS + 0x00e5, // 197 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A RING + 0x00e6, // 198 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER A E + 0x00e7, // 199 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER C CEDILLA + 0x00e8, // 200 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER E GRAVE + 0x00e9, // 201 LATIN SMALL LETTER A GRAVE LATIN CAPITAL LETTER E ACUTE + 0x00ea, // 202 LATIN SMALL LETTER E CIRCUMFLEX LATIN CAPITAL LETTER E CIRCUMFLEX + 0x00eb, // 203 LATIN SMALL LETTER E DIAERESIS LATIN CAPITAL LETTER E DIAERESIS + 0x00ec, // 204 LATIN SMALL LETTER I GRAVE LATIN CAPITAL LETTER I GRAVE + 0x00ed, // 205 LATIN SMALL LETTER I ACUTE LATIN CAPITAL LETTER I ACUTE + 0x00ee, // 206 LATIN SMALL LETTER I CIRCUMFLEX LATIN CAPITAL LETTER I CIRCUMFLEX + 0x00ef, // 207 LATIN SMALL LETTER I DIAERESIS LATIN CAPITAL LETTER I DIAERESIS + 0x00f0, // 208 LATIN SMALL LETTER ETH LATIN CAPITAL LETTER ETH + 0x00f1, // 209 LATIN SMALL LETTER N TILDE LATIN CAPITAL LETTER N TILDE + 0x00f2, // 210 LATIN SMALL LETTER O GRAVE LATIN CAPITAL LETTER O GRAVE + 0x00f3, // 211 LATIN SMALL LETTER O ACUTE LATIN CAPITAL LETTER O ACUTE + 0x00f4, // 212 LATIN SMALL LETTER O CIRCUMFLEX LATIN CAPITAL LETTER O CIRCUMFLEX + 0x00f5, // 213 LATIN SMALL LETTER O TILDE LATIN CAPITAL LETTER O TILDE + 0x00f6, // 214 LATIN SMALL LETTER O DIAERESIS LATIN CAPITAL LETTER O DIAERESIS + 0x00d7, // 215 + 0x00f8, // 216 LATIN SMALL LETTER O SLASH LATIN CAPITAL LETTER O SLASH + 0x00f9, // 217 LATIN SMALL LETTER U GRAVE LATIN CAPITAL LETTER U GRAVE + 0x00fa, // 218 LATIN SMALL LETTER U ACUTE LATIN CAPITAL LETTER U ACUTE + 0x00fb, // 219 LATIN SMALL LETTER U CIRCUMFLEX LATIN CAPITAL LETTER U CIRCUMFLEX + 0x00fc, // 220 LATIN SMALL LETTER U DIAERESIS LATIN CAPITAL LETTER U DIAERESIS + 0x00fd, // 221 LATIN SMALL LETTER Y ACUTE LATIN CAPITAL LETTER Y ACUTE + 0x00fe, // 222 LATIN SMALL LETTER THORN LATIN CAPITAL LETTER THORN + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x00e8, // 232 + 0x00e9, // 233 + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 1 +static wchar_t uc_tab_1[] = { + 0x0101, // 0 LATIN SMALL LETTER A WITH MACRON LATIN CAPITAL LETTER A WITH MACRON + 0x0001, // 1 + 0x0103, // 2 LATIN SMALL LETTER A WITH BREVE LATIN CAPITAL LETTER A WITH BREVE + 0x0003, // 3 + 0x0105, // 4 LATIN SMALL LETTER A WITH OGONEK LATIN CAPITAL LETTER A WITH OGONEK + 0x0005, // 5 + 0x0107, // 6 LATIN SMALL LETTER C WITH ACUTE LATIN CAPITAL LETTER C WITH ACUTE + 0x0007, // 7 + 0x0109, // 8 LATIN SMALL LETTER C WITH CIRCUMFLEX LATIN CAPITAL LETTER C WITH CIRCUMFLEX + 0x0009, // 9 + 0x010b, // 10 LATIN SMALL LETTER C WITH DOT ABOVE LATIN CAPITAL LETTER C WITH DOT ABOVE + 0x000b, // 11 + 0x010d, // 12 LATIN SMALL LETTER C WITH CARON LATIN CAPITAL LETTER C WITH CARON + 0x000d, // 13 + 0x010f, // 14 LATIN SMALL LETTER D WITH CARON LATIN CAPITAL LETTER D WITH CARON + 0x000f, // 15 + 0x0111, // 16 LATIN SMALL LETTER D WITH STROKE LATIN CAPITAL LETTER D WITH STROKE + 0x0011, // 17 + 0x0113, // 18 LATIN SMALL LETTER E WITH MACRON LATIN CAPITAL LETTER E WITH MACRON + 0x0013, // 19 + 0x0115, // 20 LATIN SMALL LETTER E WITH BREVE LATIN CAPITAL LETTER E WITH BREVE + 0x0015, // 21 + 0x0117, // 22 LATIN SMALL LETTER E WITH DOT ABOVE LATIN CAPITAL LETTER E WITH DOT ABOVE + 0x0017, // 23 + 0x0119, // 24 LATIN SMALL LETTER E WITH OGONEK LATIN CAPITAL LETTER E WITH OGONEK + 0x0019, // 25 + 0x011b, // 26 LATIN SMALL LETTER E WITH CARON LATIN CAPITAL LETTER E WITH CARON + 0x001b, // 27 + 0x011d, // 28 LATIN SMALL LETTER G WITH CIRCUMFLEX LATIN CAPITAL LETTER G WITH CIRCUMFLEX + 0x001d, // 29 + 0x011f, // 30 LATIN SMALL LETTER G WITH BREVE LATIN CAPITAL LETTER G WITH BREVE + 0x001f, // 31 + 0x0121, // 32 LATIN SMALL LETTER G WITH DOT ABOVE LATIN CAPITAL LETTER G WITH DOT ABOVE + 0x0021, // 33 + 0x0123, // 34 LATIN SMALL LETTER G WITH CEDILLA LATIN CAPITAL LETTER G WITH CEDILLA + 0x0023, // 35 + 0x0125, // 36 LATIN SMALL LETTER H WITH CIRCUMFLEX LATIN CAPITAL LETTER H WITH CIRCUMFLEX + 0x0025, // 37 + 0x0127, // 38 LATIN SMALL LETTER H WITH STROKE LATIN CAPITAL LETTER H WITH STROKE + 0x0027, // 39 + 0x0129, // 40 LATIN SMALL LETTER I WITH TILDE LATIN CAPITAL LETTER I WITH TILDE + 0x0029, // 41 + 0x012b, // 42 LATIN SMALL LETTER I WITH MACRON LATIN CAPITAL LETTER I WITH MACRON + 0x002b, // 43 + 0x012d, // 44 LATIN SMALL LETTER I WITH BREVE LATIN CAPITAL LETTER I WITH BREVE + 0x002d, // 45 + 0x012f, // 46 LATIN SMALL LETTER I WITH OGONEK LATIN CAPITAL LETTER I WITH OGONEK + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0133, // 50 LATIN SMALL LIGATURE IJ LATIN CAPITAL LIGATURE IJ + 0x0033, // 51 + 0x0135, // 52 LATIN SMALL LETTER J WITH CIRCUMFLEX LATIN CAPITAL LETTER J WITH CIRCUMFLEX + 0x0035, // 53 + 0x0137, // 54 LATIN SMALL LETTER K WITH CEDILLA LATIN CAPITAL LETTER K WITH CEDILLA + 0x0037, // 55 + 0x0038, // 56 + 0x013a, // 57 LATIN SMALL LETTER L WITH ACUTE LATIN CAPITAL LETTER L WITH ACUTE + 0x003a, // 58 + 0x013c, // 59 LATIN SMALL LETTER L WITH CEDILLA LATIN CAPITAL LETTER L WITH CEDILLA + 0x003c, // 60 + 0x013e, // 61 LATIN SMALL LETTER L WITH CARON LATIN CAPITAL LETTER L WITH CARON + 0x003e, // 62 + 0x0140, // 63 LATIN SMALL LETTER L WITH MIDDLE DOT LATIN CAPITAL LETTER L WITH MIDDLE DOT + 0x0040, // 64 + 0x0142, // 65 LATIN SMALL LETTER L WITH STROKE LATIN CAPITAL LETTER L WITH STROKE + 0x0042, // 66 + 0x0144, // 67 LATIN SMALL LETTER N WITH ACUTE LATIN CAPITAL LETTER N WITH ACUTE + 0x0044, // 68 + 0x0146, // 69 LATIN SMALL LETTER N WITH CEDILLA LATIN CAPITAL LETTER N WITH CEDILLA + 0x0046, // 70 + 0x0148, // 71 LATIN SMALL LETTER N WITH CARON LATIN CAPITAL LETTER N WITH CARON + 0x0048, // 72 + 0x0049, // 73 + 0x014b, // 74 LATIN SMALL LETTER ENG (SAMI) LATIN CAPITAL LETTER ENG (SAMI) + 0x004b, // 75 + 0x014d, // 76 LATIN SMALL LETTER O WITH MACRON LATIN CAPITAL LETTER O WITH MACRON + 0x004d, // 77 + 0x014f, // 78 LATIN SMALL LETTER O WITH BREVE LATIN CAPITAL LETTER O WITH BREVE + 0x004f, // 79 + 0x0151, // 80 LATIN SMALL LETTER O WITH DOUBLE ACUTE LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + 0x0051, // 81 + 0x0153, // 82 LATIN SMALL LIGATURE OE LATIN CAPITAL LIGATURE OE + 0x0053, // 83 + 0x0155, // 84 LATIN SMALL LETTER R WITH ACUTE LATIN CAPITAL LETTER R WITH ACUTE + 0x0055, // 85 + 0x0157, // 86 LATIN SMALL LETTER R WITH CEDILLA LATIN CAPITAL LETTER R WITH CEDILLA + 0x0057, // 87 + 0x0159, // 88 LATIN SMALL LETTER R WITH CARON LATIN CAPITAL LETTER R WITH CARON + 0x0059, // 89 + 0x015b, // 90 LATIN SMALL LETTER S WITH ACUTE LATIN CAPITAL LETTER S WITH ACUTE + 0x005b, // 91 + 0x015d, // 92 LATIN SMALL LETTER S WITH CIRCUMFLEX LATIN CAPITAL LETTER S WITH CIRCUMFLEX + 0x005d, // 93 + 0x015f, // 94 LATIN SMALL LETTER S WITH CEDILLA LATIN CAPITAL LETTER S WITH CEDILLA + 0x005f, // 95 + 0x0161, // 96 LATIN SMALL LETTER S WITH CARON LATIN CAPITAL LETTER S WITH CARON + 0x0061, // 97 + 0x0163, // 98 LATIN SMALL LETTER T WITH CEDILLA LATIN CAPITAL LETTER T WITH CEDILLA + 0x0063, // 99 + 0x0165, // 100 LATIN SMALL LETTER T WITH CARON LATIN CAPITAL LETTER T WITH CARON + 0x0065, // 101 + 0x0167, // 102 LATIN SMALL LETTER T WITH STROKE LATIN CAPITAL LETTER T WITH STROKE + 0x0067, // 103 + 0x0169, // 104 LATIN SMALL LETTER U WITH TILDE LATIN CAPITAL LETTER U WITH TILDE + 0x0069, // 105 + 0x016b, // 106 LATIN SMALL LETTER U WITH MACRON LATIN CAPITAL LETTER U WITH MACRON + 0x006b, // 107 + 0x016d, // 108 LATIN SMALL LETTER U WITH BREVE LATIN CAPITAL LETTER U WITH BREVE + 0x006d, // 109 + 0x016f, // 110 LATIN SMALL LETTER U WITH RING ABOVE LATIN CAPITAL LETTER U WITH RING ABOVE + 0x006f, // 111 + 0x0171, // 112 LATIN SMALL LETTER U WITH DOUBLE ACUTE LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + 0x0071, // 113 + 0x0173, // 114 LATIN SMALL LETTER U WITH OGONEK LATIN CAPITAL LETTER U WITH OGONEK + 0x0073, // 115 + 0x0175, // 116 LATIN SMALL LETTER W WITH CIRCUMFLEX LATIN CAPITAL LETTER W WITH CIRCUMFLEX + 0x0075, // 117 + 0x0177, // 118 LATIN SMALL LETTER Y WITH CIRCUMFLEX LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + 0x0077, // 119 + 0x00ff, // 120 LATIN SMALL LETTER Y DIAERESIS LATIN CAPITAL LETTER Y WITH DIAERESIS + 0x017a, // 121 LATIN SMALL LETTER Z WITH ACUTE LATIN CAPITAL LETTER Z WITH ACUTE + 0x007a, // 122 + 0x017c, // 123 LATIN SMALL LETTER Z WITH DOT ABOVE LATIN CAPITAL LETTER Z WITH DOT ABOVE + 0x007c, // 124 + 0x017e, // 125 LATIN SMALL LETTER Z WITH CARON LATIN CAPITAL LETTER Z WITH CARON + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0253, // 129 LATIN SMALL LETTER B WITH HOOK LATIN CAPITAL LETTER B WITH HOOK + 0x0183, // 130 LATIN SMALL LETTER B WITH TOPBAR LATIN CAPITAL LETTER B WITH TOPBAR + 0x0083, // 131 + 0x0185, // 132 LATIN SMALL LETTER TONE SIX LATIN CAPITAL LETTER TONE SIX + 0x0085, // 133 + 0x0254, // 134 LATIN SMALL LETTER OPEN O LATIN CAPITAL LETTER OPEN O + 0x0188, // 135 LATIN SMALL LETTER C WITH HOOK LATIN CAPITAL LETTER C WITH HOOK + 0x0088, // 136 + 0x0089, // 137 + 0x0257, // 138 LATIN SMALL LETTER D WITH HOOK LATIN CAPITAL LETTER D WITH HOOK + 0x018c, // 139 LATIN SMALL LETTER D WITH TOPBAR LATIN CAPITAL LETTER D WITH TOPBAR + 0x008c, // 140 + 0x008d, // 141 + 0x0258, // 142 LATIN SMALL LETTER REVERSED E LATIN CAPITAL LETTER REVERSED E + 0x0259, // 143 LATIN SMALL LETTER SCHWA LATIN CAPITAL LETTER SCHWA + 0x025b, // 144 LATIN SMALL LETTER OPEN E LATIN CAPITAL LETTER OPEN E + 0x0192, // 145 LATIN SMALL LETTER F WITH HOOK LATIN CAPITAL LETTER F WITH HOOK + 0x0092, // 146 + 0x0260, // 147 LATIN SMALL LETTER G WITH HOOK LATIN CAPITAL LETTER G WITH HOOK + 0x0263, // 148 LATIN SMALL LETTER GAMMA LATIN CAPITAL LETTER GAMMA + 0x0095, // 149 + 0x0269, // 150 LATIN SMALL LETTER IOTA LATIN CAPITAL LETTER IOTA + 0x0268, // 151 LATIN SMALL LETTER I WITH STROKE LATIN CAPITAL LETTER I WITH STROKE + 0x0199, // 152 LATIN SMALL LETTER K WITH HOOK LATIN CAPITAL LETTER K WITH HOOK + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x026f, // 156 LATIN SMALL LETTER TURNED M LATIN CAPITAL LETTER TURNED M + 0x0272, // 157 LATIN SMALL LETTER N WITH LEFT HOOK LATIN CAPITAL LETTER N WITH LEFT HOOK + 0x009e, // 158 + 0x0275, // 159 LATIN SMALL LETTER BARRED O LATIN CAPITAL LETTER O WITH MIDDLE TILDE + 0x01a1, // 160 LATIN SMALL LETTER O WITH HORN LATIN CAPITAL LETTER O WITH HORN + 0x00a1, // 161 + 0x01a3, // 162 LATIN SMALL LETTER OI LATIN CAPITAL LETTER OI + 0x00a3, // 163 + 0x01a5, // 164 LATIN SMALL LETTER P WITH HOOK LATIN CAPITAL LETTER P WITH HOOK + 0x00a5, // 165 + 0x00a6, // 166 + 0x01a8, // 167 LATIN SMALL LETTER TONE TWO LATIN CAPITAL LETTER TONE TWO + 0x00a8, // 168 + 0x0283, // 169 LATIN SMALL LETTER ESH LATIN CAPITAL LETTER ESH + 0x00aa, // 170 + 0x00ab, // 171 + 0x01ad, // 172 LATIN SMALL LETTER T WITH HOOK LATIN CAPITAL LETTER T WITH HOOK + 0x00ad, // 173 + 0x0288, // 174 LATIN SMALL LETTER T WITH RETROFLEX HOOK LATIN CAPITAL LETTER T WITH RETROFLEX HOOK + 0x01b0, // 175 LATIN SMALL LETTER U WITH HORN LATIN CAPITAL LETTER U WITH HORN + 0x00b0, // 176 + 0x028a, // 177 LATIN SMALL LETTER UPSILON LATIN CAPITAL LETTER UPSILON + 0x028b, // 178 LATIN SMALL LETTER V WITH HOOK LATIN CAPITAL LETTER V WITH HOOK + 0x01b4, // 179 LATIN SMALL LETTER Y WITH HOOK LATIN CAPITAL LETTER Y WITH HOOK + 0x00b4, // 180 + 0x01b6, // 181 LATIN SMALL LETTER Z WITH STROKE LATIN CAPITAL LETTER Z WITH STROKE + 0x00b6, // 182 + 0x0292, // 183 LATIN SMALL LETTER EZH LATIN CAPITAL LETTER EZH + 0x01b9, // 184 LATIN SMALL LETTER EZH REVERSED LATIN CAPITAL LETTER EZH REVERSED + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x01bd, // 188 LATIN SMALL LETTER TONE FIVE LATIN CAPITAL LETTER TONE FIVE + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x01c6, // 196 LATIN SMALL LETTER DZ WITH CARON LATIN CAPITAL LETTER DZ WITH CARON + 0x00c5, // 197 + 0x00c6, // 198 + 0x01c9, // 199 LATIN SMALL LETTER LJ LATIN CAPITAL LETTER LJ + 0x00c8, // 200 + 0x00c9, // 201 + 0x01cc, // 202 LATIN SMALL LETTER NJ LATIN CAPITAL LETTER NJ + 0x00cb, // 203 + 0x00cc, // 204 + 0x01ce, // 205 LATIN SMALL LETTER A WITH CARON LATIN CAPITAL LETTER A WITH CARON + 0x00ce, // 206 + 0x01d0, // 207 LATIN SMALL LETTER I WITH CARON LATIN CAPITAL LETTER I WITH CARON + 0x00d0, // 208 + 0x01d2, // 209 LATIN SMALL LETTER O WITH CARON LATIN CAPITAL LETTER O WITH CARON + 0x00d2, // 210 + 0x01d4, // 211 LATIN SMALL LETTER U WITH CARON LATIN CAPITAL LETTER U WITH CARON + 0x00d4, // 212 + 0x01d6, // 213 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + 0x00d6, // 214 + 0x01d8, // 215 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + 0x00d8, // 216 + 0x01da, // 217 LATIN SMALL LETTER U WITH DIAERESIS AND CARON LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + 0x00da, // 218 + 0x01dc, // 219 LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + 0x00dc, // 220 + 0x00dd, // 221 + 0x01df, // 222 LATIN SMALL LETTER A WITH DIAERESIS AND MACRON LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + 0x00df, // 223 + 0x01e1, // 224 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + 0x00e1, // 225 + 0x01e3, // 226 LATIN SMALL LIGATURE AE WITH MACRON LATIN CAPITAL LIGATURE AE MTH MACRON + 0x00e3, // 227 + 0x01e5, // 228 LATIN SMALL LETTER G WITH STROKE LATIN CAPITAL LETTER G WITH STROKE + 0x00e5, // 229 + 0x01e7, // 230 LATIN SMALL LETTER G WITH CARON LATIN CAPITAL LETTER G WITH CARON + 0x00e7, // 231 + 0x01e9, // 232 LATIN SMALL LETTER K WITH CARON LATIN CAPITAL LETTER K WITH CARON + 0x00e9, // 233 + 0x01eb, // 234 LATIN SMALL LETTER O WITH OGONEK LATIN CAPITAL LETTER O WITH OGONEK + 0x00eb, // 235 + 0x01ed, // 236 LATIN SMALL LETTER O WITH OGONEK AND MACRON LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + 0x00ed, // 237 + 0x01ef, // 238 LATIN SMALL LETTER EZH WITH CARON LATIN CAPITAL LETTER EZH WITH CARON + 0x00ef, // 239 + 0x00f0, // 240 + 0x01f3, // 241 LATIN SMALL LETTER DZ LATIN CAPITAL LETTER DZ + 0x00f2, // 242 + 0x00f3, // 243 + 0x01f5, // 244 LATIN SMALL LETTER G WITH ACUTE LATIN CAPITAL LETTER G WITH ACUTE + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x01fb, // 250 LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + 0x00fb, // 251 + 0x01fd, // 252 LATIN SMALL LIGATURE AE WITH ACUTE LATIN CAPITAL LIGATURE AE WITH ACUTE + 0x00fd, // 253 + 0x01ff, // 254 LATIN SMALL LETTER O WITH STROKE AND ACUTE LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + 0x00ff // 255 +}; + +// code page 2 +static wchar_t uc_tab_2[] = { + 0x0201, // 0 LATIN SMALL LETTER A WITH DOUBLE GRAVE LATIN CAPITAL LETTER A WITH DOUBLE GRAVE + 0x0001, // 1 + 0x0203, // 2 LATIN SMALL LETTER A WITH INVERTED BREVE LATIN CAPITAL LETTER A WITH INVERTED BREVE + 0x0003, // 3 + 0x0205, // 4 LATIN SMALL LETTER E WITH DOUBLE GRAVE LATIN CAPITAL LETTER E WITH DOUBLE GRAVE + 0x0005, // 5 + 0x0207, // 6 LATIN SMALL LETTER E WITH INVERTED BREVE LATIN CAPITAL LETTER E WITH INVERTED BREVE + 0x0007, // 7 + 0x0209, // 8 LATIN SMALL LETTER I WITH DOUBLE GRAVE LATIN CAPITAL LETTER I WITH DOUBLE GRAVE + 0x0009, // 9 + 0x020b, // 10 LATIN SMALL LETTER I WITH INVERTED BREVE LATIN CAPITAL LETTER I WITH INVERTED BREVE + 0x000b, // 11 + 0x020d, // 12 LATIN SMALL LETTER O WITH DOUBLE GRAVE LATIN CAPITAL LETTER O WITH DOUBLE GRAVE + 0x000d, // 13 + 0x020f, // 14 LATIN SMALL LETTER O WITH INVERTED BREVE LATIN CAPITAL LETTER O WITH INVERTED BREVE + 0x000f, // 15 + 0x0211, // 16 LATIN SMALL LETTER R WITH DOUBLE GRAVE LATIN CAPITAL LETTER R WITH DOUBLE GRAVE + 0x0011, // 17 + 0x0213, // 18 LATIN SMALL LETTER R WITH INVERTED BREVE LATIN CAPITAL LETTER R WITH INVERTED BREVE + 0x0013, // 19 + 0x0215, // 20 LATIN SMALL LETTER U WITH DOUBLE GRAVE LATIN CAPITAL LETTER U WITH DOUBLE GRAVE + 0x0015, // 21 + 0x0217, // 22 LATIN SMALL LETTER U WITH INVERTED BREVE LATIN CAPITAL LETTER U WITH INVERTED BREVE + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x00e8, // 232 + 0x00e9, // 233 + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 3 +static wchar_t uc_tab_3[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x03ac, // 134 GREEK SMALL LETTER ALPHA WITH TONOS GREEK CAPITAL LETTER ALPHA WITH TONOS + 0x0087, // 135 + 0x03ad, // 136 GREEK SMALL LETTER EPSILON WITH TONOS GREEK CAPITAL LETTER EPSILON WITH TONOS + 0x03ae, // 137 GREEK SMALL LETTER ETA WITH TONOS GREEK CAPITAL LETTER ETA WITH TONOS + 0x03af, // 138 GREEK SMALL LETTER IOTA WITH TONOS GREEK CAPITAL LETTER IOTA WITH TONOS + 0x008b, // 139 + 0x03cc, // 140 GREEK SMALL LETTER OMICRON WITH TONOS GREEK CAPITAL LETTER OMICRON WITH TONOS + 0x008d, // 141 + 0x03cd, // 142 GREEK SMALL LETTER UPSILON WITH TONOS GREEK CAPITAL LETTER UPSILON WITH TONOS + 0x03ce, // 143 GREEK SMALL LETTER OMEGA WITH TONOS GREEK CAPITAL LETTER OMEGA WITH TONOS + 0x0090, // 144 + 0x03b1, // 145 GREEK SMALL LETTER ALPHA GREEK CAPITAL LETTER ALPHA + 0x03b2, // 146 GREEK SMALL LETTER BETA GREEK CAPITAL LETTER BETA + 0x03b3, // 147 GREEK SMALL LETTER GAMMA GREEK CAPITAL LETTER GAMMA + 0x03b4, // 148 GREEK SMALL LETTER DELTA GREEK CAPITAL LETTER DELTA + 0x03b5, // 149 GREEK SMALL LETTER EPSILON GREEK CAPITAL LETTER EPSILON + 0x03b6, // 150 GREEK SMALL LETTER ZETA GREEK CAPITAL LETTER ZETA + 0x03b7, // 151 GREEK SMALL LETTER ETA GREEK CAPITAL LETTER ETA + 0x03b8, // 152 GREEK SMALL LETTER THETA GREEK CAPITAL LETTER THETA + 0x03b9, // 153 GREEK SMALL LETTER IOTA GREEK CAPITAL LETTER IOTA + 0x03ba, // 154 GREEK SMALL LETTER KAPPA GREEK CAPITAL LETTER KAPPA + 0x03bb, // 155 GREEK SMALL LETTER LAMDA GREEK CAPITAL LETTER LAMDA + 0x03bc, // 156 GREEK SMALL LETTER MU GREEK CAPITAL LETTER MU + 0x03bd, // 157 GREEK SMALL LETTER NU GREEK CAPITAL LETTER NU + 0x03be, // 158 GREEK SMALL LETTER XI GREEK CAPITAL LETTER XI + 0x03bf, // 159 GREEK SMALL LETTER OMICRON GREEK CAPITAL LETTER OMICRON + 0x03c0, // 160 GREEK SMALL LETTER PI GREEK CAPITAL LETTER PI + 0x03c1, // 161 GREEK SMALL LETTER RHO GREEK CAPITAL LETTER RHO + 0x00a2, // 162 + 0x03c3, // 163 GREEK SMALL LETTER SIGMA GREEK CAPITAL LETTER SIGMA + 0x03c4, // 164 GREEK SMALL LETTER TAU GREEK CAPITAL LETTER TAU + 0x03c5, // 165 GREEK SMALL LETTER UPSILON GREEK CAPITAL LETTER UPSILON + 0x03c6, // 166 GREEK SMALL LETTER PHI GREEK CAPITAL LETTER PHI + 0x03c7, // 167 GREEK SMALL LETTER CHI GREEK CAPITAL LETTER CHI + 0x03c8, // 168 GREEK SMALL LETTER PSI GREEK CAPITAL LETTER PSI + 0x03c9, // 169 GREEK SMALL LETTER OMEGA GREEK CAPITAL LETTER OMEGA + 0x03ca, // 170 GREEK SMALL LETTER IOTA WITH DIALYTIKA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA + 0x03cb, // 171 GREEK SMALL LETTER UPSILON WITH DIALYTIKA GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x03e3, // 226 COPTIC SMALL LETTER SHEI COPTIC CAPITAL LETTER SHEI + 0x00e3, // 227 + 0x03e5, // 228 COPTIC SMALL LETTER FEI COPTIC CAPITAL LETTER FEI + 0x00e5, // 229 + 0x03e7, // 230 COPTIC SMALL LETTER KHEI COPTIC CAPITAL LETTER KHEI + 0x00e7, // 231 + 0x03e9, // 232 COPTIC SMALL LETTER HORI COPTIC CAPITAL LETTER HORI + 0x00e9, // 233 + 0x03eb, // 234 COPTIC SMALL LETTER GANGIA COPTIC CAPITAL LETTER GANGIA + 0x00eb, // 235 + 0x03ed, // 236 COPTIC SMALL LETTER SHIMA COPTIC CAPITAL LETTER SHIMA + 0x00ed, // 237 + 0x03ef, // 238 COPTIC SMALL LETTER DEI COPTIC CAPITAL LETTER DEI + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 4 +static wchar_t uc_tab_4[] = { + 0x0000, // 0 + 0x0451, // 1 CYRILLIC SMALL LETTER IO CYRILLIC CAPITAL LETTER IO + 0x0452, // 2 CYRILLIC SMALL LETTER DJE (SERBOCROATIAN) CYRILLIC CAPITAL LETTER DJE (SERBOCROATIAN) + 0x0453, // 3 CYRILLIC SMALL LETTER GJE CYRILLIC CAPITAL LETTER GJE + 0x0454, // 4 CYRILLIC SMALL LETTER UKRAINIAN IE CYRILLIC CAPITAL LETTER UKRAINIAN IE + 0x0455, // 5 CYRILLIC SMALL LETTER DZE CYRILLIC CAPITAL LETTER DZE + 0x0456, // 6 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I CYRILLIC CAPITAL LETTER BYELORUSSIAN_UKRAINIAN I + 0x0457, // 7 CYRILLIC SMALL LETTER YI (UKRAINIAN) CYRILLIC CAPITAL LETTER YI (UKRAINIAN) + 0x0458, // 8 CYRILLIC SMALL LETTER JE CYRILLIC CAPITAL LETTER JE + 0x0459, // 9 CYRILLIC SMALL LETTER LJE CYRILLIC CAPITAL LETTER LJE + 0x045a, // 10 CYRILLIC SMALL LETTER NJE CYRILLIC CAPITAL LETTER NJE + 0x045b, // 11 CYRILLIC SMALL LETTER TSHE (SERBOCROATIAN) CYRILLIC CAPITAL LETTER TSHE (SERBOCROATIAN) + 0x045c, // 12 CYRILLIC SMALL LETTER KJE CYRILLIC CAPITAL LETTER KJE + 0x000d, // 13 + 0x045e, // 14 CYRILLIC SMALL LETTER SHORT U (BYELORUSSIAN) CYRILLIC CAPITAL LETTER SHORT U (BYELORUSSIAN) + 0x045f, // 15 CYRILLIC SMALL LETTER DZHE CYRILLIC CAPITAL LETTER DZHE + 0x0430, // 16 CYRILLIC SMALL LETTER A CYRILLIC CAPITAL LETTER A + 0x0431, // 17 CYRILLIC SMALL LETTER BE CYRILLIC CAPITAL LETTER BE + 0x0432, // 18 CYRILLIC SMALL LETTER VE CYRILLIC CAPITAL LETTER VE + 0x0433, // 19 CYRILLIC SMALL LETTER GHE CYRILLIC CAPITAL LETTER GHE + 0x0434, // 20 CYRILLIC SMALL LETTER DE CYRILLIC CAPITAL LETTER DE + 0x0435, // 21 CYRILLIC SMALL LETTER IE CYRILLIC CAPITAL LETTER IE + 0x0436, // 22 CYRILLIC SMALL LETTER ZHE CYRILLIC CAPITAL LETTER ZHE + 0x0437, // 23 CYRILLIC SMALL LETTER ZE CYRILLIC CAPITAL LETTER ZE + 0x0438, // 24 CYRILLIC SMALL LETTER I CYRILLIC CAPITAL LETTER I + 0x0439, // 25 CYRILLIC SMALL LETTER SHORT I CYRILLIC CAPITAL LETTER SHORT I + 0x043a, // 26 CYRILLIC SMALL LETTER KA CYRILLIC CAPITAL LETTER KA + 0x043b, // 27 CYRILLIC SMALL LETTER EL CYRILLIC CAPITAL LETTER EL + 0x043c, // 28 CYRILLIC SMALL LETTER EM CYRILLIC CAPITAL LETTER EM + 0x043d, // 29 CYRILLIC SMALL LETTER EN CYRILLIC CAPITAL LETTER EN + 0x043e, // 30 CYRILLIC SMALL LETTER O CYRILLIC CAPITAL LETTER O + 0x043f, // 31 CYRILLIC SMALL LETTER PE CYRILLIC CAPITAL LETTER PE + 0x0440, // 32 CYRILLIC SMALL LETTER ER CYRILLIC CAPITAL LETTER ER + 0x0441, // 33 CYRILLIC SMALL LETTER ES CYRILLIC CAPITAL LETTER ES + 0x0442, // 34 CYRILLIC SMALL LETTER TE CYRILLIC CAPITAL LETTER TE + 0x0443, // 35 CYRILLIC SMALL LETTER U CYRILLIC CAPITAL LETTER U + 0x0444, // 36 CYRILLIC SMALL LETTER EF CYRILLIC CAPITAL LETTER EF + 0x0445, // 37 CYRILLIC SMALL LETTER HA CYRILLIC CAPITAL LETTER HA + 0x0446, // 38 CYRILLIC SMALL LETTER TSE CYRILLIC CAPITAL LETTER TSE + 0x0447, // 39 CYRILLIC SMALL LETTER CHE CYRILLIC CAPITAL LETTER CHE + 0x0448, // 40 CYRILLIC SMALL LETTER SHA CYRILLIC CAPITAL LETTER SHA + 0x0449, // 41 CYRILLIC SMALL LETTER SHCHA CYRILLIC CAPITAL LETTER SHCHA + 0x044a, // 42 CYRILLIC SMALL LETTER HARD SIGN CYRILLIC CAPITAL LETTER HARD SIGN + 0x044b, // 43 CYRILLIC SMALL LETTER YERU CYRILLIC CAPITAL LETTER YERU + 0x044c, // 44 CYRILLIC SMALL LETTER SOFT SIGN CYRILLIC CAPITAL LETTER SOFT SIGN + 0x044d, // 45 CYRILLIC SMALL LETTER E CYRILLIC CAPITAL LETTER E + 0x044e, // 46 CYRILLIC SMALL LETTER YU CYRILLIC CAPITAL LETTER YU + 0x044f, // 47 CYRILLIC SMALL LETTER YA CYRILLIC CAPITAL LETTER YA + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0461, // 96 CYRILLIC SMALL LETTER OMEGA CYRILLIC CAPITAL LETTER OMEGA + 0x0061, // 97 + 0x0463, // 98 CYRILLIC SMALL LETTER YAT CYRILLIC CAPITAL LETTER YAT + 0x0063, // 99 + 0x0465, // 100 CYRILLIC SMALL LETTER IOTIFIED E CYRILLIC CAPITAL LETTER IOTIFIED E + 0x0065, // 101 + 0x0467, // 102 CYRILLIC SMALL LETTER LITTLE YUS CYRILLIC CAPITAL LETTER LITTLE YUS + 0x0067, // 103 + 0x0469, // 104 CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS + 0x0069, // 105 + 0x046b, // 106 CYRILLIC SMALL LETTER BIG YUS CYRILLIC CAPITAL LETTER BIG YUS + 0x006b, // 107 + 0x046d, // 108 CYRILLIC SMALL LETTER IOTIFIED BIG YUS CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS + 0x006d, // 109 + 0x046f, // 110 CYRILLIC SMALL LETTER KSI CYRILLIC CAPITAL LETTER KSI + 0x006f, // 111 + 0x0471, // 112 CYRILLIC SMALL LETTER PSI CYRILLIC CAPITAL LETTER PSI + 0x0071, // 113 + 0x0473, // 114 CYRILLIC SMALL LETTER FITA CYRILLIC CAPITAL LETTER FITA + 0x0073, // 115 + 0x0475, // 116 CYRILLIC SMALL LETTER IZHITSA CYRILLIC CAPITAL LETTER IZHITSA + 0x0075, // 117 + 0x0477, // 118 CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT + 0x0077, // 119 + 0x0479, // 120 CYRILLIC SMALL LETTER UK CYRILLIC CAPITAL LETTER UK + 0x0079, // 121 + 0x047b, // 122 CYRILLIC SMALL LETTER ROUND OMEGA CYRILLIC CAPITAL LETTER ROUND OMEGA + 0x007b, // 123 + 0x047d, // 124 CYRILLIC SMALL LETTER OMEGA WITH TITLO CYRILLIC CAPITAL LETTER OMEGA WITH TITLO + 0x007d, // 125 + 0x047f, // 126 CYRILLIC SMALL LETTER OT CYRILLIC CAPITAL LETTER OT + 0x007f, // 127 + 0x0481, // 128 CYRILLIC SMALL LETTER KOPPA CYRILLIC CAPITAL LETTER KOPPA + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0491, // 144 CYRILLIC SMALL LETTER GHE WITH UPTURN CYRILLIC CAPITAL LETTER GHE WITH UPTURN + 0x0091, // 145 + 0x0493, // 146 CYRILLIC SMALL LETTER GHE WITH STROKE CYRILLIC CAPITAL LETTER GHE WITH STROKE + 0x0093, // 147 + 0x0495, // 148 CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK + 0x0095, // 149 + 0x0497, // 150 CYRILLIC SMALL LETTER ZHE WITH DESCENDER CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER + 0x0097, // 151 + 0x0499, // 152 CYRILLIC SMALL LETTER ZE WITH DESCENDER CYRILLIC CAPITAL LETTER ZE WITH DESCENDER + 0x0099, // 153 + 0x049b, // 154 CYRILLIC SMALL LETTER KA WITH DESCENDER CYRILLIC CAPITAL LETTER KA WITH DESCENDER + 0x009b, // 155 + 0x049d, // 156 CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE + 0x009d, // 157 + 0x049f, // 158 CYRILLIC SMALL LETTER KA WITH STROKE CYRILLIC CAPITAL LETTER KA WITH STROKE + 0x009f, // 159 + 0x04a1, // 160 CYRILLIC SMALL LETTER EASHKIR KA CYRILLIC CAPITAL LETTER BASHKIR KA + 0x00a1, // 161 + 0x04a3, // 162 CYRILLIC SMALL LETTER EN WITH DESCENOER CYRILLIC CAPITAL LETTER EN WITH DESCENDER + 0x00a3, // 163 + 0x04a5, // 164 CYRILLIC SMALL LIGATURE EN GHE CYRILLIC CAPITAL LIGATURE EN GHF + 0x00a5, // 165 + 0x04a7, // 166 CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK (ABKHASIAN) CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK (ABKHASIAN) + 0x00a7, // 167 + 0x04a9, // 168 CYRILLIC SMALL LETTER ABKHASIAN HA CYRILLIC CAPITAL LETTER ABKHASIAN HA + 0x00a9, // 169 + 0x04ab, // 170 CYRILLIC SMALL LETTER ES WITH DESCENDER CYRILLIC CAPITAL LETTER ES WITH DESCENDER + 0x00ab, // 171 + 0x04ad, // 172 CYRILLIC SMALL LETTER TE WITH DESCENDER CYRILLIC CAPITAL LETTER TE WITH DESCENDER + 0x00ad, // 173 + 0x04af, // 174 CYRILLIC SMALL LETTER STRAIGHT U CYRILLIC CAPITAL LETTER STRAIGHT U + 0x00af, // 175 + 0x04b1, // 176 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE + 0x00b1, // 177 + 0x04b3, // 178 CYRILLIC SMALL LETTER HA WITH DESCENDER CYRILLIC CAPITAL LETTER HA WITH DESCENDER + 0x00b3, // 179 + 0x04b5, // 180 CYRILLIC SMALL LIGATURE TE TSE (ABKHASIAN) CYRILLIC CAPITAL LIGATURE TE TSE (ABKHASIAN) + 0x00b5, // 181 + 0x04b7, // 182 CYRILLIC SMALL LETTER CHE WITH DESCENDER CYRILLIC CAPITAL LETTER CHE WITH DESCENDER + 0x00b7, // 183 + 0x04b9, // 184 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE + 0x00b9, // 185 + 0x04bb, // 186 CYRILLIC SMALL LETTER SHHA CYRILLIC CAPITAL LETTER SHHA + 0x00bb, // 187 + 0x04bd, // 188 CYRILLIC SMALL LETTER ABKHASIAN CHE CYRILLIC CAPITAL LETTER ABKHASIAN CHE + 0x00bd, // 189 + 0x04bf, // 190 CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER + 0x00bf, // 191 + 0x00c0, // 192 + 0x04c2, // 193 CYRILLIC SMALL LETTER ZHE WITH BREVE CYRILLIC CAPITAL LETTER ZHE WITH BREVE + 0x00c2, // 194 + 0x04c4, // 195 CYRILLIC SMALL LETTER KA WITH HOOK CYRILLIC CAPITAL LETTER KA WITH HOOK + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x04c8, // 199 CYRILLIC SMALL LETTER EN WITH HOOK CYRILLIC CAPITAL LETTER EN WITH HOOK + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x04cc, // 203 CYRILLIC SMALL LETTER KHAKASSIAN CHE CYRILLIC CAPITAL LETTER KHAKASSIAN CHE + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x04d1, // 208 CYRILLIC SMALL LETTER A WITH BREVE CYRILLIC CAPITAL LETTER A WITH BREVE + 0x00d1, // 209 + 0x04d3, // 210 CYRILLIC SMALL LETTER A WITH DIAERESIS CYRILLIC CAPITAL LETTER A WITH DIAERESIS + 0x00d3, // 211 + 0x04d5, // 212 CYRILLIC SMALL LIGATURE A IE CYRILLIC CAPITAL LIGATURE A IE + 0x00d5, // 213 + 0x04d7, // 214 CYRILLIC SMALL LETTER IE WITH BREVE CYRILLIC CAPITAL LETTER IE WITH BREVE + 0x00d7, // 215 + 0x04d9, // 216 CYRILLIC SMALL LETTER SCHWA CYRILLIC CAPITAL LETTER SCHWA + 0x00d9, // 217 + 0x04db, // 218 CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS + 0x00db, // 219 + 0x04dd, // 220 CYRILLIC SMALL LETTER ZHE WITH DIAERESIS CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS + 0x00dd, // 221 + 0x04df, // 222 CYRILLIC SMALL LETTER ZE WITH DIAERESIS CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS + 0x00df, // 223 + 0x04e1, // 224 CYRILLIC SMALL LETTER ABKHASIAN DZE CYRILLIC CAPITAL LETTER ABKHASIAN DZE + 0x00e1, // 225 + 0x04e3, // 226 CYRILLIC SMALL LETTER I WITH MACRON CYRILLIC CAPITAL LETTER I WITH MACRON + 0x00e3, // 227 + 0x04e5, // 228 CYRILLIC SMALL LETTER I WITH DIAERESIS CYRILLIC CAPITAL LETTER I WITH DIAERESIS + 0x00e5, // 229 + 0x04e7, // 230 CYRILLIC SMALL LETTER O WITH DIAERESIS CYRILLIC CAPITAL LETTER O WITH DIAERESIS + 0x00e7, // 231 + 0x04e9, // 232 CYRILLIC SMALL LETTER BARRED O CYRILLIC CAPITAL LETTER BARRED O + 0x00e9, // 233 + 0x04eb, // 234 CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x04ef, // 238 CYRILLIC SMALL LETTER U WITH MACRON CYRILLIC CAPITAL LETTER U WITH MACRON + 0x00ef, // 239 + 0x04f1, // 240 CYRILLIC SMALL LETTER U WITH DIAERESIS CYRILLIC CAPITAL LETTER U WITH DIAERESIS + 0x00f1, // 241 + 0x04f3, // 242 CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE + 0x00f3, // 243 + 0x04f5, // 244 CYRILLIC SMALL LETTER CHE AITH DIAERESIS CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x04f9, // 248 CYRILLIC SMALL LETTER YERU WITH DIAERESIS CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 5 +static wchar_t uc_tab_5[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0561, // 49 ARMENIAN SMALL LETTER AYB ARMENIAN CAPITAL LETTER AYB + 0x0562, // 50 ARMENIAN SMALL LETTER BEN ARMENIAN CAPITAL LETTER BEN + 0x0563, // 51 ARMENIAN SMALL LETTER GIM ARMENIAN CAPITAL LETTER GIM + 0x0564, // 52 ARMENIAN SMALL LETTER DA ARMENIAN CAPITAL LETTER DA + 0x0565, // 53 ARMENIAN SMALL LETTER ECH ARMENIAN CAPITAL LETTER ECH + 0x0566, // 54 ARMENIAN SMALL LETTER ZA ARMENIAN CAPITAL LETTER ZA + 0x0567, // 55 ARMENIAN SMALL LETTER EH ARMENIAN CAPITAL LETTER EH + 0x0568, // 56 ARMENIAN SMALL LETTER ET ARMENIAN CAPITAL LETTER ET + 0x0569, // 57 ARMENIAN SMALL LETTER TO ARMENIAN CAPITAL LETTER TO + 0x056a, // 58 ARMENIAN SMALL LETTER ZHE ARMENIAN CAPITAL LETTER ZHE + 0x056b, // 59 ARMENIAN SMALL LETTER INI ARMENIAN CAPITAL LETTER INI + 0x056c, // 60 ARMENIAN SMALL LETTER LIWN ARMENIAN CAPITAL LETTER LIWN + 0x056d, // 61 ARMENIAN SMALL LETTER XEH ARMENIAN CAPITAL LETTER XEH + 0x056e, // 62 ARMENIAN SMALL LETTER CA ARMENIAN CAPITAL LETTER CA + 0x056f, // 63 ARMENIAN SMALL LETTER KEN ARMENIAN CAPITAL LETTER KEN + 0x0570, // 64 ARMENIAN SMALL LETTER HO ARMENIAN CAPITAL LETTER HO + 0x0571, // 65 ARMENIAN SMALL LETTER JA ARMENIAN CAPITAL LETTER JA + 0x0572, // 66 ARMENIAN SMALL LETTER GHAD ARMENIAN CAPITAL LETTER GHAD + 0x0573, // 67 ARMENIAN SMALL LETTER CHEH ARMENIAN CAPITAL LETTER CHEH + 0x0574, // 68 ARMENIAN SMALL LETTER MEN ARMENIAN CAPITAL LETTER MEN + 0x0575, // 69 ARMENIAN SMALL LETTER YI ARMENIAN CAPITAL LETTER YI + 0x0576, // 70 ARMENIAN SMALL LETTER NOW ARMENIAN CAPITAL LETTER NOW + 0x0577, // 71 ARMENIAN SMALL LETTER SNA ARMENIAN CAPITAL LETTER SHA + 0x0578, // 72 ARMENIAN SMALL LETTER VO ARMENIAN CAPITAL LETTER VO + 0x0579, // 73 ARMENIAN SMALL LETTER CHA ARMENIAN CAPITAL LETTER CHA + 0x057a, // 74 ARMENIAN SMALL LETTER PEH ARMENIAN CAPITAL LETTER PEH + 0x057b, // 75 ARMENIAN SMALL LETTER JHEH ARMENIAN CAPITAL LETTER JHEH + 0x057c, // 76 ARMENIAN SMALL LETTER RA ARMENIAN CAPITAL LETTER RA + 0x057d, // 77 ARMENIAN SMALL LETTER SEH ARMENIAN CAPITAL LETTER SEH + 0x057e, // 78 ARMENIAN SMALL LETTER VEW ARMENIAN CAPITAL LETTER VEW + 0x057f, // 79 ARMENIAN SMALL LETTER TIWN ARMENIAN CAPITAL LETTER TIWN + 0x0580, // 80 ARMENIAN SMALL LETTER REH ARMENIAN CAPITAL LETTER REH + 0x0581, // 81 ARMENIAN SMALL LETTER CO ARMENIAN CAPITAL LETTER CO + 0x0582, // 82 ARMENIAN SMALL LETTER YIWN ARMENIAN CAPITAL LETTER YIWN + 0x0583, // 83 ARMENIAN SMALL LETTER PIWP ARMENIAN CAPITAL LETTER PIWR + 0x0584, // 84 ARMENIAN SMALL LETTER KEH ARMENIAN CAPITAL LETTER KEH + 0x0585, // 85 ARMENIAN SMALL LETTER OH ARMENIAN CAPITAL LETTER OH + 0x0586, // 86 ARMENIAN SMALL LETTER FEH ARMENIAN CAPITAL LETTER FEH + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x00e8, // 232 + 0x00e9, // 233 + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 16 +static wchar_t uc_tab_16[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x10d0, // 160 GEORGIAN LETTER AN GEORGIAN CAPITAL LETTER AN (KHUTSURI) + 0x10d1, // 161 GEORGIAN LETTER BAN GEORGIAN CAPITAL LETTER BAN (KHUTSURI) + 0x10d2, // 162 GEORGIAN LETTER GAN GEORGIAN CAPITAL LETTER GAN (KHUTSURI) + 0x10d3, // 163 GEORGIAN LETTER DON GEORGIAN CAPITAL LETTER DON (KHUTSURI) + 0x10d4, // 164 GEORGIAN LETTER EN GEORGIAN CAPITAL LETTER EN (KHUTSURI) + 0x10d5, // 165 GEORGIAN LETTER VIN GEORGIAN CAPITAL LETTER VIN (KHUTSURI) + 0x10d6, // 166 GEORGIAN LETTER ZEN GEORGIAN CAPITAL LETTER ZEN (KHUTSURI) + 0x10d7, // 167 GEORGIAN LETTER TAN GEORGIAN CAPITAL LETTER TAN (KHUTSURI) + 0x10d8, // 168 GEORGIAN LETTER IN GEORGIAN CAPITAL LETTER IN (KHUTSURI) + 0x10d9, // 169 GEORGIAN LETTER KAN GEORGIAN CAPITAL LETTER KAN (KHUTSURI) + 0x10da, // 170 GEORGIAN LETTER LAS GEORGIAN CAPITAL LETTER LAS (KHUTSURI) + 0x10db, // 171 GEORGIAN LETTER MAN GEORGIAN CAPITAL LETTER MAN (KHUTSURI) + 0x10dc, // 172 GEORGIAN LETTER NAR GEORGIAN CAPITAL LETTER NAR (KHUTSURI) + 0x10dd, // 173 GEORGIAN LETTER ON GEORGIAN CAPITAL LETTER ON (KHUTSURI) + 0x10de, // 174 GEORGIAN LETTER PAR GEORGIAN CAPITAL LETTER PAR (KHUTSURI) + 0x10df, // 175 GEORGIAN LETTER ZHAR GEORGIAN CAPITAL LETTER ZHAR (KHUTSURI) + 0x10e0, // 176 GEORGIAN LETTER RAE GEORGIAN CAPITAL LETTER RAE (KHUTSURI) + 0x10e1, // 177 GEORGIAN LETTER SAN GEORGIAN CAPITAL LETTER SAN (KHUTSURI) + 0x10e2, // 178 GEORGIAN LETTER TAR GEORGIAN CAPITAL LETTER TAR (KHUTSURI) + 0x10e3, // 179 GEORGIAN LETTER UN GEORGIAN CAPITAL LETTER UN (KHUTSURI) + 0x10e4, // 180 GEORGIAN LETTER PHAR GEORGIAN CAPITAL LETTER PHAR (KHUTSURI) + 0x10e5, // 181 GEORGIAN LETTER KHAR GEORGIAN CAPITAL LETTER KHAR (KHUTSURI) + 0x10e6, // 182 GEORGIAN LETTER GHAN GEORGIAN CAPITAL LETTER GHAN (KHUTSURI) + 0x10e7, // 183 GEORGIAN LETTER QAR GEORGIAN CAPITAL LETTER QAR (KHUTSURI) + 0x10e8, // 184 GEORGIAN LETTER SHIN GEORGIAN CAPITAL LETTER SHIN (KHUTSURI) + 0x10e9, // 185 GEORGIAN LETTER CHIN GEORGIAN CAPITAL LETTER CHIN (KHUTSURI) + 0x10ea, // 186 GEORGIAN LETTER CAN GEORGIAN CAPITAL LETTER CAN (KHUTSURI) + 0x10eb, // 187 GEORGIAN LETTER JIL GEORGIAN CAPITAL LETTER JIL (KHUTSURI) + 0x10ec, // 188 GEORGIAN LETTER CIL GEORGIAN CAPITAL LETTER CIL (KHUTSURI) + 0x10ed, // 189 GEORGIAN LETTER CHAR GEORGIAN CAPITAL LETTER CHAR (KHUTSURI) + 0x10ee, // 190 GEORGIAN LETTER XAN GEORGIAN CAPITAL LETTER XAN (KHUTSURI) + 0x10ef, // 191 GEORGIAN LETTER JHAN GEORGIAN CAPITAL LETTER JHAN (KHUTSURI) + 0x10f0, // 192 GEORGIAN LETTER HAE GEORGIAN CAPITAL LETTER HAE (KHUTSURI) + 0x10f1, // 193 GEORGIAN LETTER HE GEORGIAN CAPITAL LETTER HE (KHUTSURI) + 0x10f2, // 194 GEORGIAN LETTER HIE GEORGIAN CAPITAL LETTER HIE (KHUTSURI) + 0x10f3, // 195 GEORGIAN LETTER WE GEORGIAN CAPITAL LETTER WE (KHUTSURI) + 0x10f4, // 196 GEORGIAN LETTER HAR GEORGIAN CAPITAL LETTER HAR (KHUTSURI) + 0x10f5, // 197 GEORGIAN LETTER HOE GEORGIAN CAPITAL LETTER HOE (KHUTSURI) + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x00e8, // 232 + 0x00e9, // 233 + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 30 +static wchar_t uc_tab_30[] = { + 0x1e01, // 0 LATIN SMALL LETTER A WITH RING BELOW LATIN CAPITAL LETTER A WITH RING BELOW + 0x0001, // 1 + 0x1e03, // 2 LATIN SMALL LETTER B WITH DOT ABOVE LATIN CAPITAL LETTER B WITH DOT ABOVE + 0x0003, // 3 + 0x1e05, // 4 LATIN SMALL LETTER B WITH DOT BELOW LATIN CAPITAL LETTER B WITH DOT BELOW + 0x0005, // 5 + 0x1e07, // 6 LATIN SMALL LETTER B WITH LINE BELOW LATIN CAPITAL LETTER B WITH LINE BELOW + 0x0007, // 7 + 0x1e09, // 8 LATIN SMALL LETTER C WITH CEDILLA AND ACUTE LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + 0x0009, // 9 + 0x1e0b, // 10 LATIN SMALL LETTER D WITH DOT ABOVE LATIN CAPITAL LETTER D WITH DOT ABOVE + 0x000b, // 11 + 0x1e0d, // 12 LATIN SMALL LETTER D WITH DOT BELOW LATIN CAPITAL LETTER D WITH DOT BELOW + 0x000d, // 13 + 0x1e0f, // 14 LATIN SMALL LETTER D WITH LINE BELOW LATIN CAPITAL LETTER D WITH LINE BELOW + 0x000f, // 15 + 0x1e11, // 16 LATIN SMALL LETTER D WITH CEDILLA LATIN CAPITAL LETTER D WITH CEDILLA + 0x0011, // 17 + 0x1e13, // 18 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW + 0x0013, // 19 + 0x1e15, // 20 LATIN SMALL LETTER E WITH MACRON AND GRAVE LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + 0x0015, // 21 + 0x1e17, // 22 LATIN SMALL LETTER E WITH MACRON AND ACUTE LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + 0x0017, // 23 + 0x1e19, // 24 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW + 0x0019, // 25 + 0x1e1b, // 26 LATIN SMALL LETTER E WITH TILDE BELOW LATIN CAPITAL LETTER E WITH TILDE BELOW + 0x001b, // 27 + 0x1e1d, // 28 LATIN SMALL LETTER E WITH CEDILLA AND BREVE LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + 0x001d, // 29 + 0x1e1f, // 30 LATIN SMALL LETTER F WITH DOT ABOVE LATIN CAPITAL LETTER F WITH DOT ABOVE + 0x001f, // 31 + 0x1e21, // 32 LATIN SMALL LETTER G WITH MACRON LATIN CAPITAL LETTER G WITH MACRON + 0x0021, // 33 + 0x1e23, // 34 LATIN SMALL LETTER H WITH DOT ABOVE LATIN CAPITAL LETTER H WITH DOT ABOVE + 0x0023, // 35 + 0x1e25, // 36 LATIN SMALL LETTER H WITH DOT BELOW LATIN CAPITAL LETTER H WITH DOT BELOW + 0x0025, // 37 + 0x1e27, // 38 LATIN SMALL LETTER H WITH DIAERESIS LATIN CAPITAL LETTER H WITH DIAERESIS + 0x0027, // 39 + 0x1e29, // 40 LATIN SMALL LETTER H WITH CEDILLA LATIN CAPITAL LETTER H WITH CEDILLA + 0x0029, // 41 + 0x1e2b, // 42 LATIN SMALL LETTER H WITH BREVE BELOW LATIN CAPITAL LETTER H WITH BREVE BELOW + 0x002b, // 43 + 0x1e2d, // 44 LATIN SMALL LETTER I WITH TILDE BELOW LATIN CAPITAL LETTER I WITH TILDE BELOW + 0x002d, // 45 + 0x1e2f, // 46 LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + 0x002f, // 47 + 0x1e31, // 48 LATIN SMALL LETTER K WITH ACUTE LATIN CAPITAL LETTER K WITH ACUTE + 0x0031, // 49 + 0x1e33, // 50 LATIN SMALL LETTER K WITH DOT BELOW LATIN CAPITAL LETTER K WITH DOT BELOW + 0x0033, // 51 + 0x1e35, // 52 LATIN SMALL LETTER K WITH LINE BELOW LATIN CAPITAL LETTER K WITH LINE BELOW + 0x0035, // 53 + 0x1e37, // 54 LATIN SMALL LETTER L WITH DOT BELOW LATIN CAPITAL LETTER L WITH DOT BELOW + 0x0037, // 55 + 0x1e39, // 56 LATIN SMALL LETTER L WITH DOT BELOW AND MACRON LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + 0x0039, // 57 + 0x1e3b, // 58 LATIN SMALL LETTER L WITH LINE BELOW LATIN CAPITAL LETTER L WITH LINE BELOW + 0x003b, // 59 + 0x1e3d, // 60 LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW + 0x003d, // 61 + 0x1e3f, // 62 LATIN SMALL LETTER M WITH ACUTE LATIN CAPITAL LETTER M WITH ACUTE + 0x003f, // 63 + 0x1e41, // 64 LATIN SMALL LETTER M WITH DOT ABOVE LATIN CAPITAL LETTER M WITH DOT ABOVE + 0x0041, // 65 + 0x1e43, // 66 LATIN SMALL LETTER M WITH DOT BELOW LATIN CAPITAL LETTER M WITH DOT BELOW + 0x0043, // 67 + 0x1e45, // 68 LATIN SMALL LETTER N WITH DOT ABOVE LATIN CAPITAL LETTER N WITH DOT ABOVE + 0x0045, // 69 + 0x1e47, // 70 LATIN SMALL LETTER N WITH DOT BELOW LATIN CAPITAL LETTER N WITH DOT BELOW + 0x0047, // 71 + 0x1e49, // 72 LATIN SMALL LETTER N WITH LINE BELOW LATIN CAPITAL LETTER N WITH LINE BELOW + 0x0049, // 73 + 0x1e4b, // 74 LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW + 0x004b, // 75 + 0x1e4d, // 76 LATIN SMALL LETTER O WITH TILDE AND ACUTE LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + 0x004d, // 77 + 0x1e4f, // 78 LATIN SMALL LETTER O WITH TlLDE AND DIAERESIS LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + 0x004f, // 79 + 0x1e51, // 80 LATIN SMALL LETTER O WITH MACRON AND GRAVE LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + 0x0051, // 81 + 0x1e53, // 82 LATIN SMALL LETTER O WITH MACRON AND ACUTE LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + 0x0053, // 83 + 0x1e55, // 84 LATIN SMALL LETTER P WITH ACUTE LATIN CAPITAL LETTER P WITH ACUTE + 0x0055, // 85 + 0x1e57, // 86 LATIN SMALL LETTER P WITH DOT ABOVE LATIN CAPITAL LETTER P WITH DOT ABOVE + 0x0057, // 87 + 0x1e59, // 88 LATIN SMALL LETTER R WITH DOT ABOVE LATIN CAPITAL LETTER R WITH DOT ABOVE + 0x0059, // 89 + 0x1e5b, // 90 LATIN SMALL LETTER R WITH DOT BELOW LATIN CAPITAL LETTER R WITH DOT BELOW + 0x005b, // 91 + 0x1e5d, // 92 LATIN SMALL LETTER R WITH DOT BELOW AND MACRON LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + 0x005d, // 93 + 0x1e5f, // 94 LATIN SMALL LETTER R WITH LINE BELOW LATIN CAPITAL LETTER R WITH LINE BELOW + 0x005f, // 95 + 0x1e61, // 96 LATIN SMALL LETTER S WITH DOT ABOVE LATIN CAPITAL LETTER S WITH DOT ABOVE + 0x0061, // 97 + 0x1e63, // 98 LATIN SMALL LETTER S WITH DOT BELOW LATIN CAPITAL LETTER S WITH DOT BELOW + 0x0063, // 99 + 0x1e65, // 100 LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + 0x0065, // 101 + 0x1e67, // 102 LATIN SMALL LETTER S WITH CARON AND DOT ABOVE LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + 0x0067, // 103 + 0x1e69, // 104 LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + 0x0069, // 105 + 0x1e6b, // 106 LATIN SMALL LETTER T WITH DOT ABOVE LATIN CAPITAL LETTER T WITH DOT ABOVE + 0x006b, // 107 + 0x1e6d, // 108 LATIN SMALL LETTER T WITH DOT BELOW LATIN CAPITAL LETTER T WITH DOT BELOW + 0x006d, // 109 + 0x1e6f, // 110 LATIN SMALL LETTER T WITH LINE BELOW LATIN CAPITAL LETTER T WITH LINE BELOW + 0x006f, // 111 + 0x1e71, // 112 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW + 0x0071, // 113 + 0x1e73, // 114 LATIN SMALL LETTER U WITH DIAERESIS BELOW LATIN CAPITAL LETTER U WITH DIAERESIS BELOW + 0x0073, // 115 + 0x1e75, // 116 LATIN SMALL LETTER U WITH TILDE BELOW LATIN CAPITAL LETTER U WITH TILDE BELOW + 0x0075, // 117 + 0x1e77, // 118 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW + 0x0077, // 119 + 0x1e79, // 120 LATIN SMALL LETTER U WITH TILDE AND ACUTE LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + 0x0079, // 121 + 0x1e7b, // 122 LATIN SMALL LETTER U WITH MACRON AND DIAERESIS LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + 0x007b, // 123 + 0x1e7d, // 124 LATIN SMALL LETTER V WITH TILDE LATIN CAPITAL LETTER V WITH TILDE + 0x007d, // 125 + 0x1e7f, // 126 LATIN SMALL LETTER V WITH DOT BELOW LATIN CAPITAL LETTER V WITH DOT BELOW + 0x007f, // 127 + 0x1e81, // 128 LATIN SMALL LETTER W WITH GRAVE LATIN CAPITAL LETTER W WITH GRAVE + 0x0081, // 129 + 0x1e83, // 130 LATIN SMALL LETTER W WITH ACUTE LATIN CAPITAL LETTER W WITH ACUTE + 0x0083, // 131 + 0x1e85, // 132 LATIN SMALL LETTER W WITH DIAERESIS LATIN CAPITAL LETTER W WITH DIAERESIS + 0x0085, // 133 + 0x1e87, // 134 LATIN SMALL LETTER W WITH DOT ABOVE LATIN CAPITAL LETTER W WITH DOT ABOVE + 0x0087, // 135 + 0x1e89, // 136 LATIN SMALL LETTER W WITH DOT BELOW LATIN CAPITAL LETTER W WITH DOT BELOW + 0x0089, // 137 + 0x1e8b, // 138 LATIN SMALL LETTER X WITH DOT ABOVE LATIN CAPITAL LETTER X WITH DOT ABOVE + 0x008b, // 139 + 0x1e8d, // 140 LATIN SMALL LETTER X WITH DIAERESIS LATIN CAPITAL LETTER X5 WITH DIAERESIS + 0x008d, // 141 + 0x1e8f, // 142 LATIN SMALL LETTER Y WITH DOT ABOVE LATIN CAPITAL LETTER Y WITH DOT ABOVE + 0x008f, // 143 + 0x1e91, // 144 LATIN SMALL LETTER Z WITH CIRCUMFLEX LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + 0x0091, // 145 + 0x1e93, // 146 LATIN SMALL LETTER Z WITH DOT BELOW LATIN CAPITAL LETTER Z WITH DOT BELOW + 0x0093, // 147 + 0x1e95, // 148 LATIN SMALL LETTER Z WITH LINE BELOW LATIN CAPITAL LETTER Z WITH LINE BELOW + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x1ea1, // 160 LATIN SMALL LETTER A WITH DOT BELOW LATIN CAPITAL LETTER A WITH DOT BELOW + 0x00a1, // 161 + 0x1ea3, // 162 LATIN SMALL LETTER A WITH HOOK ABOVE LATIN CAPITAL LETTER A WITH HOOK ABOVE + 0x00a3, // 163 + 0x1ea5, // 164 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + 0x00a5, // 165 + 0x1ea7, // 166 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + 0x00a7, // 167 + 0x1ea9, // 168 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + 0x00a9, // 169 + 0x1eab, // 170 LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + 0x00ab, // 171 + 0x1ead, // 172 LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + 0x00ad, // 173 + 0x1eaf, // 174 LATIN SMALL LETTER A WITH BREVE AND ACUTE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + 0x00af, // 175 + 0x1eb1, // 176 LATIN SMALL LETTER A WITH BREVE AND GRAVE LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + 0x00b1, // 177 + 0x1eb3, // 178 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + 0x00b3, // 179 + 0x1eb5, // 180 LATIN SMALL LETTER A WITH BREVE AND TILDE LATIN CAPITAL LETTER A WITH BREVE AND TILDE + 0x00b5, // 181 + 0x1eb7, // 182 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + 0x00b7, // 183 + 0x1eb9, // 184 LATIN SMALL LETTER E WITH DOT BELOW LATIN CAPITAL LETTER E WITH DOT BELOW + 0x00b9, // 185 + 0x1ebb, // 186 LATIN SMALL LETTER E WITH HOOK ABOVE LATIN CAPITAL LETTER E WITH HOOK ABOVE + 0x00bb, // 187 + 0x1ebd, // 188 LATIN SMALL LETTER E WITH TILDE LATIN CAPITAL LETTER E WITH TILDE + 0x00bd, // 189 + 0x1ebf, // 190 LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + 0x00bf, // 191 + 0x1ec1, // 192 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + 0x00c1, // 193 + 0x1ec3, // 194 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + 0x00c3, // 195 + 0x1ec5, // 196 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + 0x00c5, // 197 + 0x1ec7, // 198 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + 0x00c7, // 199 + 0x1ec9, // 200 LATIN SMALL LETTER I WITH HOOK ABOVE LATIN CAPITAL LETTER I WITH HOOK ABOVE + 0x00c9, // 201 + 0x1ecb, // 202 LATIN SMALL LETTER I WITH DOT BELOW LATIN CAPITAL LETTER I WITH DOT BELOW + 0x00cb, // 203 + 0x1ecd, // 204 LATIN SMALL LETTER O WITH DOT BELOW LATIN CAPITAL LETTER O WITH DOT BELOW + 0x00cd, // 205 + 0x1ecf, // 206 LATIN SMALL LETTER O WITH HOOK ABOVE LATIN CAPITAL LETTER O WITH HOOK ABOVE + 0x00cf, // 207 + 0x1ed1, // 208 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + 0x00d1, // 209 + 0x1ed3, // 210 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + 0x00d3, // 211 + 0x1ed5, // 212 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + 0x00d5, // 213 + 0x1ed7, // 214 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + 0x00d7, // 215 + 0x1ed9, // 216 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + 0x00d9, // 217 + 0x1edb, // 218 LATIN SMALL LETTER O WITH HORN AND ACUTE LATIN CAPITAL LETTER O WITH HORN AND ACUTE + 0x00db, // 219 + 0x1edd, // 220 LATIN SMALL LETTER O WITH HORN AND GRAVE LATIN CAPITAL LETTER O WITH HORN AND GRAVE + 0x00dd, // 221 + 0x1edf, // 222 LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + 0x00df, // 223 + 0x1ee1, // 224 LATIN SMALL LETTER O WITH HORN AND TILDE LATIN CAPITAL LETTER O WITH HORN AND TILDE + 0x00e1, // 225 + 0x1ee3, // 226 LATIN SMALL LETTER O WITH HORN AND DOT BELOW LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + 0x00e3, // 227 + 0x1ee5, // 228 LATIN SMALL LETTER U WITH DOT BELOW LATIN CAPITAL LETTER U WITH DOT BELOW + 0x00e5, // 229 + 0x1ee7, // 230 LATIN SMALL LETTER U WITH HOOK ABOVE LATIN CAPITAL LETTER U WITH HOOK ABOVE + 0x00e7, // 231 + 0x1ee9, // 232 LATIN SMALL LETTER U WITH HORN AND ACUTE LATIN CAPITAL LETTER U WITH HORN AND ACUTE + 0x00e9, // 233 + 0x1eeb, // 234 LATIN SMALL LETTER U WITH HORN AND GRAVE LATIN CAPITAL LETTER U WITH HORN AND GRAVE + 0x00eb, // 235 + 0x1eed, // 236 LATIN SMALL LETTER U WITH HORN AND HOCK ABOVE LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + 0x00ed, // 237 + 0x1eef, // 238 LATIN SMALL LETTER U WITH HORN AND TILDE LATIN CAPITAL LETTER U WITH HORN AND TILDE + 0x00ef, // 239 + 0x1ef1, // 240 LATIN SMALL LETTER U WITH HORN AND DOT BELOW LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + 0x00f1, // 241 + 0x1ef3, // 242 LATIN SMALL LETTER Y WITH GRAVE LATIN CAPITAL LETTER Y WITH GRAVE + 0x00f3, // 243 + 0x1ef5, // 244 LATIN SMALL LETTER Y WITH DOT BELOW LATIN CAPITAL LETTER Y WITH DOT BELOW + 0x00f5, // 245 + 0x1ef7, // 246 LATIN SMALL LETTER Y WITH HOOK ABOVE LATIN CAPITAL LETTER Y WITH HOOK ABOVE + 0x00f7, // 247 + 0x1ef9, // 248 LATIN SMALL LETTER Y WITH TILDE LATIN CAPITAL LETTER Y WITH TILDE + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 31 +static wchar_t uc_tab_31[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x1f00, // 8 GREEK SMALL LETTER ALPHA WITH PSILI GREEK CAPITAL LETTER ALPHA WITH PSILI + 0x1f01, // 9 GREEK SMALL LETTER ALPHA WITH DASIA GREEK CAPITAL LETTER ALPHA WITH DASIA + 0x1f02, // 10 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA + 0x1f03, // 11 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA + 0x1f04, // 12 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA + 0x1f05, // 13 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA + 0x1f06, // 14 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI + 0x1f07, // 15 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x1f10, // 24 GREEK SMALL LETTER EPSILON WITH PSILI GREEK CAPITAL LETTER EPSILON WITH PSILI + 0x1f11, // 25 GREEK SMALL LETTER EPSILON WITH DASIA GREEK CAPITAL LETTER EPSILON WITH DASIA + 0x1f12, // 26 GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA + 0x1f13, // 27 GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA + 0x1f14, // 28 GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA + 0x1f15, // 29 GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x1f20, // 40 GREEK SMALL LETTER ETA WITH PSILI GREEK CAPITAL LETTER ETA WITH PSILI + 0x1f21, // 41 GREEK SMALL LETTER ETA WITH DASIA GREEK CAPITAL LETTER ETA WITH DASIA + 0x1f22, // 42 GREEK SMALL LETTER ETA WITH PSILI AND VARIA GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA + 0x1f23, // 43 GREEK SMALL LETTER ETA WITH DASIA AND VARIA GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA + 0x1f24, // 44 GREEK SMALL LETTER ETA WITH PSILI AND OXIA GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA + 0x1f25, // 45 GREEK SMALL LETTER ETA WITH DASIA AND OXIA GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA + 0x1f26, // 46 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI + 0x1f27, // 47 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x1f30, // 56 GREEK SMALL LETTER IOTA WITH PSILI GREEK CAPITAL LETTER IOTA WITH PSILI + 0x1f31, // 57 GREEK SMALL LETTER IOTA WITH DASIA GREEK CAPITAL LETTER IOTA WITH DASIA + 0x1f32, // 58 GREEK SMALL LETTER IOTA WITH PSILI AND VARIA GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA + 0x1f33, // 59 GREEK SMALL LETTER IOTA WITH DASIA AND VARIA GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA + 0x1f34, // 60 GREEK SMALL LETTER IOTA WITH PSILI AND OXIA GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA + 0x1f35, // 61 GREEK SMALL LETTER IOTA WITH DASIA AND OXIA GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA + 0x1f36, // 62 GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI + 0x1f37, // 63 GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x1f40, // 72 GREEK SMALL LETTER OMICRON WITH PSILI GREEK CAPITAL LETTER OMICRON WITH PSILI + 0x1f41, // 73 GREEK SMALL LETTER OMICRON WITH DASIA GREEK CAPITAL LETTER OMICRON WITH DASIA + 0x1f42, // 74 GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA + 0x1f43, // 75 GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA + 0x1f44, // 76 GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA + 0x1f45, // 77 GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x1f51, // 89 GREEK SMALL LETTER UPSILON WITH DASIA GREEK CAPITAL LETTER UPSILON WITH OASIS + 0x005a, // 90 + 0x1f53, // 91 GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + 0x005c, // 92 + 0x1f55, // 93 GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + 0x005e, // 94 + 0x1f57, // 95 GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x1f60, // 104 GREEK SMALL LETTER OMEGA WITh PSILI GREEK CAPITAL LETTER OMEGA WITH PSILI + 0x1f61, // 105 GREEK SMALL LETTER OMEGA WITH DASIA GREEK CAPITAL LETTER OMEGA WITH DASIA + 0x1f62, // 106 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA + 0x1f63, // 107 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA + 0x1f64, // 108 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA + 0x1f65, // 109 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA + 0x1f66, // 110 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI + 0x1f67, // 111 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x1f80, // 136 GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITh PSILI AND PROSGEGRAMMENI + 0x1f81, // 137 GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI + 0x1f82, // 138 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI + 0x1f83, // 139 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI + 0x1f84, // 140 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMEN + 0x1f85, // 141 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMEN + 0x1f86, // 142 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + 0x1f87, // 143 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x1f90, // 152 GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI + 0x1f91, // 153 GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI + 0x1f92, // 154 GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI + 0x1f93, // 155 GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI + 0x1f94, // 156 GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI + 0x1f95, // 157 GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI + 0x1f96, // 158 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + 0x1f97, // 159 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x1fa0, // 168 GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI + 0x1fa1, // 169 GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI + 0x1fa2, // 170 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI + 0x1fa3, // 171 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI + 0x1fa4, // 172 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI + 0x1fa5, // 173 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI + 0x1fa6, // 174 GREEK SMALL LETTER OMEGA WITh PSILI AND PERISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI + 0x1fa7, // 175 GREEK SMALL LETTER OMEGA WITH DASIA AND PEPISPOMENI AND YPOGEGRAMMENI GREEK CAPITAL LETTER OMECA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x1fb0, // 184 GREEK SMALL LETTER ALPHA WITH VRACHY GREEK CAPITAL LETTER ALPHA WITH VRACHY + 0x1fb1, // 185 GREEK SMALL LETTER ALPHA WITH MACRON GREEK CAPITAL LETTER ALPHA WITH MACRON + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x1fd0, // 216 GREEK SMALL LETTER IOTA WITH VRACHY GREEK CAPITAL LETTER IOTA WITH VRACHY + 0x1fd1, // 217 GREEK SMALL LETTER IOTA WITH MACRON GREEK CAPITAL LETTER IOTA WITH MACRON + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x1fe0, // 232 GREEK SMALL LETTER UPSILON WITH VRACHY GREEK CAPITAL LETTER UPSILON WITH VRACHY + 0x1fe1, // 233 GREEK SMALL LETTER UPSILON WITH MACRON GREEK CAPITAL LETTER UPSILON WITH MACRON + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 36 +static wchar_t uc_tab_36[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0x0021, // 33 + 0x0022, // 34 + 0x0023, // 35 + 0x0024, // 36 + 0x0025, // 37 + 0x0026, // 38 + 0x0027, // 39 + 0x0028, // 40 + 0x0029, // 41 + 0x002a, // 42 + 0x002b, // 43 + 0x002c, // 44 + 0x002d, // 45 + 0x002e, // 46 + 0x002f, // 47 + 0x0030, // 48 + 0x0031, // 49 + 0x0032, // 50 + 0x0033, // 51 + 0x0034, // 52 + 0x0035, // 53 + 0x0036, // 54 + 0x0037, // 55 + 0x0038, // 56 + 0x0039, // 57 + 0x003a, // 58 + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x24d0, // 182 CIRCLED LATIN SMALL LETTER A CIRCLED LATIN CAPITAL LETTER A + 0x24d1, // 183 CIRCLED LATIN SMALL LETTER B CIRCLED LATIN CAPITAL LETTER B + 0x24d2, // 184 CIRCLED LATIN SMALL LETTER C CIRCLED LATIN CAPITAL LETTER C + 0x24d3, // 185 CIRCLED LATIN SMALL LETTER D CIRCLED LATIN CAPITAL LETTER D + 0x24d4, // 186 CIRCLED LATIN SMALL LETTER E CIRCLED LATIN CAPITAL LETTER E + 0x24d5, // 187 CIRCLED LATIN SMALL LETTER F CIRCLED LATIN CAPITAL LETTER F + 0x24d6, // 188 CIRCLED LATIN SMALL LETTER G CIRCLED LATIN CAPITAL LETTER G + 0x24d7, // 189 CIRCLED LATIN SMALL LETTER H CIRCLED LATIN CAPITAL LETTER H + 0x24d8, // 190 CIRCLED LATIN SMALL LETTER I CIRCLED LATIN CAPITAL LETTER I + 0x24d9, // 191 CIRCLED LATIN SMALL LETTER J CIRCLED LATIN CAPITAL LETTER J + 0x24da, // 192 CIRCLED LATIN SMALL LETTER K CIRCLED LATIN CAPITAL LETTER K + 0x24db, // 193 CIRCLED LATIN SMALL LETTER L CIRCLED LATIN CAPITAL LETTER L + 0x24dc, // 194 CIRCLED LATIN SMALL LETTER M CIRCLED LATIN CAPITAL LETTER M + 0x24dd, // 195 CIRCLED LATIN SMALL LETTER N CIRCLED LATIN CAPITAL LETTER N + 0x24de, // 196 CIRCLED LATIN SMALL LETTER O CIRCLED LATIN CAPITAL LETTER O + 0x24df, // 197 CIRCLED LATIN SMALL LETTER P CIRCLED LATIN CAPITAL LETTER P + 0x24e0, // 198 CIRCLED LATIN SMALL LETTER Q CIRCLED LATIN CAPITAL LETTER Q + 0x24e1, // 199 CIRCLED LATIN SMALL LETTER R CIRCLED LATIN CAPITAL LETTER R + 0x24e2, // 200 CIRCLED LATIN SMALL LETTER S CIRCLED LATIN CAPITAL LETTER S + 0x24e3, // 201 CIRCLED LATIN SMALL LETTER T CIRCLED LATIN CAPITAL LETTER T + 0x24e4, // 202 CIRCLED LATIN SMALL LETTER U CIRCLED LATIN CAPITAL LETTER U + 0x24e5, // 203 CIRCLED LATIN SMALL LETTER V CIRCLED LATIN CAPITAL LETTER V + 0x24e6, // 204 CIRCLED LATIN SMALL LETTER W CIRCLED LATIN CAPITAL LETTER W + 0x24e7, // 205 CIRCLED LATIN SMALL LETTER X CIRCLED LATIN CAPITAL LETTER X + 0x24e8, // 206 CIRCLED LATIN SMALL LETTER Y CIRCLED LATIN CAPITAL LETTER Y + 0x24e9, // 207 CIRCLED LATIN SMALL LETTER Z CIRCLED LATIN CAPITAL LETTER Z + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x00e8, // 232 + 0x00e9, // 233 + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// code page 255 +static wchar_t uc_tab_255[] = { + 0x0000, // 0 + 0x0001, // 1 + 0x0002, // 2 + 0x0003, // 3 + 0x0004, // 4 + 0x0005, // 5 + 0x0006, // 6 + 0x0007, // 7 + 0x0008, // 8 + 0x0009, // 9 + 0x000a, // 10 + 0x000b, // 11 + 0x000c, // 12 + 0x000d, // 13 + 0x000e, // 14 + 0x000f, // 15 + 0x0010, // 16 + 0x0011, // 17 + 0x0012, // 18 + 0x0013, // 19 + 0x0014, // 20 + 0x0015, // 21 + 0x0016, // 22 + 0x0017, // 23 + 0x0018, // 24 + 0x0019, // 25 + 0x001a, // 26 + 0x001b, // 27 + 0x001c, // 28 + 0x001d, // 29 + 0x001e, // 30 + 0x001f, // 31 + 0x0020, // 32 + 0xff41, // 33 FULLWIDTH LATIN SMALL LETTER A FULLWIDTH LATIN CAPITAL LETTER A + 0xff42, // 34 FULLWIDTH LATIN SMALL LETTER B FULLWIDTH LATIN CAPITAL LETTER B + 0xff43, // 35 FULLWIDTH LATIN SMALL LETTER C FULLWIDTH LATIN CAPITAL LETTER C + 0xff44, // 36 FULLWIDTH LATIN SMALL LETTER D FULLWIDTH LATIN CAPITAL LETTER D + 0xff45, // 37 FULLWIDTH LATIN SMALL LETTER E FULLWIDTH LATIN CAPITAL LETTER E + 0xff46, // 38 FULLWIDTH LATIN SMALL LETTER F FULLWIDTH LATIN CAPITAL LETTER F + 0xff47, // 39 FULLWIDTH LATIN SMALL LETTER G FULLWIDTH LATIN CAPITAL LETTER G + 0xff48, // 40 FULLWIDTH LATIN SMALL LETTER H FULLWIDTH LATIN CAPITAL LETTER H + 0xff49, // 41 FULLWIDTH LATIN SMALL LETTER I FULLWIDTH LATIN CAPITAL LETTER I + 0xff4a, // 42 FULLWIDTH LATIN SMALL LETTER J FULLWIDTH LATIN CAPITAL LETTER J + 0xff4b, // 43 FULLWIDTH LATIN SMALL LETTER K FULLWIDTH LATIN CAPITAL LETTER K + 0xff4c, // 44 FULLWIDTH LATIN SMALL LETTER L FULLWIDTH LATIN CAPITAL LETTER L + 0xff4d, // 45 FULLWIDTH LATIN SMALL LETTER M FULLWIDTH LATIN CAPITAL LETTER M + 0xff4e, // 46 FULLWIDTH LATIN SMALL LETTER N FULLWIDTH LATIN CAPITAL LETTER N + 0xff4f, // 47 FULLWIDTH LATIN SMALL LETTER O FULLWIDTH LATIN CAPITAL LETTER O + 0xff50, // 48 FULLWIDTH LATIN SMALL LETTER P FULLWIDTH LATIN CAPITAL LETTER P + 0xff51, // 49 FULLWIDTH LATIN SMALL LETTER Q FULLWIDTH LATIN CAPITAL LETTER Q + 0xff52, // 50 FULLWIDTH LATIN SMALL LETTER R FULLWIDTH LATIN CAPITAL LETTER R + 0xff53, // 51 FULLWIDTH LATIN SMALL LETTER S FULLWIDTH LATIN CAPITAL LETTER S + 0xff54, // 52 FULLWIDTH LATIN SMALL LETTER T FULLWIDTH LATIN CAPITAL LETTER T + 0xff55, // 53 FULLWIDTH LATIN SMALL LETTER U FULLWIDTH LATIN CAPITAL LETTER U + 0xff56, // 54 FULLWIDTH LATIN SMALL LETTER V FULLWIDTH LATIN CAPITAL LETTER V + 0xff57, // 55 FULLWIDTH LATIN SMALL LETTER W FULLWIDTH LATIN CAPITAL LETTER W + 0xff58, // 56 FULLWIDTH LATIN SMALL LETTER X FULLWIDTH LATIN CAPITAL LETTER X + 0xff59, // 57 FULLWIDTH LATIN SMALL LETTER Y FULLWIDTH LATIN CAPITAL LETTER Y + 0xff5a, // 58 FULLWIDTH LATIN SMALL LETTER Z FULLWIDTH LATIN CAPITAL LETTER Z + 0x003b, // 59 + 0x003c, // 60 + 0x003d, // 61 + 0x003e, // 62 + 0x003f, // 63 + 0x0040, // 64 + 0x0041, // 65 + 0x0042, // 66 + 0x0043, // 67 + 0x0044, // 68 + 0x0045, // 69 + 0x0046, // 70 + 0x0047, // 71 + 0x0048, // 72 + 0x0049, // 73 + 0x004a, // 74 + 0x004b, // 75 + 0x004c, // 76 + 0x004d, // 77 + 0x004e, // 78 + 0x004f, // 79 + 0x0050, // 80 + 0x0051, // 81 + 0x0052, // 82 + 0x0053, // 83 + 0x0054, // 84 + 0x0055, // 85 + 0x0056, // 86 + 0x0057, // 87 + 0x0058, // 88 + 0x0059, // 89 + 0x005a, // 90 + 0x005b, // 91 + 0x005c, // 92 + 0x005d, // 93 + 0x005e, // 94 + 0x005f, // 95 + 0x0060, // 96 + 0x0061, // 97 + 0x0062, // 98 + 0x0063, // 99 + 0x0064, // 100 + 0x0065, // 101 + 0x0066, // 102 + 0x0067, // 103 + 0x0068, // 104 + 0x0069, // 105 + 0x006a, // 106 + 0x006b, // 107 + 0x006c, // 108 + 0x006d, // 109 + 0x006e, // 110 + 0x006f, // 111 + 0x0070, // 112 + 0x0071, // 113 + 0x0072, // 114 + 0x0073, // 115 + 0x0074, // 116 + 0x0075, // 117 + 0x0076, // 118 + 0x0077, // 119 + 0x0078, // 120 + 0x0079, // 121 + 0x007a, // 122 + 0x007b, // 123 + 0x007c, // 124 + 0x007d, // 125 + 0x007e, // 126 + 0x007f, // 127 + 0x0080, // 128 + 0x0081, // 129 + 0x0082, // 130 + 0x0083, // 131 + 0x0084, // 132 + 0x0085, // 133 + 0x0086, // 134 + 0x0087, // 135 + 0x0088, // 136 + 0x0089, // 137 + 0x008a, // 138 + 0x008b, // 139 + 0x008c, // 140 + 0x008d, // 141 + 0x008e, // 142 + 0x008f, // 143 + 0x0090, // 144 + 0x0091, // 145 + 0x0092, // 146 + 0x0093, // 147 + 0x0094, // 148 + 0x0095, // 149 + 0x0096, // 150 + 0x0097, // 151 + 0x0098, // 152 + 0x0099, // 153 + 0x009a, // 154 + 0x009b, // 155 + 0x009c, // 156 + 0x009d, // 157 + 0x009e, // 158 + 0x009f, // 159 + 0x00a0, // 160 + 0x00a1, // 161 + 0x00a2, // 162 + 0x00a3, // 163 + 0x00a4, // 164 + 0x00a5, // 165 + 0x00a6, // 166 + 0x00a7, // 167 + 0x00a8, // 168 + 0x00a9, // 169 + 0x00aa, // 170 + 0x00ab, // 171 + 0x00ac, // 172 + 0x00ad, // 173 + 0x00ae, // 174 + 0x00af, // 175 + 0x00b0, // 176 + 0x00b1, // 177 + 0x00b2, // 178 + 0x00b3, // 179 + 0x00b4, // 180 + 0x00b5, // 181 + 0x00b6, // 182 + 0x00b7, // 183 + 0x00b8, // 184 + 0x00b9, // 185 + 0x00ba, // 186 + 0x00bb, // 187 + 0x00bc, // 188 + 0x00bd, // 189 + 0x00be, // 190 + 0x00bf, // 191 + 0x00c0, // 192 + 0x00c1, // 193 + 0x00c2, // 194 + 0x00c3, // 195 + 0x00c4, // 196 + 0x00c5, // 197 + 0x00c6, // 198 + 0x00c7, // 199 + 0x00c8, // 200 + 0x00c9, // 201 + 0x00ca, // 202 + 0x00cb, // 203 + 0x00cc, // 204 + 0x00cd, // 205 + 0x00ce, // 206 + 0x00cf, // 207 + 0x00d0, // 208 + 0x00d1, // 209 + 0x00d2, // 210 + 0x00d3, // 211 + 0x00d4, // 212 + 0x00d5, // 213 + 0x00d6, // 214 + 0x00d7, // 215 + 0x00d8, // 216 + 0x00d9, // 217 + 0x00da, // 218 + 0x00db, // 219 + 0x00dc, // 220 + 0x00dd, // 221 + 0x00de, // 222 + 0x00df, // 223 + 0x00e0, // 224 + 0x00e1, // 225 + 0x00e2, // 226 + 0x00e3, // 227 + 0x00e4, // 228 + 0x00e5, // 229 + 0x00e6, // 230 + 0x00e7, // 231 + 0x00e8, // 232 + 0x00e9, // 233 + 0x00ea, // 234 + 0x00eb, // 235 + 0x00ec, // 236 + 0x00ed, // 237 + 0x00ee, // 238 + 0x00ef, // 239 + 0x00f0, // 240 + 0x00f1, // 241 + 0x00f2, // 242 + 0x00f3, // 243 + 0x00f4, // 244 + 0x00f5, // 245 + 0x00f6, // 246 + 0x00f7, // 247 + 0x00f8, // 248 + 0x00f9, // 249 + 0x00fa, // 250 + 0x00fb, // 251 + 0x00fc, // 252 + 0x00fd, // 253 + 0x00fe, // 254 + 0x00ff // 255 +}; + +// per-page table +static wchar_t *uc_tab[] = { + uc_tab_0, + uc_tab_1, + uc_tab_2, + uc_tab_3, + uc_tab_4, + uc_tab_5, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + uc_tab_16, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + uc_tab_30, + uc_tab_31, + 0, + 0, + 0, + 0, + uc_tab_36, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + uc_tab_255 +}; +