metadata {
authority_id: odni id: 2015 language: iso-639-2:kor source_script: Hang destination_script: Latn name: ICS-630-01 Romanization of Korean Personal Names (2015) source: ICS-630-01 Annex W creation_date: 2015 adoption_date: description: notes: | 1. Name order shall be Family Name Given name, with the family name separated from the given name by one space, and the first and second syllable of a two- syllable given name connected by a hyphen. The initial letter of the family name and the initial letter of the first syllable of the given name are capitalized; the second syllable of the given name is in lower case: Kim Yo’ng-su. 2. In the case of a full name with only two syllables, the initial letters of both syllables are capitalized and the two names are separated by a space: Ho’ Tam. In the case of family names consisting of a combination of two syllables, the syllables are written together (i.e., without a space): So’nu Hak-wo’n. 3. The family surname 이 will be rendered "Yi" in the IC Standard spelling, but in accordance with personal preference or official usage in the Factbook and Chiefs of State directory. 4. In order to facilitate the use of the IC Standard, a reference guide containing a list of syllables used in Korean personal names along with their IC Standard equivalents follows.
}
tests {
test "김영수", "Kim Yo’ng-su" test "허담", "Ho’ Tam" test "선우학원", "So’nu Hak-wo’n" test "이담", "Yi Tam" # examples testing space handling test "동방국", "Tongpang Kuk" test "동 방국", "Tong Pang-kuk" test "동방 국", "Tongpang Kuk" test "화방국", "Hwa Pang-kuk" test "황목국", "Hwangmok Kuk"
}
dependency “unicode”, import: true dependency “var-kor-Hang-Hang-jamo”, as: hanghang
aliases{
def_alias alpha_plus, any("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’")
}
stage {
# RULES sub any([line_start + " ", " " + line_end]), "" #sub some(" "), " " # 2 character inputs will have a space between them sub line_start + capture(unicode_hangul) + capture(unicode_hangul) + line_end, ref( 1 ) + " " + ref( 2 ) # 4 character inputs will have a space as in XXXX -> XX XX sub line_start + capture(unicode_hangul + unicode_hangul) + capture(unicode_hangul + unicode_hangul) + line_end, ref( 1 ) + " " + ref( 2 ) # 3 character inputs are more complicated. We enumerate all possible 2 # letter surnames according to: https://en.wikipedia.org/wiki/List_of_Korean_surnames sub line_start + capture(any(["독고", "동방", "등정", "망절", "무본", "부여", "사공", "서문", "선우", "어금", "제갈", "황목", "황보"])) + capture(unicode_hangul) + line_end, ref( 1 ) + " " + ref( 2 ) # Otherwise the first character is probably a surname sub line_start + capture(unicode_hangul) + capture(unicode_hangul + unicode_hangul) + line_end, ref( 1 ) + " " + ref( 2 ) # In case of uncertainity, user needs to add a space himself. #sub some(" "), " " sub any([line_start + " ", " " + line_end]), "" run map.hanghang.stage.main # CHARACTERS parallel { # This is based on Jamo } # DICTIONARY parallel { # } # POSTRULES # HANGUL JONGSEONG SSANGKIYEOK sub "ᆩ", "kk" # HANGUL JONGSEONG SSANGKIYEOK sub "ᆪ", "ks" # HANGUL JONGSEONG NIEUN-CIEUC sub "ᆬ", "nch" # HANGUL JONGSEONG NIEUN-CIEUC sub "ᆭ", "nh" # HANGUL JONGSEONG TIEUT sub "ᆮ", "t" # HANGUL JONGSEONG RIEUL-SIOS sub "ᆳ", "l" # HANGUL JONGSEONG RIEUL-THIEUTH sub "ᆴ", "lt’" # HANGUL JONGSEONG RIEUL-PHIEUPH sub "ᆵ", "lp’" # HANGUL JONGSEONG RIEUL-HIEUH sub "ᆶ", "lh" # HANGUL JONGSEONG PIEUP-SIOS sub "ᆹ", "ps" # HANGUL JONGSEONG SSANG-SIOS sub "ᆻ", "ss" # HANGUL JONGSEONG CIEUC sub "ᆽ", "ch" # HANGUL JONGSEONG CHIEUCH sub "ᆾ", "ch’" # HANGUL JONGSEONG KHIEUKH sub "ᆿ", "k’" # HANGUL JONGSEONG THIEUTH sub "ᇀ", "t’" # HANGUL JONGSEONG PHIEUPH sub "ᇁ", "p’" # HANGUL JONGSEONG HIEUH sub "ᇂ", "h" # HANGUL JONGSEONG KIYEOK sub "ᆨ", "k" # HANGUL JONGSEONG NIEUN sub "ᆫ", "n" # HANGUL JONGSEONG RIEUL sub "ᆯ", "l" # HANGUL JONGSEONG MIEUM sub "ᆷ", "m" # HANGUL JONGSEONG PIEUP sub "ᆸ", "p" # HANGUL JONGSEONG SIOS sub "ᆺ", "s" # HANGUL JONGSEONG IEUNG sub "ᆼ", "ng" # HANGUL JONGSEONG RIEUL-KIYEOK sub "ᆰ", "lk" # HANGUL JONGSEONG RIEUL-PIEUP sub "ᆲ", "lp" # HANGUL CHOSEONG KIYEOK sub "ᄀ", "-k" # HANGUL CHOSEONG NIEUN sub "ᄂ", "-n" # HANGUL CHOSEONG TIEUT sub "ᄃ", "-t" # HANGUL CHOSEONG RIEUL sub "ᄅ", "-r" # HANGUL CHOSEONG MIEUM sub "ᄆ", "-m" # HANGUL CHOSEONG PIEUP sub "ᄇ", "-p" # HANGUL CHOSEONG SIOS sub "ᄉ", "-s" # HANGUL CHOSEONG IEUNG sub "ᄋ", "-" # HANGUL CHOSEONG CIEUC sub "ᄌ", "-ch" # HANGUL CHOSEONG CHIEUCH sub "ᄎ", "-ch’" # HANGUL CHOSEONG KHIEUKH sub "ᄏ", "-k’" # HANGUL CHOSEONG THIEUTH sub "ᄐ", "-t’" # HANGUL CHOSEONG PHIEUPH sub "ᄑ", "-p’" # HANGUL CHOSEONG HIEUH sub "ᄒ", "-h" # HANGUL CHOSEONG SSANGKIYEOK sub "ᄁ", "-kk" # HANGUL CHOSEONG SIOS-KIYEOK sub "ᄭ", "-sk" # HANGUL CHOSEONG SSANGTIEUT sub "ᄄ", "-tt" # HANGUL CHOSEONG SIOS-TIEUT sub "ᄯ", "-st" # HANGUL CHOSEONG SSANGPIEUP sub "ᄈ", "-pp" # HANGUL CHOSEONG SIOS-PIEUP sub "ᄲ", "-sp" # HANGUL CHOSEONG SSANGSIOS sub "ᄊ", "-ss" # HANGUL CHOSEONG SSANGCIEUC sub "ᄍ", "-chch" # HANGUL CHOSEONG SIOS-CIEUC sub "ᄶ", "-sch" ## End of Choseong Jamos # HANGUL JUNGSEONG A sub "ᅡ", "a" # HANGUL JUNGSEONG YA sub "ᅣ", "ya" # HANGUL JUNGSEONG EO sub "ᅥ", "o’" # HANGUL JUNGSEONG YEO sub "ᅧ", "yo’" # HANGUL JUNGSEONG O sub "ᅩ", "o" # HANGUL JUNGSEONG YO sub "ᅭ", "yo" # HANGUL JUNGSEONG U sub "ᅮ", "u" # HANGUL JUNGSEONG YU sub "ᅲ", "yu" # HANGUL JUNGSEONG EU sub "ᅳ", "u’" # HANGUL JUNGSEONG I sub "ᅵ", "i" # HANGUL JUNGSEONG AE sub "ᅢ", "ae" # HANGUL JUNGSEONG YAE sub "ᅤ", "yae" # HANGUL JUNGSEONG E sub "ᅦ", "e" # HANGUL JUNGSEONG YE # Not found in specification sub "ᅨ", "ye" # actually found in Reference Guide # HANGUL JUNGSEONG WA sub "ᅪ", "wa" # HANGUL JUNGSEONG WAE sub "ᅫ", "wae" # HANGUL JUNGSEONG OE sub "ᅬ", "oe" # HANGUL JUNGSEONG WE sub "ᅰ", "we" # HANGUL JUNGSEONG WEO sub "ᅯ", "wo’" # HANGUL JUNGSEONG WI sub "ᅱ", "wi" # HANGUL JUNGSEONG YI sub "ᅴ", "ui" # Remove before the first syllable dash sub "-", "", before: any([line_start, " "]) # Remove dash in surname sub line_start + capture(some(alpha_plus)) + "-" + capture(some(alpha_plus)), ref( 1 ) + ref( 2 ) # Change the surname I to Yi sub line_start + "i", "yi" title_case
}