/* * 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)