std::pair<UniToStrPair *, UniToStrPair *> ipa_to_unicode_tbl() { /* This table contains all transcription characters used in * all dictionaries distributed with ABBYY Lingvo 12. * * How this table was build * * Transcription shown in Lingvo Card window cannot be copied, * but some of the dictionaries are available online through * http://slovari.yandex.ru/ service. Dictionary articles in * Lingvo 12 application and in online service does not always match, * transcription may differ. Most of the time, however, * we can find the required transcription character. * * As a last resort we may scan Unicode character table for similar character. * See http://www.unicode.org/charts/, we are mainly interested in "Phonetic Symbols" * character group. Latin and "Combining Diacritics" groups may be useful too. * * In the table below, characters marked with a question mark were found this way. * * In dictionaries distributed with ABBYY Lingvo x3 transcription characters * do not require any conversion, they are true Unicode characters. * So for Lingvo x3 this table should not be used, transcription characters * should be left intact. * * Chars new to Lingvo x3 are included conditionally in this table. * They all mapped to identical chars. They've been added here for debug purpose. * * Lingvo 12 and Lingvo x3 char sets collide in two points: 0x0405 and 0x2018. * These chars should be translated differently depending on the version of * Lingvo used. Other common chars are mapped to identical chars thus do not * cause a problem. * */ static UniToStrPair ipa_to_unicode_tbl[] = { ipa_to_unicode_make_pair(0x0020, 0x0020), // ipa_to_unicode_make_pair(0x0027, 0x0027), // ' ipa_to_unicode_make_pair(0x0028, 0x0028), // ( ipa_to_unicode_make_pair(0x0029, 0x0029), // ) ipa_to_unicode_make_pair(0x002C, 0x002C), // , ipa_to_unicode_make_pair(0x002D, 0x002D), // - ipa_to_unicode_make_pair(0x002E, 0x002E), // . ipa_to_unicode_make_pair(0x002F, 0x002F), // / ipa_to_unicode_make_pair(0x0030, 0x00DF), // ß ? ipa_to_unicode_make_pair(0x0031, 0x0065, 0x0303), // ẽ ? ipa_to_unicode_make_pair(0x0032, 0x025C), // ɜ ipa_to_unicode_make_pair(0x0033, 0x0129), // ĩ ? ipa_to_unicode_make_pair(0x0034, 0x00F5), // õ ? ipa_to_unicode_make_pair(0x0035, 0x0169), // ũ ? ipa_to_unicode_make_pair(0x0036, 0x028E), // ʎ ? ipa_to_unicode_make_pair(0x0037, 0x0263), // ɣ ? ipa_to_unicode_make_pair(0x0038, 0x1D4A), // e ipa_to_unicode_make_pair(0x003A, 0x003A), // ː ipa_to_unicode_make_pair(0x003B, 0x003B), // ; #ifdef LINGVOX3 ipa_to_unicode_make_pair(0x0041, 0x0041), // A ipa_to_unicode_make_pair(0x0047, 0x0047), // G ipa_to_unicode_make_pair(0x0048, 0x0048), // H ipa_to_unicode_make_pair(0x004D, 0x004D), // M ipa_to_unicode_make_pair(0x004E, 0x004E), // N ipa_to_unicode_make_pair(0x004F, 0x004F), // O ipa_to_unicode_make_pair(0x0052, 0x0052), // R ipa_to_unicode_make_pair(0x0053, 0x0053), // S ipa_to_unicode_make_pair(0x0054, 0x0054), // T ipa_to_unicode_make_pair(0x0061, 0x0061), // a ipa_to_unicode_make_pair(0x0062, 0x0062), // b ipa_to_unicode_make_pair(0x0063, 0x0063), // c ipa_to_unicode_make_pair(0x0064, 0x0064), // d ipa_to_unicode_make_pair(0x0065, 0x0065), // e ipa_to_unicode_make_pair(0x0066, 0x0066), // f ipa_to_unicode_make_pair(0x0067, 0x0067), // g ipa_to_unicode_make_pair(0x0068, 0x0068), // h ipa_to_unicode_make_pair(0x0069, 0x0069), // i ipa_to_unicode_make_pair(0x006A, 0x006A), // j ipa_to_unicode_make_pair(0x006B, 0x006B), // k ipa_to_unicode_make_pair(0x006C, 0x006C), // l ipa_to_unicode_make_pair(0x006D, 0x006D), // m ipa_to_unicode_make_pair(0x006E, 0x006E), // n #endif ipa_to_unicode_make_pair(0x006F, 0x006F), // o #ifdef LINGVOX3 ipa_to_unicode_make_pair(0x0070, 0x0070), // p ipa_to_unicode_make_pair(0x0071, 0x0071), // q ipa_to_unicode_make_pair(0x0072, 0x0072), // r ipa_to_unicode_make_pair(0x0073, 0x0073), // s ipa_to_unicode_make_pair(0x0074, 0x0074), // t ipa_to_unicode_make_pair(0x0075, 0x0075), // u ipa_to_unicode_make_pair(0x0076, 0x0076), // v ipa_to_unicode_make_pair(0x0077, 0x0077), // w ipa_to_unicode_make_pair(0x007A, 0x007A), // z #endif ipa_to_unicode_make_pair(0x0078, 0x0078), // x ipa_to_unicode_make_pair(0x0079, 0x0079), // y ipa_to_unicode_make_pair(0x00a0, 0x02A7), // ʧ ipa_to_unicode_make_pair(0x00a4, 0x0062), // b ipa_to_unicode_make_pair(0x00a6, 0x0077), // w ipa_to_unicode_make_pair(0x00a7, 0x0066), // f ipa_to_unicode_make_pair(0x00a9, 0x0073), // s ipa_to_unicode_make_pair(0x00ab, 0x0074), // t ipa_to_unicode_make_pair(0x00ac, 0x0064), // d ipa_to_unicode_make_pair(0x00ad, 0x006e), // n ipa_to_unicode_make_pair(0x00ae, 0x006c), // l ipa_to_unicode_make_pair(0x00b0, 0x006b), // k ipa_to_unicode_make_pair(0x00b1, 0x0067), // g ipa_to_unicode_make_pair(0x00b5, 0x0061), // a ipa_to_unicode_make_pair(0x00b6, 0x028A), // ʊ ipa_to_unicode_make_pair(0x00b7, 0x00E3), // ã ipa_to_unicode_make_pair(0x00bb, 0x0259), // ə #ifdef LINGVOX3 ipa_to_unicode_make_pair(0x00DF, 0x00DF), // ß ipa_to_unicode_make_pair(0x00E3, 0x00E3), // ã ipa_to_unicode_make_pair(0x00E4, 0x00E4), // ä ipa_to_unicode_make_pair(0x00E6, 0x00E6), // æ ipa_to_unicode_make_pair(0x00E7, 0x00E7), // ç ipa_to_unicode_make_pair(0x00EB, 0x00EB), // ë ipa_to_unicode_make_pair(0x00F0, 0x00F0), // ð ipa_to_unicode_make_pair(0x00F4, 0x00F4), // ô ipa_to_unicode_make_pair(0x00F8, 0x00F8), // ø ipa_to_unicode_make_pair(0x0101, 0x0101), // ā ipa_to_unicode_make_pair(0x0113, 0x0113), // ē ipa_to_unicode_make_pair(0x012B, 0x012B), // ī ipa_to_unicode_make_pair(0x014B, 0x014B), // ŋ ipa_to_unicode_make_pair(0x014D, 0x014D), // ō ipa_to_unicode_make_pair(0x014F, 0x014F), // ŏ ipa_to_unicode_make_pair(0x0153, 0x0153), // œ ipa_to_unicode_make_pair(0x01D0, 0x01D0), // ǐ ipa_to_unicode_make_pair(0x01D4, 0x01D4), // ǔ ipa_to_unicode_make_pair(0x0250, 0x0250), // ɐ ipa_to_unicode_make_pair(0x0251, 0x0251), // ɑ ipa_to_unicode_make_pair(0x0252, 0x0252), // ɒ ipa_to_unicode_make_pair(0x0254, 0x0254), // ɔ ipa_to_unicode_make_pair(0x0259, 0x0259), // ə ipa_to_unicode_make_pair(0x025B, 0x025B), // ɛ ipa_to_unicode_make_pair(0x025C, 0x025C), // ɜ ipa_to_unicode_make_pair(0x0265, 0x0265), // ɥ ipa_to_unicode_make_pair(0x0272, 0x0272), // ɲ ipa_to_unicode_make_pair(0x0280, 0x0280), // ʀ ipa_to_unicode_make_pair(0x0283, 0x0283), // ʃ ipa_to_unicode_make_pair(0x028A, 0x028A), // ʊ ipa_to_unicode_make_pair(0x028C, 0x028C), // ʌ ipa_to_unicode_make_pair(0x028F, 0x028F), // ʏ ipa_to_unicode_make_pair(0x0292, 0x0292), // ʒ ipa_to_unicode_make_pair(0x02A4, 0x02A4), // ʤ ipa_to_unicode_make_pair(0x02A7, 0x02A7), // ʧ ipa_to_unicode_make_pair(0x026A, 0x026A), // ɪ ipa_to_unicode_make_pair(0x02CC, 0x02CC), // ˌ ipa_to_unicode_make_pair(0x02D0, 0x02D0), // ː ipa_to_unicode_make_pair(0x0303, 0x0303), // combining tilde ipa_to_unicode_make_pair(0x0331, 0x0331), // combining macron below ipa_to_unicode_make_pair(0x035C, 0x035C), // combining double breve below ipa_to_unicode_make_pair(0x035D, 0x035D), // combining double breve ipa_to_unicode_make_pair(0x035E, 0x035E), // combining double macron ipa_to_unicode_make_pair(0x035F, 0x035F), // combining double macron below ipa_to_unicode_make_pair(0x03B8, 0x03B8), // θ #endif ipa_to_unicode_make_pair(0x0402, 0x0069, 0x02D0), // iː ipa_to_unicode_make_pair(0x0403, 0x0251, 0x02D0 ),// ɑː ipa_to_unicode_make_pair(0x0404, 0x007a), // z ipa_to_unicode_make_pair(0x0405, 0x0153, 0x0303), // œ̃ ipa_to_unicode_make_pair(0x0406, 0x0068), // h ipa_to_unicode_make_pair(0x0407, 0x0072), // r ipa_to_unicode_make_pair(0x0408, 0x0070), // p ipa_to_unicode_make_pair(0x0409, 0x0292), // ʒ ipa_to_unicode_make_pair(0x040a, 0x014b), // ŋ ipa_to_unicode_make_pair(0x040b, 0x03b8), // θ ipa_to_unicode_make_pair(0x040c, 0x0075), // u ipa_to_unicode_make_pair(0x040e, 0x026a), // ɪ ipa_to_unicode_make_pair(0x040f, 0x0283), // ʃ ipa_to_unicode_make_pair(0x0428, 0x0061), // a ipa_to_unicode_make_pair(0x0440, 0x014F), // ŏ ipa_to_unicode_make_pair(0x0441, 0x0272), // ɲ ipa_to_unicode_make_pair(0x0442, 0x0254, 0x0303), // ɔ̃ ipa_to_unicode_make_pair(0x0443, 0x00F8), // ø ipa_to_unicode_make_pair(0x0444, 0x01D4), // ǔ ipa_to_unicode_make_pair(0x0445, 0x025B, 0x0303), //ɛ̃ ipa_to_unicode_make_pair(0x0446, 0x00E7), // ç ipa_to_unicode_make_pair(0x0447, 0x0061, 0x035C, 0x0065), // a͜e ipa_to_unicode_make_pair(0x044A, 0x028F), // ʏ ipa_to_unicode_make_pair(0x044C, 0x0251, 0x0303), // ɑ̃ ipa_to_unicode_make_pair(0x044D, 0x026A), // ɪ ipa_to_unicode_make_pair(0x044E, 0x025C, 0x02D0), // ɜː ipa_to_unicode_make_pair(0x044F, 0x0252), // ɒ ipa_to_unicode_make_pair(0x0452, 0x0076), // v ipa_to_unicode_make_pair(0x0453, 0x0075, 0x02D0), // uː ipa_to_unicode_make_pair(0x0454, 0x0254, 0x035C, 0x00F8), // ɔ͜ø ipa_to_unicode_make_pair(0x0455, 0x01D0), // ǐ ipa_to_unicode_make_pair(0x0456, 0x006a), // j ipa_to_unicode_make_pair(0x0457, 0x0265), // ɥ ipa_to_unicode_make_pair(0x0458, 0x0153), // œ ipa_to_unicode_make_pair(0x045e, 0x0065), // e ipa_to_unicode_make_pair(0x0490, 0x006d), // m ipa_to_unicode_make_pair(0x0491, 0x025b), // ɛ ipa_to_unicode_make_pair(0x2018, 0x0251), // ɑ ipa_to_unicode_make_pair(0x201a, 0x0254, 0x02D0), // ɔː ipa_to_unicode_make_pair(0x201e, 0x0259, 0x02D0), // əː ? ipa_to_unicode_make_pair(0x2020, 0x0259), // ə ipa_to_unicode_make_pair(0x2021, 0x00E6), // æ ipa_to_unicode_make_pair(0x2026, 0x028C), // ʌ ipa_to_unicode_make_pair(0x2030, 0x00F0), // ð ipa_to_unicode_make_pair(0x2039, 0x02A4), // ʤ ipa_to_unicode_make_pair(0x20ac, 0x0254), // ɔ ipa_to_unicode_make_pair(0x2116, 0x0061, 0x035C, 0x006F), // a͜o }; return std::make_pair(ipa_to_unicode_tbl, ipa_to_unicode_tbl + sizeof(ipa_to_unicode_tbl) / sizeof(UniToStrPair)); }
std::pair<UniToStrPair *, UniToStrPair *> ipa_to_unicode_tbl() { static UniToStrPair ipa_to_unicode_tbl[] = { ipa_to_unicode_make_pair('\'', 0x02c8), ipa_to_unicode_make_pair(0x00a0, 0x02A7), ipa_to_unicode_make_pair(0x00a4, 0x0062), ipa_to_unicode_make_pair(0x00a6, 0x0077), ipa_to_unicode_make_pair(0x00a7, 0x0066), ipa_to_unicode_make_pair(0x00a9, 0x0073), ipa_to_unicode_make_pair(0x00ab, 0x0074), ipa_to_unicode_make_pair(0x00ac, 0x0064), ipa_to_unicode_make_pair(0x00ad, 0x006e), ipa_to_unicode_make_pair(0x00ae, 0x006c), ipa_to_unicode_make_pair(0x00b0, 0x006b), ipa_to_unicode_make_pair(0x00b1, 0x0261), ipa_to_unicode_make_pair(0x00b5, 0x0061), ipa_to_unicode_make_pair(0x0402, 0x0069, ':'), ipa_to_unicode_make_pair(0x0403, 0x0251, ':' ), ipa_to_unicode_make_pair(0x0404, 0x007a), ipa_to_unicode_make_pair(0x0406, 0x0068), ipa_to_unicode_make_pair(0x0407, 0x0072), ipa_to_unicode_make_pair(0x0408, 0x0070), ipa_to_unicode_make_pair(0x0409, 0x0292), ipa_to_unicode_make_pair(0x040a, 0x014b), ipa_to_unicode_make_pair(0x040b, 0x03b8), ipa_to_unicode_make_pair(0x040c, 0x0075), ipa_to_unicode_make_pair(0x040e, 0x026a), ipa_to_unicode_make_pair(0x040f, 0x0283), ipa_to_unicode_make_pair(0x0428, 0x0061), ipa_to_unicode_make_pair(0x0452, 0x0076), ipa_to_unicode_make_pair(0x0453, 0x0075, ':'), ipa_to_unicode_make_pair(0x0456, 0x006a), ipa_to_unicode_make_pair(0x045e, 0x0065), ipa_to_unicode_make_pair(0x0490, 0x006d), ipa_to_unicode_make_pair(0x0491, 0x025b), ipa_to_unicode_make_pair(0x201a, 0x0254), ipa_to_unicode_make_pair(0x201e, 0x0259), ipa_to_unicode_make_pair(0x2020, 0x0259), ipa_to_unicode_make_pair(0x2021, 0x00e6), ipa_to_unicode_make_pair(0x2026, 0x028c), ipa_to_unicode_make_pair(0x2030, 0x00f0), ipa_to_unicode_make_pair(0x2039, 0x0064, 0x0292), ipa_to_unicode_make_pair(0x20ac, 0x0254), }; return std::make_pair(ipa_to_unicode_tbl, ipa_to_unicode_tbl + sizeof(ipa_to_unicode_tbl) / sizeof(UniToStrPair)); }