blob: 11752c0b2ef2a8aa53cb1d6de688ee455b6cf1a0 [file] [log] [blame]
/*
* Transliteration table
*/
static const unsigned char translit_data[754] = {
1, ' ',
1, '!',
1, 'c',
2, 'l', 'b',
3, 'y', 'e', 'n',
1, '|',
2, 'S', 'S',
1, '"',
3, '(', 'c', ')',
1, 'a',
2, '<', '<',
3, 'n', 'o', 't',
1, '-',
3, '(', 'R', ')',
2, '^', '0',
3, '+', '/', '-',
2, '^', '2',
2, '^', '3',
1,'\'',
1, 'u',
1, 'P',
1, '.',
1, ',',
2, '^', '1',
1, 'o',
2, '>', '>',
3, '1', '/', '4',
3, '1', '/', '2',
3, '3', '/', '4',
1, '?',
2, '`', 'A',
2, '´', 'A',
2, '^', 'A',
2, '~', 'A',
2, '"', 'A',
1, 'A',
2, 'A', 'E',
1, 'C',
2, '`', 'E',
2, '´', 'E',
2, '^', 'E',
2, '"', 'E',
2, '`', 'I',
2, '´', 'I',
2, '^', 'I',
2, '"', 'I',
1, 'D',
2, '~', 'N',
2, '`', 'O',
2, '´', 'O',
2, '^', 'O',
2, '~', 'O',
2, '"', 'O',
1, 'x',
1, 'O',
2, '`', 'U',
2, '´', 'U',
2, '^', 'U',
2, '"', 'U',
2, '´', 'Y',
2, 'T', 'h',
2, 's', 's',
2, '`', 'a',
2, '´', 'a',
2, '^', 'a',
2, '~', 'a',
2, '"', 'a',
1, 'a',
2, 'a', 'e',
1, 'c',
2, '`', 'e',
2, '´', 'e',
2, '^', 'e',
2, '"', 'e',
2, '`', 'i',
2, '´', 'i',
2, '^', 'i',
2, '"', 'i',
1, 'd',
2, '~', 'n',
2, '`', 'o',
2, '´', 'o',
2, '^', 'o',
2, '~', 'o',
2, '"', 'o',
1, ':',
1, 'o',
2, '`', 'u',
2, '´', 'u',
2, '^', 'u',
2, '"', 'u',
2, '´', 'y',
2, 't', 'h',
2, '"', 'y',
1, 'A',
1, 'a',
1, 'A',
1, 'a',
1, 'A',
1, 'a',
2, '´', 'C',
2, '´', 'c',
2, '^', 'C',
2, '^', 'c',
1, 'C',
1, 'c',
1, 'C',
1, 'c',
1, 'D',
1, 'd',
1, 'D',
1, 'd',
1, 'E',
1, 'e',
1, 'E',
1, 'e',
1, 'E',
1, 'e',
1, 'E',
1, 'e',
1, 'E',
1, 'e',
2, '^', 'G',
2, '^', 'g',
1, 'G',
1, 'g',
1, 'G',
1, 'g',
1, 'G',
1, 'g',
2, '^', 'H',
2, '^', 'h',
1, 'H',
1, 'h',
2, '~', 'I',
2, '~', 'i',
1, 'I',
1, 'i',
1, 'I',
1, 'i',
1, 'I',
1, 'i',
1, 'I',
1, 'i',
2, 'I', 'J',
2, 'i', 'j',
2, '^', 'J',
2, '^', 'j',
1, 'K',
1, 'k',
1, 'L',
1, 'l',
1, 'L',
1, 'l',
1, 'L',
1, 'l',
1, 'L',
1, 'l',
1, 'L',
1, 'l',
2, '´', 'N',
2, '´', 'n',
1, 'N',
1, 'n',
1, 'N',
1, 'n',
2,'\'', 'n',
1, 'O',
1, 'o',
1, 'O',
1, 'o',
2, '"', 'O',
2, '"', 'o',
2, 'O', 'E',
2, 'o', 'e',
2, '´', 'R',
2, '´', 'r',
1, 'R',
1, 'r',
1, 'R',
1, 'r',
2, '´', 'S',
2, '´', 's',
2, '^', 'S',
2, '^', 's',
1, 'S',
1, 's',
1, 'S',
1, 's',
1, 'T',
1, 't',
1, 'T',
1, 't',
1, 'T',
1, 't',
2, '~', 'U',
2, '~', 'u',
1, 'U',
1, 'u',
1, 'U',
1, 'u',
1, 'U',
1, 'u',
2, '"', 'U',
2, '"', 'u',
1, 'U',
1, 'u',
2, '^', 'W',
2, '^', 'w',
2, '^', 'Y',
2, '^', 'y',
2, '"', 'Y',
2, '´', 'Z',
2, '´', 'z',
1, 'Z',
1, 'z',
1, 'Z',
1, 'z',
1, 'S',
1, 'f',
1, 'S',
1, 's',
1, 'T',
1, 't',
1, '^',
1, '~',
1, '"',
1, 'B',
1, 'b',
1, 'D',
1, 'd',
1, 'F',
1, 'f',
1, 'M',
1, 'm',
1, 'P',
1, 'p',
1, 'S',
1, 's',
1, 'T',
1, 't',
2, '`', 'W',
2, '`', 'w',
2, '´', 'W',
2, '´', 'w',
2, '"', 'W',
2, '"', 'w',
2, '`', 'Y',
2, '`', 'y',
1, '-',
1, '-',
1, '-',
1, '-',
1, '-',
1, '-',
1, '"',
1, '"',
1, '"',
1, '+',
1, 'o',
3, '.', '.', '.',
4, 'o', '/', 'o', 'o',
1, '´',
2, '´', '´',
3, '´', '´', '´',
1, '<',
1, '>',
3, 'E', 'U', 'R',
3, 'N', 'o', '.',
2, 'T', 'M',
3, 'O', 'h', 'm',
3, '1', '/', '8',
3, '3', '/', '8',
3, '5', '/', '8',
3, '7', '/', '8',
2, '<', '-',
1, '^',
2, '-', '>',
1, 'V',
2, '<', '=',
2, '=', '>',
1, '-',
1, '/',
2, '/', '=',
2, '<', '=',
2, '>', '=',
2, '<', '<',
2, '>', '>',
1, '-',
1, '|',
1, '+',
1, '+',
1, '+',
1, '+',
1, '+',
1, '+',
1, '+',
1, '+',
1, '+',
};
static const short translit_page00[248] = {
0, 2, 4, 6, -1, 9, 13, 15, /* 0xa0-0xa7 */
18, 20, 24, 26, 29, 33, 35, -1, /* 0xa8-0xaf */
39, 42, 46, 49, 52, 54, 56, 58, /* 0xb0-0xb7 */
60, 62, 65, 67, 70, 74, 78, 82, /* 0xb8-0xbf */
84, 87, 90, 93, 96, 99, 101, 104, /* 0xc0-0xc7 */
106, 109, 112, 115, 118, 121, 124, 127, /* 0xc8-0xcf */
130, 132, 135, 138, 141, 144, 147, 150, /* 0xd0-0xd7 */
152, 154, 157, 160, 163, 166, 169, 172, /* 0xd8-0xdf */
175, 178, 181, 184, 187, 190, 192, 195, /* 0xe0-0xe7 */
197, 200, 203, 206, 209, 212, 215, 218, /* 0xe8-0xef */
221, 223, 226, 229, 232, 235, 238, 241, /* 0xf0-0xf7 */
243, 245, 248, 251, 254, 257, 260, 263, /* 0xf8-0xff */
/* 0x0100 */
266, 268, 270, 272, 274, 276, 278, 281, /* 0x00-0x07 */
284, 287, 290, 292, 294, 296, 298, 300, /* 0x08-0x0f */
302, 304, 306, 308, 310, 312, 314, 316, /* 0x10-0x17 */
318, 320, 322, 324, 326, 329, 332, 334, /* 0x18-0x1f */
336, 338, 340, 342, 344, 347, 350, 352, /* 0x20-0x27 */
354, 357, 360, 362, 364, 366, 368, 370, /* 0x28-0x2f */
372, 374, 376, 379, 382, 385, 388, 390, /* 0x30-0x37 */
-1, 392, 394, 396, 398, 400, 402, 404, /* 0x38-0x3f */
406, 408, 410, 412, 415, 418, 420, 422, /* 0x40-0x47 */
424, 426, -1, -1, 429, 431, 433, 435, /* 0x48-0x4f */
437, 440, 443, 446, 449, 452, 455, 457, /* 0x50-0x57 */
459, 461, 463, 466, 469, 472, 475, 477, /* 0x58-0x5f */
479, 481, 483, 485, 487, 489, 491, 493, /* 0x60-0x67 */
495, 498, 501, 503, 505, 507, 509, 511, /* 0x68-0x6f */
513, 516, 519, 521, 523, 526, 529, 532, /* 0x70-0x77 */
535, 538, 541, 544, 546, 548, 550, 552, /* 0x78-0x7f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x80-0x87 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x88-0x8f */
-1, -1, 554, -1, -1, -1, -1, -1, /* 0x90-0x97 */
};
static const short translit_page02[8] = {
556, 558, 560, 562, -1, -1, -1, -1, /* 0x18-0x1f */
};
static const short translit_page02_1[32] = {
-1, -1, -1, -1, -1, -1, 564, -1, /* 0xc0-0xc7 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0xc8-0xcf */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0xd0-0xd7 */
-1, -1, -1, -1, 566, 568, -1, -1, /* 0xd8-0xdf */
};
static const short translit_page1e[136] = {
-1, -1, 570, 572, -1, -1, -1, -1, /* 0x00-0x07 */
-1, -1, 574, 576, -1, -1, -1, -1, /* 0x08-0x0f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x10-0x17 */
-1, -1, -1, -1, -1, -1, 578, 580, /* 0x18-0x1f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x20-0x27 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x28-0x2f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x30-0x37 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x38-0x3f */
582, 584, -1, -1, -1, -1, -1, -1, /* 0x40-0x47 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x48-0x4f */
-1, -1, -1, -1, -1, -1, 586, 588, /* 0x50-0x57 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x58-0x5f */
590, 592, -1, -1, -1, -1, -1, -1, /* 0x60-0x67 */
-1, -1, 594, 596, -1, -1, -1, -1, /* 0x68-0x6f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x70-0x77 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x78-0x7f */
598, 601, 604, 607, 610, 613, -1, -1, /* 0x80-0x87 */
};
static const short translit_page1e_2[8] = {
-1, -1, 616, 619, -1, -1, -1, -1, /* 0xf0-0xf7 */
};
static const short translit_page20[48] = {
622, 624, 626, 628, 630, 632, -1, -1, /* 0x10-0x17 */
-1, -1, -1, -1, 634, 636, 638, -1, /* 0x18-0x1f */
640, -1, 642, -1, -1, -1, 644, -1, /* 0x20-0x27 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x28-0x2f */
648, -1, 653, 655, 658, -1, -1, -1, /* 0x30-0x37 */
-1, 662, 664, -1, -1, -1, -1, -1, /* 0x38-0x3f */
};
static const short translit_page21[200] = {
-1, -1, -1, -1, -1, -1, 670, -1, /* 0x10-0x17 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x18-0x1f */
-1, -1, 674, -1, -1, -1, 677, -1, /* 0x20-0x27 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x28-0x2f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x30-0x37 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x38-0x3f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x40-0x47 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x48-0x4f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x50-0x57 */
-1, -1, -1, 681, 685, 689, 693, -1, /* 0x58-0x5f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x60-0x67 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x68-0x6f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x70-0x77 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x78-0x7f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x80-0x87 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x88-0x8f */
697, 700, 702, 705, -1, -1, -1, -1, /* 0x90-0x97 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x98-0x9f */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0xa0-0xa7 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0xa8-0xaf */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0xb0-0xb7 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0xb8-0xbf */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0xc0-0xc7 */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0xc8-0xcf */
707, -1, 710, -1, -1, -1, -1, -1, /* 0xd0-0xd7 */
};
static const short translit_page22[8] = {
-1, -1, 713, -1, -1, 715, -1, -1, /* 0x10-0x17 */
};
static const short translit_page22_3[16] = {
717, -1, -1, -1, 720, 723, -1, -1, /* 0x60-0x67 */
-1, -1, 726, 729, -1, -1, -1, -1, /* 0x68-0x6f */
};
static const short translit_page25[64] = {
732, -1, 734, -1, -1, -1, -1, -1, /* 0x00-0x07 */
-1, -1, -1, -1, 736, -1, -1, -1, /* 0x08-0x0f */
738, -1, -1, -1, 740, -1, -1, -1, /* 0x10-0x17 */
742, -1, -1, -1, 744, -1, -1, -1, /* 0x18-0x1f */
-1, -1, -1, -1, 746, -1, -1, -1, /* 0x20-0x27 */
-1, -1, -1, -1, 748, -1, -1, -1, /* 0x28-0x2f */
-1, -1, -1, -1, 750, -1, -1, -1, /* 0x30-0x37 */
-1, -1, -1, -1, 752, -1, -1, -1, /* 0x38-0x3f */
};
#define translit_index(wc) \
(wc >= 0x00a0 && wc < 0x0198 ? translit_page00[wc-0x00a0] : \
wc >= 0x0218 && wc < 0x0220 ? translit_page02[wc-0x0218] : \
wc >= 0x02c0 && wc < 0x02e0 ? translit_page02_1[wc-0x02c0] : \
wc >= 0x1e00 && wc < 0x1e88 ? translit_page1e[wc-0x1e00] : \
wc >= 0x1ef0 && wc < 0x1ef8 ? translit_page1e_2[wc-0x1ef0] : \
wc >= 0x2010 && wc < 0x2040 ? translit_page20[wc-0x2010] : \
wc == 0x20ac ? 666 : \
wc >= 0x2110 && wc < 0x21d8 ? translit_page21[wc-0x2110] : \
wc >= 0x2210 && wc < 0x2218 ? translit_page22[wc-0x2210] : \
wc >= 0x2260 && wc < 0x2270 ? translit_page22_3[wc-0x2260] : \
wc >= 0x2500 && wc < 0x2540 ? translit_page25[wc-0x2500] : \
-1)