From b35b67b741f90faa6c642c193d619a85eb4063f7 Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Mon, 9 Nov 2026 07:04:10 +0800 Subject: [PATCH] feat(alalc): encode ALA-LC East Asian systems - Japanese 2022, Chinese 2012 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three maps from the ALA-LC romanization tables, transcribed from the loc.gov documents' complete text layers: - alalc-jpn-Hrkt-Latn-2022: McCune-Reischauer kana tables (charts A and B) kana-by-kana, plus the deterministic orthographic rules - lengthening-bar macron (2.5.1), sokuon doubling with the ch->tch exception (chart note ii), n-apostrophe (5.2), kana repetition markers (4.4.1), punctuation equivalents (4.2-4.3). Kanji readings (M remainder), morpheme-dependent vowel merging, particle readings of ha/he, capitalization and word division are documented as remainders, including the document's own こうし Kōshi/koushi split. - alalc-zho-Hani-Latn-2012: the 2012 table is Pinyin-based (it replaced Wade-Giles). Encodes the 321 characters attested with readings in the document's example lines under the Separation of Syllables rule (per-character syllables separated by spaces), the bracket-to-quotation-mark rule, and 大 any([dai, da]) as attested. - alalc-zho-Latn-Latn-2012: the complete Correspondence of Wade-Giles to Pinyin table (pages 9-21, all 397 printed rows in order), the document's own device for normalizing older catalog records, with U+2018/U+2019/U+0027 aspiration-mark input folds. Verification: interscript-ts parse gate 407/407; all embedded tests pass through the TS runtime (214 new); full isc suite green. --- maps/alalc-jpn-Hrkt-Latn-2022.isc | 673 ++++++++++++++++++++++++++++++ maps/alalc-zho-Hani-Latn-2012.isc | 471 +++++++++++++++++++++ maps/alalc-zho-Latn-Latn-2012.isc | 502 ++++++++++++++++++++++ 3 files changed, 1646 insertions(+) create mode 100644 maps/alalc-jpn-Hrkt-Latn-2022.isc create mode 100644 maps/alalc-zho-Hani-Latn-2012.isc create mode 100644 maps/alalc-zho-Latn-Latn-2012.isc diff --git a/maps/alalc-jpn-Hrkt-Latn-2022.isc b/maps/alalc-jpn-Hrkt-Latn-2022.isc new file mode 100644 index 0000000..19b5591 --- /dev/null +++ b/maps/alalc-jpn-Hrkt-Latn-2022.isc @@ -0,0 +1,673 @@ +system "ALA-LC:jpn-Hrkt:Latn:2022" { + +metadata { + authority_id alalc + id 2022 + language iso-639-2:jpn + source_script Hrkt + destination_script Latn + name "Japanese Romanization Table (2022)" + url https://www.loc.gov/catdir/cpso/romanization/japanese.pdf + creation_date 2022 + adoption_date + description { ALA-LC Japanese Romanization Table, 2022 version + (McCune-Reischauer). Encodes the Romanized/Kana Equivalent Charts + (chart A, Standard; chart B, Non-traditional Japanese for foreign + words) kana-by-kana, per section 2.1 ("words and parts of words + written only in hiragana or katakana should be romanized as they + appear") and section 2.4.2.1 ("Romanize kana-by-kana"), together + with the deterministic orthographic rules of the same document: the + lengthening-bar macron rule (2.5.1), the sokuon doubling rule + (chart A note ii), the n-apostrophe rule (5.2), the kana repetition + markers (4.4.1) and the punctuation and typographical equivalents + (4.2-4.3). Transcribed from the loc.gov document's complete text + layer. } + + notes { + note "Kanji readings are the non-deterministic remainder of this + system (kanji entries were marked M for multiple readings in + earlier editions of this table): sections 2.2-2.4 direct the + cataloger to preferred readings from standard dictionaries, + well-established readings of proper names, and loan-word + conventions. This map covers the deterministic kana tables only." + note "Long vowels written without a lengthening bar are a + documented remainder: they merge into a macron only within a + morpheme (2.5.5), and the document itself attests identical kana + strings with different outputs (こうし as Kōshi in 孔子, merged, and + as koushi in 子牛, unmerged). This map therefore romanizes + kana-by-kana (こう -> ou), which is the document's stated primary + mode for kana (2.4.2.1; e.g. スタア sutaa, ジイサン jiisan, びいどろ + biidoro, ジウム jiumu). The lengthening bar ー is deterministic + (2.5.1: vowels written with a lengthening bar are romanized with a + macron) and is encoded; long i is doubled ii except after the bar + (2.5.4: ジイサン jiisan, ビードロ bīdoro)." + note "Particle readings are a documented remainder: は and へ used + as grammatical particles romanize wa and e (chart A note i; section + 2.3.1). Reading the particle requires parsing, so this map gives + the chart values ha and he." + note "Capitalization (section 3) and word division (section 6) are + cataloging-level rules operating above the character mapping and + are not encoded; this map outputs lowercase romanization with no + word division." + note "Chart A 'Other Romanization Styles' footnote markers, shown + for reference only and not encoded: 1 shi (si in Kunrei, Nippon); + 2 chi, tsu (ti, tu in Kunrei, Nippon); 3 fu (hu in Kunrei, Nippon); + 4 を/ヲ 'Always o regardless of usage'; 5 ん/ン 'Always n (Do not + change to m as in Hepburn)'; 6 ji (zi in Kunrei, Nippon); 7 ji, zu + (zi, zu in Kunrei; di, du in Nippon); 8 sha, shu, sho (sya, syu, + syo in Kunrei, Nippon); 9 cha, chu, cho (tya, tyu, tyo in Kunrei, + Nippon); 10 ja, ju, jo (zya, zyu, zyo in Kunrei, Nippon); 11 ja, + ju, jo (zya, zyu, zyo in Kunrei; dya, dyu, dyo in Nippon). The + ALA-LC forms are the ones encoded." + note "Chart A also maps the C + small-い cells to a macron i as + printed (きぃ/キィ ki with macron; likewise ni, hi, mi, ri, gi, bi, + pi rows), and the ぁ/ぉ small-kana cells of the ki, hi, bi, pi rows + (きぁ kya, ひぉ hyo, びぉ byo, ぴぉ pyo). Chart B note iii directs + that large character-small character sequences not found in the + tables be romanized as if the added small characters were regular + characters (e.g. アィ ai, スェ sue, ヴィァ via); this map realizes + the rule by folding the standalone small vowels ぁぃぅぇぉ ァィゥェォ + to their regular equivalents." + note "Recorded but not encoded: the middle dot (4.1: comma plus + space or only a space, depending on clarity), the kanji iteration + mark 々 of the 4.4.1 examples (chōchō, hibi, nennen - kanji-level + repetition), and the geta placeholder (4.4.2, cataloger supplies + the reading in brackets). Section 2.3.2 (historical kana usage) is + covered by the kana-by-kana mode: direct kana-by-kana reading gives + the suggested variant forms (てふてふ tefutefu)." + note "The document contradicts itself on スェ: chart B prints the + row すぇ/スェ -> swe, while chart B note iii's worked example + prints スェ | sue. The chart row is operative here (swe); the note + iii examples アィ -> ai and ヴィァ -> via are consistent and encoded + through the small-kana fold." + } +} + +tests { + # Chart A cells (the table itself; distinctive rows). + "きゃ" -> "kya" + "きぁ" -> "kya" + "きぃ" -> "kī" + "キィ" -> "kī" + "しゃ" -> "sha" + "しぇ" -> "she" + "ちゃ" -> "cha" + "ちぇ" -> "che" + "にぃ" -> "nī" + "にぇ" -> "nye" + "ひぇ" -> "hye" + "ひぉ" -> "hyo" + "みぃ" -> "mī" + "りぃ" -> "rī" + "ぎぃ" -> "gī" + "ぢゃ" -> "ja" + "ぢゅ" -> "ju" + "ぢぇ" -> "je" + "びぃ" -> "bī" + "びぉ" -> "byo" + "ぴぃ" -> "pī" + "ぴょ" -> "pyo" + "ぴぉ" -> "pyo" + "ゐ" -> "i" + "ゑ" -> "e" + "ヰ" -> "i" + "ヱ" -> "e" + "を" -> "o" + "ヲ" -> "o" + "ぢ" -> "ji" + "づ" -> "zu" + "ヂ" -> "ji" + "ヅ" -> "zu" + "ふ" -> "fu" + "し" -> "shi" + "ち" -> "chi" + "つ" -> "tsu" + "じ" -> "ji" + "ん" -> "n" + "ン" -> "n" + "ア" -> "a" + "シ" -> "shi" + # Chart B cells. + "いぇ" -> "ye" + "うぁ" -> "wa" + "うぃ" -> "wi" + "うぇ" -> "we" + "うぉ" -> "wo" + "くぁ" -> "kwa" + "くぃ" -> "kwi" + "くぇ" -> "kwe" + "くぉ" -> "kwo" + "すぃ" -> "si" + "すぇ" -> "swe" + "ぐぁ" -> "gwa" + "ぐぃ" -> "gwi" + "ぐぇ" -> "gwe" + "ぐぉ" -> "gwo" + "ずぃ" -> "zi" + "つぁ" -> "tsa" + "つぃ" -> "tsi" + "つぇ" -> "tse" + "つぉ" -> "tso" + "てぃ" -> "ti" + "とぅ" -> "tu" + "てゅ" -> "tyu" + "ふぁ" -> "fa" + "ふぃ" -> "fi" + "ふゅ" -> "fyu" + "ふぇ" -> "fe" + "ふぉ" -> "fo" + "ふぃぇ" -> "fye" + "ふょ" -> "fyo" + "ヴァ" -> "va" + "ヴィ" -> "vi" + "ヴ" -> "vu" + "ヴェ" -> "ve" + "ヴォ" -> "vo" + "ヴュ" -> "vyu" + "でぃ" -> "di" + "どぅ" -> "du" + "でゅ" -> "dyu" + # Chart B note iii examples (as printed; the スェ example contradicts + # the chart B row swe - see notes). + "アィ" -> "ai" + "ヴィァ" -> "via" + # Document examples, 2.4.2.1 (kana-by-kana primary forms). + "コミユニテイ" -> "komiyunitei" + "スタア" -> "sutaa" + "テレビジオン" -> "terebijion" + "シンポジウム" -> "shinpojiumu" + "シンポジューム" -> "shinpojūmu" + # 2.5.1 lengthening bar -> macron. + "コンピュータ" -> "konpyūta" + "ウィーク" -> "wīku" + "ビードロ" -> "bīdoro" + "そーっと" -> "sōtto" + # 2.5.4 long i doubled; after the bar, the macron i. + "ジイサン" -> "jiisan" + "びいどろ" -> "biidoro" + "ものいい" -> "monoii" + # 2.5.5.2.1 morphemic final u verbs (unmerged). + "ぬう" -> "nuu" + "とう" -> "tou" + "おもう" -> "omou" + # 2.5.5.1 morpheme-boundary examples (unmerged; the 本居 example is + # kanji-level - Moto+ori - and the contracted kana もとい reads + # motoi kana-by-kana, so only the kana-expressible cases are tested). + "こうし" -> "koushi" + "ながあめ" -> "nagaame" + "かいしゃあん" -> "kaishaan" + "くされえん" -> "kusareen" + # 5.2 n-apostrophe examples. + "しんえつ" -> "shin'etsu" + "ほんやく" -> "hon'yaku" + "しんあいなる" -> "shin'ainaru" + "さんおくえん" -> "san'okuen" + "しんうち" -> "shin'uchi" + # Chart A note ii sokuon examples. + "あっぱく" -> "appaku" + "がっかい" -> "gakkai" + "とっしん" -> "tosshin" + "みっちゃく" -> "mitchaku" +} + +stage main { + + # RULES + # 4.4.1: the repetition markers ゝ and ゞ indicate repetition of the + # previous syllable; the kana is doubled so the charts romanize it + # twice. + sub { + from capture(any("あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ")) + any("ゝゞ") + to ref( 1 ) + ref( 1 ) + } + + # 5.2: transcribe the apostrophe between syllables when the first + # syllable ends with n and the following syllable begins with a + # vowel (a, i, u, e, o) or y. + sub { + from capture(any("んン")) + to ref( 1 ) + "'" + after any("あいうえおやゆよゐゑアイウエオヤユヨヰヱ") + } + + # CHARACTERS + parallel { + + # Chart A - Standard Chart + + # Hiragana gojūon + sub "あ" "a" + sub "い" "i" + sub "う" "u" + sub "え" "e" + sub "お" "o" + sub "か" "ka" + sub "き" "ki" + sub "く" "ku" + sub "け" "ke" + sub "こ" "ko" + sub "さ" "sa" + sub "し" "shi" # footnote 1: si (Kunrei, Nippon) + sub "す" "su" + sub "せ" "se" + sub "そ" "so" + sub "た" "ta" + sub "ち" "chi" # footnote 2: ti, tu (Kunrei, Nippon) + sub "つ" "tsu" # footnote 2 + sub "て" "te" + sub "と" "to" + sub "な" "na" + sub "に" "ni" + sub "ぬ" "nu" + sub "ね" "ne" + sub "の" "no" + sub "は" "ha" # chart note i: wa as particle (not encoded, see notes) + sub "ひ" "hi" + sub "ふ" "fu" # footnote 3: hu (Kunrei, Nippon) + sub "へ" "he" # chart note i: e as particle (not encoded, see notes) + sub "ほ" "ho" + sub "ま" "ma" + sub "み" "mi" + sub "む" "mu" + sub "め" "me" + sub "も" "mo" + sub "や" "ya" + sub "ゆ" "yu" + sub "よ" "yo" + sub "ら" "ra" + sub "り" "ri" + sub "る" "ru" + sub "れ" "re" + sub "ろ" "ro" + sub "わ" "wa" + sub "ゐ" "i" + sub "ゑ" "e" + sub "を" "o" # footnote 4: always o regardless of usage + sub "ん" "n" # footnote 5: always n, never m + + # Hiragana dakuten/handakuten + sub "が" "ga" + sub "ぎ" "gi" + sub "ぐ" "gu" + sub "げ" "ge" + sub "ご" "go" + sub "ざ" "za" + sub "じ" "ji" # footnote 6: zi (Kunrei, Nippon) + sub "ず" "zu" + sub "ぜ" "ze" + sub "ぞ" "zo" + sub "だ" "da" + sub "ぢ" "ji" # footnote 7: zi, zu (Kunrei); di, du (Nippon) + sub "づ" "zu" # footnote 7 + sub "で" "de" + sub "ど" "do" + sub "ば" "ba" + sub "び" "bi" + sub "ぶ" "bu" + sub "べ" "be" + sub "ぼ" "bo" + sub "ぱ" "pa" + sub "ぴ" "pi" + sub "ぷ" "pu" + sub "ぺ" "pe" + sub "ぽ" "po" + + # Katakana gojūon + sub "ア" "a" + sub "イ" "i" + sub "ウ" "u" + sub "エ" "e" + sub "オ" "o" + sub "カ" "ka" + sub "キ" "ki" + sub "ク" "ku" + sub "ケ" "ke" + sub "コ" "ko" + sub "サ" "sa" + sub "シ" "shi" # footnote 1 + sub "ス" "su" + sub "セ" "se" + sub "ソ" "so" + sub "タ" "ta" + sub "チ" "chi" # footnote 2 + sub "ツ" "tsu" # footnote 2 + sub "テ" "te" + sub "ト" "to" + sub "ナ" "na" + sub "ニ" "ni" + sub "ヌ" "nu" + sub "ネ" "ne" + sub "ノ" "no" + sub "ハ" "ha" # chart note i + sub "ヒ" "hi" + sub "フ" "fu" # footnote 3 + sub "ヘ" "he" # chart note i + sub "ホ" "ho" + sub "マ" "ma" + sub "ミ" "mi" + sub "ム" "mu" + sub "メ" "me" + sub "モ" "mo" + sub "ヤ" "ya" + sub "ユ" "yu" + sub "ヨ" "yo" + sub "ラ" "ra" + sub "リ" "ri" + sub "ル" "ru" + sub "レ" "re" + sub "ロ" "ro" + sub "ワ" "wa" + sub "ヰ" "i" + sub "ヱ" "e" + sub "ヲ" "o" # footnote 4 + sub "ン" "n" # footnote 5 + + # Katakana dakuten/handakuten + sub "ガ" "ga" + sub "ギ" "gi" + sub "グ" "gu" + sub "ゲ" "ge" + sub "ゴ" "go" + sub "ザ" "za" + sub "ジ" "ji" # footnote 6 + sub "ズ" "zu" + sub "ゼ" "ze" + sub "ゾ" "zo" + sub "ダ" "da" + sub "ヂ" "ji" # footnote 7 + sub "ヅ" "zu" # footnote 7 + sub "デ" "de" + sub "ド" "do" + sub "バ" "ba" + sub "ビ" "bi" + sub "ブ" "bu" + sub "ベ" "be" + sub "ボ" "bo" + sub "パ" "pa" + sub "ピ" "pi" + sub "プ" "pu" + sub "ペ" "pe" + sub "ポ" "po" + + # Chart A yōon (contracted sounds) + sub "きゃ" "kya" + sub "キャ" "kya" + sub "きぁ" "kya" + sub "キァ" "kya" + sub "きぃ" "kī" + sub "キィ" "kī" + sub "きゅ" "kyu" + sub "キュ" "kyu" + sub "きぇ" "kye" + sub "キェ" "kye" + sub "きょ" "kyo" + sub "キョ" "kyo" + sub "しゃ" "sha" # footnote 8: sya, syu, syo (Kunrei, Nippon) + sub "シャ" "sha" # footnote 8 + sub "しゅ" "shu" # footnote 8 + sub "シュ" "shu" # footnote 8 + sub "しぇ" "she" + sub "シェ" "she" + sub "しょ" "sho" # footnote 8 + sub "ショ" "sho" # footnote 8 + sub "ちゃ" "cha" # footnote 9: tya, tyu, tyo (Kunrei, Nippon) + sub "チャ" "cha" # footnote 9 + sub "ちゅ" "chu" # footnote 9 + sub "チュ" "chu" # footnote 9 + sub "ちぇ" "che" + sub "チェ" "che" + sub "ちょ" "cho" # footnote 9 + sub "チョ" "cho" # footnote 9 + sub "にゃ" "nya" + sub "ニャ" "nya" + sub "にぃ" "nī" + sub "ニィ" "nī" + sub "にゅ" "nyu" + sub "ニュ" "nyu" + sub "にぇ" "nye" + sub "ニェ" "nye" + sub "にょ" "nyo" + sub "ニョ" "nyo" + sub "ひゃ" "hya" + sub "ヒャ" "hya" + sub "ひぃ" "hī" + sub "ヒィ" "hī" + sub "ひゅ" "hyu" + sub "ヒュ" "hyu" + sub "ひぇ" "hye" + sub "ヒェ" "hye" + sub "ひょ" "hyo" + sub "ヒョ" "hyo" + sub "ひぉ" "hyo" + sub "ヒォ" "hyo" + sub "みゃ" "mya" + sub "ミャ" "mya" + sub "みぃ" "mī" + sub "ミィ" "mī" + sub "みゅ" "myu" + sub "ミュ" "myu" + sub "みぇ" "mye" + sub "ミェ" "mye" + sub "みょ" "myo" + sub "ミョ" "myo" + sub "りゃ" "rya" + sub "リャ" "rya" + sub "りぃ" "rī" + sub "リィ" "rī" + sub "りゅ" "ryu" + sub "リュ" "ryu" + sub "りぇ" "rye" + sub "リェ" "rye" + sub "りょ" "ryo" + sub "リョ" "ryo" + sub "ぎゃ" "gya" + sub "ギャ" "gya" + sub "ぎぃ" "gī" + sub "ギィ" "gī" + sub "ぎゅ" "gyu" + sub "ギュ" "gyu" + sub "ぎぇ" "gye" + sub "ギェ" "gye" + sub "ぎょ" "gyo" + sub "ギョ" "gyo" + sub "じゃ" "ja" # footnote 10: zya, zyu, zyo (Kunrei, Nippon) + sub "ジャ" "ja" # footnote 10 + sub "じゅ" "ju" # footnote 10 + sub "ジュ" "ju" # footnote 10 + sub "じぇ" "je" + sub "ジェ" "je" + sub "じょ" "jo" # footnote 10 + sub "ジョ" "jo" # footnote 10 + sub "ぢゃ" "ja" # footnote 11: zya, zyu, zyo (Kunrei); dya, dyu, dyo (Nippon) + sub "ヂャ" "ja" # footnote 11 + sub "ぢゅ" "ju" # footnote 11 + sub "ヂュ" "ju" # footnote 11 + sub "ぢぇ" "je" + sub "ヂェ" "je" + sub "ぢょ" "jo" # footnote 11 + sub "ヂョ" "jo" # footnote 11 + sub "びゃ" "bya" + sub "ビャ" "bya" + sub "びぃ" "bī" + sub "ビィ" "bī" + sub "びゅ" "byu" + sub "ビュ" "byu" + sub "びぇ" "bye" + sub "ビェ" "bye" + sub "びょ" "byo" + sub "ビョ" "byo" + sub "びぉ" "byo" + sub "ビォ" "byo" + sub "ぴゃ" "pya" + sub "ピャ" "pya" + sub "ぴぃ" "pī" + sub "ピィ" "pī" + sub "ぴゅ" "pyu" + sub "ピュ" "pyu" + sub "ぴぇ" "pye" + sub "ピェ" "pye" + sub "ぴょ" "pyo" + sub "ピョ" "pyo" + sub "ぴぉ" "pyo" + sub "ピォ" "pyo" + + # Chart B - Non-traditional Japanese Chart (Foreign Words, etc.) + sub "いぇ" "ye" + sub "イェ" "ye" + sub "うぁ" "wa" + sub "ウァ" "wa" + sub "うぃ" "wi" + sub "ウィ" "wi" + sub "うぇ" "we" + sub "ウェ" "we" + sub "うぉ" "wo" + sub "ウォ" "wo" + sub "くぁ" "kwa" + sub "クァ" "kwa" + sub "くぃ" "kwi" + sub "クィ" "kwi" + sub "くぇ" "kwe" + sub "クェ" "kwe" + sub "くぉ" "kwo" + sub "クォ" "kwo" + sub "すぃ" "si" + sub "スィ" "si" + sub "すぇ" "swe" + sub "スェ" "swe" + sub "ぐぁ" "gwa" + sub "グァ" "gwa" + sub "ぐぃ" "gwi" + sub "グィ" "gwi" + sub "ぐぇ" "gwe" + sub "グェ" "gwe" + sub "ぐぉ" "gwo" + sub "グォ" "gwo" + sub "ずぃ" "zi" + sub "ズィ" "zi" + sub "つぁ" "tsa" + sub "ツァ" "tsa" + sub "つぃ" "tsi" + sub "ツィ" "tsi" + sub "つぇ" "tse" + sub "ツェ" "tse" + sub "つぉ" "tso" + sub "ツォ" "tso" + sub "てぃ" "ti" + sub "ティ" "ti" + sub "とぅ" "tu" + sub "トゥ" "tu" + sub "てゅ" "tyu" + sub "テュ" "tyu" + sub "ふぁ" "fa" + sub "ファ" "fa" + sub "ふぃ" "fi" + sub "フィ" "fi" + sub "ふゅ" "fyu" + sub "フュ" "fyu" + sub "ふぇ" "fe" + sub "フェ" "fe" + sub "ふぉ" "fo" + sub "フォ" "fo" + sub "ふぃぇ" "fye" + sub "フィェ" "fye" + sub "ふょ" "fyo" + sub "フョ" "fyo" + sub "ヴァ" "va" + sub "ヴィ" "vi" + sub "ヴ" "vu" + sub "ヴェ" "ve" + sub "ヴォ" "vo" + sub "ヴュ" "vyu" + sub "でぃ" "di" + sub "ディ" "di" + sub "どぅ" "du" + sub "ドゥ" "du" + sub "でゅ" "dyu" + sub "デュ" "dyu" + + # Chart B note iii: sequences not found in the tables romanize as + # if the added small characters were regular characters + # (e.g. アィ ai, スェ sue, ヴィァ via). + sub "ぁ" "a" + sub "ぃ" "i" + sub "ぅ" "u" + sub "ぇ" "e" + sub "ぉ" "o" + sub "ァ" "a" + sub "ィ" "i" + sub "ゥ" "u" + sub "ェ" "e" + sub "ォ" "o" + + # 4.2 punctuation and typographical marks with roman equivalents + sub "、" "," + sub "。" "." + sub "?" "?" + sub "!" "!" + sub "〜" "-" # tilde: hyphen between dates, from ... to ... + # 4.2 quotation mark types 1 and 2 + sub "「" "\"" + sub "」" "\"" + sub "『" "\"" + sub "』" "\"" + # 4.3 brackets and parentheses + sub "〈" "<" + sub "〉" ">" + sub "《" "<" # double angle brackets + sub "》" ">" + sub "〔" "[" + sub "〕" "]" + sub "〘" "[" + sub "〙" "]" + sub "〚" "[" + sub "〛" "]" + sub "(" "(" + sub ")" ")" + } + + # POSTRULES + # Chart A note ii: double consonants (促音) are represented by a + # doubling of the corresponding consonant (e.g. 圧迫 appaku, 学会 + # gakkai, 突進 tosshin); if a double consonant occurs with ch-, add + # t instead of doubling c (e.g. 密着 mitchaku, 熱中 netchū, 出張 + # shutchō). + sub { + from any("っッ") + capture(any("BbDdFfGgHhJjKkLlMmNnPpQqRrSsTtVvWwXxYyZz")) + to ref( 1 ) + ref( 1 ) + } + sub { + from any("っッ") + capture(any("Cc")) + to "t" + ref( 1 ) + } + # A sokuon not followed by a consonant has no romanization in the + # document; it is realized as an abrupt stop and is dropped here. + sub { + from any("っッ") + to "" + } + + # 2.5.1: vowels written with a lengthening bar are romanized with a + # macron (e.g. コンピュータ konpyūta, ニューヨーク Nyū Yōku, そーっと + # sōtto); 2.5.4: long i after the bar is the macron ī. + sub { + from "a" + "ー" + to "ā" + } + sub { + from "i" + "ー" + to "ī" + } + sub { + from "u" + "ー" + to "ū" + } + sub { + from "e" + "ー" + to "ē" + } + sub { + from "o" + "ー" + to "ō" + } +} +} diff --git a/maps/alalc-zho-Hani-Latn-2012.isc b/maps/alalc-zho-Hani-Latn-2012.isc new file mode 100644 index 0000000..b40e21b --- /dev/null +++ b/maps/alalc-zho-Hani-Latn-2012.isc @@ -0,0 +1,471 @@ +system "ALA-LC:zho-Hani:Latn:2012" { + +metadata { + authority_id alalc + id 2012 + language iso-639-2:zho + source_script Hani + destination_script Latn + name "Chinese Romanization Table (2012)" + url https://www.loc.gov/catdir/cpso/romanization/chinese.pdf + creation_date 2012 + adoption_date + description { ALA-LC Chinese Romanization Table, 2012 version. The + 2012 table follows the principles of the Pinyin system, replacing + the Wade-Giles system of earlier editions, and does not indicate + tone marks (Rules of Application 1). Separation of Syllables: the + romanization of each Chinese character is separated by a space. + This map encodes the character readings attested by the document's + own examples, output as lowercase syllables separated by spaces, + and the deterministic punctuation equivalents. Transcribed from the + loc.gov document's complete text layer. } + + notes { + note "Character coverage: the document provides no general + hanzi-to-pinyin table - Rules of Application 2 delegate readings to + Ci hai 辞海 and other dictionaries. The character table here is the + set of 321 distinct characters attested with readings in the + document's own example lines; both simplified and traditional forms + are mapped as attested. The companion map alalc-zho-Latn-Latn-2012 + encodes the document's complete Wade-Giles to Pinyin correspondence + table (pages 9-21)." + note "Multiple readings: 大 is attested both as dai (韋大夫 | Wei + dai fu) and da (智顗大師 | Zhiyi da shi; 中山大學 | Zhongshan da + xue; 长江大饭店 | Chang Jiang da fan dian; 泸州长江大桥 | Luzhou + Changjiang Daqiao) and maps to any([dai, da]). No other character + carries two readings across the document's examples." + note "Rules recorded but not encoded (word formation above the + character level, requiring name/title segmentation): joining the + syllables of multi-character surnames, given names, geographic + names and jurisdictions (Connection of syllables 1, 1A-1E, 2, + 2A-2J, 3); apostrophe insertion before joined vowel-initial + syllables in cases of ambiguity (Connection of syllables 4, e.g. + Chang'an Shi vs Changan Shi); capitalization (Capitalization 1-4; + titles and terms of address lower-cased, e.g. Lin lao shi); the + date rules joining reign periods (Dates 1, e.g. Guangxu ji chou); + systematic romanization of non-Chinese-origin words (Rules of + Application 3)." + note "Punctuation rules recorded but not encoded: the centered + point (•) transcribes as a comma between coordinate words and as a + space between personal-name elements (Punctuation 1) - the choice + is context-dependent. The bracket rule (Punctuation 2) is + deterministic and is encoded: 「」『』《》 romanize as quotation + marks." + } +} + +tests { + # Document examples reproducible end-to-end under the Separation of + # Syllables rule (each character's syllable separated by a space; + # common-noun/direction examples printed lowercase in the document). + "西北" -> "xi bei" + "东北" -> "dong bei" + "東北" -> "dong bei" # 2I: direction/position reading + "一九九八年" -> "yi jiu jiu ba nian" + "一九九零年" -> "yi jiu jiu ling nian" + # Single-character entries (readings attested in the document's + # examples; one or more per romanization initial, plus traditional + # forms and special rows). + "安" -> "an" + "昂" -> "ang" + "北" -> "bei" + "博" -> "bo" + "慈" -> "ci" + "城" -> "cheng" + "东" -> "dong" + "傣" -> "dai" + "俄" -> "e" + "尔" -> "er" + "恩" -> "en" + "夫" -> "fu" + "妃" -> "fei" + "国" -> "guo" + "光" -> "guang" + "华" -> "hua" + "亨" -> "heng" + "九" -> "jiu" + "剧" -> "ju" + "孔" -> "kong" + "李" -> "li" + "娄" -> "lou" + "明" -> "ming" + "木" -> "mu" + "南" -> "nan" + "能" -> "neng" + "歐" -> "ou" + "平" -> "ping" + "颇" -> "po" + "丘" -> "qiu" + "区" -> "qu" + "人" -> "ren" + "如" -> "ru" + "然" -> "ran" + "史" -> "shi" + "司" -> "si" + "孫" -> "sun" + "太" -> "tai" + "桐" -> "tong" + "乌" -> "wu" + "委" -> "wei" + "乡" -> "xiang" + "学" -> "xue" + "一" -> "yi" + "亞" -> "ya" + "元" -> "yuan" + "中" -> "zhong" + "子" -> "zi" + # Traditional forms attested alongside simplified ones. + "吳" -> "wu" + "務" -> "wu" + "學" -> "xue" + "劉" -> "liu" + "寧" -> "ning" + "師" -> "shi" + "菴" -> "an" + "顗" -> "yi" + "釋" -> "shi" +} + +stage main { + # Separation of Syllables: separate the romanization of each Chinese + # character with a space. + separate + + parallel { + # Punctuation 2: brackets used in the manner of quotation marks + # romanize as quotation marks. + sub "「" "\"" + sub "」" "\"" + sub "『" "\"" + sub "』" "\"" + sub "《" "\"" + sub "》" "\"" + + # Characters attested in the document's examples + sub "一" "yi" + sub "与" "yu" + sub "丑" "chou" + sub "丘" "qiu" + sub "东" "dong" + sub "中" "zhong" + sub "主" "zhu" + sub "义" "yi" + sub "乌" "wu" + sub "乙" "yi" + sub "九" "jiu" + sub "乡" "xiang" + sub "亞" "ya" + sub "产" "chan" + sub "亨" "heng" + sub "京" "jing" + sub "人" "ren" + sub "他" "ta" + sub "会" "hui" + sub "佳" "jia" + sub "俄" "e" + sub "保" "bao" + sub "修" "xiu" + sub "健" "jian" + sub "傣" "dai" + sub "元" "yuan" + sub "先" "xian" + sub "光" "guang" + sub "克" "ke" + sub "八" "ba" + sub "公" "gong" + sub "共" "gong" + sub "净" "jing" + sub "刘" "liu" + sub "剧" "ju" + sub "劉" "liu" + sub "加" "jia" + sub "动" "dong" + sub "劳" "lao" + sub "務" "wu" + sub "化" "hua" + sub "北" "bei" + sub "区" "qu" + sub "半" "ban" + sub "华" "hua" + sub "南" "nan" + sub "博" "bo" + sub "占" "zhan" + sub "卯" "mao" + sub "印" "yin" + sub "卿" "qing" + sub "厂" "chang" + sub "原" "yuan" + sub "县" "xian" + sub "发" "fa" + sub "口" "kou" + sub "可" "ke" + sub "史" "shi" + sub "司" "si" + sub "吉" "ji" + sub "名" "ming" + sub "后" "hou" + sub "吳" "wu" + sub "告" "gao" + sub "呗" "bai" + sub "员" "yuan" + sub "周" "zhou" + sub "和" "he" + sub "哈" "ha" + sub "哥" "ge" + sub "商" "shang" + sub "嘉" "jia" + sub "四" "si" + sub "园" "yuan" + sub "国" "guo" + sub "國" "guo" + sub "土" "tu" + sub "地" "di" + sub "城" "cheng" + sub "基" "ji" + sub "塔" "ta" + sub "壁" "bi" + sub { + from "大" + to any(["dai", "da"]) + } # dai in 大夫 (Wei dai fu); da in 智顗大師, 中山大學, 长江大饭店, 泸州长江大桥 + sub "太" "tai" + sub "夫" "fu" + sub "奇" "qi" + sub "如" "ru" + sub "妃" "fei" + sub "始" "shi" + sub "委" "wei" + sub "娄" "lou" + sub "子" "zi" + sub "孔" "kong" + sub "学" "xue" + sub "孫" "sun" + sub "學" "xue" + sub "安" "an" + sub "宋" "song" + sub "宏" "hong" + sub "宝" "bao" + sub "客" "ke" + sub "家" "jia" + sub "寧" "ning" + sub "寺" "si" + sub "小" "xiao" + sub "少" "shao" + sub "尔" "er" + sub "尼" "ni" + sub "展" "zhan" + sub "山" "shan" + sub "岗" "gang" + sub "岛" "dao" + sub "島" "dao" + sub "州" "zhou" + sub "工" "gong" + sub "左" "zuo" + sub "己" "ji" + sub "市" "shi" + sub "师" "shi" + sub "帝" "di" + sub "師" "shi" + sub "干" "gan" + sub "平" "ping" + sub "年" "nian" + sub "幸" "xing" + sub "广" "guang" + sub "庄" "zhuang" + sub "库" "ku" + sub "店" "dian" + sub "府" "fu" + sub "度" "du" + sub "康" "kang" + sub "延" "yan" + sub "张" "zhang" + sub "录" "lu" + sub "徒" "tu" + sub "德" "de" + sub "徽" "hui" + sub "志" "zhi" + sub "忠" "zhong" + sub "恩" "en" + sub "情" "qing" + sub "惠" "hui" + sub "想" "xiang" + sub "慈" "ci" + sub "戏" "xi" + sub "所" "suo" + sub "扬" "yang" + sub "护" "hu" + sub "报" "bao" + sub "文" "wen" + sub "族" "zu" + sub "昂" "ang" + sub "昌" "chang" + sub "明" "ming" + sub "晦" "hui" + sub "景" "jing" + sub "智" "zhi" + sub "書" "shu" + sub "月" "yue" + sub "有" "you" + sub "朝" "chao" + sub "木" "mu" + sub "术" "shu" + sub "权" "quan" + sub "李" "li" + sub "村" "cun" + sub "来" "lai" + sub "杭" "hang" + sub "東" "dong" + sub "林" "lin" + sub "果" "guo" + sub "查" "cha" + sub "案" "an" + sub "桐" "tong" + sub "档" "dang" + sub "桥" "qiao" + sub "梧" "wu" + sub "梵" "fan" + sub "棉" "mian" + sub "棠" "tang" + sub "森" "sen" + sub "楊" "yang" + sub "楼" "lou" + sub "概" "gai" + sub "歌" "ge" + sub "歐" "ou" + sub "正" "zheng" + sub "比" "bi" + sub "毛" "mao" + sub "氏" "shi" + sub "民" "min" + sub "水" "shui" + sub "江" "jiang" + sub "汾" "fen" + sub "沙" "sha" + sub "河" "he" + sub "治" "zhi" + sub "泸" "lu" + sub "洋" "yang" + sub "洲" "zhou" + sub "派" "pai" + sub "浦" "pu" + sub "浩" "hao" + sub "海" "hai" + sub "淇" "qi" + sub "清" "qing" + sub "港" "gang" + sub "滨" "bin" + sub "灣" "wan" + sub "為" "wei" + sub "無" "wu" + sub "然" "ran" + sub "物" "wu" + sub "王" "wang" + sub "珠" "zhu" + sub "理" "li" + sub "甘" "gan" + sub "生" "sheng" + sub "登" "deng" + sub "白" "bai" + sub "的" "de" + sub "皇" "huang" + sub "相" "xiang" + sub "省" "sheng" + sub "督" "du" + sub "研" "yan" + sub "社" "she" + sub "祁" "qi" + sub "祥" "xiang" + sub "福" "fu" + sub "禧" "xi" + sub "秦" "qin" + sub "程" "cheng" + sub "稿" "gao" + sub "究" "jiu" + sub "立" "li" + sub "章" "zhang" + sub "管" "guan" + sub "索" "suo" + sub "經" "jing" + sub "緒" "xu" + sub "縣" "xian" + sub "纂" "zuan" + sub "约" "yue" + sub "纽" "niu" + sub "组" "zu" + sub "编" "bian" + sub "缮" "shan" + sub "美" "mei" + sub "翠" "cui" + sub "老" "lao" + sub "聖" "sheng" + sub "能" "neng" + sub "自" "zi" + sub "臺" "tai" + sub "芝" "zhi" + sub "苗" "miao" + sub "英" "ying" + sub "華" "hua" + sub "菴" "an" + sub "董" "dong" + sub "蔣" "jiang" + sub "藏" "zang" + sub "西" "xi" + sub "要" "yao" + sub "言" "yan" + sub "論" "lun" + sub "讨" "tao" + sub "论" "lun" + sub "诗" "shi" + sub "话" "hua" + sub "说" "shuo" + sub "谷" "gu" + sub "賢" "xian" + sub "趙" "zhao" + sub "路" "lu" + sub "輝" "hui" + sub "较" "jiao" + sub "辑" "ji" + sub "迅" "xun" + sub "运" "yun" + sub "逊" "xun" + sub "鄂" "e" + sub "釋" "shi" + sub "錦" "jin" + sub "钢" "gang" + sub "镇" "zhen" + sub "長" "chang" + sub "长" "chang" + sub "門" "men" + sub "陕" "shan" + sub "院" "yuan" + sub "陳" "chen" + sub "陽" "yang" + sub "雄" "xiong" + sub "集" "ji" + sub "雲" "yun" + sub "零" "ling" + sub "震" "zhen" + sub "靖" "jing" + sub "韋" "wei" + sub "順" "shun" + sub "顗" "yi" + sub "颇" "po" + sub "风" "feng" + sub "館" "guan" + sub "饭" "fan" + sub "馬" "ma" + sub "驼" "tuo" + sub "骆" "luo" + sub "高" "gao" + sub "鲁" "lu" + sub "鲜" "xian" + sub "鶴" "he" + sub "鹿" "lu" + sub "黄" "huang" + sub "黑" "hei" + sub "齐" "qi" + sub "齡" "ling" + sub "龙" "long" + } +} +} diff --git a/maps/alalc-zho-Latn-Latn-2012.isc b/maps/alalc-zho-Latn-Latn-2012.isc new file mode 100644 index 0000000..b9c288e --- /dev/null +++ b/maps/alalc-zho-Latn-Latn-2012.isc @@ -0,0 +1,502 @@ +system "ALA-LC:zho-Latn:Latn:2012" { + +metadata { + authority_id alalc + id 2012 + language iso-639-2:zho + source_script Latn + destination_script Latn + name "Correspondence of Wade-Giles to Pinyin (2012)" + url https://www.loc.gov/catdir/cpso/romanization/chinese.pdf + creation_date 2012 + adoption_date + description { The Correspondence of Wade-Giles to Pinyin table from + the ALA-LC Chinese Romanization Table, 2012 version (pages 9-21). + The document presents the table "as a device to show the usual + relationship between Wade-Giles and Pinyin romanizations", drawing + the Wade-Giles syllabic readings from Di ming Han zi yi yin biao + 地名漢字譯音表 (1971) and the ALA-LC romanization tables (1997), + and the Pinyin equivalents from Xian dai Han yu ci dian 现代汉语词典 + (1983). The list is printed as not exhaustive; every printed row is + transcribed here in order. Transcribed from the loc.gov document's + complete text layer. } + + notes { + note "Scope: this is a cross-romanization correspondence device for + syllables 'likely to be found in older cataloging records', not a + general Wade-Giles grammar; the document prints the Pinyin side as + likewise 'not limited to those contained in this list'. Each row is + encoded exactly as printed, including identity rows (a a, fa fa) + and the rows where both systems coincide in spelling." + note "As printed, the Wade-Giles aspiration mark is the left single + quotation mark (U+2018, e.g. ch‘a). For convenience of input the + map also accepts U+2019 and U+0027 as the same aspiration mark; + these are encoding folds of the same printed glyph, not additional + transcriptions. The umlaut rows (chü, hsü, lü, nü, yü series) are + encoded with U+00FC exactly as printed." + note "Printed quirks preserved without correction: both ssu and szu + correspond to si; erh corresponds to er; o corresponds to e; the + unusual Wade-Giles forms no (nuo), so (suo) and yai (yai) appear as + printed. The companion map alalc-zho-Hani-Latn-2012 encodes the + character-level romanization rules of the same document." + note "The table has no tone information: the 2012 rules of + application do not indicate tone marks (Rules of Application 1)." + } +} + +tests { + # Document examples of the correspondence device (rows of the table). + "chih" -> "zhi" + "ch‘ih" -> "chi" + "ssu" -> "si" + "szu" -> "si" + "tzu" -> "zi" + "tz‘u" -> "ci" + "erh" -> "er" + "o" -> "e" + "kung" -> "gong" + "k‘ung" -> "kong" + "chung" -> "zhong" + "ch‘ung" -> "chong" + "ju" -> "ru" + "chü" -> "ju" + "ch‘ü" -> "qu" + "hsü" -> "xu" + "lü" -> "lü" + "nü" -> "nü" + "lüeh" -> "lüe" + "nüeh" -> "nüe" + "yü" -> "yu" + "yüeh" -> "yue" + "no" -> "nuo" + "so" -> "suo" + "yai" -> "yai" + "chi" -> "ji" + "ch‘i" -> "qi" + "hsiao" -> "xiao" + "chien" -> "jian" + "ch‘ien" -> "qian" + "cha" -> "zha" + "ch‘a" -> "cha" + "ts‘ang" -> "cang" + "tsang" -> "zang" + # Aspiration-mark input folds (U+2019 and U+0027 stand for the + # printed U+2018). + "ch'a" -> "cha" + "ch’a" -> "cha" + "k'ung" -> "kong" + "tz'u" -> "ci" +} + +stage main { + # Aspiration-mark input folds run as their own pass before the table: + # the printed form is U+2018; U+2019 and U+0027 stand for the same + # printed glyph (see notes). + parallel { + sub "’" "‘" + sub "'" "‘" + } + + parallel { + # Wade-Giles -> Pinyin correspondence table, every printed row in + # document order. + sub "a" "a" + sub "ai" "ai" + sub "an" "an" + sub "ang" "ang" + sub "ao" "ao" + sub "cha" "zha" + sub "ch‘a" "cha" + sub "chai" "zhai" + sub "ch‘ai" "chai" + sub "chan" "zhan" + sub "ch‘an" "chan" + sub "chang" "zhang" + sub "ch‘ang" "chang" + sub "chao" "zhao" + sub "ch‘ao" "chao" + sub "che" "zhe" + sub "ch‘e" "che" + sub "chen" "zhen" + sub "ch‘en" "chen" + sub "cheng" "zheng" + sub "ch‘eng" "cheng" + sub "chi" "ji" + sub "ch‘i" "qi" + sub "chia" "jia" + sub "ch‘ia" "qia" + sub "chiang" "jiang" + sub "ch‘iang" "qiang" + sub "chiao" "jiao" + sub "ch‘iao" "qiao" + sub "chieh" "jie" + sub "ch‘ieh" "qie" + sub "chien" "jian" + sub "ch‘ien" "qian" + sub "chih" "zhi" + sub "ch‘ih" "chi" + sub "chin" "jin" + sub "ch‘in" "qin" + sub "ching" "jing" + sub "ch‘ing" "qing" + sub "chiu" "jiu" + sub "ch‘iu" "qiu" + sub "chiung" "jiong" + sub "ch‘iung" "qiong" + sub "cho" "zhuo" + sub "ch‘o" "chuo" + sub "chou" "zhou" + sub "ch‘ou" "chou" + sub "chu" "zhu" + sub "ch‘u" "chu" + sub "chua" "zhua" + sub "chuai" "zhuai" + sub "ch‘uai" "chuai" + sub "chuan" "zhuan" + sub "ch‘uan" "chuan" + sub "chuang" "zhuang" + sub "ch‘uang" "chuang" + sub "chui" "zhui" + sub "ch‘ui" "chui" + sub "chun" "zhun" + sub "ch‘un" "chun" + sub "chung" "zhong" + sub "ch‘ung" "chong" + sub "chü" "ju" + sub "ch‘ü" "qu" + sub "chüan" "juan" + sub "ch‘üan" "quan" + sub "chüeh" "jue" + sub "ch‘üeh" "que" + sub "chün" "jun" + sub "ch‘ün" "qun" + sub "en" "en" + sub "erh" "er" + sub "fa" "fa" + sub "fan" "fan" + sub "fang" "fang" + sub "fei" "fei" + sub "fen" "fen" + sub "feng" "feng" + sub "fo" "fo" + sub "fou" "fou" + sub "fu" "fu" + sub "ha" "ha" + sub "hai" "hai" + sub "han" "han" + sub "hang" "hang" + sub "hao" "hao" + sub "hei" "hei" + sub "hen" "hen" + sub "heng" "heng" + sub "ho" "he" + sub "hou" "hou" + sub "hsi" "xi" + sub "hsia" "xia" + sub "hsiang" "xiang" + sub "hsiao" "xiao" + sub "hsieh" "xie" + sub "hsien" "xian" + sub "hsin" "xin" + sub "hsing" "xing" + sub "hsiu" "xiu" + sub "hsiung" "xiong" + sub "hsü" "xu" + sub "hsüan" "xuan" + sub "hsüeh" "xue" + sub "hsün" "xun" + sub "hu" "hu" + sub "hua" "hua" + sub "huai" "huai" + sub "huan" "huan" + sub "huang" "huang" + sub "hui" "hui" + sub "hun" "hun" + sub "hung" "hong" + sub "huo" "huo" + sub "i" "yi" + sub "jan" "ran" + sub "jang" "rang" + sub "jao" "rao" + sub "je" "re" + sub "jen" "ren" + sub "jeng" "reng" + sub "jih" "ri" + sub "jo" "ruo" + sub "jou" "rou" + sub "ju" "ru" + sub "juan" "ruan" + sub "jui" "rui" + sub "jun" "run" + sub "jung" "rong" + sub "ka" "ga" + sub "k‘a" "ka" + sub "kai" "gai" + sub "k‘ai" "kai" + sub "kan" "gan" + sub "k‘an" "kan" + sub "kang" "gang" + sub "k‘ang" "kang" + sub "kao" "gao" + sub "k‘ao" "kao" + sub "kei" "gei" + sub "ken" "gen" + sub "k‘en" "ken" + sub "keng" "geng" + sub "k‘eng" "keng" + sub "ko" "ge" + sub "k‘o" "ke" + sub "kou" "gou" + sub "k‘ou" "kou" + sub "ku" "gu" + sub "k‘u" "ku" + sub "kua" "gua" + sub "k‘ua" "kua" + sub "kuai" "guai" + sub "k‘uai" "kuai" + sub "kuan" "guan" + sub "k‘uan" "kuan" + sub "kuang" "guang" + sub "k‘uang" "kuang" + sub "kuei" "gui" + sub "k‘uei" "kui" + sub "kun" "gun" + sub "k‘un" "kun" + sub "kung" "gong" + sub "k‘ung" "kong" + sub "kuo" "guo" + sub "k‘uo" "kuo" + sub "la" "la" + sub "lai" "lai" + sub "lan" "lan" + sub "lang" "lang" + sub "lao" "lao" + sub "le" "le" + sub "lei" "lei" + sub "leng" "leng" + sub "li" "li" + sub "liang" "liang" + sub "liao" "liao" + sub "lieh" "lie" + sub "lien" "lian" + sub "lin" "lin" + sub "ling" "ling" + sub "liu" "liu" + sub "lo" "luo" + sub "lou" "lou" + sub "lu" "lu" + sub "luan" "luan" + sub "lun" "lun" + sub "lung" "long" + sub "lü" "lü" + sub "lüan" "luan" + sub "lüeh" "lüe" + sub "ma" "ma" + sub "mai" "mai" + sub "man" "man" + sub "mang" "mang" + sub "mao" "mao" + sub "mei" "mei" + sub "men" "men" + sub "meng" "meng" + sub "mi" "mi" + sub "miao" "miao" + sub "mieh" "mie" + sub "mien" "mian" + sub "min" "min" + sub "ming" "ming" + sub "miu" "miu" + sub "mo" "mo" + sub "mou" "mou" + sub "mu" "mu" + sub "na" "na" + sub "nai" "nai" + sub "nan" "nan" + sub "nang" "nang" + sub "nao" "nao" + sub "nei" "nei" + sub "nen" "nen" + sub "neng" "neng" + sub "ni" "ni" + sub "niang" "niang" + sub "niao" "niao" + sub "nieh" "nie" + sub "nien" "nian" + sub "nin" "nin" + sub "ning" "ning" + sub "niu" "niu" + sub "no" "nuo" + sub "nu" "nu" + sub "nuan" "nuan" + sub "nung" "nong" + sub "nü" "nü" + sub "nüeh" "nüe" + sub "o" "e" + sub "ou" "ou" + sub "pa" "ba" + sub "p‘a" "pa" + sub "pai" "bai" + sub "p‘ai" "pai" + sub "pan" "ban" + sub "p‘an" "pan" + sub "pang" "bang" + sub "p‘ang" "pang" + sub "pao" "bao" + sub "p‘ao" "pao" + sub "pei" "bei" + sub "p‘ei" "pei" + sub "pen" "ben" + sub "p‘en" "pen" + sub "peng" "beng" + sub "p‘eng" "peng" + sub "pi" "bi" + sub "p‘i" "pi" + sub "piao" "biao" + sub "p‘iao" "piao" + sub "pieh" "bie" + sub "p‘ieh" "pie" + sub "pien" "bian" + sub "p‘ien" "pian" + sub "pin" "bin" + sub "p‘in" "pin" + sub "ping" "bing" + sub "p‘ing" "ping" + sub "po" "bo" + sub "p‘o" "po" + sub "pou" "bou" + sub "pu" "bu" + sub "p‘u" "pu" + sub "sa" "sa" + sub "sai" "sai" + sub "san" "san" + sub "sang" "sang" + sub "sao" "sao" + sub "se" "se" + sub "sen" "sen" + sub "seng" "seng" + sub "sha" "sha" + sub "shai" "shai" + sub "shan" "shan" + sub "shang" "shang" + sub "shao" "shao" + sub "she" "she" + sub "shen" "shen" + sub "sheng" "sheng" + sub "shih" "shi" + sub "shou" "shou" + sub "shu" "shu" + sub "shua" "shua" + sub "shuai" "shuai" + sub "shuan" "shuan" + sub "shuang" "shuang" + sub "shui" "shui" + sub "shun" "shun" + sub "shuo" "shuo" + sub "so" "suo" + sub "sou" "sou" + sub "ssu" "si" + sub "su" "su" + sub "suan" "suan" + sub "sui" "sui" + sub "sun" "sun" + sub "sung" "song" + sub "szu" "si" + sub "ta" "da" + sub "t‘a" "ta" + sub "tai" "dai" + sub "t‘ai" "tai" + sub "tan" "dan" + sub "t‘an" "tan" + sub "tang" "dang" + sub "t‘ang" "tang" + sub "tao" "dao" + sub "t‘ao" "tao" + sub "te" "de" + sub "t‘e" "te" + sub "teng" "deng" + sub "t‘eng" "teng" + sub "ti" "di" + sub "t‘i" "ti" + sub "tiao" "diao" + sub "t‘iao" "tiao" + sub "tieh" "die" + sub "t‘ieh" "tie" + sub "tien" "dian" + sub "t‘ien" "tian" + sub "ting" "ding" + sub "t‘ing" "ting" + sub "tiu" "diu" + sub "to" "duo" + sub "t‘o" "tuo" + sub "tou" "dou" + sub "t‘ou" "tou" + sub "tu" "du" + sub "t‘u" "tu" + sub "tuan" "duan" + sub "t‘uan" "tuan" + sub "tui" "dui" + sub "t‘ui" "tui" + sub "tun" "dun" + sub "t‘un" "tun" + sub "tung" "dong" + sub "t‘ung" "tong" + sub "tzu" "zi" + sub "tz‘u" "ci" + sub "tsa" "za" + sub "ts‘a" "ca" + sub "tsai" "zai" + sub "ts‘ai" "cai" + sub "tsan" "zan" + sub "ts‘an" "can" + sub "tsang" "zang" + sub "ts‘ang" "cang" + sub "tsao" "zao" + sub "ts‘ao" "cao" + sub "tse" "ze" + sub "ts‘e" "ce" + sub "tsei" "zei" + sub "tsen" "zen" + sub "ts‘en" "cen" + sub "tseng" "zeng" + sub "ts‘eng" "ceng" + sub "tso" "zuo" + sub "ts‘o" "cuo" + sub "tsou" "zou" + sub "ts‘ou" "cou" + sub "tsu" "zu" + sub "ts‘u" "cu" + sub "tsuan" "zuan" + sub "ts‘uan" "cuan" + sub "tsui" "zui" + sub "ts‘ui" "cui" + sub "tsun" "zun" + sub "ts‘un" "cun" + sub "tsung" "zong" + sub "ts‘ung" "cong" + sub "wa" "wa" + sub "wai" "wai" + sub "wan" "wan" + sub "wang" "wang" + sub "wei" "wei" + sub "wen" "wen" + sub "weng" "weng" + sub "wo" "wo" + sub "wu" "wu" + sub "ya" "ya" + sub "yai" "yai" + sub "yang" "yang" + sub "yao" "yao" + sub "yeh" "ye" + sub "yen" "yan" + sub "yin" "yin" + sub "ying" "ying" + sub "yo" "yo" + sub "yu" "you" + sub "yung" "yong" + sub "yü" "yu" + sub "yüan" "yuan" + sub "yüeh" "yue" + sub "yün" "yun" + } +} +}