From 1c855cb5817661968972d043389ef41187f430de Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Sat, 31 Oct 2026 17:08:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20full=20systems=20catalog=20=E2=80=94=20?= =?UTF-8?q?318=20maps=20with=20descriptions=20and=20invertibility=20verdic?= =?UTF-8?q?ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Regenerate maps-catalogue.json from the current corpus (289 -> 318) and merge the invertibility verdicts from the maps coverage ledger into every entry. The catalogue cards now show each system's description and a verdict chip (lossless 1:1 / lossy many-to-one / context-only) with a new verdict filter; per-system pages state the verdict and pair counts. Sync public/maps to the current corpus (+29 new maps, 14 refreshed) so the live previews cover the new systems. Add the Coverage and Gaps doc (implemented vs open queues, owner-held gates). Fix a pre-existing whitespace-guard violation in the IS-1 language page. Note: the corpus-side stale short-code duplicates (bgnpcgn-av-/cv-/os-) are excluded from the site copy and flagged upstream; the din-yid id suffix fix landed as maps PR #226. --- public/maps/alalc-ell-Grek-Latn-2010.isc | 1 + public/maps/alalc-mkd-Cyrl-Latn-1997.isc | 1 + public/maps/alalc-mkd-Cyrl-Latn-2013.isc | 1 + public/maps/alalc-srp-Cyrl-Latn-1997.isc | 1 + public/maps/bas-rus-Cyrl-Latn-2017-bss.isc | 1 + public/maps/bgnpcgn-ady-Cyrl-Latn-2012.isc | 333 ++ public/maps/bgnpcgn-ava-Cyrl-Latn-2011.isc | 264 ++ public/maps/bgnpcgn-chv-Cyrl-Latn-2011.isc | 242 ++ public/maps/bgnpcgn-deu-Latn-Latn-2000.isc | 1 + public/maps/bgnpcgn-iu-Cans-Latn-2013.isc | 280 ++ public/maps/bgnpcgn-kbd-Cyrl-Latn-2011.isc | 295 ++ public/maps/bgnpcgn-krc-Cyrl-Latn-2008.isc | 218 ++ public/maps/bgnpcgn-mkd-Cyrl-Latn-1981.isc | 1 + public/maps/bgnpcgn-mkd-Cyrl-Latn-2013.isc | 1 + public/maps/bgnpcgn-oss-Cyrl-Latn-2009.isc | 259 ++ public/maps/bgnpcgn-sah-Cyrl-Latn-2012.isc | 257 ++ public/maps/bgnpcgn-syc-Syrc-Latn-2011.isc | 94 + public/maps/bgnpcgn-tha-Thai-Latn-2002.isc | 223 ++ public/maps/bgnpcgn-udm-Cyrl-Latn-2011.isc | 225 ++ public/maps/bsi-bel-Cyrl-Latn-1958.isc | 148 + public/maps/bsi-bul-Cyrl-Latn-1958.isc | 137 + public/maps/bsi-chu-Cyrl-Latn-1958.isc | 226 ++ public/maps/bsi-ell-Grek-Latn-1958.isc | 445 +++ public/maps/bsi-mkd-Cyrl-Latn-1958.isc | 140 + public/maps/bsi-ron-Cyrl-Latn-1958.isc | 244 ++ public/maps/bsi-rus-Cyrl-Latn-1958.isc | 199 + public/maps/bsi-srp-Cyrl-Latn-1958.isc | 134 + public/maps/bsi-ukr-Cyrl-Latn-1958.isc | 129 + public/maps/by-bel-Cyrl-Latn-1998.isc | 1 + public/maps/din-ara-Arab-Latn-31635-2011.isc | 402 ++ public/maps/din-heb-Hebr-Latn-31636-2018.isc | 355 ++ public/maps/din-hye-Armn-Latn-32706-2010.isc | 197 + public/maps/din-yid-Hebr-Latn-31636-2018.isc | 208 + public/maps/gki-bel-Cyrl-Latn-2000.isc | 1 + .../maps/gost-rus-Cyrl-Latn-16876-71-1983.isc | 1 + public/maps/kp-kor-Hang-Latn-2002.isc | 1 + public/maps/odni-kor-Hang-Latn-2015.isc | 1 + public/maps/odni-kur-Arab-Latn-2011.isc | 280 ++ public/maps/odni-prs-Arab-Latn-2004.isc | 1 - public/maps/royin-tha-Thai-Latn-1999.isc | 60 + public/maps/un-bul-Cyrl-Latn-1977.isc | 1 + public/maps/un-mkd-Cyrl-Latn-1977.isc | 1 + public/maps/var-kor-Hang-Latn-mr-1939.isc | 6 +- scripts/generate-catalogue.mjs | 26 +- src/components/MapCatalogue.vue | 87 +- src/content/docs/Coverage_and_Gaps.adoc | 62 + src/data/maps-catalogue.json | 3413 +++++++++++++++-- src/pages/docs/isc-language.astro | 19 +- src/pages/maps/[systemCode].astro | 29 + src/pages/maps/index.astro | 10 + 50 files changed, 9352 insertions(+), 310 deletions(-) create mode 100644 public/maps/bgnpcgn-ady-Cyrl-Latn-2012.isc create mode 100644 public/maps/bgnpcgn-ava-Cyrl-Latn-2011.isc create mode 100644 public/maps/bgnpcgn-chv-Cyrl-Latn-2011.isc create mode 100644 public/maps/bgnpcgn-iu-Cans-Latn-2013.isc create mode 100644 public/maps/bgnpcgn-kbd-Cyrl-Latn-2011.isc create mode 100644 public/maps/bgnpcgn-krc-Cyrl-Latn-2008.isc create mode 100644 public/maps/bgnpcgn-oss-Cyrl-Latn-2009.isc create mode 100644 public/maps/bgnpcgn-sah-Cyrl-Latn-2012.isc create mode 100644 public/maps/bgnpcgn-syc-Syrc-Latn-2011.isc create mode 100644 public/maps/bgnpcgn-tha-Thai-Latn-2002.isc create mode 100644 public/maps/bgnpcgn-udm-Cyrl-Latn-2011.isc create mode 100644 public/maps/bsi-bel-Cyrl-Latn-1958.isc create mode 100644 public/maps/bsi-bul-Cyrl-Latn-1958.isc create mode 100644 public/maps/bsi-chu-Cyrl-Latn-1958.isc create mode 100644 public/maps/bsi-ell-Grek-Latn-1958.isc create mode 100644 public/maps/bsi-mkd-Cyrl-Latn-1958.isc create mode 100644 public/maps/bsi-ron-Cyrl-Latn-1958.isc create mode 100644 public/maps/bsi-rus-Cyrl-Latn-1958.isc create mode 100644 public/maps/bsi-srp-Cyrl-Latn-1958.isc create mode 100644 public/maps/bsi-ukr-Cyrl-Latn-1958.isc create mode 100644 public/maps/din-ara-Arab-Latn-31635-2011.isc create mode 100644 public/maps/din-heb-Hebr-Latn-31636-2018.isc create mode 100644 public/maps/din-hye-Armn-Latn-32706-2010.isc create mode 100644 public/maps/din-yid-Hebr-Latn-31636-2018.isc create mode 100644 public/maps/odni-kur-Arab-Latn-2011.isc create mode 100644 public/maps/royin-tha-Thai-Latn-1999.isc create mode 100644 src/content/docs/Coverage_and_Gaps.adoc diff --git a/public/maps/alalc-ell-Grek-Latn-2010.isc b/public/maps/alalc-ell-Grek-Latn-2010.isc index 2c694160..38842c51 100644 --- a/public/maps/alalc-ell-Grek-Latn-2010.isc +++ b/public/maps/alalc-ell-Grek-Latn-2010.isc @@ -265,6 +265,7 @@ tests { } dependency "unicode" +dependency "var-kor" # https://en.wikipedia.org/wiki/Romanization_of_Greek stage main { diff --git a/public/maps/alalc-mkd-Cyrl-Latn-1997.isc b/public/maps/alalc-mkd-Cyrl-Latn-1997.isc index 2b7addf6..6e124599 100644 --- a/public/maps/alalc-mkd-Cyrl-Latn-1997.isc +++ b/public/maps/alalc-mkd-Cyrl-Latn-1997.isc @@ -27,6 +27,7 @@ tests { } dependency "posix" +dependency "var-kor" stage main { diff --git a/public/maps/alalc-mkd-Cyrl-Latn-2013.isc b/public/maps/alalc-mkd-Cyrl-Latn-2013.isc index 38168207..0fe3c49c 100644 --- a/public/maps/alalc-mkd-Cyrl-Latn-2013.isc +++ b/public/maps/alalc-mkd-Cyrl-Latn-2013.isc @@ -21,6 +21,7 @@ tests { } dependency "posix" +dependency "var-kor" stage main { diff --git a/public/maps/alalc-srp-Cyrl-Latn-1997.isc b/public/maps/alalc-srp-Cyrl-Latn-1997.isc index 5d42339d..0705a82f 100644 --- a/public/maps/alalc-srp-Cyrl-Latn-1997.isc +++ b/public/maps/alalc-srp-Cyrl-Latn-1997.isc @@ -27,6 +27,7 @@ tests { } dependency "posix" +dependency "var-kor" stage main { diff --git a/public/maps/bas-rus-Cyrl-Latn-2017-bss.isc b/public/maps/bas-rus-Cyrl-Latn-2017-bss.isc index eef87fb8..3f6c539e 100644 --- a/public/maps/bas-rus-Cyrl-Latn-2017-bss.isc +++ b/public/maps/bas-rus-Cyrl-Latn-2017-bss.isc @@ -40,6 +40,7 @@ tests { } dependency "posix" +dependency "var-kor" stage main { diff --git a/public/maps/bgnpcgn-ady-Cyrl-Latn-2012.isc b/public/maps/bgnpcgn-ady-Cyrl-Latn-2012.isc new file mode 100644 index 00000000..97e224b5 --- /dev/null +++ b/public/maps/bgnpcgn-ady-Cyrl-Latn-2012.isc @@ -0,0 +1,333 @@ +system "BGN-PCGN:ady-Cyrl:Latn:2012" { + +metadata { + authority_id bgnpcgn + id 2012 + language iso-639-2:ady + source_script Cyrl + destination_script Latn + name Romanization of Adyghe (2012) + url https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names + creation_date 2012 + confirmation_date 2017-10 + description { + The BGN/PCGN system for Adyghe is designed for use in romanizing names written in the + Adyghe Cyrillic alphabet. Adyghe, a language of the north-western Caucasian family, is + principally spoken in Russia's republic of Adygeya and has been written in a modified + Cyrillic script since 1938. Also known as West Circassian, Adyghe is notable for its + rich density of consonant phonemes and corresponding paucity of vowels. Adyghe letters + are addressed in the romanizations as per their articulation: glottalised consonants + are marked with an apostrophe, labialized consonants with w, and retroflex consonants + with an underbar. Phonemes shared with Kabardian are represented as per the + BGN/PCGN Kabardian Romanization System. + } + + notes { + note "У should be romanized as w or u according to context: w should be used word-initially, and u used elsewhere." + note "The characters Ё, Ъ, Ы and Ь (except as they occur in character combinations addressed elsewhere in the table) appear only in Russian loan words, and are thus romanized in the same style as in the BGN/PCGN Romanization System for Russian." + note "The palochka is romanized ’ except as it occurs in the combination Ӏу." + note "An inventory of letter-diacritic combinations, with their Unicode encoding, in addition to the unmodified letters of the basic Roman script is:" + note "All apostrophes appearing in romanization are U+2019" + note "Ë (U+00CB) ë (U+00EB) Ź (U+0179) ź (U+017A) Z͟H (U+005A+0048+035F) z͟h (U+007A+0068+035F) H̱ (0048+0031) ẖ (0068+0031) Č (U+010C) č (U+010D) S͟H (U+0053+0048+035F) s͟h (U+0073+0068+035F) Ś (U+015A) ś (U+015B) Ä (U+00C4) ä (U+00E4)" + note "The source document prints the H̱ inventory codepoint as 0048+0031; the glyph shown is h with the combining macron below (U+0331) and the table column shows the precomposed ẖ (U+1E96). This map outputs ẖ (U+1E96)." + note "The Romanization columns show only lowercase forms but, when romanizing, uppercase and lowercase Roman letters as appropriate should be used." + } +} + +tests { + # every table row, upper and lower + "А" -> "A" + "а" -> "a" + "Б" -> "B" + "б" -> "b" + "В" -> "V" + "в" -> "v" + "Г" -> "G" + "г" -> "g" + "Гу" -> "Gw" + "гу" -> "gw" + "Гъ" -> "Gh" + "гъ" -> "gh" + "Гъу" -> "Ghw" + "гъу" -> "ghw" + "Д" -> "D" + "д" -> "d" + "Дж" -> "J" + "дж" -> "j" + "Дз" -> "Dz" + "дз" -> "dz" + "Дзу" -> "Dzw" + "дзу" -> "dzw" + "Е" -> "E" + "е" -> "e" + "Ё" -> "Ë" + "ё" -> "ë" + "Ж" -> "Zh" + "ж" -> "zh" + "Жь" -> "Ź" + "жь" -> "ź" + "Жъ" -> "Z͟H" + "жъ" -> "z͟h" + "Жъу" -> "Z͟Hw" + "жъу" -> "z͟hw" + "З" -> "Z" + "з" -> "z" + "И" -> "I" + "и" -> "i" + "Й" -> "Y" + "й" -> "y" + "К" -> "K" + "к" -> "k" + "Ку" -> "Kw" + "ку" -> "kw" + "КӀ" -> "K’" + "кӀ" -> "k’" + "КӀу" -> "Kw’" + "кӀу" -> "kw’" + "Къ" -> "Q’" + "къ" -> "q’" + "Къу" -> "Qw’" + "къу" -> "qw’" + "Л" -> "L" + "л" -> "l" + "ЛӀ" -> "L’" + "лӀ" -> "l’" + "Лъ" -> "Lh" + "лъ" -> "lh" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "О" -> "O" + "о" -> "o" + "П" -> "P" + "п" -> "p" + "ПӀ" -> "P’" + "пӀ" -> "p’" + "ПӀу" -> "Pw’" + "пӀу" -> "pw’" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Т" -> "T" + "т" -> "t" + "ТӀ" -> "T’" + "тӀ" -> "t’" + "ТӀу" -> "Tw’" + "тӀу" -> "tw’" + "Ф" -> "F" + "ф" -> "f" + "ФӀ" -> "F’" + "фӀ" -> "f’" + "Х" -> "Kh" + "х" -> "kh" + "Ху" -> "Khw" + "ху" -> "khw" + "Хъ" -> "X" + "хъ" -> "x" + "Хъу" -> "Xw" + "хъу" -> "xw" + "Хь" -> "H̱" + "хь" -> "ẖ" + "Ц" -> "Ts" + "ц" -> "ts" + "ЦӀ" -> "Ts’" + "цӀ" -> "ts’" + "Цу" -> "Tsw" + "цу" -> "tsw" + "Ч" -> "Ch" + "ч" -> "ch" + "ЧӀ" -> "Ch’" + "чӀ" -> "ch’" + "Чъ" -> "Č" + "чъ" -> "č" + "Ш" -> "Sh" + "ш" -> "sh" + "ШӀ" -> "Sh’" + "шӀ" -> "sh’" + "ШӀу" -> "Shw’" + "шӀу" -> "shw’" + "Шъ" -> "S͟H" + "шъ" -> "s͟h" + "Шъу" -> "S͟Hw" + "шъу" -> "s͟hw" + "Щ" -> "Ś" + "щ" -> "ś" + "Ъ" -> "’’" + "ъ" -> "’’" + "Ы" -> "Y" + "ы" -> "y" + "Ь" -> "’" + "ь" -> "’" + "Э" -> "Ä" + "э" -> "ä" + "Ю" -> "Yu" + "ю" -> "yu" + "Я" -> "Ya" + "я" -> "ya" + "Ӏ" -> "’" + "Ӏу" -> "’w" + # note 1: У word-initially w, elsewhere u + "У" -> "W" + "у" -> "w" + "Уфа" -> "Wfa" + "уат" -> "wat" + "мау" -> "mau" +} + +stage main { + + # RULES + # note 1: У word-initially w, elsewhere u + sub { + from boundary + "У" + to "W" + } + sub { + from boundary + "у" + to "w" + } + + # CHARACTERS + parallel { + sub "Гъу" "Ghw" + sub "Жъу" "Z͟Hw" + sub "Къу" "Qw’" + sub "КӀу" "Kw’" + sub "ПӀу" "Pw’" + sub "ТӀу" "Tw’" + sub "Хъу" "Xw" + sub "Шъу" "S͟Hw" + sub "ШӀу" "Shw’" + sub "Дзу" "Dzw" + sub "Гу" "Gw" + sub "Гъ" "Gh" + sub "Дж" "J" + sub "Дз" "Dz" + sub "Жь" "Ź" + sub "Жъ" "Z͟H" + sub "Ку" "Kw" + sub "КӀ" "K’" + sub "Къ" "Q’" + sub "Лъ" "Lh" + sub "ЛӀ" "L’" + sub "ПӀ" "P’" + sub "ТӀ" "T’" + sub "ФӀ" "F’" + sub "Ху" "Khw" + sub "Хъ" "X" + sub "Хь" "H̱" + sub "Цу" "Tsw" + sub "ЦӀ" "Ts’" + sub "Чъ" "Č" + sub "ЧӀ" "Ch’" + sub "Шъ" "S͟H" + sub "ШӀ" "Sh’" + sub "Ӏу" "’w" + sub "Щ" "Ś" + sub "Ъ" "’’" + sub "Ы" "Y" + sub "Ь" "’" + sub "Э" "Ä" + sub "Ю" "Yu" + sub "Я" "Ya" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "Ё" "Ë" + sub "Ж" "Zh" + sub "З" "Z" + sub "И" "I" + sub "Й" "Y" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "Kh" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Ш" "Sh" + sub "Ӏ" "’" + + sub "гъу" "ghw" + sub "жъу" "z͟hw" + sub "къу" "qw’" + sub "кӀу" "kw’" + sub "пӀу" "pw’" + sub "тӀу" "tw’" + sub "хъу" "xw" + sub "шъу" "s͟hw" + sub "шӀу" "shw’" + sub "дзу" "dzw" + sub "гу" "gw" + sub "гъ" "gh" + sub "дж" "j" + sub "дз" "dz" + sub "жь" "ź" + sub "жъ" "z͟h" + sub "ку" "kw" + sub "кӀ" "k’" + sub "къ" "q’" + sub "лъ" "lh" + sub "лӀ" "l’" + sub "пӀ" "p’" + sub "тӀ" "t’" + sub "фӀ" "f’" + sub "ху" "khw" + sub "хъ" "x" + sub "хь" "ẖ" + sub "цу" "tsw" + sub "цӀ" "ts’" + sub "чъ" "č" + sub "чӀ" "ch’" + sub "шъ" "s͟h" + sub "шӀ" "sh’" + sub "щ" "ś" + sub "ъ" "’’" + sub "ы" "y" + sub "ь" "’" + sub "э" "ä" + sub "ю" "yu" + sub "я" "ya" + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "ё" "ë" + sub "ж" "zh" + sub "з" "z" + sub "и" "i" + sub "й" "y" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "kh" + sub "ц" "ts" + sub "ч" "ch" + sub "ш" "sh" + } + +} + +} diff --git a/public/maps/bgnpcgn-ava-Cyrl-Latn-2011.isc b/public/maps/bgnpcgn-ava-Cyrl-Latn-2011.isc new file mode 100644 index 00000000..b7d5140f --- /dev/null +++ b/public/maps/bgnpcgn-ava-Cyrl-Latn-2011.isc @@ -0,0 +1,264 @@ +system "BGN-PCGN:ava-Cyrl:Latn:2011" { + +metadata { + authority_id bgnpcgn + id 2011 + language iso-639-2:ava + source_script Cyrl + destination_script Latn + name Romanization of Avar (2011) + url https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names + creation_date 2011 + confirmation_date 2017-10 + description { + The BGN/PCGN system for Avar is designed for use in romanizing names written in the + Avar Cyrillic alphabet. Avar is a consonant-rich north-eastern Caucasian language, + spoken principally in Russia's republic of Dagestan. It has been written in a modified + Cyrillic script since 1938 and, as other Caucasian languages, features glottalised + consonants; an apostrophe denotes the glottalised form of consonants in this + romanization table. + } + + notes { + note "Е should be romanized ye word-initially, and after a vowel, and e elsewhere." + note "In order to retain reversibility, where two consonant characters appear together and the resulting romanization is equivalent to a Roman-script digraph occurring in the system (i.e. gh, zh, tl, sh or ts), a medial dot may be employed between the Roman-script consonants (e.g. g·h) in order to distinguish these from the Roman-script digraphs." + note "Ё, Ф, Ъ, Ы and Ь occur only in loanwords, except as they appear in character combinations addressed elsewhere in the table, and are represented in the same style as in the BGN/PCGN Romanization System for Russian." + note "The letter ХӀ is romanized h with the combining macron below (h + U+0331); the letter ГӀ is romanized Ġ (U+0120) / ġ (U+0121)." + note "An inventory of letter-diacritic combinations, with their Unicode encoding, in addition to the unmodified letters of the basic Roman script is:" + note "All apostrophes appearing in romanization are U+2019" + note "Ġ (U+0047+0307) ġ (U+0067+0307) Ë (U+00CB) ë (U+00EB)" + note "The Romanization columns show only lowercase forms but, when romanizing, uppercase and lowercase Roman letters as appropriate should be used." + } +} + +tests { + # every table row, upper and lower + "А" -> "A" + "а" -> "a" + "Б" -> "B" + "б" -> "b" + "В" -> "W" + "в" -> "w" + "Г" -> "G" + "г" -> "g" + "Гъ" -> "Gh" + "гъ" -> "gh" + "Гь" -> "H" + "гь" -> "h" + "ГӀ" -> "Ġ" + "гӀ" -> "ġ" + "Д" -> "D" + "д" -> "d" + "Е" -> "Ye" + "е" -> "ye" + "Ё" -> "Ë" + "ё" -> "ë" + "Ж" -> "Zh" + "ж" -> "zh" + "З" -> "Z" + "з" -> "z" + "И" -> "I" + "и" -> "i" + "Й" -> "Y" + "й" -> "y" + "К" -> "K" + "к" -> "k" + "Къ" -> "Q’" + "къ" -> "q’" + "Кь" -> "Tl’" + "кь" -> "tl’" + "КӀ" -> "K’" + "кӀ" -> "k’" + "Л" -> "L" + "л" -> "l" + "Лъ" -> "Lh" + "лъ" -> "lh" + "ЛӀ" -> "Tl" + "лӀ" -> "tl" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "О" -> "O" + "о" -> "o" + "П" -> "P" + "п" -> "p" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Т" -> "T" + "т" -> "t" + "ТӀ" -> "T’" + "тӀ" -> "t’" + "У" -> "U" + "у" -> "u" + "Ф" -> "F" + "ф" -> "f" + "Х" -> "X" + "х" -> "x" + "Хъ" -> "Q" + "хъ" -> "q" + "Хь" -> "Kh" + "хь" -> "kh" + "ХӀ" -> "H̱" + "хӀ" -> "ẖ" + "Ц" -> "Ts" + "ц" -> "ts" + "ЦӀ" -> "Ts’" + "цӀ" -> "ts’" + "Ч" -> "Ch" + "ч" -> "ch" + "ЧӀ" -> "Ch’" + "чӀ" -> "ch’" + "Ш" -> "Sh" + "ш" -> "sh" + "Щ" -> "Shsh" + "щ" -> "shsh" + "Ъ" -> "’’" + "ъ" -> "’’" + "Ы" -> "Y" + "ы" -> "y" + "Ь" -> "’" + "ь" -> "’" + "Э" -> "E" + "э" -> "e" + "Ю" -> "Yu" + "ю" -> "yu" + "Я" -> "Ya" + "я" -> "ya" + # note 1: Е word-initially and after a vowel ye, elsewhere e + "бе" -> "be" + "ае" -> "aye" + "ъе" -> "’’e" +} + +stage main { + + # RULES + # note 1: Е word-initially and after a vowel ye, elsewhere e + sub { + from boundary + "Е" + to "Ye" + } + sub { + from boundary + "е" + to "ye" + } + sub { + from "Е" + to "Ye" + before any("АаЕеЁёИиОоУуЫыЭэЮюЯя") + } + sub { + from "е" + to "ye" + before any("АаЕеЁёИиОоУуЫыЭэЮюЯя") + } + + # CHARACTERS + parallel { + sub "ХӀ" "H̱" + sub "Гъ" "Gh" + sub "Къ" "Q’" + sub "Кь" "Tl’" + sub "КӀ" "K’" + sub "Лъ" "Lh" + sub "ЛӀ" "Tl" + sub "ТӀ" "T’" + sub "Хъ" "Q" + sub "Хь" "Kh" + sub "ЦӀ" "Ts’" + sub "ЧӀ" "Ch’" + sub "Гь" "H" + sub "ГӀ" "Ġ" + sub "Дж" "J" + sub "Дз" "Dz" + sub "Щ" "Shsh" + sub "Ъ" "’’" + sub "Ы" "Y" + sub "Ь" "’" + sub "Ю" "Yu" + sub "Я" "Ya" + sub "А" "A" + sub "Б" "B" + sub "В" "W" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "Ё" "Ë" + sub "Ж" "Zh" + sub "З" "Z" + sub "И" "I" + sub "Й" "Y" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "X" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Ш" "Sh" + sub "Э" "E" + + sub "хӀ" "ẖ" + sub "гъ" "gh" + sub "къ" "q’" + sub "кь" "tl’" + sub "кӀ" "k’" + sub "лъ" "lh" + sub "лӀ" "tl" + sub "тӀ" "t’" + sub "хъ" "q" + sub "хь" "kh" + sub "цӀ" "ts’" + sub "чӀ" "ch’" + sub "гь" "h" + sub "гӀ" "ġ" + sub "дж" "j" + sub "дз" "dz" + sub "щ" "shsh" + sub "ъ" "’’" + sub "ы" "y" + sub "ь" "’" + sub "ю" "yu" + sub "я" "ya" + sub "а" "a" + sub "б" "b" + sub "в" "w" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "ё" "ë" + sub "ж" "zh" + sub "з" "z" + sub "и" "i" + sub "й" "y" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "x" + sub "ц" "ts" + sub "ч" "ch" + sub "ш" "sh" + sub "э" "e" + } + +} + +} diff --git a/public/maps/bgnpcgn-chv-Cyrl-Latn-2011.isc b/public/maps/bgnpcgn-chv-Cyrl-Latn-2011.isc new file mode 100644 index 00000000..c4e51c6e --- /dev/null +++ b/public/maps/bgnpcgn-chv-Cyrl-Latn-2011.isc @@ -0,0 +1,242 @@ +system "BGN-PCGN:chv-Cyrl:Latn:2011" { + +metadata { + authority_id bgnpcgn + id 2011 + language iso-639-2:chv + source_script Cyrl + destination_script Latn + name Romanization of Chuvash (2011) + url https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names + creation_date 2011 + confirmation_date 2017-10 + description { + The BGN/PCGN system for Chuvash is designed for use in romanizing names written in the + Chuvash Cyrillic alphabet. Chuvash is an official language within Chuvashiya, one of the + republics of the Russian Federation. + } + + notes { + note "The character е should be romanized ye initially, after the vowel characters а, е, ё, и, о, у, ы, э, ю, and я, and after й, ъ, and ь. In all other instances, it should be romanized e." + note "The character ё should be romanized yë initially, after the vowel characters а, е, ё, и, о, у, ы, э, ю, and я, and after й, ъ, and ь. In all other instances, it should be romanized ё. Often the diaeresis is not shown in Cyrillic, and in this case, the character should be romanized as ë/yë, as outlined above, if known to be relevant, or otherwise e/ye as described in the first note." + note "The source document presents the letter Ҫ/ҫ with the codepoints U+00C7/U+00E7 (Latin C with cedilla) in its text layer; the standard Chuvash Cyrillic codepoints are U+04AA/U+04AB. This map accepts both pairs and romanizes them ś." + note "An inventory of letter-diacritic combinations, with their Unicode encoding, in addition to the unmodified letters of the basic Roman script is:" + note "Ă (U+0102) ă (U+0103) Ë (U+00CB) ë (U+00EB) Ĕ (U+0114) ĕ (U+0115) Ś (U+015A) ś (U+015B) Ü (U+00DC) ü (U+00FC) Ė (U+0116) ė (U+0117)" + note "The Romanization columns show only lowercase forms but, when romanizing, uppercase and lowercase Roman letters as appropriate should be used." + } +} + +tests { + # every table row, upper and lower + "А" -> "A" + "а" -> "a" + "Ӑ" -> "Ă" + "ӑ" -> "ă" + "Б" -> "B" + "б" -> "b" + "В" -> "V" + "в" -> "v" + "Г" -> "G" + "г" -> "g" + "Д" -> "D" + "д" -> "d" + "Е" -> "Ye" + "е" -> "ye" + "Ё" -> "Yë" + "ё" -> "yë" + "Ӗ" -> "Ĕ" + "ӗ" -> "ĕ" + "Ж" -> "Zh" + "ж" -> "zh" + "З" -> "Z" + "з" -> "z" + "И" -> "I" + "и" -> "i" + "Й" -> "Y" + "й" -> "y" + "К" -> "K" + "к" -> "k" + "Л" -> "L" + "л" -> "l" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "О" -> "O" + "о" -> "o" + "П" -> "P" + "п" -> "p" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Ç" -> "Ś" + "ç" -> "ś" + "Ҫ" -> "Ś" + "ҫ" -> "ś" + "Т" -> "T" + "т" -> "t" + "У" -> "U" + "у" -> "u" + "Ӳ" -> "Ü" + "ӳ" -> "ü" + "Ф" -> "F" + "ф" -> "f" + "Х" -> "Kh" + "х" -> "kh" + "Ц" -> "Ts" + "ц" -> "ts" + "Ч" -> "Ch" + "ч" -> "ch" + "Ш" -> "Sh" + "ш" -> "sh" + "Щ" -> "Shch" + "щ" -> "shch" + "Ъ" -> "”" + "ъ" -> "”" + "Ы" -> "Y" + "ы" -> "y" + "Ь" -> "’" + "ь" -> "’" + "Э" -> "Ė" + "э" -> "ė" + "Ю" -> "Yu" + "ю" -> "yu" + "Я" -> "Ya" + "я" -> "ya" + # notes 1-2: ye/yë contexts; ӑ is not in the vowel set + "бе" -> "be" + "ае" -> "aye" + "йе" -> "yye" + "ъе" -> "”ye" + "ье" -> "’ye" + "ӑе" -> "ăe" + "йё" -> "yyë" + "бё" -> "bë" +} + +stage main { + + # RULES + # notes 1-2: е and ё initially, after the listed vowels, and after й, ъ, ь + sub { + from boundary + "Е" + to "Ye" + } + sub { + from boundary + "е" + to "ye" + } + sub { + from "Е" + to "Ye" + before any("АаЕеЁёИиОоУуЫыЭэЮюЯяЙйЪъЬь") + } + sub { + from "е" + to "ye" + before any("АаЕеЁёИиОоУуЫыЭэЮюЯяЙйЪъЬь") + } + sub { + from boundary + "Ё" + to "Yë" + } + sub { + from boundary + "ё" + to "yë" + } + sub { + from "Ё" + to "Yë" + before any("АаЕеЁёИиОоУуЫыЭэЮюЯяЙйЪъЬь") + } + sub { + from "ё" + to "yë" + before any("АаЕеЁёИиОоУуЫыЭэЮюЯяЙйЪъЬь") + } + + # CHARACTERS + parallel { + sub "Щ" "Shch" + sub "Ӳ" "Ü" + sub "Ӗ" "Ĕ" + sub "Ӑ" "Ă" + sub "Ҫ" "Ś" + sub "Ç" "Ś" + sub "Ъ" "”" + sub "Ы" "Y" + sub "Ь" "’" + sub "Э" "Ė" + sub "Ю" "Yu" + sub "Я" "Ya" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "Ё" "Ë" + sub "Ж" "Zh" + sub "З" "Z" + sub "И" "I" + sub "Й" "Y" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "Kh" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Ш" "Sh" + + sub "щ" "shch" + sub "ӳ" "ü" + sub "ӗ" "ĕ" + sub "ӑ" "ă" + sub "ҫ" "ś" + sub "ç" "ś" + sub "ъ" "”" + sub "ы" "y" + sub "ь" "’" + sub "э" "ė" + sub "ю" "yu" + sub "я" "ya" + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "ё" "ë" + sub "ж" "zh" + sub "з" "z" + sub "и" "i" + sub "й" "y" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "kh" + sub "ц" "ts" + sub "ч" "ch" + sub "ш" "sh" + } + +} + +} diff --git a/public/maps/bgnpcgn-deu-Latn-Latn-2000.isc b/public/maps/bgnpcgn-deu-Latn-Latn-2000.isc index 5ab4ae15..787e3be0 100644 --- a/public/maps/bgnpcgn-deu-Latn-Latn-2000.isc +++ b/public/maps/bgnpcgn-deu-Latn-Latn-2000.isc @@ -25,6 +25,7 @@ tests { } dependency "posix" +dependency "var-kor" stage main { diff --git a/public/maps/bgnpcgn-iu-Cans-Latn-2013.isc b/public/maps/bgnpcgn-iu-Cans-Latn-2013.isc new file mode 100644 index 00000000..121cc1bd --- /dev/null +++ b/public/maps/bgnpcgn-iu-Cans-Latn-2013.isc @@ -0,0 +1,280 @@ +system "BGN-PCGN:iu-Cans:Latn:2013" { + +metadata { + authority_id bgnpcgn + id 2013 + language iso-639-2:iu + source_script Cans + destination_script Latn + name Romanization of Inuktitut (2013 Agreement) + url https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names + creation_date 2013 + confirmation_date 2018-06 + description { + The BGN/PCGN system for Inuktitut romanizes Canadian Aboriginal Syllabics + (qaniujaaqpait) used for geographic names in Nunavut. The syllabic chart was + approved by the Inuit Cultural Institute at Arviat in 1976. The BGN/PCGN + agreement is dated 2013 and was checked for validity and accuracy in June 2018. + } + + notes { + note "Syllabics are official for geographic names only in Nunavut, Canada. The 1976 chart applies to all Inuktitut dialects." + note "The s/h column is pronounced s in eastern dialects and h in the Kivalliq and Qitirmiut dialects. This map romanizes it as s." + note "The ng column is a single consonant. It is romanized ng; Nattilingmiutut sources may write the velar nasal with the letter eng (U+014B)." + note "The letters ł, š, and ř occur in Nattilingmiutut. The Roman encodings are U+0142, U+0161, and U+0159." + note "Naaniit (finals) are superscript consonant forms and denote syllable-final consonants. A final followed by a consonant-initial syllable is the only occurrence of a consonant cluster in Inuktitut." + note "A lengthened vowel is marked by a dot above the syllabic and is romanized as a doubled vowel. The map accepts the precomposed long-vowel characters." + note "The barred-s column (header h, footnote 2) and the š column have no Unicode encoding in the source document; the source presents them as raster images. This map does not accept those characters." + note "The ř column is stored in the source PDF at the Unicode TH-CREE codepoints U+15A7, U+15AA, U+15AC, and U+15AE. The map romanizes those codepoints as ři, řu, řa, and ř." + note "The Roman letter H is inserted in syllabics for some words borrowed from English and is romanized h." + note "The glottal stop is written with an inverted apostrophe (U+2018) in both syllabics and Roman script and is retained." + note "Generally no more than two vowels appear in a row. The sequence uai occurs in the North Qikiqtani dialect." + note "Consonants assimilate to the following consonant in pronunciation. The map romanizes the written final, so the written form of an assimilated sequence is preserved." + note "The Roman-script columns are shown in lower case in the source. This map applies title case to each word." + } +} + +tests { + "ᐃ" -> "I" + "ᐄ" -> "Ii" + "ᐅ" -> "U" + "ᐆ" -> "Uu" + "ᐊ" -> "A" + "ᐋ" -> "Aa" + "ᐱ" -> "Pi" + "ᐲ" -> "Pii" + "ᐳ" -> "Pu" + "ᐴ" -> "Puu" + "ᐸ" -> "Pa" + "ᐹ" -> "Paa" + "ᑉ" -> "P" + "ᑎ" -> "Ti" + "ᑏ" -> "Tii" + "ᑐ" -> "Tu" + "ᑑ" -> "Tuu" + "ᑕ" -> "Ta" + "ᑖ" -> "Taa" + "ᑦ" -> "T" + "ᑭ" -> "Ki" + "ᑮ" -> "Kii" + "ᑯ" -> "Ku" + "ᑰ" -> "Kuu" + "ᑲ" -> "Ka" + "ᑳ" -> "Kaa" + "ᒃ" -> "K" + "ᒋ" -> "Gi" + "ᒌ" -> "Gii" + "ᒍ" -> "Gu" + "ᒎ" -> "Guu" + "ᒐ" -> "Ga" + "ᒑ" -> "Gaa" + "ᒡ" -> "G" + "ᒥ" -> "Mi" + "ᒦ" -> "Mii" + "ᒧ" -> "Mu" + "ᒨ" -> "Muu" + "ᒪ" -> "Ma" + "ᒫ" -> "Maa" + "ᒻ" -> "M" + "ᓂ" -> "Ni" + "ᓃ" -> "Nii" + "ᓄ" -> "Nu" + "ᓅ" -> "Nuu" + "ᓇ" -> "Na" + "ᓈ" -> "Naa" + "ᓐ" -> "N" + "ᓯ" -> "Si" + "ᓰ" -> "Sii" + "ᓱ" -> "Su" + "ᓲ" -> "Suu" + "ᓴ" -> "Sa" + "ᓵ" -> "Saa" + "ᔅ" -> "S" + "ᓕ" -> "Li" + "ᓖ" -> "Lii" + "ᓗ" -> "Lu" + "ᓘ" -> "Luu" + "ᓚ" -> "La" + "ᓛ" -> "Laa" + "ᓪ" -> "L" + "ᔨ" -> "Ji" + "ᔩ" -> "Jii" + "ᔪ" -> "Ju" + "ᔫ" -> "Juu" + "ᔭ" -> "Ja" + "ᔮ" -> "Jaa" + "ᔾ" -> "J" + "ᕕ" -> "Vi" + "ᕖ" -> "Vii" + "ᕗ" -> "Vu" + "ᕘ" -> "Vuu" + "ᕙ" -> "Va" + "ᕚ" -> "Vaa" + "ᕝ" -> "V" + "ᕆ" -> "Ri" + "ᕇ" -> "Rii" + "ᕈ" -> "Ru" + "ᕉ" -> "Ruu" + "ᕋ" -> "Ra" + "ᕌ" -> "Raa" + "ᕐ" -> "R" + "ᕿ" -> "Qi" + "ᖀ" -> "Qii" + "ᖁ" -> "Qu" + "ᖂ" -> "Quu" + "ᖃ" -> "Qa" + "ᖄ" -> "Qaa" + "ᖅ" -> "Q" + "ᖏ" -> "Ngi" + "ᖐ" -> "Ngii" + "ᖑ" -> "Ngu" + "ᖒ" -> "Nguu" + "ᖓ" -> "Nga" + "ᖔ" -> "Ngaa" + "ᖕ" -> "Ng" + "ᖠ" -> "Łi" + "ᖡ" -> "Łii" + "ᖢ" -> "Łu" + "ᖣ" -> "Łuu" + "ᖤ" -> "Ła" + "ᖥ" -> "Łaa" + "ᖦ" -> "Ł" + "ᖧ" -> "Ři" + "ᖨ" -> "Řii" + "ᖪ" -> "Řu" + "ᖫ" -> "Řuu" + "ᖬ" -> "Řa" + "ᖭ" -> "Řaa" + "ᖮ" -> "Ř" + "H" -> "H" + "‘" -> "‘" + "ᐃ‘" -> "I‘" + "ᐃᓄᒃ" -> "Inuk" + "ᓇᐅᔮᑦ" -> "Naujaat" + "ᓄᓇᕗᑦ" -> "Nunavut" + "ᓄᓇᕗᒻᒥ" -> "Nunavummi" +} + +stage main { + + parallel { + sub "ᐃ" "i" + sub "ᐄ" "ii" + sub "ᐅ" "u" + sub "ᐆ" "uu" + sub "ᐊ" "a" + sub "ᐋ" "aa" + sub "ᐱ" "pi" + sub "ᐲ" "pii" + sub "ᐳ" "pu" + sub "ᐴ" "puu" + sub "ᐸ" "pa" + sub "ᐹ" "paa" + sub "ᑉ" "p" + sub "ᑎ" "ti" + sub "ᑏ" "tii" + sub "ᑐ" "tu" + sub "ᑑ" "tuu" + sub "ᑕ" "ta" + sub "ᑖ" "taa" + sub "ᑦ" "t" + sub "ᑭ" "ki" + sub "ᑮ" "kii" + sub "ᑯ" "ku" + sub "ᑰ" "kuu" + sub "ᑲ" "ka" + sub "ᑳ" "kaa" + sub "ᒃ" "k" + sub "ᒋ" "gi" + sub "ᒌ" "gii" + sub "ᒍ" "gu" + sub "ᒎ" "guu" + sub "ᒐ" "ga" + sub "ᒑ" "gaa" + sub "ᒡ" "g" + sub "ᒥ" "mi" + sub "ᒦ" "mii" + sub "ᒧ" "mu" + sub "ᒨ" "muu" + sub "ᒪ" "ma" + sub "ᒫ" "maa" + sub "ᒻ" "m" + sub "ᓂ" "ni" + sub "ᓃ" "nii" + sub "ᓄ" "nu" + sub "ᓅ" "nuu" + sub "ᓇ" "na" + sub "ᓈ" "naa" + sub "ᓐ" "n" + sub "ᓯ" "si" + sub "ᓰ" "sii" + sub "ᓱ" "su" + sub "ᓲ" "suu" + sub "ᓴ" "sa" + sub "ᓵ" "saa" + sub "ᔅ" "s" + sub "ᓕ" "li" + sub "ᓖ" "lii" + sub "ᓗ" "lu" + sub "ᓘ" "luu" + sub "ᓚ" "la" + sub "ᓛ" "laa" + sub "ᓪ" "l" + sub "ᔨ" "ji" + sub "ᔩ" "jii" + sub "ᔪ" "ju" + sub "ᔫ" "juu" + sub "ᔭ" "ja" + sub "ᔮ" "jaa" + sub "ᔾ" "j" + sub "ᕕ" "vi" + sub "ᕖ" "vii" + sub "ᕗ" "vu" + sub "ᕘ" "vuu" + sub "ᕙ" "va" + sub "ᕚ" "vaa" + sub "ᕝ" "v" + sub "ᕆ" "ri" + sub "ᕇ" "rii" + sub "ᕈ" "ru" + sub "ᕉ" "ruu" + sub "ᕋ" "ra" + sub "ᕌ" "raa" + sub "ᕐ" "r" + sub "ᕿ" "qi" + sub "ᖀ" "qii" + sub "ᖁ" "qu" + sub "ᖂ" "quu" + sub "ᖃ" "qa" + sub "ᖄ" "qaa" + sub "ᖅ" "q" + sub "ᖏ" "ngi" + sub "ᖐ" "ngii" + sub "ᖑ" "ngu" + sub "ᖒ" "nguu" + sub "ᖓ" "nga" + sub "ᖔ" "ngaa" + sub "ᖕ" "ng" + sub "ᖠ" "łi" + sub "ᖡ" "łii" + sub "ᖢ" "łu" + sub "ᖣ" "łuu" + sub "ᖤ" "ła" + sub "ᖥ" "łaa" + sub "ᖦ" "ł" + sub "ᖧ" "ři" + sub "ᖨ" "řii" + sub "ᖪ" "řu" + sub "ᖫ" "řuu" + sub "ᖬ" "řa" + sub "ᖭ" "řaa" + sub "ᖮ" "ř" + sub "H" "h" + sub "h" "h" + sub "‘" "‘" + } + + title_case +} + +} diff --git a/public/maps/bgnpcgn-kbd-Cyrl-Latn-2011.isc b/public/maps/bgnpcgn-kbd-Cyrl-Latn-2011.isc new file mode 100644 index 00000000..b07ef7ea --- /dev/null +++ b/public/maps/bgnpcgn-kbd-Cyrl-Latn-2011.isc @@ -0,0 +1,295 @@ +system "BGN-PCGN:kbd-Cyrl:Latn:2011" { + +metadata { + authority_id bgnpcgn + id 2011 + language iso-639-2:kbd + source_script Cyrl + destination_script Latn + name Romanization of Kabardian (2011) + url https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names + creation_date 2011 + confirmation_date 2017-10 + description { + The BGN/PCGN system for Kabardian is designed for use in romanizing names written in the + Kabardian Cyrillic alphabet. Kabardian, of the north-western Caucasian language family, is + principally spoken in Russia's republics of Kabardino-Balkariya and Karachayevo-Cherkesiya + and has been written in a modified Cyrillic script since 1936. Also known as East + Circassian, Kabardian is notable for its rich density of consonant phonemes (most + commentators agree on an inventory of 47 or 48) and corresponding paucity of vowels. + Kabardian letters are addressed in the romanizations as per their articulation: + glottalised consonants are marked with an apostrophe, and labialized consonants with w. + } + + notes { + note "У should be romanized as w or u according to context: w should be used word-initially, and u used elsewhere, except as in combinations occurring elsewhere in the table." + note "The characters Ё, Ъ, Ы and Ь (except as they occur in character combinations addressed elsewhere in the table) appear only in Russian loan words, and are thus romanized in the same style as in the BGN/PCGN Romanization System for Russian." + note "The letter Хь is romanized h with the combining macron below (U+0048+0033 for the capital; U+1E96 precomposed for the lower case); the table column shows the precomposed ẖ." + note "An inventory of letter-diacritic combinations, with their Unicode encoding, in addition to the unmodified letters of the basic Roman script is:" + note "All apostrophes appearing in romanization are U+2019" + note "Ä (U+00C4) ä (U+00E4) Ź (U+0179) ź (U+017A) Ś (U+015A) ś (U+015B) Ë (U+00CB) ë (U+00EB) H̱ (0048+0031) ẖ (0068+0031)" + note "The source document prints the H̱ inventory codepoint as 0048+0031; the glyph shown is h with the combining macron below (U+0331)." + note "The Romanization columns show only lowercase forms but, when romanizing, uppercase and lowercase Roman letters as appropriate should be used." + } +} + +tests { + # every table row, upper and lower + "А" -> "A" + "а" -> "a" + "Э" -> "Ä" + "э" -> "ä" + "Б" -> "B" + "б" -> "b" + "В" -> "V" + "в" -> "v" + "Г" -> "G" + "г" -> "g" + "Гу" -> "Gw" + "гу" -> "gw" + "Гъ" -> "Gh" + "гъ" -> "gh" + "Гъу" -> "Ghw" + "гъу" -> "ghw" + "Д" -> "D" + "д" -> "d" + "Дж" -> "J" + "дж" -> "j" + "Дз" -> "Dz" + "дз" -> "dz" + "Е" -> "E" + "е" -> "e" + "Ё" -> "Ë" + "ё" -> "ë" + "Ж" -> "Zh" + "ж" -> "zh" + "Жь" -> "Ź" + "жь" -> "ź" + "З" -> "Z" + "з" -> "z" + "И" -> "I" + "и" -> "i" + "Й" -> "Y" + "й" -> "y" + "К" -> "K" + "к" -> "k" + "Ку" -> "Kw" + "ку" -> "kw" + "КӀ" -> "K’" + "кӀ" -> "k’" + "КӀу" -> "Kw’" + "кӀу" -> "kw’" + "Къ" -> "Q’" + "къ" -> "q’" + "Къу" -> "Qw’" + "къу" -> "qw’" + "Кхъ" -> "Q" + "кхъ" -> "q" + "Кхъу" -> "Qw" + "кхъу" -> "qw" + "Л" -> "L" + "л" -> "l" + "Лъ" -> "Lh" + "лъ" -> "lh" + "ЛӀ" -> "L’" + "лӀ" -> "l’" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "О" -> "O" + "о" -> "o" + "П" -> "P" + "п" -> "p" + "ПӀ" -> "P’" + "пӀ" -> "p’" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Т" -> "T" + "т" -> "t" + "ТӀ" -> "T’" + "тӀ" -> "t’" + "Ф" -> "F" + "ф" -> "f" + "ФӀ" -> "F’" + "фӀ" -> "f’" + "Х" -> "Kh" + "х" -> "kh" + "Ху" -> "Khw" + "ху" -> "khw" + "Хь" -> "H̱" + "хь" -> "ẖ" + "Хъ" -> "X" + "хъ" -> "x" + "Хъу" -> "Xw" + "хъу" -> "xw" + "Ц" -> "Ts" + "ц" -> "ts" + "ЦӀ" -> "Ts’" + "цӀ" -> "ts’" + "Ч" -> "Ch" + "ч" -> "ch" + "Ш" -> "Sh" + "ш" -> "sh" + "Щ" -> "Ś" + "щ" -> "ś" + "ЩӀ" -> "Ś’" + "щӀ" -> "ś’" + "Ъ" -> "’’" + "ъ" -> "’’" + "Ы" -> "Y" + "ы" -> "y" + "Ь" -> "’" + "ь" -> "’" + "Ю" -> "Yu" + "ю" -> "yu" + "Я" -> "Ya" + "я" -> "ya" + "Ӏ" -> "’" + "Ӏу" -> "’w" + # note 1: У word-initially w, elsewhere u + "У" -> "W" + "у" -> "w" + "Ужи" -> "Wzhi" + "мау" -> "mau" +} + +stage main { + + # RULES + # note 1: У word-initially w, elsewhere u + sub { + from boundary + "У" + to "W" + } + sub { + from boundary + "у" + to "w" + } + + # CHARACTERS + parallel { + sub "Кхъу" "Qw" + sub "Гъу" "Ghw" + sub "Къу" "Qw’" + sub "КӀу" "Kw’" + sub "Хъу" "Xw" + sub "Кхъ" "Q" + sub "Гу" "Gw" + sub "Гъ" "Gh" + sub "Дж" "J" + sub "Дз" "Dz" + sub "Жь" "Ź" + sub "Ку" "Kw" + sub "КӀ" "K’" + sub "Къ" "Q’" + sub "Лъ" "Lh" + sub "ЛӀ" "L’" + sub "ПӀ" "P’" + sub "ТӀ" "T’" + sub "ФӀ" "F’" + sub "Ху" "Khw" + sub "Хь" "H̱" + sub "Хъ" "X" + sub "ЦӀ" "Ts’" + sub "ЩӀ" "Ś’" + sub "Ӏу" "’w" + sub "Ъ" "’’" + sub "Ы" "Y" + sub "Ь" "’" + sub "Ю" "Yu" + sub "Я" "Ya" + sub "А" "A" + sub "Э" "Ä" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "Ё" "Ë" + sub "Ж" "Zh" + sub "З" "Z" + sub "И" "I" + sub "Й" "Y" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "Kh" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Ш" "Sh" + sub "Щ" "Ś" + sub "Ӏ" "’" + + sub "кхъу" "qw" + sub "гъу" "ghw" + sub "къу" "qw’" + sub "кӀу" "kw’" + sub "хъу" "xw" + sub "кхъ" "q" + sub "гу" "gw" + sub "гъ" "gh" + sub "дж" "j" + sub "дз" "dz" + sub "жь" "ź" + sub "ку" "kw" + sub "кӀ" "k’" + sub "къ" "q’" + sub "лъ" "lh" + sub "лӀ" "l’" + sub "пӀ" "p’" + sub "тӀ" "t’" + sub "фӀ" "f’" + sub "ху" "khw" + sub "хь" "ẖ" + sub "хъ" "x" + sub "цӀ" "ts’" + sub "щӀ" "ś’" + sub "ъ" "’’" + sub "ы" "y" + sub "ь" "’" + sub "ю" "yu" + sub "я" "ya" + sub "а" "a" + sub "э" "ä" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "ё" "ë" + sub "ж" "zh" + sub "з" "z" + sub "и" "i" + sub "й" "y" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "kh" + sub "ц" "ts" + sub "ч" "ch" + sub "ш" "sh" + sub "щ" "ś" + } + +} + +} diff --git a/public/maps/bgnpcgn-krc-Cyrl-Latn-2008.isc b/public/maps/bgnpcgn-krc-Cyrl-Latn-2008.isc new file mode 100644 index 00000000..eed88a41 --- /dev/null +++ b/public/maps/bgnpcgn-krc-Cyrl-Latn-2008.isc @@ -0,0 +1,218 @@ +system "BGN-PCGN:krc-Cyrl:Latn:2008" { + +metadata { + authority_id bgnpcgn + id 2008 + language iso-639-2:krc + source_script Cyrl + destination_script Latn + name Table of Correspondences for Karachay-Balkar (Cyrillic-Roman) (2008 Agreement) + url https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names + creation_date 2008 + confirmation_date 2017-10 + description { + Karachay-Balkar is an official language within Karachayevo-Cherkesiya and + Kabardino-Balkariya, two of the republics of the Russian Federation. It will normally + be encountered in Cyrillic script, in which case it should be romanized by means of + the Cyrillic-Roman table of correspondences given below. + } + + notes { + note "The characters в, ц, щ and ь occur only in loan words." + note "J is the appropriate Roman rendering for ж, except when it occurs as a component of дж, which is rendered in Roman as a unitary character c." + note "У should be romanized as u, except when preceded by а, е, ё, и, о, у, ы, ю or я when it should be rendered w (e.g. яу = yaw)." + note "Ъ is not romanized, except in the combinations гъ, къ or нъ, which are rendered in Roman as ğ, q and ng respectively." + note "The Roman rendering yu is sometimes encountered in loan words and after certain vowels; this map renders ю as ü throughout." + note "An inventory of letter-diacritic combinations, with their Unicode encoding, in addition to the unmodified letters of the basic Roman script is:" + note "Ğ (U+011E) ğ (U+011F) Ö (U+00D6) ö (U+00F6) İ (U+0130) ı (U+0131) Ç (U+00C7) ç (U+00E7) Ş (U+015E) ş (U+015F) Ü (U+00DC) ü (U+00FC)" + note "The Roman-script columns show only lowercase forms but, when applying the table, uppercase and lowercase Roman letters as appropriate should be used." + } +} + +tests { + # every table row, upper and lower + "А" -> "A" + "а" -> "a" + "Б" -> "B" + "б" -> "b" + "В" -> "V" + "в" -> "v" + "Г" -> "G" + "г" -> "g" + "Гъ" -> "Ğ" + "гъ" -> "ğ" + "Д" -> "D" + "д" -> "d" + "Дж" -> "C" + "дж" -> "c" + "Е" -> "E" + "е" -> "e" + "Ё" -> "Ö" + "ё" -> "ö" + "Ж" -> "J" + "ж" -> "j" + "З" -> "Z" + "з" -> "z" + "И" -> "İ" + "и" -> "i" + "Й" -> "Y" + "й" -> "y" + "К" -> "K" + "к" -> "k" + "Къ" -> "Q" + "къ" -> "q" + "Л" -> "L" + "л" -> "l" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "Нъ" -> "Ng" + "нъ" -> "ng" + "нг" -> "ng" + "Нг" -> "Ng" + "О" -> "O" + "о" -> "o" + "П" -> "P" + "п" -> "p" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Т" -> "T" + "т" -> "t" + "Ў" -> "W" + "ў" -> "w" + "Ф" -> "F" + "ф" -> "f" + "Х" -> "X" + "х" -> "x" + "Ц" -> "S" + "ц" -> "s" + "Ч" -> "Ç" + "ч" -> "ç" + "Ш" -> "Ş" + "ш" -> "ş" + "Щ" -> "Şç" + "щ" -> "şç" + "Ъ" -> "" + "ъ" -> "" + "Ы" -> "I" + "ы" -> "ı" + "Ь" -> "" + "ь" -> "" + "Э" -> "E" + "э" -> "e" + "Ю" -> "Ü" + "ю" -> "ü" + "Я" -> "Ya" + "я" -> "ya" + # note 3: у after the listed vowels is w; source example яу = yaw + "яу" -> "yaw" + "ую" -> "uü" # у + ю + "эу" -> "eu" + "у" -> "u" +} + +stage main { + + # RULES + # note 3: у after а, е, ё, и, о, у, ы, ю or я is w + sub { + from "У" + to "W" + before any("АаЕеЁёИиОоУуЫыЮюЯя") + } + sub { + from "у" + to "w" + before any("АаЕеЁёИиОоУуЫыЮюЯя") + } + + # CHARACTERS + parallel { + sub "НГ" "NG" + sub "Нг" "Ng" + sub "Гъ" "Ğ" + sub "Къ" "Q" + sub "Нъ" "Ng" + sub "Дж" "C" + sub "Ё" "Ö" + sub "И" "İ" + sub "Ч" "Ç" + sub "Ш" "Ş" + sub "Щ" "Şç" + sub "Ы" "I" + sub "Ю" "Ü" + sub "Я" "Ya" + sub "Ў" "W" + sub "Ъ" "" + sub "Ь" "" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "Ж" "J" + sub "З" "Z" + sub "Й" "Y" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "X" + sub "Ц" "S" + sub "Э" "E" + + sub "нг" "ng" + sub "нъ" "ng" + sub "гъ" "ğ" + sub "къ" "q" + sub "дж" "c" + sub "ё" "ö" + sub "и" "i" + sub "ч" "ç" + sub "ш" "ş" + sub "щ" "şç" + sub "ы" "ı" + sub "ю" "ü" + sub "я" "ya" + sub "ў" "w" + sub "ъ" "" + sub "ь" "" + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "ж" "j" + sub "з" "z" + sub "й" "y" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "x" + sub "ц" "s" + sub "э" "e" + } + +} + +} diff --git a/public/maps/bgnpcgn-mkd-Cyrl-Latn-1981.isc b/public/maps/bgnpcgn-mkd-Cyrl-Latn-1981.isc index 3743bdcb..bbab34a4 100644 --- a/public/maps/bgnpcgn-mkd-Cyrl-Latn-1981.isc +++ b/public/maps/bgnpcgn-mkd-Cyrl-Latn-1981.isc @@ -47,6 +47,7 @@ tests { } dependency "var-Cyrl" +dependency "var-kor" stage main { diff --git a/public/maps/bgnpcgn-mkd-Cyrl-Latn-2013.isc b/public/maps/bgnpcgn-mkd-Cyrl-Latn-2013.isc index 29883d52..8af7283a 100644 --- a/public/maps/bgnpcgn-mkd-Cyrl-Latn-2013.isc +++ b/public/maps/bgnpcgn-mkd-Cyrl-Latn-2013.isc @@ -62,6 +62,7 @@ tests { } dependency "posix" +dependency "var-kor" stage main { diff --git a/public/maps/bgnpcgn-oss-Cyrl-Latn-2009.isc b/public/maps/bgnpcgn-oss-Cyrl-Latn-2009.isc new file mode 100644 index 00000000..97cdd33a --- /dev/null +++ b/public/maps/bgnpcgn-oss-Cyrl-Latn-2009.isc @@ -0,0 +1,259 @@ +system "BGN-PCGN:oss-Cyrl:Latn:2009" { + +metadata { + authority_id bgnpcgn + id 2009 + language iso-639-2:oss + source_script Cyrl + destination_script Latn + name Romanization of Ossetian (2009) + url https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names + creation_date 2009 + confirmation_date 2017-11 + description { + The BGN/PCGN system for Ossetian is designed for use in romanizing names written in the + Ossetian Cyrillic alphabet. Ossetian is a member of the north-eastern Iranian language + group and has over half a million speakers. It has principally been written in a modified + Cyrillic alphabet, though a Roman alphabet was used between 1923 and 1938. The + BGN/PCGN Romanization System is derived from the correspondences between that Roman + alphabet and the Cyrillic alphabet used for Ossetian today, with modifications to suit + an English-language user. + } + + notes { + note "The characters ё, ж, ш, щ, ъ, ь, э, ю, я appear only in loan words and their romanizations in the Ossetian System are therefore as they appear in the BGN/PCGN Romanization System for Russian Cyrillic." + note "У has several different functions: in combination with another vowel (either preceding or following) У is a semi-vowel and should be romanized w (e.g. Дзау → Dzaw (=Java)); У also serves to labialize the consonants Г, Гъ, К, Къ, Х and Хъ and should also be romanized w after each of these (e.g. Гуырдзы → Gwyrdzy (=Georgia)); elsewhere У should be romanized u (e.g. Республикӕ → Respublikæ (=Republic))." + note "The source document prints the third example output as Respublikӕ, with the Cyrillic ӕ where the Roman æ (U+00E6) belongs; this map applies the table, which romanizes ӕ as æ." + note "Ъ should be represented with ” (U+201D), except as it occurs in the digraph combinations гъ, къ, пъ, тъ, хъ or чъ representing the glottal consonants as shown separately in the table." + note "An inventory of letter-diacritic combinations, with their Unicode encoding, in addition to the unmodified letters of the basic Roman script is:" + note "All apostrophes appearing in romanization are U+2019" + note "Æ (U+00C6) æ (U+00E6) Ë (U+00CB) ë (U+00EB)" + note "The Roman-script columns show only lowercase forms but, when applying the table, uppercase and lowercase Roman letters as appropriate should be used." + } +} + +tests { + # every table row, upper and lower + "А" -> "A" + "а" -> "a" + "Ӕ" -> "Æ" + "ӕ" -> "æ" + "Б" -> "B" + "б" -> "b" + "В" -> "V" + "в" -> "v" + "Г" -> "G" + "г" -> "g" + "Гъ" -> "Gh" + "гъ" -> "gh" + "Д" -> "D" + "д" -> "d" + "Дж" -> "J" + "дж" -> "j" + "Дз" -> "Dz" + "дз" -> "dz" + "Е" -> "E" + "е" -> "e" + "Ё" -> "Ë" + "ё" -> "ë" + "Ж" -> "Zh" + "ж" -> "zh" + "З" -> "Z" + "з" -> "z" + "И" -> "I" + "и" -> "i" + "Й" -> "Y" + "й" -> "y" + "К" -> "K" + "к" -> "k" + "Къ" -> "K’" + "къ" -> "k’" + "Л" -> "L" + "л" -> "l" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "О" -> "O" + "о" -> "o" + "П" -> "P" + "п" -> "p" + "Пъ" -> "P’" + "пъ" -> "p’" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Т" -> "T" + "т" -> "t" + "Тъ" -> "T’" + "тъ" -> "t’" + "Ф" -> "F" + "ф" -> "f" + "Х" -> "Kh" + "х" -> "kh" + "Хъ" -> "Q" + "хъ" -> "q" + "Ц" -> "Ts" + "ц" -> "ts" + "Цъ" -> "Ts’" + "цъ" -> "ts’" + "Ч" -> "Ch" + "ч" -> "ch" + "Чъ" -> "Ch’" + "чъ" -> "ch’" + "Ш" -> "Sh" + "ш" -> "sh" + "Щ" -> "Shch" + "щ" -> "shch" + "Ъ" -> "”" + "ъ" -> "”" + "Ы" -> "Y" + "ы" -> "y" + "Ь" -> "’" + "ь" -> "’" + "Э" -> "E" + "э" -> "e" + "Ю" -> "Yu" + "ю" -> "yu" + "Я" -> "Ya" + "я" -> "ya" + # note 2: three-way У; source examples + "Дзау" -> "Dzaw" + "Гуырдзы" -> "Gwyrdzy" + "Республикӕ" -> "Respublikæ" + "у" -> "u" + "уа" -> "wa" + "ау" -> "aw" +} + +stage main { + + # RULES + # note 2: У is w adjacent to another vowel, after the labializing + # consonants Г, Гъ, К, Къ, Х and Хъ, and u elsewhere + sub { + from "У" + to "W" + before any("АаЕеЁёИиОоУуЫыЭэЮюЯяӔӕ") + } + sub { + from "у" + to "w" + before any("АаЕеЁёИиОоУуЫыЭэЮюЯяӔӕ") + } + sub { + from "У" + to "W" + after any("АаЕеЁёИиОоУуЫыЭэЮюЯяӔӕ") + } + sub { + from "у" + to "w" + after any("АаЕеЁёИиОоУуЫыЭэЮюЯяӔӕ") + } + sub { + from "ъу" + to "ъw" + before any("ГгКкХх") + } + sub { + from "у" + to "w" + before any("ГгКкХх") + } + + # CHARACTERS + parallel { + sub "Щ" "Shch" + sub "Гъ" "Gh" + sub "Дж" "J" + sub "Дз" "Dz" + sub "Къ" "K’" + sub "Пъ" "P’" + sub "Тъ" "T’" + sub "Хъ" "Q" + sub "Цъ" "Ts’" + sub "Чъ" "Ch’" + sub "Ӕ" "Æ" + sub "Ы" "Y" + sub "Ъ" "”" + sub "Ь" "’" + sub "Ё" "Ë" + sub "Ж" "Zh" + sub "Ш" "Sh" + sub "Ю" "Yu" + sub "Я" "Ya" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "З" "Z" + sub "И" "I" + sub "Й" "Y" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "Kh" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Э" "E" + + sub "щ" "shch" + sub "гъ" "gh" + sub "дж" "j" + sub "дз" "dz" + sub "къ" "k’" + sub "пъ" "p’" + sub "тъ" "t’" + sub "хъ" "q" + sub "цъ" "ts’" + sub "чъ" "ch’" + sub "ӕ" "æ" + sub "ы" "y" + sub "ъ" "”" + sub "ь" "’" + sub "ё" "ë" + sub "ж" "zh" + sub "ш" "sh" + sub "ю" "yu" + sub "я" "ya" + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "з" "z" + sub "и" "i" + sub "й" "y" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "kh" + sub "ц" "ts" + sub "ч" "ch" + sub "э" "e" + } + +} + +} diff --git a/public/maps/bgnpcgn-sah-Cyrl-Latn-2012.isc b/public/maps/bgnpcgn-sah-Cyrl-Latn-2012.isc new file mode 100644 index 00000000..7b3b0a45 --- /dev/null +++ b/public/maps/bgnpcgn-sah-Cyrl-Latn-2012.isc @@ -0,0 +1,257 @@ +system "BGN-PCGN:sah-Cyrl:Latn:2012" { + +metadata { + authority_id bgnpcgn + id 2012 + language iso-639-2:sah + source_script Cyrl + destination_script Latn + name Romanization of Yakut (2012) + url https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names + creation_date 2012 + confirmation_date 2017-11 + description { + Yakut, or Sakha, is a Turkic language spoken by the Yakut people of the Sakha + (Yakutiya) Republic of the Russian Federation. The BGN/PCGN system romanizes names + written in the Yakut Cyrillic alphabet. + } + + notes { + note "The characters в, ж, з, ф, ш, щ, ъ, ь, ю and я occur only in loanwords, and are represented in the same style as in the BGN/PCGN Romanization System for Russian." + note "Е and Ё should be romanized ye and yë word-initially and after vowels. In all other instances, they should be romanized e and ë." + note "The source document pairs the capital Ѳ (text-layer codepoint U+0472, FITA) with the lowercase ө (U+04E9); the standard Yakut capital is Ө (U+04E8). This map accepts both capitals and romanizes them Ö." + note "The source document prints the lowercase form of НЬ as the ligature њ (U+045A); this map maps нь (U+043D+044C), Нь, НЬ and њ to ny." + note "An inventory of letter-diacritic combinations, with their Unicode encoding, in addition to the unmodified letters of the basic Roman script is:" + note "All apostrophes appearing in romanization are U+2019" + note "Ë (U+00CB) ë (U+00EB) Ö (U+00D6) ö (U+00F6) Ü (U+00DC) ü (U+00FC)" + note "The Roman-script columns show only lowercase forms but, when applying the table, uppercase and lowercase Roman letters as appropriate should be used." + } +} + +tests { + # every table row, upper and lower + "А" -> "A" + "а" -> "a" + "Б" -> "B" + "б" -> "b" + "В" -> "V" + "в" -> "v" + "Г" -> "G" + "г" -> "g" + "Ҕ" -> "Gh" + "ҕ" -> "gh" + "Д" -> "D" + "д" -> "d" + "ДЬ" -> "DJ" + "Дь" -> "Dj" + "дь" -> "dj" + "Е" -> "Ye" + "е" -> "ye" + "Ё" -> "Yë" + "ё" -> "yë" + "Ж" -> "Zh" + "ж" -> "zh" + "З" -> "Z" + "з" -> "z" + "И" -> "I" + "и" -> "i" + "Й" -> "Y" + "й" -> "y" + "К" -> "K" + "к" -> "k" + "Л" -> "L" + "л" -> "l" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "Ҥ" -> "Ng" + "ҥ" -> "ng" + "НЬ" -> "NY" + "Нь" -> "Ny" + "нь" -> "ny" + "њ" -> "ny" + "О" -> "O" + "о" -> "o" + "Ѳ" -> "Ö" + "Ө" -> "Ö" + "ө" -> "ö" + "П" -> "P" + "п" -> "p" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Һ" -> "H" + "һ" -> "h" + "Т" -> "T" + "т" -> "t" + "У" -> "U" + "у" -> "u" + "Ү" -> "Ü" + "ү" -> "ü" + "Ф" -> "F" + "ф" -> "f" + "Х" -> "Kh" + "х" -> "kh" + "Ц" -> "Ts" + "ц" -> "ts" + "Ч" -> "Ch" + "ч" -> "ch" + "Ш" -> "Sh" + "ш" -> "sh" + "Щ" -> "Shch" + "щ" -> "shch" + "Ъ" -> "”" + "ъ" -> "”" + "Ы" -> "Y" + "ы" -> "y" + "Ь" -> "’" + "ь" -> "’" + "Э" -> "E" + "э" -> "e" + "Ю" -> "Yu" + "ю" -> "yu" + "Я" -> "Ya" + "я" -> "ya" + # notes 1-2: ye/yë word-initially and after vowels; e/ë elsewhere + "бе" -> "be" + "үе" -> "üye" + "ое" -> "oye" + "кё" -> "kë" + "үё" -> "üyë" +} + +stage main { + + # RULES + # notes 1-2: е and ё word-initially and after vowels + sub { + from boundary + "Е" + to "Ye" + } + sub { + from boundary + "е" + to "ye" + } + sub { + from "Е" + to "Ye" + before any("АаЕеЁёИиОоУуҮүЫыЭэЮюЯя") + } + sub { + from "е" + to "ye" + before any("АаЕеЁёИиОоУуҮүЫыЭэЮюЯя") + } + sub { + from boundary + "Ё" + to "Yë" + } + sub { + from boundary + "ё" + to "yë" + } + sub { + from "Ё" + to "Yë" + before any("АаЕеЁёИиОоУуҮүЫыЭэЮюЯя") + } + sub { + from "ё" + to "yë" + before any("АаЕеЁёИиОоУуҮүЫыЭэЮюЯя") + } + + # CHARACTERS + parallel { + sub "ДЬ" "DJ" + sub "Дь" "Dj" + sub "НЬ" "NY" + sub "Нь" "Ny" + sub "Ҕ" "Gh" + sub "Ҥ" "Ng" + sub "Ѳ" "Ö" + sub "Ө" "Ö" + sub "Ү" "Ü" + sub "Һ" "H" + sub "Щ" "Shch" + sub "Ы" "Y" + sub "Ъ" "”" + sub "Ь" "’" + sub "Ю" "Yu" + sub "Я" "Ya" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "Ё" "Ë" + sub "Ж" "Zh" + sub "З" "Z" + sub "И" "I" + sub "Й" "Y" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "Kh" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Ш" "Sh" + sub "Э" "E" + + sub "дь" "dj" + sub "нь" "ny" + sub "њ" "ny" + sub "ҕ" "gh" + sub "ҥ" "ng" + sub "ө" "ö" + sub "ү" "ü" + sub "һ" "h" + sub "щ" "shch" + sub "ы" "y" + sub "ъ" "”" + sub "ь" "’" + sub "ю" "yu" + sub "я" "ya" + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "ё" "ë" + sub "ж" "zh" + sub "з" "z" + sub "и" "i" + sub "й" "y" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "kh" + sub "ц" "ts" + sub "ч" "ch" + sub "ш" "sh" + sub "э" "e" + } + +} + +} diff --git a/public/maps/bgnpcgn-syc-Syrc-Latn-2011.isc b/public/maps/bgnpcgn-syc-Syrc-Latn-2011.isc new file mode 100644 index 00000000..54a4c6bc --- /dev/null +++ b/public/maps/bgnpcgn-syc-Syrc-Latn-2011.isc @@ -0,0 +1,94 @@ +system "BGN-PCGN:syc-Syrc:Latn:2011" { + +metadata { + authority_id bgnpcgn + id 2011 + language iso-639-2:syc + source_script Syrc + destination_script Latn + name Romanization System for Modern Syriac Script (BGN/PCGN 2011 System) + url https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/693736/ROMANIZATION_OF_MODERN_SYRIAC.pdf + creation_date 2011 + confirmation_date 2017-11 + description { The modern Syriac script is used today by Assyrian writers of the neo-Aramaic language. + This Romanization System may be applied to any toponyms written in this script as may be + encountered in parts of northern Iraq, Syria, northern Iran and eastern Turkey. The + Neo-Aramaic language has a degree of locally official status within Iraq, and accordingly + some bilingual Arabic and modern Syriac signage may be encountered. + + The script is closely aligned to that of both Hebrew and Arabic, and, as these, is written + from right to left. In this Romanization System, “strong” consonants have been marked with + a sub-dot so as not to give a closer visual relation to either Arabic (which marks such + consonants with a cedilla) or Hebrew (which marks these with an underbar). The equivalences + where they exist in the Arabic and Hebrew scripts have also been shown only for a guide to + the cognate root. + } + + notes { + note "Letters connect to the following letter (to the left) except those marked with † in the source table (Ālap, Dālat, Hē, Wāw, Zayn, Ṣādē, Rēsh, Taw)." + note "Kāp, Mīm and Nūn: the source table shows the form in independent or word-final position. The form initially and medially differs but this is not included in a standalone form in the Unicode Standard; the initial/medial form will however be automatically generated when using the letter’s Unicode encoding initially or medially in a word. To illustrate the different forms, using the Unicode encoding twice gives: ܟܟ (U+071F); ܡܡ (U+0721); and ܢܢ (U+0722)." + note "Ālap (ܐ) has a number of functions in modern Syriac script:\n\n• It appears word-initially to denote a vowel, and is sometimes followed by yōd or wāw to denote ‘ī’ or ‘ū’ respectively.\n• It appears word-medially to denote what historically was a glottal stop. It is understood that this does not now function as a “stop” in speech, though the Ālap still appears in the written form. This is romanized ’.\n• It appears word-medially to denote a long vowel ā or ē.\n• It appears word-finally to denote the long vowel ā or ē.\n\nGiven the ambiguity in its function, it is recommended that a reference source be consulted for further guidance as to the appropriate romanization." + note "Taw should be romanized ‘t’ when unaspirated, and ‘th’ when aspirated. A reference source should be consulted for further guidance as to the appropriate romanization." + note "Numerals in modern Syriac script are represented by letters of the alphabet: Ālap, Bēt, Gāmal = 1, 2, 3 etc.; Yōd = 10, Kāp = 20, Lāmad = 30 etc.; Qōp = 100, Rēsh = 200, Shīn = 300 and finally Taw = 400. Unlike Arabic, composite numerals are written from right-to-left, so for instance 12 is written ܝܒ (10+2). Given the limited number of single-character numerals, other numbers are naturally quite elaborately composed: for instance, 999 may be written as (90×10)+90+9 or as 400+400+100+90+9. Arabic numerals are also used." + note "Vowels are represented either by the “matres lectionis” (“mothers of reading”) ālap (ܐ), yōd (ܝ) and wāw (ܘ), that function both as consonants and vowels, or by pointing marks appearing above or below other letters. The pointing marks are, however, frequently omitted." + note "An inventory of letter-diacritic combinations, with their Unicode encoding, in addition to the unmodified letters of the basic Roman script is:\n\n’ (U+2019) , ‘ (U+2018)\nĀ (U+0100) , ā (U+0101)\nĒ (U+0112) , ē (U+0113)\nŪ (U+016A) , ū (U+016B)\nḤ (U+0048+0323) , ḥ (U+0068+0323)\nṬ (U+0054+0323) , ṭ (U+0074+0323)\nĪ (U+012A) , ī (U+012B)\nṢ (U+0053+0323) , ṣ (U+0073+0323)" + note "The Romanization column shows only lowercase forms but, when romanizing, uppercase and lowercase Roman letters as appropriate should be used." + } +} + +tests { + "ܒܝܬ" -> "byt" + "ܫܡܫܐ" -> "shmsh" + "ܡܠܟܐ" -> "mlk" + "ܐܪܒܝܠ" -> "rbyl" + "ܥܡܐ" -> "‘m" + "ܚܡܪܐ" -> "ḥmr" + "ܛܠܐ" -> "ṭl" + "ܢܨܝܒܝܢ" -> "nṣybyn" + "ܐܘܪܡܝܐ" -> "wrmy" + "ܣܦܪܐ" -> "spr" + "ܟܬܵܒܵܐ" -> "ktābā" + "ܡܸܢ" -> "min" + "ܬܫܵܐ" -> "tshā" + "ܓܼ" -> "gī" +} + +stage main { + + # CHARACTERS + parallel { + sub "ܐ" "" # Ālap. See note 1 (’/ā/ē per function) + sub "ܒ" "b" # Bēt + sub "ܓ" "g" # Gāmal + sub "ܕ" "d" # Dālat + sub "ܗ" "h" # Hē + sub "ܘ" any(["w", "ū"]) # Wāw + sub "ܙ" "z" # Zayn + sub "ܚ" "ḥ" # Ḥēt + sub "ܛ" "ṭ" # Ṭēt + sub "ܝ" any(["y", "ī"]) # Yōd + sub "ܟ" "k" # Kāp + sub "ܠ" "l" # Lāmad + sub "ܡ" "m" # Mīm + sub "ܢ" "n" # Nūn + sub "ܣ" "s" # Semkat + sub "ܤ" "s" # Semkat (final form) + sub "ܥ" "‘" # ‘Ē + sub "ܦ" "p" # Pē + sub "ܨ" "ṣ" # Ṣādē + sub "ܩ" "q" # Qōp + sub "ܪ" "r" # Rēsh + sub "ܫ" "sh" # Shīn + sub "ܬ" any(["t", "th"]) # Taw. See note 2 + + # VOWEL POINTING MARKS (Table 2) + sub "ܲ" "a" + sub "ܳ" "o" + sub "ܴ" "u" + sub "ܵ" "ā" + sub "ܸ" "i" + sub "ܹ" "ē" + sub "ܼ" "ī" + } +} +} diff --git a/public/maps/bgnpcgn-tha-Thai-Latn-2002.isc b/public/maps/bgnpcgn-tha-Thai-Latn-2002.isc new file mode 100644 index 00000000..58e86c82 --- /dev/null +++ b/public/maps/bgnpcgn-tha-Thai-Latn-2002.isc @@ -0,0 +1,223 @@ +system "BGN/PCGN:tha-Thai:Latn:2002" { + +metadata { + authority_id bgnpcgn + id 2002 + language iso-639-2:tha + source_script Thai + destination_script Latn + name BGN/PCGN 2002 agreement — Romanization of Thai (Royal Institute of Thailand system) + url https://www.gov.uk/government/publications/romanization-systems + creation_date 2000 + adoption_date 2002 + description + + notes { + "BGN/PCGN 2002 agreement; developed by the Royal Institute of Thailand (2000), endorsed by Thailand and approved for UN use in 2002. Vowel length and tone are not romanized. + + Source: ROMANIZATION OF THAI.pdf (interscript-references/bgn-pcgn, checked November 2017). That PDF's text layer drops Thai combining marks; the vowel-sign inventory was reconstructed from the rendered table and cross-checked against the embedded examples. + + Note 1 of the source: correct romanization requires word identification and pronunciation knowledge -- syllable-internal final consonants are not orthographically decidable. This encoding is the deterministic layer: initial consonants by default, final consonants at word end, the vowel table, numerals, and mark stripping. Pronunciation-dependent cases (silent r in สามารถ, ทร by pronunciation, h as tone mark in หวอ, glottal อ) resolve through the pronunciation-lexicon layer. + + Carrier-interleaved compound vowels (เ-C-า khao, เ-C-ี-ยว class) require capture support in the consumed pattern (WO80) and are pending; adjacent-sign compounds (ก-ล-ั-ว klua, ม-ื-อ mue, เ-า ao) are encoded." + } +} + +tests { + "ภาษาไทย" -> "phasathai" + "ไทย" -> "thai" + "ใหม่" -> "mai" + "ที่" -> "thi" + "เป็น" -> "pen" + "ใน" -> "nai" + "การ" -> "kan" + "มี" -> "mi" + "๑๒๓" -> "123" + "เขา" -> "khao" + "กลัว" -> "klua" + "มือ" -> "mue" +} + + +stage main { + + # MARKS (tone marks are not romanized; the vowel shortening mark ็ + # has no RTGS effect; the silencing mark ์ removes the consonant it + # follows) + parallel { + sub "่" "" + sub "้" "" + sub "๊" "" + sub "๋" "" + sub "็" "" + sub "ก์" "" + sub "ข์" "" + sub "ค์" "" + sub "ง์" "" + sub "จ์" "" + sub "ช์" "" + sub "ญ์" "" + sub "ด์" "" + sub "ต์" "" + sub "ถ์" "" + sub "ท์" "" + sub "น์" "" + sub "บ์" "" + sub "ป์" "" + sub "ผ์" "" + sub "ฝ์" "" + sub "ฟ์" "" + sub "ม์" "" + sub "ย์" "" + sub "ร์" "" + sub "ล์" "" + sub "ว์" "" + sub "ส์" "" + sub "ห์" "" + sub "อ์" "" + } + + # LEADING SILENT เ (the e-glyph prefixes a carrier consonant in the + # compound rows: เ-ป-ี-ย pia, เ-ก-อ-ย koeai...). Thai-glyph context, + # so this runs before the consonant pass. Carrier-interleaved + # compounds (เ-C-า class) need capture support (WO80). + parallel { + sub { from "เ" to "" before any("ก".."ฮ") + "ีย" } + sub { from "เ" to "" before any("ก".."ฮ") + "ือ" } + sub { from "เ" to "" before any("ก".."ฮ") + "อย" } + } + + # COMPOUND VOWEL SIGNS (adjacent-sign forms; source rows 10-19) + parallel { + sub "ีย" "ia" + sub "ึย" "ui" + sub "อย" "oi" + sub "ไย" "ai" + sub "าย" "ai" + sub "ัวะ" "ua" + sub "ัว" "ua" + sub "ือะ" "ue" + sub "ือ" "ue" + sub "เา" "ao" + } + + # CONSONANTS — final form at word end + # (source table, rows 1-21: the second romanization column) + parallel { + sub { from "ข" to "k" after boundary } + sub { from "ฆ" to "k" after boundary } + sub { from "ค" to "k" after boundary } + sub { from "ฅ" to "k" after boundary } + sub { from "ฃ" to "k" after boundary } + sub { from "จ" to "t" after boundary } + sub { from "ฉ" to "t" after boundary } + sub { from "ช" to "t" after boundary } + sub { from "ฌ" to "t" after boundary } + sub { from "ญ" to "n" after boundary } + sub { from "ฎ" to "t" after boundary } + sub { from "ฑ" to "t" after boundary } + sub { from "ด" to "t" after boundary } + sub { from "ฐ" to "t" after boundary } + sub { from "ฒ" to "t" after boundary } + sub { from "ถ" to "t" after boundary } + sub { from "ท" to "t" after boundary } + sub { from "ธ" to "t" after boundary } + sub { from "บ" to "p" after boundary } + sub { from "ผ" to "p" after boundary } + sub { from "พ" to "p" after boundary } + sub { from "ภ" to "p" after boundary } + sub { from "ฝ" to "p" after boundary } + sub { from "ฟ" to "p" after boundary } + sub { from "ซ" to "t" after boundary } + sub { from "ศ" to "t" after boundary } + sub { from "ษ" to "t" after boundary } + sub { from "ส" to "t" after boundary } + sub { from "ร" to "n" after boundary } + } + + # CONSONANTS — initial defaults (source table, rows 1-21, first + # romanization column); the standalone carrier อ is silent and + # vanishes + parallel { + sub "ก" "k" + sub "ข" "kh" + sub "ฆ" "kh" + sub "ค" "kh" + sub "ฅ" "kh" + sub "ฃ" "kh" + sub "ง" "ng" + sub "จ" "ch" + sub "ฉ" "ch" + sub "ช" "ch" + sub "ฌ" "ch" + sub "ญ" "y" + sub "ฎ" "d" + sub "ฏ" "t" + sub "ฑ" "th" + sub "ฒ" "th" + sub "ด" "d" + sub "ต" "t" + sub "ฐ" "th" + sub "ถ" "th" + sub "ท" "th" + sub "ธ" "th" + sub "ณ" "n" + sub "น" "n" + sub "บ" "b" + sub "ป" "p" + sub "ผ" "ph" + sub "พ" "ph" + sub "ภ" "ph" + sub "ฝ" "f" + sub "ฟ" "f" + sub "ม" "m" + sub "ย" "y" + sub "ร" "r" + sub "ล" "l" + sub "ฬ" "l" + sub "ว" "w" + sub "ซ" "s" + sub "ศ" "s" + sub "ษ" "s" + sub "ส" "s" + sub "ห" "h" + sub "ฮ" "h" + sub "อ" "" + } + + # SIMPLE VOWELS (source vowel table, rows 1-9 and 11: single signs; + # length is not distinguished) + parallel { + sub "ะ" "a" + sub "ั" "a" + sub "า" "a" + sub "ๅ" "a" + sub "ิ" "i" + sub "ี" "i" + sub "ึ" "ue" + sub "ื" "ue" + sub "ุ" "u" + sub "ู" "u" + sub "เ" "e" + sub "แ" "ae" + sub "โ" "o" + sub "ใ" "ai" + sub "ไ" "ai" + sub "็" "" + } + + # NUMERALS + parallel { + sub "๐" "0" + sub "๑" "1" + sub "๒" "2" + sub "๓" "3" + sub "๔" "4" + sub "๕" "5" + sub "๖" "6" + sub "๗" "7" + sub "๘" "8" + sub "๙" "9" + } +} +} diff --git a/public/maps/bgnpcgn-udm-Cyrl-Latn-2011.isc b/public/maps/bgnpcgn-udm-Cyrl-Latn-2011.isc new file mode 100644 index 00000000..66bf5325 --- /dev/null +++ b/public/maps/bgnpcgn-udm-Cyrl-Latn-2011.isc @@ -0,0 +1,225 @@ +system "BGN-PCGN:udm-Cyrl:Latn:2011" { + +metadata { + authority_id bgnpcgn + id 2011 + language iso-639-2:udm + source_script Cyrl + destination_script Latn + name Romanization of Udmurt (2011) + url https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names + creation_date 2011 + confirmation_date 2017-11 + description { + The BGN/PCGN system for Udmurt is designed for use in romanizing names written in the + Udmurt Cyrillic alphabet. Udmurt (sometimes known as Votyak) is a member of the Permian + branch of the Finno-Ugric languages and is an official language alongside Russian in the + Russian Federation's republic of Udmurtiya; it has existed in written form since the late + 18th century, and first appeared in its present Cyrillic orthography in 1905. + } + + notes { + note "Е should be romanized ye word-initially, after a vowel, after Й, Ъ, Ь, and after the palatalizing consonants Д, З, Л, Н, С and Т. It should be romanized e elsewhere." + note "In order to retain reversibility, where two consonant characters appear together and the resulting romanization is equivalent to a Roman-script digraph occurring in the system (i.e. gh, zh, tl, sh or ts), a medial dot may be employed between the Roman-script consonants in order to distinguish these from the Roman-script digraphs." + note "The character ё is always romanized yo, independently of position." + note "An inventory of letter-diacritic combinations, with their Unicode encoding, in addition to the unmodified letters of the basic Roman script is:" + note "All apostrophes appearing in romanization are U+2019" + note "Ï (U+00CF) ï (U+00EF) Ö (U+00D6) ö (U+00F6)" + note "The Romanization columns show only lowercase forms but, when romanizing, uppercase and lowercase Roman letters as appropriate should be used." + } +} + +tests { + # every table row, upper and lower + "А" -> "A" + "а" -> "a" + "Б" -> "B" + "б" -> "b" + "В" -> "V" + "в" -> "v" + "Г" -> "G" + "г" -> "g" + "Д" -> "D" + "д" -> "d" + "Е" -> "Ye" + "е" -> "ye" + "Ё" -> "Yo" + "ё" -> "yo" + "Ж" -> "Zh" + "ж" -> "zh" + "Ӝ" -> "Dzh" + "ӝ" -> "dzh" + "З" -> "Z" + "з" -> "z" + "Ӟ" -> "J" + "ӟ" -> "j" + "И" -> "I" + "и" -> "i" + "Ӥ" -> "Ï" + "ӥ" -> "ï" + "Й" -> "Y" + "й" -> "y" + "К" -> "K" + "к" -> "k" + "Л" -> "L" + "л" -> "l" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "О" -> "O" + "о" -> "o" + "Ӧ" -> "Ö" + "ӧ" -> "ö" + "П" -> "P" + "п" -> "p" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Т" -> "T" + "т" -> "t" + "У" -> "U" + "у" -> "u" + "Ф" -> "F" + "ф" -> "f" + "Х" -> "Kh" + "х" -> "kh" + "Ц" -> "Ts" + "ц" -> "ts" + "Ч" -> "Ch" + "ч" -> "ch" + "Ӵ" -> "Tsh" + "ӵ" -> "tsh" + "Ш" -> "Sh" + "ш" -> "sh" + "Щ" -> "Shch" + "щ" -> "shch" + "Ъ" -> "”" + "ъ" -> "”" + "Ы" -> "Y" + "ы" -> "y" + "Ь" -> "’" + "ь" -> "’" + "Э" -> "E" + "э" -> "e" + "Ю" -> "Yu" + "ю" -> "yu" + "Я" -> "Ya" + "я" -> "ya" + # note 1: ye after vowels, й ъ ь, and д з л н с т; e elsewhere + "бе" -> "be" + "де" -> "dye" + "йе" -> "yye" + "ъе" -> "”ye" + "ӧе" -> "öye" + "ое" -> "oye" +} + +stage main { + + # RULES + # note 1: Е word-initially, after a vowel, after й ъ ь, and after д з л н с т + sub { + from boundary + "Е" + to "Ye" + } + sub { + from boundary + "е" + to "ye" + } + sub { + from "Е" + to "Ye" + before any("АаЕеЁёИиОоУуЫыЭэЮюЯяӦӧЙйЪъЬьДдЗзЛлНнСсТт") + } + sub { + from "е" + to "ye" + before any("АаЕеЁёИиОоУуЫыЭэЮюЯяӦӧЙйЪъЬьДдЗзЛлНнСсТт") + } + + # CHARACTERS + parallel { + sub "Ӝ" "Dzh" + sub "Ӵ" "Tsh" + sub "Ӟ" "J" + sub "Ӧ" "Ö" + sub "Ӥ" "Ï" + sub "Щ" "Shch" + sub "Ъ" "”" + sub "Ы" "Y" + sub "Ь" "’" + sub "Ю" "Yu" + sub "Я" "Ya" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "Ё" "Yo" + sub "Ж" "Zh" + sub "З" "Z" + sub "И" "I" + sub "Й" "Y" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "Kh" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Ш" "Sh" + sub "Э" "E" + + sub "ӝ" "dzh" + sub "ӵ" "tsh" + sub "ӟ" "j" + sub "ӧ" "ö" + sub "ӥ" "ï" + sub "щ" "shch" + sub "ъ" "”" + sub "ы" "y" + sub "ь" "’" + sub "ю" "yu" + sub "я" "ya" + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "ё" "yo" + sub "ж" "zh" + sub "з" "z" + sub "и" "i" + sub "й" "y" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "kh" + sub "ц" "ts" + sub "ч" "ch" + sub "ш" "sh" + sub "э" "e" + } + +} + +} diff --git a/public/maps/bsi-bel-Cyrl-Latn-1958.isc b/public/maps/bsi-bel-Cyrl-Latn-1958.isc new file mode 100644 index 00000000..86bd718e --- /dev/null +++ b/public/maps/bsi-bel-Cyrl-Latn-1958.isc @@ -0,0 +1,148 @@ +system "BSI:bel-Cyrl:Latn:1958" { + +metadata { + authority_id bsi + id 1958 + language iso-639-2:bel + source_script Cyrl + destination_script Latn + name "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Byelorussian (White R.) column (the British system)" + url https://www.bsigroup.com + creation_date 1958 + confirmation_date 2000-05 + description { BS 2979:1958, Table A, Byelorussian (White R.) column: the "British" system for (modern) Cyrillic. + Table A is a five-column family table (East Slavonic: Russian, Ukrainian, + Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian). + } + + notes { + note "NOTE 1 of Section 1: for extreme simplicity, when avoidance of ambiguity in back transliteration is not a paramount consideration, all accents, diacritics, etc., may be omitted in the English rendering; the document's own examples apply this (the document's own examples apply it). This map applies the table as printed, with the diacritics." + note "NOTE 2 of Section 1: Cyrillic characters for which the transliteration is given in parentheses, though no longer in official use, are sometimes found in the literature of the relevant language; this map renders them as given in the parentheses." + note "Rows 45 to 47 of Table A (the little yus, fita, izhitsa) are not rendered: their parenthesized cells are not legible beyond doubt in the scan and this map does not guess them. Table B (back transliteration) is out of scope; Table C is ISO/R9 and is cited against the existing iso corpus maps." + note "Row 38/40 choices: this map renders the hard sign with the right double quotation mark (U+201D) and the soft sign with the right single quotation mark (U+2019), the first option of each cell." + note "The Serbian and Macedonian column gives the latinica, the existing Latin alphabet of Serbo-Croat, to avoid the confusion of an English transliteration. The footnote to Table A: in latinica, dj and gj are still sometimes found as alternatives to d with caron, but the practice is disappearing." + } +} + +tests { + "Мінск" -> "Minsk" + "Ў" -> "W" + "ў" -> "w" + "Ё" -> "Ě" + "ё" -> "ě" + "Ы" -> "Ȳ" + "ы" -> "ȳ" + "Ъ" -> "”" + "Ь" -> "’" + "Ѣ" -> "Ě" + "ѣ" -> "ě" + "Ґ" -> "G" + "ґ" -> "g" + "а" -> "a" + "б" -> "b" + "в" -> "v" + "г" -> "h" + "д" -> "d" + "е" -> "e" + "ж" -> "zh" + "з" -> "z" + "і" -> "i" + "й" -> "ĭ" + "к" -> "k" + "л" -> "l" + "м" -> "m" + "н" -> "n" + "о" -> "o" + "п" -> "p" + "р" -> "r" + "с" -> "s" + "т" -> "t" + "у" -> "u" + "ф" -> "f" + "х" -> "kh" + "ц" -> "ts" + "ч" -> "ch" + "ш" -> "sh" + +} + +stage main { + + # CHARACTERS + parallel { + sub "Тс" "T-s" + sub "тс" "t-s" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "H" + sub "Ґ" "G" + sub "Д" "D" + sub "Е" "E" + sub "Ё" "Ě" + sub "Ж" "Zh" + sub "З" "Z" + sub "І" "I" + sub "Й" "Ĭ" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ў" "W" + sub "Ф" "F" + sub "Х" "Kh" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Ш" "Sh" + sub "Ъ" "”" + sub "Ы" "Ȳ" + sub "Ь" "’" + sub "Ѣ" "Ě" + sub "Ю" "Yu" + sub "Я" "Ya" + + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "h" + sub "ґ" "g" + sub "д" "d" + sub "е" "e" + sub "ё" "ě" + sub "ж" "zh" + sub "з" "z" + sub "і" "i" + sub "й" "ĭ" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ў" "w" + sub "ф" "f" + sub "х" "kh" + sub "ц" "ts" + sub "ч" "ch" + sub "ш" "sh" + sub "ъ" "”" + sub "ы" "ȳ" + sub "ь" "’" + sub "ѣ" "ě" + sub "ю" "yu" + sub "я" "ya" + } + +} + +} diff --git a/public/maps/bsi-bul-Cyrl-Latn-1958.isc b/public/maps/bsi-bul-Cyrl-Latn-1958.isc new file mode 100644 index 00000000..e2ea3fe8 --- /dev/null +++ b/public/maps/bsi-bul-Cyrl-Latn-1958.isc @@ -0,0 +1,137 @@ +system "BSI:bul-Cyrl:Latn:1958" { + +metadata { + authority_id bsi + id 1958 + language iso-639-2:bul + source_script Cyrl + destination_script Latn + name "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Bulgarian column (the British system)" + url https://www.bsigroup.com + creation_date 1958 + confirmation_date 2000-05 + description { BS 2979:1958, Table A, Bulgarian column: the "British" system for (modern) Cyrillic. + Table A is a five-column family table (East Slavonic: Russian, Ukrainian, + Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian). + } + + notes { + note "NOTE 1 of Section 1: for extreme simplicity, when avoidance of ambiguity in back transliteration is not a paramount consideration, all accents, diacritics, etc., may be omitted in the English rendering; the document's own examples apply this (the document's own examples apply it). This map applies the table as printed, with the diacritics." + note "NOTE 2 of Section 1: Cyrillic characters for which the transliteration is given in parentheses, though no longer in official use, are sometimes found in the literature of the relevant language; this map renders them as given in the parentheses." + note "Rows 45 to 47 of Table A (the little yus, fita, izhitsa) are not rendered: their parenthesized cells are not legible beyond doubt in the scan and this map does not guess them. Table B (back transliteration) is out of scope; Table C is ISO/R9 and is cited against the existing iso corpus maps." + note "Row 38/40 choices: this map renders the hard sign with the right double quotation mark (U+201D) and the soft sign with the right single quotation mark (U+2019), the first option of each cell. In the Bulgarian column the hard sign is a vowel and this map renders it with the breve (u-breve), per row 38." + } +} + +tests { + "София" -> "Sofiya" + "Съюз" -> "Sŭyuz" + "Български" -> "Bŭlgarski" + "Щ" -> "Sht" + "щ" -> "sht" + "Ъ" -> "Ŭ" + "ъ" -> "ŭ" + "Ѣ" -> "Ě" + "ѣ" -> "ě" + "а" -> "a" + "б" -> "b" + "в" -> "v" + "г" -> "g" + "д" -> "d" + "е" -> "e" + "ж" -> "zh" + "з" -> "z" + "и" -> "i" + "й" -> "ĭ" + "к" -> "k" + "л" -> "l" + "м" -> "m" + "н" -> "n" + "о" -> "o" + "п" -> "p" + "р" -> "r" + "с" -> "s" + "т" -> "t" + "у" -> "u" + "ф" -> "f" + "х" -> "kh" + "ц" -> "ts" + "ч" -> "ch" + "ш" -> "sh" + +} + +stage main { + + # CHARACTERS + parallel { + sub "Тс" "T-s" + sub "тс" "t-s" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "Ж" "Zh" + sub "З" "Z" + sub "И" "I" + sub "Й" "Ĭ" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "Kh" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Ш" "Sh" + sub "Щ" "Sht" + sub "Ъ" "Ŭ" + sub "Ь" "’" + sub "Ѣ" "Ě" + sub "Ю" "Yu" + sub "Я" "Ya" + + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "ж" "zh" + sub "з" "z" + sub "и" "i" + sub "й" "ĭ" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "kh" + sub "ц" "ts" + sub "ч" "ch" + sub "ш" "sh" + sub "щ" "sht" + sub "ъ" "ŭ" + sub "ь" "’" + sub "ѣ" "ě" + sub "ю" "yu" + sub "я" "ya" + } + +} + +} diff --git a/public/maps/bsi-chu-Cyrl-Latn-1958.isc b/public/maps/bsi-chu-Cyrl-Latn-1958.isc new file mode 100644 index 00000000..82c42b60 --- /dev/null +++ b/public/maps/bsi-chu-Cyrl-Latn-1958.isc @@ -0,0 +1,226 @@ +system "BSI:chu-Cyrl:Latn:1958" { + +metadata { + authority_id bsi + id 1958 + language iso-639-2:chu + source_script Cyrl + destination_script Latn + name "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table D, Transliteration of Church Slavonic Cyrillic" + url https://www.bsigroup.com + creation_date 1958 + confirmation_date 2000-05 + description { BS 2979:1958, Table D: transliteration of Church Slavonic Cyrillic. The table + covers the full Church Slavonic alphabet including the yuses, ksi, psi, fita + and izhitsa, with the letters' numerical values annotated. + } + + notes { + note "The digraph-letter pairs и and й are given as glyph variants in one row: и is romanized i with macron (long i) and the breve-marked variant й as i with breve (short i); likewise i and the diaeresis-marked variant (i-krataya glyph) are romanized i and i with diaeresis." + note "The Church Slavonic yus series: little yus e with ogonek, big yus o with ogonek, iotated little yus j plus e-ogonek, iotated big yus j plus o-ogonek; the iotated-e glyph je and the iotated-a digraph ja." + note "Omega is romanized o with macron. The digraph uk (o plus u, with the monograph-uk glyphs as variants) is romanized u with macron, the table also showing the alternative rendering as the two separate letters." + note "Fita is romanized f with dot above (distinguishing it from ef); izhitsa is romanized y with dot above." + note "Shcha is romanized s-caron plus t in this table. The hard sign is romanized u with breve (the table's footnote: it occurs only after consonants), and yery is romanized y." + note "The numerical-value column of the source annotates the letters used as numerals (a=1, v=2, g=3, d=4, e=5, dze=6, z=7, i=8, i=10, k=20, l=30, m=40, n=50, o=70, p=80, r=100, s=200, t=300, uk=400, f=500, kh=600, psi=700, omega=800, ts=900, ch=90, ksi=60, fita=9, izhitsa with the thousands sign); the footnote describes the titlo, the diaeresis marking thousands, and the thousands-sign constructions for 10000 and over. This map renders the letters, not the numeral values." + note "Transcribed visually from the scanned table page of the digitized BS 2979:1958 (BSI 05-2000 reprint); the fita and izhitsa cells were confirmed at 20x magnification." + } +} + +tests { + # every table row, upper and lower + "А" -> "A" + "а" -> "a" + "Б" -> "B" + "б" -> "b" + "В" -> "V" + "в" -> "v" + "Г" -> "G" + "г" -> "g" + "Д" -> "D" + "д" -> "d" + "Е" -> "E" + "е" -> "e" + "Ж" -> "Ž" + "ж" -> "ž" + "Ѕ" -> "Dz" + "ѕ" -> "dz" + "З" -> "Z" + "з" -> "z" + "И" -> "Ī" + "и" -> "ī" + "Й" -> "Ĭ" + "й" -> "ĭ" + "І" -> "I" + "і" -> "i" + "Ї" -> "Ï" + "ї" -> "ï" + "К" -> "K" + "к" -> "k" + "Л" -> "L" + "л" -> "l" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "О" -> "O" + "о" -> "o" + "П" -> "P" + "п" -> "p" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Т" -> "T" + "т" -> "t" + "ОУ" -> "Ū" + "оу" -> "ū" + "Ф" -> "F" + "ф" -> "f" + "Х" -> "H" + "х" -> "h" + "Ѡ" -> "Ō" + "ѡ" -> "ō" + "Щ" -> "Št" + "щ" -> "št" + "Ц" -> "C" + "ц" -> "c" + "Ч" -> "Č" + "ч" -> "č" + "Ш" -> "Š" + "ш" -> "š" + "Ъ" -> "Ŭ" + "ъ" -> "ŭ" + "Ы" -> "Y" + "ы" -> "y" + "Ь" -> "Ĭ" + "ь" -> "ĭ" + "Ѣ" -> "Ě" + "ѣ" -> "ě" + "Ю" -> "Ju" + "ю" -> "ju" + "ІА" -> "Ja" + "іа" -> "ja" + "Ѥ" -> "Je" + "ѥ" -> "je" + "Ѧ" -> "Ę" + "ѧ" -> "ę" + "Ѫ" -> "Ǫ" + "ѫ" -> "ǫ" + "Ѩ" -> "Ję" + "ѩ" -> "ję" + "Ѭ" -> "Jǫ" + "ѭ" -> "jǫ" + "Ѯ" -> "Ks" + "ѯ" -> "ks" + "Ѱ" -> "Ps" + "ѱ" -> "ps" + "Ѳ" -> "Ḟ" + "ѳ" -> "ḟ" + "Ѵ" -> "Ẏ" + "ѵ" -> "ẏ" +} + +stage main { + + # CHARACTERS + parallel { + sub "ІА" "Ja" + sub "ОУ" "Ū" + sub "Ѹ" "Ū" + sub "Ѣ" "Ě" + sub "Ѥ" "Je" + sub "Ѧ" "Ę" + sub "Ѫ" "Ǫ" + sub "Ѩ" "Ję" + sub "Ѭ" "Jǫ" + sub "Ѯ" "Ks" + sub "Ѱ" "Ps" + sub "Ѕ" "Dz" + sub "Ж" "Ž" + sub "И" "Ī" + sub "Й" "Ĭ" + sub "Ї" "Ï" + sub "Щ" "Št" + sub "Ч" "Č" + sub "Ш" "Š" + sub "Ы" "Y" + sub "Ъ" "Ŭ" + sub "Ь" "Ĭ" + sub "Ю" "Ju" + sub "Ѡ" "Ō" + sub "Ѳ" "Ḟ" + sub "Ѵ" "Ẏ" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "З" "Z" + sub "І" "I" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "H" + sub "Ц" "C" + + sub "іа" "ja" + sub "оу" "ū" + sub "ѹ" "ū" + sub "ѣ" "ě" + sub "ѥ" "je" + sub "ѧ" "ę" + sub "ѫ" "ǫ" + sub "ѩ" "ję" + sub "ѭ" "jǫ" + sub "ѯ" "ks" + sub "ѱ" "ps" + sub "ѕ" "dz" + sub "ж" "ž" + sub "и" "ī" + sub "й" "ĭ" + sub "ї" "ï" + sub "щ" "št" + sub "ч" "č" + sub "ш" "š" + sub "ы" "y" + sub "ъ" "ŭ" + sub "ь" "ĭ" + sub "ю" "ju" + sub "ѡ" "ō" + sub "ѳ" "ḟ" + sub "ѵ" "ẏ" + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "з" "z" + sub "і" "i" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "h" + sub "ц" "c" + } + +} + +} diff --git a/public/maps/bsi-ell-Grek-Latn-1958.isc b/public/maps/bsi-ell-Grek-Latn-1958.isc new file mode 100644 index 00000000..f62cf456 --- /dev/null +++ b/public/maps/bsi-ell-Grek-Latn-1958.isc @@ -0,0 +1,445 @@ +system "BSI:ell-Grek:Latn:1958" { + +metadata { + authority_id bsi + id 1958 + language iso-639-2:ell + source_script Grek + destination_script Latn + name "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table G, Transliteration of Greek characters" + url https://www.bsigroup.com + creation_date 1958 + confirmation_date 2000-05 + description { BS 2979:1958, Table G: a letter-for-letter system for Greek, aimed at + cataloguers and providing a one-to-one correspondence between Greek and + Roman characters in both directions. + } + + notes { + note "Special signs (a): the rough breathing sign is transliterated by the comma, or by an apostrophe over the preceding initial vowel or diphthong (e.g. 'E, 'Ou); over rho it is disregarded. This map renders the rough breathing as the apostrophe preceding its vowel, and deletes it over rho." + note "Special signs (b): the smooth breathing sign is not transliterated; its presence in Greek is implied where the rough breathing sign is considered to be part of the transliterated text. This map deletes the smooth breathing sign." + note "Special signs (c): a diaeresis in the original Greek text is always reproduced in the transliterated text; this map leaves diaeresis marks in place." + note "Special signs (d): the acute, grave and circumflex accent signs may, also, if desired, be rendered as in the Greek; this map leaves accent marks in place." + note "Special signs (e): iota subscript, even when adscripted (a subscript in capitalized Greek texts), is always rendered by positional i (small); this map renders the iota subscript sign as i following its vowel." + note "The numerical values of the ancient Greek characters run parallel with the Church Slavonic Cyrillic (Table D), distinguished up to 999 by a postliteral sign above the line and from 1000 onwards by a preliteral sign below the line; this map renders letters, not numeral values." + note "The English-to-Greek column notes that Ch, ch is rendered via eta (see H) and Kh, kh likewise; Ph, ph is rendered via phi (see F), which this table romanizes f." + note "Transcribed visually from the scanned table pages of the digitized BS 2979:1958 (BSI 05-2000 reprint); the source's own text layer for this table stores the Greek letters in a legacy 8-bit font and was not used." + } +} + +tests { + # every table row, upper and lower + "Α" -> "A" + "α" -> "a" + "Β" -> "B" + "β" -> "b" + "Γ" -> "G" + "γ" -> "g" + "Δ" -> "D" + "δ" -> "d" + "Ε" -> "E" + "ε" -> "e" + "Ζ" -> "Z" + "ζ" -> "z" + "Η" -> "Ē" + "η" -> "ē" + "Θ" -> "Th" + "θ" -> "th" + "Ι" -> "I" + "ι" -> "i" + "Κ" -> "K" + "κ" -> "k" + "Λ" -> "L" + "λ" -> "l" + "Μ" -> "M" + "μ" -> "m" + "Ν" -> "N" + "ν" -> "n" + "Ξ" -> "X" + "ξ" -> "x" + "Ο" -> "O" + "ο" -> "o" + "Π" -> "P" + "π" -> "p" + "Ρ" -> "R" + "ρ" -> "r" + "Σ" -> "S" + "σ" -> "s" + "ς" -> "s" + "Τ" -> "T" + "τ" -> "t" + "Υ" -> "U" + "υ" -> "u" + "Φ" -> "F" + "φ" -> "f" + "Χ" -> "Kh" + "χ" -> "kh" + "Ψ" -> "Ps" + "ψ" -> "ps" + "Ω" -> "Ō" + "ω" -> "ō" + # special signs: rough breathing precedes its vowel; disregarded over rho; + # smooth breathing not transliterated; iota subscript as positional i + "Ἑν" -> "’En" + "Ὁυ" -> "’Ou" + "ῥ" -> "r" + "ἀ" -> "a" + "ῳ" -> "ōi" +} + +stage main { + + # RULES + # special sign (a): rough breathing is disregarded over rho + sub { + from "ρ" + to "r" + after "̔" + } + sub { + from "Ρ" + to "R" + after "̔" + } + # special sign (a): rough breathing precedes its vowel + sub { + from "Α" + to "’Α" + after "̔" + } + sub { + from "α" + to "’α" + after "̔" + } + sub { + from "Ε" + to "’Ε" + after "̔" + } + sub { + from "ε" + to "’ε" + after "̔" + } + sub { + from "Η" + to "’Η" + after "̔" + } + sub { + from "η" + to "’η" + after "̔" + } + sub { + from "Ι" + to "’Ι" + after "̔" + } + sub { + from "ι" + to "’ι" + after "̔" + } + sub { + from "Ο" + to "’Ο" + after "̔" + } + sub { + from "ο" + to "’ο" + after "̔" + } + sub { + from "Υ" + to "’Υ" + after "̔" + } + sub { + from "υ" + to "’υ" + after "̔" + } + sub { + from "Ω" + to "’Ω" + after "̔" + } + sub { + from "ω" + to "’ω" + after "̔" + } + # the same special signs in their precomposed Greek-Extended forms + sub { + from "ῥ" + to "r" + } + sub { + from "ῤ" + to "r" + } + sub { + from "Ἁ" + to "’Α" + } + sub { + from "ἁ" + to "’α" + } + sub { + from "Ἑ" + to "’Ε" + } + sub { + from "ἑ" + to "’ε" + } + sub { + from "Ἡ" + to "’Η" + } + sub { + from "ἡ" + to "’η" + } + sub { + from "Ἱ" + to "’Ι" + } + sub { + from "ἱ" + to "’ι" + } + sub { + from "Ὁ" + to "’Ο" + } + sub { + from "ὁ" + to "’ο" + } + sub { + from "Ὑ" + to "’Υ" + } + sub { + from "ὑ" + to "’υ" + } + sub { + from "Ὡ" + to "’Ω" + } + sub { + from "ὡ" + to "’ω" + } + sub { + from "ᾼ" + to "Ai" + } + sub { + from "ᾳ" + to "ai" + } + sub { + from "ῌ" + to "Ēi" + } + sub { + from "ῃ" + to "ēi" + } + sub { + from "ῼ" + to "Ōi" + } + sub { + from "ῳ" + to "ōi" + } + sub { + from "Ἀ" + to "Α" + } + sub { + from "ἀ" + to "α" + } + sub { + from "Ἐ" + to "Ε" + } + sub { + from "ἐ" + to "ε" + } + sub { + from "Ἠ" + to "Η" + } + sub { + from "ἠ" + to "η" + } + sub { + from "Ἰ" + to "Ι" + } + sub { + from "ἰ" + to "ι" + } + sub { + from "Ὀ" + to "Ο" + } + sub { + from "ὀ" + to "ο" + } + sub { + from "Ὑ" + to "Υ" + } + sub { + from "ὐ" + to "υ" + } + sub { + from "Ὠ" + to "Ω" + } + sub { + from "ὠ" + to "ω" + } + sub { + from "Ἀ" + to "Α" + } + sub { + from "ἀ" + to "α" + } + sub { + from "Ἀ" + to "Α" + } + sub { + from "ἐ" + to "ε" + } + sub { + from "Ἠ" + to "Η" + } + sub { + from "ἠ" + to "η" + } + sub { + from "Ἰ" + to "Ι" + } + sub { + from "ἰ" + to "ι" + } + sub { + from "Ὀ" + to "Ο" + } + sub { + from "ὀ" + to "ο" + } + sub { + from "ὐ" + to "υ" + } + sub { + from "Ὠ" + to "Ω" + } + sub { + from "ὠ" + to "ω" + } + + # special sign (e): iota subscript is positional i + sub { + from "ͅ" + to "i" + } + # special sign (b): the smooth breathing sign is not transliterated + sub { + from "̓" + to "" + } + # remaining rough breathings (not on a vowel handled above) + sub { + from "̔" + to "’" + } + + # CHARACTERS + parallel { + sub "Θ" "Th" + sub "Χ" "Kh" + sub "Ψ" "Ps" + sub "Η" "Ē" + sub "Ω" "Ō" + sub "Α" "A" + sub "Β" "B" + sub "Γ" "G" + sub "Δ" "D" + sub "Ε" "E" + sub "Ζ" "Z" + sub "Ι" "I" + sub "Κ" "K" + sub "Λ" "L" + sub "Μ" "M" + sub "Ν" "N" + sub "Ξ" "X" + sub "Ο" "O" + sub "Π" "P" + sub "Ρ" "R" + sub "Σ" "S" + sub "Τ" "T" + sub "Υ" "U" + sub "Φ" "F" + + sub "θ" "th" + sub "χ" "kh" + sub "ψ" "ps" + sub "η" "ē" + sub "ω" "ō" + sub "α" "a" + sub "β" "b" + sub "γ" "g" + sub "δ" "d" + sub "ε" "e" + sub "ζ" "z" + sub "ι" "i" + sub "κ" "k" + sub "λ" "l" + sub "μ" "m" + sub "ν" "n" + sub "ξ" "x" + sub "ο" "o" + sub "π" "p" + sub "ρ" "r" + sub "σ" "s" + sub "ς" "s" + sub "τ" "t" + sub "υ" "u" + sub "φ" "f" + } + +} + +} diff --git a/public/maps/bsi-mkd-Cyrl-Latn-1958.isc b/public/maps/bsi-mkd-Cyrl-Latn-1958.isc new file mode 100644 index 00000000..6ba3f798 --- /dev/null +++ b/public/maps/bsi-mkd-Cyrl-Latn-1958.isc @@ -0,0 +1,140 @@ +system "BSI:mkd-Cyrl:Latn:1958" { + +metadata { + authority_id bsi + id 1958 + language iso-639-2:mkd + source_script Cyrl + destination_script Latn + name "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Serbian & Macedonian (Macedonian) column (the British system)" + url https://www.bsigroup.com + creation_date 1958 + confirmation_date 2000-05 + description { BS 2979:1958, Table A, Serbian & Macedonian (Macedonian) column: the "British" system for (modern) Cyrillic. + Table A is a five-column family table (East Slavonic: Russian, Ukrainian, + Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian). + The column is shared with Serbian; this map adds the Macedonian-specific + letters ѓ, ѕ and ќ to the shared rows. + } + + notes { + note "NOTE 1 of Section 1: for extreme simplicity, when avoidance of ambiguity in back transliteration is not a paramount consideration, all accents, diacritics, etc., may be omitted in the English rendering; the document's own examples apply this (the document's own examples apply it). This map applies the table as printed, with the diacritics." + note "NOTE 2 of Section 1: Cyrillic characters for which the transliteration is given in parentheses, though no longer in official use, are sometimes found in the literature of the relevant language; this map renders them as given in the parentheses." + note "Footnote to Table A: in latinica, dj and gj are still sometimes found as alternatives to d-with-caron (Ђ and Ѓ), but the practice is disappearing; this map renders both ѓ and ђ as d-with-caron." + note "Rows 45 to 47 of Table A (the little yus, fita, izhitsa) are not rendered: their parenthesized cells are not legible beyond doubt in the scan and this map does not guess them. Table B (back transliteration) is out of scope; Table C is ISO/R9 and is cited against the existing iso corpus maps." + note "Row 38/40 choices: this map renders the hard sign with the right double quotation mark (U+201D) and the soft sign with the right single quotation mark (U+2019), the first option of each cell." + note "The Serbian and Macedonian column gives the latinica, the existing Latin alphabet of Serbo-Croat, to avoid the confusion of an English transliteration. The footnote to Table A: in latinica, dj and gj are still sometimes found as alternatives to d with caron, but the practice is disappearing." + } +} + +tests { + "Македонски Јазик" -> "Makedonski Jazik" + "Ѓ" -> "Đ" + "ѓ" -> "đ" + "Ѕ" -> "Dz" + "ѕ" -> "dz" + "Ќ" -> "Ć" + "ќ" -> "ć" + "а" -> "a" + "б" -> "b" + "в" -> "v" + "г" -> "g" + "д" -> "d" + "ђ" -> "đ" + "е" -> "e" + "ж" -> "ž" + "з" -> "z" + "и" -> "i" + "ј" -> "j" + "к" -> "k" + "л" -> "l" + "љ" -> "lj" + "м" -> "m" + "н" -> "n" + "њ" -> "nj" + "о" -> "o" + "п" -> "p" + "р" -> "r" + "с" -> "s" + "т" -> "t" + "ћ" -> "ć" + "ц" -> "c" + "ч" -> "č" + "џ" -> "dž" + "ш" -> "š" + "х" -> "h" + +} + +stage main { + + # CHARACTERS + parallel { + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Ђ" "Đ" + sub "Е" "E" + sub "Ж" "Ž" + sub "З" "Z" + sub "И" "I" + sub "Ј" "J" + sub "К" "K" + sub "Л" "L" + sub "Љ" "Lj" + sub "М" "M" + sub "Н" "N" + sub "Њ" "Nj" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "Ћ" "Ć" + sub "Ц" "C" + sub "Ч" "Č" + sub "Џ" "Dž" + sub "Ш" "Š" + sub "Х" "H" + sub "Ѓ" "Đ" + sub "Ѕ" "Dz" + sub "Ќ" "Ć" + + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "ђ" "đ" + sub "е" "e" + sub "ж" "ž" + sub "з" "z" + sub "и" "i" + sub "ј" "j" + sub "к" "k" + sub "л" "l" + sub "љ" "lj" + sub "м" "m" + sub "н" "n" + sub "њ" "nj" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "ћ" "ć" + sub "ц" "c" + sub "ч" "č" + sub "џ" "dž" + sub "ш" "š" + sub "х" "h" + sub "ѓ" "đ" + sub "ѕ" "dz" + sub "ќ" "ć" + } + +} + +} diff --git a/public/maps/bsi-ron-Cyrl-Latn-1958.isc b/public/maps/bsi-ron-Cyrl-Latn-1958.isc new file mode 100644 index 00000000..d0355ae7 --- /dev/null +++ b/public/maps/bsi-ron-Cyrl-Latn-1958.isc @@ -0,0 +1,244 @@ +system "BSI:ron-Cyrl:Latn:1958" { + +metadata { + authority_id bsi + id 1958 + language iso-639-2:ron + source_script Cyrl + destination_script Latn + name "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table E, Transliteration of Rumanian Cyrillic (Alfabetul Cirilic)" + url https://www.bsigroup.com + creation_date 1958 + confirmation_date 2000-05 + description { BS 2979:1958, Table E: transliteration of Rumanian Cyrillic (Alfabetul Cirilic), + the Cyrillic alphabet used for Romanian until 1860. For transliteration of + Moldavian in the modern orthography, the table's companion note directs the + reader to Table C (ISO/R9) in Section 2. + } + + notes { + note "The table's footnote marks variant renderings encountered in latinised Rumanian that make for ambiguity in retransliteration and should therefore be avoided in documents for export: No. 6 ie (after vowels); 8 z; 23 ch; 24 o; 29 a-breve alternatives; 30 i and a-circumflex alternatives; 32 e; 36 e and ia; 37 u-breve; 40 t; 41 i. This map applies the primary renderings as printed." + note "K is romanized c, and ch before e and i; this map implements the context rule for the letters e, i and i-diaeresis following k, and renders c elsewhere. Dzhe (row 43, shaped like ts with a descender) is romanized g, the table conditioning the rendering on position before e and i." + note "Yer is romanized a with breve; yery as a-circumflex plus i; yat as ea; the little yus as e with circumflex and the big yus as a with circumflex. The soft sign is u with breve, omitted when final; this map renders it u with breve in all positions and does not implement the final-omission rule, which requires word-boundary handling the note leaves to the user." + note "The semiyus (row 42) is printed with the rendering i-circumflex and the parenthetical n; this map renders the letter as the two-letter reading in." + note "The digraph uk (o plus u, with monograph-uk variants) is romanized u with breve, the table also showing the alternative rendering as the two separate letters." + note "Fita is romanized th and izhitsa y, the source's own footnote listing t and i among the ambiguous variants to avoid." + note "Transcribed visually from the scanned table page of the digitized BS 2979:1958 (BSI 05-2000 reprint); row 43's dzhe and the yus readings were confirmed at 14x-20x magnification." + } +} + +tests { + # every table row, upper and lower + "А" -> "A" + "а" -> "a" + "Б" -> "B" + "б" -> "b" + "В" -> "V" + "в" -> "v" + "Г" -> "G" + "г" -> "g" + "Д" -> "D" + "д" -> "d" + "Є" -> "E" + "є" -> "e" + "Ж" -> "J" + "ж" -> "j" + "Ѕ" -> "Dz" + "ѕ" -> "dz" + "З" -> "Z" + "з" -> "z" + "И" -> "I" + "и" -> "i" + "Й" -> "Ĭ" + "й" -> "ĭ" + "І" -> "I" + "і" -> "i" + "Ї" -> "Ï" + "ї" -> "ï" + # row 12: k is c, ch before e & i + "К" -> "C" + "к" -> "c" + "ке" -> "che" + "Ки" -> "Chi" + "ка" -> "ca" + "Л" -> "L" + "л" -> "l" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "О" -> "O" + "о" -> "o" + "П" -> "P" + "п" -> "p" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Т" -> "T" + "т" -> "t" + "ОУ" -> "Ŭ" + "оу" -> "ŭ" + "Ф" -> "F" + "ф" -> "f" + "Х" -> "H" + "х" -> "h" + "Ѡ" -> "Ō" + "ѡ" -> "ō" + "Ц" -> "Ţ" + "ц" -> "ţ" + "Ч" -> "C" + "ч" -> "c" + "Ш" -> "Ş" + "ш" -> "ş" + "Щ" -> "Şt" + "щ" -> "şt" + "Ъ" -> "Ă" + "ъ" -> "ă" + "Ы" -> "Âi" + "ы" -> "âi" + "Ь" -> "Ŭ" + "ь" -> "ŭ" + "Ѣ" -> "Ea" + "ѣ" -> "ea" + "Ю" -> "Iu" + "ю" -> "iu" + "ІА" -> "Ia" + "іа" -> "ia" + "Ѥ" -> "Ie" + "ѥ" -> "ie" + "Ѧ" -> "Ê" + "ѧ" -> "ê" + "Ѫ" -> "Â" + "ѫ" -> "â" + "Ѯ" -> "X" + "ѯ" -> "x" + "Ѱ" -> "Ps" + "ѱ" -> "ps" + "Ѳ" -> "Th" + "ѳ" -> "th" + "Ѵ" -> "Y" + "ѵ" -> "y" + "Ꙏ" -> "În" + "ꙏ" -> "în" + "Џ" -> "G" + "џ" -> "g" +} + +stage main { + + # RULES + # row 12: k is ch before e & i, c elsewhere + sub { + from "К" + to "Ch" + after any("ЕеИиІіЇї") + } + sub { + from "к" + to "ch" + after any("ЕеИиІіЇї") + } + + # CHARACTERS + parallel { + sub "ІА" "Ia" + sub "ОУ" "Ŭ" + sub "Ѣ" "Ea" + sub "Ѥ" "Ie" + sub "Ѧ" "Ê" + sub "Ѫ" "Â" + sub "Ѯ" "X" + sub "Ѱ" "Ps" + sub "Ѳ" "Th" + sub "Ѕ" "Dz" + sub "Щ" "Şt" + sub "Ы" "Âi" + sub "Ю" "Iu" + sub "Ѡ" "Ō" + sub "Ц" "Ţ" + sub "Ш" "Ş" + sub "Ъ" "Ă" + sub "Ь" "Ŭ" + sub "Ж" "J" + sub "И" "I" + sub "Й" "Ĭ" + sub "Ї" "Ï" + sub "Є" "E" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "З" "Z" + sub "І" "I" + sub "К" "C" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "H" + sub "Ѵ" "Y" + sub "Ч" "C" + sub "Ꙏ" "În" + sub "Џ" "G" + + sub "іа" "ia" + sub "оу" "ŭ" + sub "ѣ" "ea" + sub "ѥ" "ie" + sub "ѧ" "ê" + sub "ѫ" "â" + sub "ѯ" "x" + sub "ѱ" "ps" + sub "ѳ" "th" + sub "ѕ" "dz" + sub "щ" "şt" + sub "ы" "âi" + sub "ю" "iu" + sub "ѡ" "ō" + sub "ц" "ţ" + sub "ш" "ş" + sub "ъ" "ă" + sub "ь" "ŭ" + sub "ж" "j" + sub "и" "i" + sub "й" "ĭ" + sub "ї" "ï" + sub "є" "e" + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "з" "z" + sub "і" "i" + sub "к" "c" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "h" + sub "ѵ" "y" + sub "ч" "c" + sub "ꙏ" "în" + sub "џ" "g" + } + +} + +} diff --git a/public/maps/bsi-rus-Cyrl-Latn-1958.isc b/public/maps/bsi-rus-Cyrl-Latn-1958.isc new file mode 100644 index 00000000..eec00219 --- /dev/null +++ b/public/maps/bsi-rus-Cyrl-Latn-1958.isc @@ -0,0 +1,199 @@ +system "BSI:rus-Cyrl:Latn:1958" { + +metadata { + authority_id bsi + id 1958 + language iso-639-2:rus + source_script Cyrl + destination_script Latn + name "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Russian column (the British system)" + url https://www.bsigroup.com + creation_date 1958 + confirmation_date 2000-05 + description { BS 2979:1958, Table A, Russian column: the "British" system for (modern) Cyrillic. + Table A is a five-column family table (East Slavonic: Russian, Ukrainian, + Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian); this map is the + Russian column. The Serbian and Macedonian column gives the latinica, the existing + Latin alphabet of Serbo-Croat. British Standard confirmed December 1998; the BSI + 05-2000 reprint is the digitized edition. + } + + notes { + note "NOTE 1. For extreme simplicity, when avoidance of ambiguity in back transliteration is not a paramount consideration, all accents, diacritics, etc., may be omitted in the English rendering; the document's own examples apply this (e.g. the example rendering of Khozyaistvo shows й without the breve). This map applies the table as printed, with the diacritics." + note "NOTE 2. Cyrillic characters for which the transliteration is given in parentheses (і, ѣ), though no longer in official use, are sometimes found in the literature, e.g. in emigre or the older literature. This map renders them as given in the parentheses." + note "NOTE 4. For transliteration of Moldavian, see Table C in Section 2 (ISO/R9)." + note "Rows 45 (the little yus), 46 (fita) and 47 (izhitsa) carry parenthesized obsolete romanizations whose exact diacritics the scan does not resolve unambiguously; this map does not render those three characters rather than guess them." + note "Row 38: the table gives the choice of right double quotation mark or straight double quotation mark for ъ; this map renders the right double quotation mark (U+201D). Row 40 likewise offers two apostrophe forms for ь; this map renders the right single quotation mark (U+2019)." + note "Row 28+27: the character sequence тс is romanized t-s with a hyphen, distinguishing it from ц, romanized ts. Footnote to Table A: final ъ, now obsolete in Russian, is disregarded when encountered (this map deletes it, per the row 38 rendering choice above)." + note "Other columns of Table A (Ukrainian, Byelorussian, Bulgarian, Serbian and Macedonian) are separate maps." + } +} + +tests { + # document examples (Russian items, British column) + "Бюллетень" -> "Byulleten’" + "Известия" -> "Izvestiya" + "Академии Наук" -> "Akademii Nauk" + "Ленинград" -> "Leningrad" + # the document's example prints Promyshlennost' (NOTE 1 permits dropping diacritics); + # the table specifies ȳ for ы and this map follows the table + "Техника Промышленность и Торговля" -> "Tekhnika Promȳshlennost’ i Torgovlya" + "Москва" -> "Moskva" + # table rows, upper and lower + "А" -> "A" + "а" -> "a" + "Б" -> "B" + "б" -> "b" + "В" -> "V" + "в" -> "v" + "Г" -> "G" + "г" -> "g" + "Д" -> "D" + "д" -> "d" + "Е" -> "E" + "е" -> "e" + "Ё" -> "Ě" + "ё" -> "ě" + "Ж" -> "Zh" + "ж" -> "zh" + "З" -> "Z" + "з" -> "z" + "И" -> "I" + "и" -> "i" + "Й" -> "Ĭ" + "й" -> "ĭ" + "К" -> "K" + "к" -> "k" + "Л" -> "L" + "л" -> "l" + "М" -> "M" + "м" -> "m" + "Н" -> "N" + "н" -> "n" + "О" -> "O" + "о" -> "o" + "П" -> "P" + "п" -> "p" + "Р" -> "R" + "р" -> "r" + "С" -> "S" + "с" -> "s" + "Т" -> "T" + "т" -> "t" + "Тс" -> "T-s" + "тс" -> "t-s" + "У" -> "U" + "у" -> "u" + "Ф" -> "F" + "ф" -> "f" + "Х" -> "Kh" + "х" -> "kh" + "Ц" -> "Ts" + "ц" -> "ts" + "Ч" -> "Ch" + "ч" -> "ch" + "Ш" -> "Sh" + "ш" -> "sh" + "Щ" -> "Shch" + "щ" -> "shch" + "Ъ" -> "”" + "ъ" -> "”" + "Ы" -> "Ȳ" + "ы" -> "ȳ" + "Ь" -> "’" + "ь" -> "’" + "Э" -> "É" + "э" -> "é" + "Ю" -> "Yu" + "ю" -> "yu" + "Я" -> "Ya" + "я" -> "ya" + "І" -> "I" + "і" -> "i" + "Ѣ" -> "Ě" + "ѣ" -> "ě" +} + +stage main { + + # CHARACTERS + parallel { + sub "Тс" "T-s" + sub "тс" "t-s" + sub "Щ" "Shch" + sub "Ё" "Ě" + sub "Ж" "Zh" + sub "Й" "Ĭ" + sub "Х" "Kh" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Ш" "Sh" + sub "Ы" "Ȳ" + sub "Э" "É" + sub "Ю" "Yu" + sub "Я" "Ya" + sub "Ѣ" "Ě" + sub "Ъ" "”" + sub "Ь" "’" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Е" "E" + sub "З" "Z" + sub "И" "I" + sub "І" "I" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + + sub "щ" "shch" + sub "тс" "t-s" + sub "ё" "ě" + sub "ж" "zh" + sub "й" "ĭ" + sub "х" "kh" + sub "ц" "ts" + sub "ч" "ch" + sub "ш" "sh" + sub "ы" "ȳ" + sub "э" "é" + sub "ю" "yu" + sub "я" "ya" + sub "ѣ" "ě" + sub "ъ" "”" + sub "ь" "’" + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "е" "e" + sub "з" "z" + sub "и" "i" + sub "і" "i" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + } + +} + +} diff --git a/public/maps/bsi-srp-Cyrl-Latn-1958.isc b/public/maps/bsi-srp-Cyrl-Latn-1958.isc new file mode 100644 index 00000000..bb82d86a --- /dev/null +++ b/public/maps/bsi-srp-Cyrl-Latn-1958.isc @@ -0,0 +1,134 @@ +system "BSI:srp-Cyrl:Latn:1958" { + +metadata { + authority_id bsi + id 1958 + language iso-639-2:srp + source_script Cyrl + destination_script Latn + name "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Serbian column (the British system)" + url https://www.bsigroup.com + creation_date 1958 + confirmation_date 2000-05 + description { BS 2979:1958, Table A, Serbian column: the "British" system for (modern) Cyrillic. + Table A is a five-column family table (East Slavonic: Russian, Ukrainian, + Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian). + This map is the Serbian rows of the column; the Macedonian-specific letters + (ѓ, ѕ, ќ) are a separate map. + } + + notes { + note "NOTE 1 of Section 1: for extreme simplicity, when avoidance of ambiguity in back transliteration is not a paramount consideration, all accents, diacritics, etc., may be omitted in the English rendering; the document's own examples apply this (the document's own examples apply it). This map applies the table as printed, with the diacritics." + note "NOTE 2 of Section 1: Cyrillic characters for which the transliteration is given in parentheses, though no longer in official use, are sometimes found in the literature of the relevant language; this map renders them as given in the parentheses." + note "Rows 45 to 47 of Table A (the little yus, fita, izhitsa) are not rendered: their parenthesized cells are not legible beyond doubt in the scan and this map does not guess them. Table B (back transliteration) is out of scope; Table C is ISO/R9 and is cited against the existing iso corpus maps." + note "Row 38/40 choices: this map renders the hard sign with the right double quotation mark (U+201D) and the soft sign with the right single quotation mark (U+2019), the first option of each cell. The Serbian alphabet has no hard or soft sign." + note "The Serbian and Macedonian column gives the latinica, the existing Latin alphabet of Serbo-Croat, to avoid the confusion of an English transliteration. The footnote to Table A: in latinica, dj and gj are still sometimes found as alternatives to d with caron, but the practice is disappearing." + } +} + +tests { + "Заштита биља" -> "Zaštita bilja" + "Скопље" -> "Skoplje" + "Српски Архив" -> "Srpski Arhiv" + "Ђ" -> "Đ" + "ђ" -> "đ" + "Ћ" -> "Ć" + "ћ" -> "ć" + "Џ" -> "Dž" + "џ" -> "dž" + "Љ" -> "Lj" + "љ" -> "lj" + "Њ" -> "Nj" + "њ" -> "nj" + "а" -> "a" + "б" -> "b" + "в" -> "v" + "г" -> "g" + "д" -> "d" + "е" -> "e" + "ж" -> "ž" + "з" -> "z" + "и" -> "i" + "ј" -> "j" + "к" -> "k" + "л" -> "l" + "м" -> "m" + "н" -> "n" + "о" -> "o" + "п" -> "p" + "р" -> "r" + "с" -> "s" + "т" -> "t" + "ц" -> "c" + "ч" -> "č" + "ш" -> "š" + "х" -> "h" + +} + +stage main { + + # CHARACTERS + parallel { + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "G" + sub "Д" "D" + sub "Ђ" "Đ" + sub "Е" "E" + sub "Ж" "Ž" + sub "З" "Z" + sub "И" "I" + sub "Ј" "J" + sub "К" "K" + sub "Л" "L" + sub "Љ" "Lj" + sub "М" "M" + sub "Н" "N" + sub "Њ" "Nj" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "Ћ" "Ć" + sub "Ц" "C" + sub "Ч" "Č" + sub "Џ" "Dž" + sub "Ш" "Š" + sub "Х" "H" + + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "g" + sub "д" "d" + sub "ђ" "đ" + sub "е" "e" + sub "ж" "ž" + sub "з" "z" + sub "и" "i" + sub "ј" "j" + sub "к" "k" + sub "л" "l" + sub "љ" "lj" + sub "м" "m" + sub "н" "n" + sub "њ" "nj" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "ћ" "ć" + sub "ц" "c" + sub "ч" "č" + sub "џ" "dž" + sub "ш" "š" + sub "х" "h" + } + +} + +} diff --git a/public/maps/bsi-ukr-Cyrl-Latn-1958.isc b/public/maps/bsi-ukr-Cyrl-Latn-1958.isc new file mode 100644 index 00000000..04e7dd9e --- /dev/null +++ b/public/maps/bsi-ukr-Cyrl-Latn-1958.isc @@ -0,0 +1,129 @@ +system "BSI:ukr-Cyrl:Latn:1958" { + +metadata { + authority_id bsi + id 1958 + language iso-639-2:ukr + source_script Cyrl + destination_script Latn + name "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Ukrainian column (the British system)" + url https://www.bsigroup.com + creation_date 1958 + confirmation_date 2000-05 + description { BS 2979:1958, Table A, Ukrainian column: the "British" system for (modern) Cyrillic. + Table A is a five-column family table (East Slavonic: Russian, Ukrainian, + Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian). + } + + notes { + note "NOTE 1 of Section 1: for extreme simplicity, when avoidance of ambiguity in back transliteration is not a paramount consideration, all accents, diacritics, etc., may be omitted in the English rendering; the document's own examples apply this (the document's own example Kyyiv applies it to the table's Kȳyiv). This map applies the table as printed, with the diacritics." + note "NOTE 2 of Section 1: Cyrillic characters for which the transliteration is given in parentheses, though no longer in official use, are sometimes found in the literature of the relevant language; this map renders them as given in the parentheses." + note "Rows 45 to 47 of Table A (the little yus, fita, izhitsa) are not rendered: their parenthesized cells are not legible beyond doubt in the scan and this map does not guess them. Table B (back transliteration) is out of scope; Table C is ISO/R9 and is cited against the existing iso corpus maps." + note "Row 38/40 choices: this map renders the hard sign with the right double quotation mark (U+201D) and the soft sign with the right single quotation mark (U+2019), the first option of each cell." + note "The Serbian and Macedonian column gives the latinica, the existing Latin alphabet of Serbo-Croat, to avoid the confusion of an English transliteration. The footnote to Table A: in latinica, dj and gj are still sometimes found as alternatives to d with caron, but the practice is disappearing." + } +} + +tests { + "Української" -> "Ukrayins’koyi" + "Харкова" -> "Kharkova" + "Київ" -> "Kȳyiv" + "Вісник" -> "Visnȳk" + "Ґ" -> "G" + "ґ" -> "g" + "Є" -> "Ye" + "є" -> "ye" + "Ї" -> "Yi" + "ї" -> "yi" + "Ъ" -> "”" + "Ь" -> "’" + "Ѣ" -> "Ě" + "ѣ" -> "ě" + "Тс" -> "T-s" + "тс" -> "t-s" + "ѣ" -> "ě" + +} + +stage main { + + # CHARACTERS + parallel { + sub "Тс" "T-s" + sub "тс" "t-s" + sub "А" "A" + sub "Б" "B" + sub "В" "V" + sub "Г" "H" + sub "Ґ" "G" + sub "Д" "D" + sub "Е" "E" + sub "Є" "Ye" + sub "Ж" "Zh" + sub "З" "Z" + sub "И" "Ȳ" + sub "І" "I" + sub "Ї" "Yi" + sub "Й" "Ĭ" + sub "К" "K" + sub "Л" "L" + sub "М" "M" + sub "Н" "N" + sub "О" "O" + sub "П" "P" + sub "Р" "R" + sub "С" "S" + sub "Т" "T" + sub "У" "U" + sub "Ф" "F" + sub "Х" "Kh" + sub "Ц" "Ts" + sub "Ч" "Ch" + sub "Ш" "Sh" + sub "Щ" "Shch" + sub "Ъ" "”" + sub "Ь" "’" + sub "Ѣ" "Ě" + sub "Ю" "Yu" + sub "Я" "Ya" + + sub "а" "a" + sub "б" "b" + sub "в" "v" + sub "г" "h" + sub "ґ" "g" + sub "д" "d" + sub "е" "e" + sub "є" "ye" + sub "ж" "zh" + sub "з" "z" + sub "и" "ȳ" + sub "і" "i" + sub "ї" "yi" + sub "й" "ĭ" + sub "к" "k" + sub "л" "l" + sub "м" "m" + sub "н" "n" + sub "о" "o" + sub "п" "p" + sub "р" "r" + sub "с" "s" + sub "т" "t" + sub "у" "u" + sub "ф" "f" + sub "х" "kh" + sub "ц" "ts" + sub "ч" "ch" + sub "ш" "sh" + sub "щ" "shch" + sub "ъ" "”" + sub "ь" "’" + sub "ѣ" "ě" + sub "ю" "yu" + sub "я" "ya" + } + +} + +} diff --git a/public/maps/by-bel-Cyrl-Latn-1998.isc b/public/maps/by-bel-Cyrl-Latn-1998.isc index 11d053b0..0d64ff82 100644 --- a/public/maps/by-bel-Cyrl-Latn-1998.isc +++ b/public/maps/by-bel-Cyrl-Latn-1998.isc @@ -69,6 +69,7 @@ tests { dependency "gost-rus-Cyrl-Latn-16876-71-1983" as cyrllatn dependency "var-Cyrl" +dependency "var-kor" stage main { # RULES diff --git a/public/maps/din-ara-Arab-Latn-31635-2011.isc b/public/maps/din-ara-Arab-Latn-31635-2011.isc new file mode 100644 index 00000000..070d22b9 --- /dev/null +++ b/public/maps/din-ara-Arab-Latn-31635-2011.isc @@ -0,0 +1,402 @@ +system "DIN:ara-Arab:Latn:31635-2011" { + +metadata { + authority_id din + id 31635-2011 + language iso-639-2:ara + source_script Arab + destination_script Latn + name "DIN 31635:2011-07 Transliteration des arabischen Alphabets" + url https://www.din.de + creation_date 2011 + confirmation_date 2011-07 + description { DIN 31635:2011-07, section 6: transliteration of the Arabic alphabet, applicable + to classical and modern standard Arabic. Based on the 1935 recommendation of the + International Orientalists' Congress and nearly identical to ISO 233:1984, with + additional provisions in the notes for transliteration work. The norm's Persian, + Kurdish and Urdu sections are separate maps; its Ottoman-Turkish section gives + references only. + } + + notes { + note "Vowel system (6.1.1): short vowels a, i, u; long vowels a-macron, i-macron, u-macron; diphthongs au, ai." + note "The Arabic article (6.1.2): the article forms are transliterated only with the short vowel a; the assimilation of the article consonant l to the sun letters is expressed (al-, ad-, an-, ar-, as-, at-, az- and the diacritic-modified ad-, adh-, at-, ath-, as-, ash-, az-); the article is always joined to the following word by a hyphen. This map renders the word-initial article with the hyphen and the sun-letter assimilation; the elision of the article's a after a vowel-final preceding word (rule d) and the loss of length in a preceding long vowel (rule e) require the vocalization of the preceding word and are not implemented; the exception of the word Allah is lexical and not implemented." + note "Individual remarks (6.1.3): (a) sukun is never transliterated; (b) tashdid is expressed by doubling the consonant under the shadda, this map implements the doubled renderings for every consonant letter, while the shadda combinations with waw (-uw, -auw-) and ya (-iy, -aiy-, word-finally -i after i) are vocalization-dependent and not implemented; (c) the rendering of alif is omitted word-initially; (d) the rendering of hamza is omitted word-initially; (e) the hamza carriers alif, waw and ya are not transliterated as such - the hamza renders as the right half-ring and the carrier letter contributes nothing, so hamza-plus-short-vowel-mark renders the mark's vowel; (f) alif with madda renders as a-macron, word-internally as right-half-ring plus a-macron; (g) alif maqsura renders as a-macron; (h) hamzat al-wasl elision behavior requires the preceding context's vocalization and is not implemented; (i) the pausal form is transliterated: nunation and short final vowels fall, with the exception of the accusative ending -an of indeterminate nouns and adjectives - this map renders fathatan as an and the other tanwin forms as empty, per the remark's default; (j) the completion of case endings of verbs, pronouns, suffixes and prepositions is grammatical and not implemented; (k) the hyphenation rules for particles are syntactic and not implemented; (l) ta marbuta after the long vowel a-macron renders h, otherwise it is not expressed (the construct-state -t is morphological and not implemented)." + note "Waw and ya (rows 27 and 28) render as consonant w / y by default; over vocalized input the long-vowel renderings u-macron / i-macron apply via the vowel-mark combinations. Unvocalized text is an underspecified skeleton: the waw/ya long-vowel readings, the article elision and the pausal forms are resolved by a vocalization model, after which this map applies (composition, not duplication)." + note "Transliteration is not aimed at being reversible (section 4); for alphabetical ordering the diacritics and apostrophes are not considered (section 5)." + } +} + +tests { + # every table row + "ء" -> "" # word-initial hamza is not rendered (6.1.3 d) + "ا" -> "" # word-initial alif is not rendered (6.1.3 c) + "بَاب" -> "bāb" + "ب" -> "b" + "ت" -> "t" + "ث" -> "ṯ" + "ج" -> "ǧ" + "ح" -> "ḥ" + "خ" -> "ḫ" + "د" -> "d" + "ذ" -> "ḏ" + "ر" -> "r" + "ز" -> "z" + "س" -> "s" + "ش" -> "š" + "ص" -> "ṣ" + "ض" -> "ḍ" + "ط" -> "ṭ" + "ظ" -> "ẓ" + "ع" -> "ʿ" + "غ" -> "ġ" + "ف" -> "f" + "ق" -> "q" + "ک" -> "k" + "ك" -> "k" + "ل" -> "l" + "م" -> "m" + "ن" -> "n" + "ه" -> "h" + "ھ" -> "h" + "و" -> "w" + "ي" -> "y" + "ى" -> "ā" + "آ" -> "ā" + "رَآ" -> "raʾā" + # vowel signs + "بَ" -> "ba" + "بِ" -> "bi" + "بُ" -> "bu" + "بً" -> "ban" + "وُ" -> "ū" + "يِ" -> "ī" + # remarks: anlaut alif and hamza omitted; madda; carriers; sukun; taa marbuta + "اِبْن" -> "ibn" + "أَسَد" -> "asad" + "آدَم" -> "ādam" + "رَأَى" -> "raʾā" + "سَأَلَ" -> "saʾala" + "شَمْس" -> "šams" + "مَسْجِد" -> "masǧid" + "حَائِط" -> "ḥāʾiṭ" + "قَالَ" -> "qāla" + "كِتَاب" -> "kitāb" + "كُتُب" -> "kutub" + "صَلَاة" -> "ṣalāh" + "فِرْقَة" -> "firqa" + # article with sun letters and moon letters + "الشَّمْس" -> "aš-šams" + "الْكِتَاب" -> "al-kitāb" + "الْقَمَر" -> "al-qamar" + "التِّلْمِيذ" -> "at-tilmīḏ" + "الرَّجُل" -> "ar-raǧul" +} + +stage main { + + # RULES + # 6.1.3 (a): sukun is never transliterated; removing it first keeps the + # article rules adjacent + sub { + from "ْ" + to "" + } + # mark-order normalization: the shadda belongs to its consonant even when + # a short-vowel sign is typed between them + sub { + from "َّ" + to "َّ" + } + sub { + from "ِّ" + to "ِّ" + } + sub { + from "ُّ" + to "ُّ" + } + + # long vowels: the short-vowel sign plus the lengthening letter merge + sub { + from "َا" + to "ā" + } + sub { + from "َى" + to "ā" + } + sub { + from "ِي" + to "ī" + } + sub { + from "ُو" + to "ū" + } + # diphthongs + sub { + from "َو" + to "aw" + } + sub { + from "َي" + to "ay" + } + + # 6.1.2: the word-initial article with sun-letter assimilation, hyphenated; + # the shadda form doubles the assimilated consonant + sub { + from boundary + "الثّ" + to "aṯ-ṯ" + } + sub { + from boundary + "الذّ" + to "aḏ-ḏ" + } + sub { + from boundary + "الصّ" + to "aṣ-ṣ" + } + sub { + from boundary + "الضّ" + to "aḍ-ḍ" + } + sub { + from boundary + "الطّ" + to "aṭ-ṭ" + } + sub { + from boundary + "الظّ" + to "aẓ-ẓ" + } + sub { + from boundary + "الشّ" + to "aš-š" + } + sub { + from boundary + "السّ" + to "as-s" + } + sub { + from boundary + "الزّ" + to "az-z" + } + sub { + from boundary + "الرّ" + to "ar-r" + } + sub { + from boundary + "الدّ" + to "ad-d" + } + sub { + from boundary + "التّ" + to "at-t" + } + sub { + from boundary + "النّ" + to "an-n" + } + sub { + from boundary + "اللّ" + to "al-l" + } + sub { + from boundary + "ال" + "ث" + to "aṯ-" + } + sub { + from boundary + "ال" + "ذ" + to "aḏ-" + } + sub { + from boundary + "ال" + "ص" + to "aṣ-" + } + sub { + from boundary + "ال" + "ض" + to "aḍ-" + } + sub { + from boundary + "ال" + "ط" + to "aṭ-" + } + sub { + from boundary + "ال" + "ظ" + to "aẓ-" + } + sub { + from boundary + "ال" + "ش" + to "aš-" + } + sub { + from boundary + "ال" + "س" + to "as-" + } + sub { + from boundary + "ال" + "ز" + to "az-" + } + sub { + from boundary + "ال" + "ر" + to "ar-" + } + sub { + from boundary + "ال" + "د" + to "ad-" + } + sub { + from boundary + "ال" + "ت" + to "at-" + } + sub { + from boundary + "ال" + "ن" + to "an-" + } + sub { + from boundary + "ال" + "ل" + to "al-" + } + sub { + from boundary + "ال" + to "al-" + } + + # 6.1.3 (c) and (d): alif and hamza word-initially are not rendered; the + # hamza carriers contribute nothing of their own + sub { + from boundary + "ا" + to "" + } + sub { + from boundary + "ء" + to "" + } + sub { + from boundary + "أ" + to "" + } + sub { + from boundary + "إ" + to "" + } + sub { + from boundary + "ؤ" + to "" + } + sub { + from boundary + "ئ" + to "" + } + + # 6.1.3 (f): alif with madda is a-macron word-initially, + # right-half-ring plus a-macron word-internally + sub { + from boundary + "آ" + to "ā" + } + sub { + from "آ" + to "ʾā" + } + + # 6.1.3 (l): taa marbuta renders h after the long vowel a-macron, + # otherwise it is not expressed + sub { + from "ة" + to "h" + before any("اā") + } + sub { + from "ة" + to "" + } + + # CHARACTERS + parallel { + sub "بّ" "bb" + sub "تّ" "tt" + sub "ثّ" "ṯṯ" + sub "جّ" "ǧǧ" + sub "حّ" "ḥḥ" + sub "خّ" "ḫḫ" + sub "دّ" "dd" + sub "ذّ" "ḏḏ" + sub "رّ" "rr" + sub "زّ" "zz" + sub "سّ" "ss" + sub "شّ" "šš" + sub "صّ" "ṣṣ" + sub "ضّ" "ḍḍ" + sub "طّ" "ṭṭ" + sub "ظّ" "ẓẓ" + sub "عّ" "ʿʿ" + sub "غّ" "ġġ" + sub "فّ" "ff" + sub "قّ" "qq" + sub "کّ" "kk" + sub "كّ" "kk" + sub "لّ" "ll" + sub "مّ" "mm" + sub "نّ" "nn" + sub "هّ" "hh" + sub "وّ" "ww" + sub "يّ" "yy" + sub "وُ" "ū" + sub "يِ" "ī" + sub "أَ" "ʾa" + sub "إِ" "ʾi" + sub "ؤُ" "ʾu" + sub "ئِ" "ʾi" + sub "أُ" "ʾu" + sub "ئَ" "ʾa" + sub "ء" "ʾ" + sub "أ" "ʾ" + sub "إ" "ʾ" + sub "ؤ" "ʾ" + sub "ئ" "ʾ" + sub "ا" "ā" + sub "ب" "b" + sub "ت" "t" + sub "ث" "ṯ" + sub "ج" "ǧ" + sub "ح" "ḥ" + sub "خ" "ḫ" + sub "د" "d" + sub "ذ" "ḏ" + sub "ر" "r" + sub "ز" "z" + sub "س" "s" + sub "ش" "š" + sub "ص" "ṣ" + sub "ض" "ḍ" + sub "ط" "ṭ" + sub "ظ" "ẓ" + sub "ع" "ʿ" + sub "غ" "ġ" + sub "ف" "f" + sub "ق" "q" + sub "ک" "k" + sub "ك" "k" + sub "ل" "l" + sub "م" "m" + sub "ن" "n" + sub "ه" "h" + sub "ھ" "h" + sub "و" "w" + sub "ي" "y" + sub "ى" "ā" + sub "َ" "a" + sub "ِ" "i" + sub "ُ" "u" + sub "ً" "an" + sub "ٌ" "" + sub "ٍ" "" + sub "ّ" "" + sub "ٰ" "ā" + } + +} + +} diff --git a/public/maps/din-heb-Hebr-Latn-31636-2018.isc b/public/maps/din-heb-Hebr-Latn-31636-2018.isc new file mode 100644 index 00000000..2bbe42c9 --- /dev/null +++ b/public/maps/din-heb-Hebr-Latn-31636-2018.isc @@ -0,0 +1,355 @@ +system "DIN:heb-Hebr:Latn:31636-2018" { + +metadata { + authority_id din + id 31636-2018 + language iso-639-2:heb + source_script Hebr + destination_script Latn + name "DIN 31636:2018-10 Information und Dokumentation - Umschrift des hebraeischen Alphabets" + url https://www.din.de + creation_date 2018 + confirmation_date 2018-10 + description { Information and documentation -- Romanization of the Hebrew alphabet. + 2018-10 edition, replacing DIN 31636:2011-01. The norm fixes the rendering of the + letters of the Hebrew alphabet (including Ivrit) in letters of the Latin alphabet. + This map implements the Hebrew (including Ivrit) column over vocalized input; + the Yiddish column of the same norm is a separate map. + } + + notes { + note "Consonants (Table 1): alef is rendered with the right half-ring U+02BE or ignored per the rules; bet with dagesh lene b, bet v; gimel g; dalet d; he always as consonant h; vav v with dot below (U+1E7F), vav with dagesh (shuruk) u; double vav (U+05F0) as consonant v with dot below; zayin z; het h with dot below (U+1E25); tet t with dot below (U+1E6D); yod y as consonant only when a vowel follows, otherwise omitted; kaf with dagesh k, khaf kh, end-khaf kh; lamed l; mem m, end-mem m; nun n, end-nun n; samekh s; ayin left half-ring U+02BF; pe with dagesh p, fe f, end-fe f; tsadi ts, end-tsadi ts; qof k with dot below (k + U+0323); resh r; shin sh, sin s with acute (U+015B); tav t." + note "Vowels (Table 3): patach a (with following yod: ai); qamats a or o - this map renders a, the o-reading (qamats qatan) is a reading-side determination; segol e; tsere e; hireq i; holam (U+05B9) or holam male (U+FB4B) o; qubuts (U+05BB) or shuruk (U+FB35) u; sheva e or ignored per the rules; hataf-patach a; hataf-segol e; hataf-qamats o." + note "Neo-Hebrew additional letters (Table 2) are marked with the straight apostrophe (geresh, U+02B9): gimel-geresh g-apostrophe, dalet-geresh d-apostrophe, zayin-geresh z-apostrophe, het-geresh h-dot-apostrophe, tet-geresh t-dot-apostrophe, ayin-geresh g with dot above (U+0307), tsadi-geresh ts-apostrophe for English names, or d with dot below for Arabic names (variant; this map renders ts-apostrophe)." + note "Special characters (Table 5): right half-ring U+02BE for alef, left half-ring U+02BF for ayin, straight apostrophe U+02B9 for the geresh. Diacritics (Table 6): circumflex U+0302 for the facultative plene marking, acute U+0301 marking the sin, grave U+0300 for the Yiddish tav (Yiddish map), dot below U+0323 for v, h-dot, t-dot, k-dot, dot above U+0307 only for the neo-Hebrew g-dot." + note "Rules (section 8): (a) a straight apostrophe separates two letters whose combination would render a different consonant; (b) vowel length is not marked, including the composed forms; (c) alef at the beginning or end of a word and at the end of a syllable is not transliterated; word-internal alef that merely indicates a vowel is likewise ignored, while alef with a vowel sign under it is rendered with U+02BE - this map implements word-initial, word-final, word-internal unvocalized (ignored) and word-internal vocalized (U+02BE) alef; the syllable-end condition is a reading-side determination; (d) bet, kaf and pe follow the modern Hebrew pronunciation with the dagesh lene observed; the distinction between dagesh forte and dagesh lene is not made - residual dagesh signs are deleted; (e) he is always transliterated as a consonant; (f) yod is transliterated as consonant y only when a vowel follows; otherwise it is omitted; (g) the plene spelling of vowels may optionally be shown by a circumflex - this map does not add it; (h) all shevas at the beginning of Hebrew words are rendered e; the sheva word-internally is generally not transliterated - the root-morphology exceptions (doubled third root consonant, yod as second consonant) are reading-side determinations and are not implemented; (i) capitalization follows the rules of the user community; this map outputs lower case and does not apply title case." + note "Rules 8(h)(16)-(20) hyphenate preposed particles (ha-arets, mi-bayit, le-David) and 8(j)-(k) govern the punctuation of abbreviations; both require word-segmentation and lexical knowledge and are not implemented in this map." + note "The map is deterministic over vocalized input (text carrying niqqud). Unvocalized text is an underspecified skeleton: matres lectionis (vav, yod, he standing for vowels), the qamats qatan reading, the sheva readings and defective spellings are resolved by a vocalization model, after which this map applies (composition, not duplication)." + } +} + +tests { + # section 8 examples, vocalized + "יִשְׂרָאֵל" -> "yiśraʾel" + "קְרִיאָה" -> "ḳeriʾah" + "תְּקוּפָה" -> "teḳufah" + "תְּשׁוּבָה" -> "teshuvah" + "מִשְׁנָה" -> "mishnah" + "רֹאשׁ" -> "rosh" + "אַהֲרֹן" -> "aharon" + "תּוֹרָה" -> "torah" + "שֶׂכֶל" -> "śekhel" + "יִצְחָק" -> "yitsḥaḳ" + "אִגֶּרֶת" -> "igeret" + "חַיֵּי" -> "ḥaye" + "סִפְרֵי" -> "sifre" + # table 1 rows + "בּ" -> "b" + "בּ" -> "b" + "ב" -> "v" + "ג" -> "g" + "ד" -> "d" + "ה" -> "h" + "ו" -> "ṿ" + "וּ" -> "u" + "וּ" -> "u" + "װ" -> "ṿ" + "ז" -> "z" + "ח" -> "ḥ" + "ט" -> "ṭ" + "כּ" -> "k" + "כּ" -> "k" + "כ" -> "kh" + "ך" -> "kh" + "ל" -> "l" + "מ" -> "m" + "ם" -> "m" + "נ" -> "n" + "ן" -> "n" + "ס" -> "s" + "ע" -> "ʿ" + "פּ" -> "p" + "פּ" -> "p" + "פ" -> "f" + "ף" -> "f" + "צ" -> "ts" + "ץ" -> "ts" + "ק" -> "ḳ" + "ר" -> "r" + "שׁ" -> "sh" + "שׁ" -> "sh" + "שׂ" -> "ś" + "שׂ" -> "ś" + "ש" -> "sh" + "תּ" -> "t" + "תּ" -> "t" + "ת" -> "t" + # table 2 rows (geresh-marked) + "גʹ" -> "gʹ" + "דʹ" -> "dʹ" + "זʹ" -> "zʹ" + "חʹ" -> "ḥʹ" + "טʹ" -> "ṭʹ" + "עʹ" -> "ġ" + "צʹ" -> "tsʹ" + # table 3 rows + "בַּ" -> "ba" + "בָּ" -> "ba" + "בֶּ" -> "be" + "בֵּ" -> "be" + "בִּ" -> "bi" + "בֹּ" -> "bo" + "וֹ" -> "o" + "בֻּ" -> "bu" + "בַּי" -> "ba" + "בֲּ" -> "ba" + "בֱּ" -> "be" + "בֳּ" -> "bo" +} + +stage main { + + # RULES + # Unicode mark-order normalization: move dagesh and the shin/sin dots + # directly after their base letter when a vowel mark intervenes + sub { + from "ֲּ" + to "ֲּ" + } + sub { + from "ֲׂ" + to "ֲׂ" + } + sub { + from "ֲׁ" + to "ֲׁ" + } + sub { + from "ֱּ" + to "ֱּ" + } + sub { + from "ֱׂ" + to "ֱׂ" + } + sub { + from "ֱׁ" + to "ֱׁ" + } + sub { + from "ֳּ" + to "ֳּ" + } + sub { + from "ֳׂ" + to "ֳׂ" + } + sub { + from "ֳׁ" + to "ֳׁ" + } + sub { + from "ַּ" + to "ַּ" + } + sub { + from "ַׂ" + to "ַׂ" + } + sub { + from "ַׁ" + to "ַׁ" + } + sub { + from "ָּ" + to "ָּ" + } + sub { + from "ָׂ" + to "ָׂ" + } + sub { + from "ָׁ" + to "ָׁ" + } + sub { + from "ֶּ" + to "ֶּ" + } + sub { + from "ֶׂ" + to "ֶׂ" + } + sub { + from "ֶׁ" + to "ֶׁ" + } + sub { + from "ֵּ" + to "ֵּ" + } + sub { + from "ֵׂ" + to "ֵׂ" + } + sub { + from "ֵׁ" + to "ֵׁ" + } + sub { + from "ִּ" + to "ִּ" + } + sub { + from "ִׂ" + to "ִׂ" + } + sub { + from "ִׁ" + to "ִׁ" + } + sub { + from "ֹּ" + to "ֹּ" + } + sub { + from "ֹׂ" + to "ֹׂ" + } + sub { + from "ֹׁ" + to "ֹׁ" + } + sub { + from "ֻּ" + to "ֻּ" + } + sub { + from "ֻׂ" + to "ֻׂ" + } + sub { + from "ֻׁ" + to "ֻׁ" + } + # 8(c): alef word-initially and word-finally is not transliterated + sub { + from boundary + "א" + to "" + } + sub { + from "א" + to "" + after boundary + } + # 8(c): word-internal alef with a vowel sign under it is rendered U+02BE + sub { + from "א" + to "ʾ" + after any("ְֱֲֳִֵֶַָֹֻ") + } + # remaining word-internal alefs merely indicate a vowel and are ignored + sub { + from "א" + to "" + } + + # 8(h): sheva word-initially (under the word-initial consonant) is e, + # word-internally it is not transliterated + sub { + from "ְ" + to "e" + before boundary + any("אבגדהוזחטיכלמנסעפצקרשת") + } + sub { + from "ְ" + to "" + } + + # sin and shin dots (the sheva between them is removed first) + sub { + from "שׂ" + to "ś" + } + sub { + from "שׁ" + to "sh" + } + + # 8(f): yod as consonant y only when a vowel follows; otherwise omitted + sub { + from "י" + to "y" + after any("ִֵֶַָֹֻּ") + } + sub { + from "י" + to "" + } + + # CHARACTERS + parallel { + sub "גʹ" "gʹ" + sub "דʹ" "dʹ" + sub "זʹ" "zʹ" + sub "חʹ" "ḥʹ" + sub "טʹ" "ṭʹ" + sub "עʹ" "ġ" + sub "צʹ" "tsʹ" + sub "שׂ" "ś" + sub "שׁ" "sh" + sub "בּ" "b" + sub "כּ" "k" + sub "פּ" "p" + sub "וּ" "u" + sub "וֹ" "o" + sub "בּ" "b" + sub "כּ" "k" + sub "פּ" "p" + sub "וּ" "u" + sub "וֹ" "o" + sub "שׁ" "sh" + sub "שׂ" "ś" + sub "תּ" "t" + sub "װ" "ṿ" + sub "ך" "kh" + sub "כ" "kh" + sub "ם" "m" + sub "מ" "m" + sub "ן" "n" + sub "נ" "n" + sub "ף" "f" + sub "פ" "f" + sub "ץ" "ts" + sub "צ" "ts" + sub "ב" "v" + sub "ג" "g" + sub "ד" "d" + sub "ה" "h" + sub "ו" "ṿ" + sub "ז" "z" + sub "ח" "ḥ" + sub "ט" "ṭ" + sub "ל" "l" + sub "ס" "s" + sub "ע" "ʿ" + sub "ק" "ḳ" + sub "ר" "r" + sub "ש" "sh" + sub "ת" "t" + sub "ַ" "a" + sub "ָ" "a" + sub "ֶ" "e" + sub "ֵ" "e" + sub "ִ" "i" + sub "ֹ" "o" + sub "ֻ" "u" + sub "ֲ" "a" + sub "ֱ" "e" + sub "ֳ" "o" + sub "ּ" "" + } + +} + +} diff --git a/public/maps/din-hye-Armn-Latn-32706-2010.isc b/public/maps/din-hye-Armn-Latn-32706-2010.isc new file mode 100644 index 00000000..5664c79d --- /dev/null +++ b/public/maps/din-hye-Armn-Latn-32706-2010.isc @@ -0,0 +1,197 @@ +system "DIN:arm-Armn:Latn:32706-2010" { + +metadata { + authority_id din + id 32706-2010 + language iso-639-2:hye + source_script Armn + destination_script Latn + name "DIN 32706:2010-01 Information und Dokumentation - Umschrift des armenischen Alphabets" + url https://www.din.de + creation_date 2010 + confirmation_date 2010 + description { Information and documentation -- Romanization of the Armenian alphabet. + The norm fixes the rendering of the letters of the Armenian alphabet in letters of the + Latin alphabet and is suitable for all fields of application. It follows the principle + of transliteration and is based on library practice and on ISO 9985:1996. + } + + notes { + note "Table 1 renders each letter with its majuscule, minuscule, numeric value (the letters of the Armenian alphabet formerly also served as numerals) and Romanization: a=1, b=2, g=3, d=4, e=5, z=6, ê=7, ẹ=8, t̕=9, ž=10, i=20, l=30, x=40, c=50, k=60, h=70, j=80, ġ=90, č=100, m=200, y=300, n=400, š=500, o=600, č̕=700, p=800, ǰ=900, ṙ=1000, s=2000, v=3000, t=4000, r=5000, c̕=6000, w=7000, p̕=8000, k̕=9000, ô=10000, f=20000." + note "The ejective consonants are romanized with the combining comma above right (U+0315): t̕ (0074+0315), č̕ (010D+0315), c̕ (0063+0315), p̕ (0070+0315), k̕ (006B+0315)." + note "The letter ǰ is the precomposed U+01F0; its capital cannot currently be represented as a single Unicode character and is post-combined as 004A+030C (footnote a of the source)." + note "The ligature և (U+0587) is romanized ew with the combining double inverted breve (0065+0077+0361). The source notes the alternative representation 0065+FE20+0077+FE21 and that the ligature bow may likewise be set for the Armenian ligatures at U+FB13 to U+FB17; this map does not assign those ligatures Romanizations, as the table does not specify any." + note "The source document's Unicode annotation column prints the minuscule of letter 18 as 0571; the glyph shown and encoded is ղ U+0572 (0571 is the minuscule of letter 17, ձ)." + note "Normative references: DIN 1460; ISO 9985:1996; ISO/IEC 10646:2003." + } +} + +tests { + # every table row, majuscule and minuscule + "Ա" -> "A" + "ա" -> "a" + "Բ" -> "B" + "բ" -> "b" + "Գ" -> "G" + "գ" -> "g" + "Դ" -> "D" + "դ" -> "d" + "Ե" -> "E" + "ե" -> "e" + "Զ" -> "Z" + "զ" -> "z" + "Է" -> "Ê" + "է" -> "ê" + "Ը" -> "Ẹ" + "ը" -> "ẹ" + "Թ" -> "T̕" + "թ" -> "t̕" + "Ժ" -> "Ž" + "ժ" -> "ž" + "Ի" -> "I" + "ի" -> "i" + "Լ" -> "L" + "լ" -> "l" + "Խ" -> "X" + "խ" -> "x" + "Ծ" -> "C" + "ծ" -> "c" + "Կ" -> "K" + "կ" -> "k" + "Հ" -> "H" + "հ" -> "h" + "Ձ" -> "J" + "ձ" -> "j" + "Ղ" -> "Ġ" + "ղ" -> "ġ" + "Ճ" -> "Č" + "ճ" -> "č" + "Մ" -> "M" + "մ" -> "m" + "Յ" -> "Y" + "յ" -> "y" + "Ն" -> "N" + "ն" -> "n" + "Շ" -> "Š" + "շ" -> "š" + "Ո" -> "O" + "ո" -> "o" + "Չ" -> "Č̕" + "չ" -> "č̕" + "Պ" -> "P" + "պ" -> "p" + "Ջ" -> "J̌" + "ջ" -> "ǰ" + "Ռ" -> "Ṙ" + "ռ" -> "ṙ" + "Ս" -> "S" + "ս" -> "s" + "Վ" -> "V" + "վ" -> "v" + "Տ" -> "T" + "տ" -> "t" + "Ր" -> "R" + "ր" -> "r" + "Ց" -> "C̕" + "ց" -> "c̕" + "Ւ" -> "W" + "ւ" -> "w" + "Փ" -> "P̕" + "փ" -> "p̕" + "Ք" -> "K̕" + "ք" -> "k̕" + "և" -> "ew͡" + "Օ" -> "Ô" + "օ" -> "ô" + "Ֆ" -> "F" + "ֆ" -> "f" +} + +stage main { + + # CHARACTERS + parallel { + sub "Թ" "T̕" + sub "Չ" "Č̕" + sub "Ց" "C̕" + sub "Փ" "P̕" + sub "Ք" "K̕" + sub "և" "ew͡" + sub "Է" "Ê" + sub "Ը" "Ẹ" + sub "Ժ" "Ž" + sub "Ղ" "Ġ" + sub "Ճ" "Č" + sub "Շ" "Š" + sub "Ջ" "J̌" + sub "Ռ" "Ṙ" + sub "Օ" "Ô" + sub "Ա" "A" + sub "Բ" "B" + sub "Գ" "G" + sub "Դ" "D" + sub "Ե" "E" + sub "Զ" "Z" + sub "Ի" "I" + sub "Լ" "L" + sub "Խ" "X" + sub "Ծ" "C" + sub "Կ" "K" + sub "Հ" "H" + sub "Ձ" "J" + sub "Մ" "M" + sub "Յ" "Y" + sub "Ն" "N" + sub "Ո" "O" + sub "Պ" "P" + sub "Ս" "S" + sub "Վ" "V" + sub "Տ" "T" + sub "Ր" "R" + sub "Ւ" "W" + sub "Ֆ" "F" + + sub "թ" "t̕" + sub "չ" "č̕" + sub "ց" "c̕" + sub "փ" "p̕" + sub "ք" "k̕" + sub "և" "ew͡" + sub "է" "ê" + sub "ը" "ẹ" + sub "ժ" "ž" + sub "ղ" "ġ" + sub "ճ" "č" + sub "շ" "š" + sub "ջ" "ǰ" + sub "ռ" "ṙ" + sub "օ" "ô" + sub "ա" "a" + sub "բ" "b" + sub "գ" "g" + sub "դ" "d" + sub "ե" "e" + sub "զ" "z" + sub "ի" "i" + sub "լ" "l" + sub "խ" "x" + sub "ծ" "c" + sub "կ" "k" + sub "հ" "h" + sub "ձ" "j" + sub "մ" "m" + sub "յ" "y" + sub "ն" "n" + sub "ո" "o" + sub "պ" "p" + sub "ս" "s" + sub "վ" "v" + sub "տ" "t" + sub "ր" "r" + sub "ւ" "w" + sub "ֆ" "f" + } + +} + +} diff --git a/public/maps/din-yid-Hebr-Latn-31636-2018.isc b/public/maps/din-yid-Hebr-Latn-31636-2018.isc new file mode 100644 index 00000000..39909157 --- /dev/null +++ b/public/maps/din-yid-Hebr-Latn-31636-2018.isc @@ -0,0 +1,208 @@ +system "DIN:yid-Hebr:Latn:31636-2018" { + +metadata { + authority_id din + id 31636-2018 + language iso-639-2:yid + source_script Hebr + destination_script Latn + name "DIN 31636:2018-10 Information und Dokumentation - Umschrift des hebraeischen Alphabets (jiddische Spalte)" + url https://www.din.de + creation_date 2018 + confirmation_date 2018-10 + description { Information and documentation -- Romanization of the Hebrew alphabet, Yiddish + column. 2018-10 edition, replacing DIN 31636:2011-01. This map implements the + Yiddish column of Table 1 with the Yiddish vowel table (Table 4) and the Yiddish + notes (section 9) of the norm. The Hebrew column is a separate map. + } + + notes { + note "Consonants (Table 1, Yiddish column): alef is rendered with the right half-ring U+02BE or as the vowel a/o via the vowel spellings; bet with dagesh b, bet v; gimel g; dalet d; he h; vav v with dot below (U+1E7F); double vav (U+05F0) is annotated als Konsonant and shares the row's consonantal rendering; zayin z; het h with dot below (U+1E25); tet t with dot below (U+1E6D); yod y; double yod (U+05F2) is annotated als Konsonant when consonantal, and as a vowel per Table 4 (ay or ey); kaf with dagesh k, khaf kh; lamed l; mem m; nun n; samekh s; ayin e; pe p, fe f; tsadi ts; kof k with dot below (k + U+0323); resh r; shin sh, sin s with acute (U+015B); tav s with grave (U+0073+0300) per section 9(c) - the voiceless-s pronunciation of tav." + note "Vowels (Table 4): alef with patach (U+FB2A? no - U+05D0+05B7) a; alef with qamats (U+05D0+05B8) a or o - this map renders a, the o-reading is a pronunciation-side determination; ayin e; vav or alef-vav u or o - this map renders u, the norm's own section 9(a) examples use the o-reading (moyre, koyles); vav-yod (U+05F1) or alef-vav-yod oy; yod or alef-yod i; yod-yod (U+05F2) or alef-yod-yod ay or ey, je nach Aussprache - this map renders ay and documents ey as the alternative reading of the same spelling." + note "Section 9(a): Hebrew words occurring in a Yiddish context are verified for Yiddish pronunciation in Weinreich and then transliterated with Table 1 (Yiddish) and Table 4; Hebrew proper names in a Yiddish context follow the Yiddish pronunciation. The distinction between tav/tet, kof/khaf and khaf/het is made with the underdots, and word-final he is rendered h." + note "Section 9(c): tav pronounced as voiceless s is rendered with the grave (s + U+0300), e.g. bes (beyt-yod-tav)." + note "Section 9(d): vowels not written in Old Yiddish may optionally be marked with a stroke above the vowel; this map does not add such marks." + note "Words whose vowels are not written in the spelling (loshn-koydesh items such as the norm's own mehaber/moyre examples) are an underspecified skeleton: the unwritten vowels are resolved by a vocalization model, after which this map applies (composition, not duplication)." + note "Capitalization and hyphenation follow the rules given for Hebrew (rule 8i/b); this map outputs lower case." + } +} + +tests { + # table 1 Yiddish column rows + "א" -> "ʾ" + "בּ" -> "b" + "בּ" -> "b" + "ב" -> "v" + "ג" -> "g" + "ד" -> "d" + "ה" -> "h" + "ו" -> "ṿ" + "װ" -> "ṿ" + "ז" -> "z" + "ח" -> "ḥ" + "ט" -> "ṭ" + "י" -> "y" + "כּ" -> "k" + "כּ" -> "k" + "כ" -> "kh" + "ך" -> "kh" + "ל" -> "l" + "מ" -> "m" + "ם" -> "m" + "נ" -> "n" + "ן" -> "n" + "ס" -> "s" + "ע" -> "e" + "פּ" -> "p" + "פּ" -> "p" + "פ" -> "f" + "ף" -> "f" + "צ" -> "ts" + "ץ" -> "ts" + "ק" -> "ḳ" + "ר" -> "r" + "שׁ" -> "sh" + "שׁ" -> "sh" + "שׂ" -> "ś" + "שׂ" -> "ś" + "תּ" -> "t" + "תּ" -> "t" + "ת" -> "s̀" + # table 2 rows (geresh-marked, same as Hebrew column) + "גʹ" -> "gʹ" + "דʹ" -> "dʹ" + "זʹ" -> "zʹ" + "חʹ" -> "ḥʹ" + "טʹ" -> "ṭʹ" + "עʹ" -> "ġ" + "צʹ" -> "tsʹ" + # table 4 rows + "אַ" -> "a" + "אָ" -> "a" + "ע" -> "e" + "ױ" -> "oy" + "אױ" -> "oy" + "ײ" -> "ay" + "אײ" -> "ay" + "אי" -> "i" + "או" -> "u" +} + +stage main { + + # RULES + # table 4: the Yiddish vowel spellings are sequences of letters and + # must be matched before their single letters + sub { + from "אַ" + to "a" + } + sub { + from "אָ" + to "a" + } + sub { + from "אױ" + to "oy" + } + sub { + from "או" + to "u" + } + sub { + from "אי" + to "i" + } + sub { + from "אײ" + to "ay" + } + sub { + from "ױ" + to "oy" + } + sub { + from "ײ" + to "ay" + } + + # sin and shin dots + sub { + from "שׂ" + to "ś" + } + sub { + from "שׁ" + to "sh" + } + + # CHARACTERS + parallel { + sub "גʹ" "gʹ" + sub "דʹ" "dʹ" + sub "זʹ" "zʹ" + sub "חʹ" "ḥʹ" + sub "טʹ" "ṭʹ" + sub "עʹ" "ġ" + sub "צʹ" "tsʹ" + sub "שׂ" "ś" + sub "שׁ" "sh" + sub "בּ" "b" + sub "כּ" "k" + sub "פּ" "p" + sub "וּ" "u" + sub "בּ" "b" + sub "כּ" "k" + sub "פּ" "p" + sub "וּ" "u" + sub "וֹ" "o" + sub "שׁ" "sh" + sub "שׂ" "ś" + sub "תּ" "t" + sub "אַ" "a" + sub "אָ" "a" + sub "װ" "ṿ" + sub "ך" "kh" + sub "כ" "kh" + sub "ם" "m" + sub "מ" "m" + sub "ן" "n" + sub "נ" "n" + sub "ף" "f" + sub "פ" "f" + sub "ץ" "ts" + sub "צ" "ts" + sub "א" "ʾ" + sub "ב" "v" + sub "ג" "g" + sub "ד" "d" + sub "ה" "h" + sub "ו" "ṿ" + sub "ז" "z" + sub "ח" "ḥ" + sub "ט" "ṭ" + sub "י" "y" + sub "ל" "l" + sub "ס" "s" + sub "ע" "e" + sub "ק" "ḳ" + sub "ר" "r" + sub "ש" "sh" + sub "תּ" "t" + sub "ת" "s̀" + sub "ַ" "a" + sub "ָ" "a" + sub "ֶ" "e" + sub "ֵ" "e" + sub "ִ" "i" + sub "ֹ" "o" + sub "ֻ" "u" + sub "ֲ" "a" + sub "ֱ" "e" + sub "ֳ" "o" + sub "ּ" "" + } + +} + +} diff --git a/public/maps/gki-bel-Cyrl-Latn-2000.isc b/public/maps/gki-bel-Cyrl-Latn-2000.isc index 72bfe402..02b75bc7 100644 --- a/public/maps/gki-bel-Cyrl-Latn-2000.isc +++ b/public/maps/gki-bel-Cyrl-Latn-2000.isc @@ -71,6 +71,7 @@ tests { } dependency "var-Cyrl" +dependency "var-kor" stage main { diff --git a/public/maps/gost-rus-Cyrl-Latn-16876-71-1983.isc b/public/maps/gost-rus-Cyrl-Latn-16876-71-1983.isc index 0351251f..1a2dfd46 100644 --- a/public/maps/gost-rus-Cyrl-Latn-16876-71-1983.isc +++ b/public/maps/gost-rus-Cyrl-Latn-16876-71-1983.isc @@ -87,6 +87,7 @@ tests { } dependency "var-Cyrl" +dependency "var-kor" stage main { diff --git a/public/maps/kp-kor-Hang-Latn-2002.isc b/public/maps/kp-kor-Hang-Latn-2002.isc index ff55de0f..cab9ffa4 100644 --- a/public/maps/kp-kor-Hang-Latn-2002.isc +++ b/public/maps/kp-kor-Hang-Latn-2002.isc @@ -88,6 +88,7 @@ tests { dependency "unicode" dependency "var-kor-Hang-Hang-jamo" as hanghang +dependency "var-kor" stage main { diff --git a/public/maps/odni-kor-Hang-Latn-2015.isc b/public/maps/odni-kor-Hang-Latn-2015.isc index 74962f3f..8aa18067 100644 --- a/public/maps/odni-kor-Hang-Latn-2015.isc +++ b/public/maps/odni-kor-Hang-Latn-2015.isc @@ -32,6 +32,7 @@ tests { dependency "unicode" dependency "var-kor-Hang-Hang-jamo" as hanghang +dependency "var-kor" aliases { diff --git a/public/maps/odni-kur-Arab-Latn-2011.isc b/public/maps/odni-kur-Arab-Latn-2011.isc new file mode 100644 index 00000000..31e5f573 --- /dev/null +++ b/public/maps/odni-kur-Arab-Latn-2011.isc @@ -0,0 +1,280 @@ +system "ODNI:kur-Arab:Latn:2011" { + +metadata { + authority_id odni + id 2011 + language iso-639-2:kur + source_script Arab + destination_script Latn + name ICS-630-01 Romanization of Kurdish Personal Names (2011) + source ICS-630-01 Annex G + creation_date 2011 + confirmation_date 2011-12 + description { This system is the Intelligence Community standard for the + transliteration of Kurdish names that will be applied to all + final written reports and products for IC consumers. It is + not intended to eliminate variations of a name that can + contribute forensic information. Rather, it is to provide an + IC standard Romanized (English) transliteration from Kurdish + that can then be linked to forensic information in ways that + will help identify the referent of a name. + + The system uses the 26 letters of the standard (English) + Roman alphabet plus the apostrophe. Some ambiguities in the + Romanized form will occur without the use of diacritics. + Within the context of a report, where additional information + about the individual is provided, the referent will be + clearly identified. The system is used in conjunction with + on-line tools, name dictionaries, and lists containing + conventional spellings of names of well-known individuals. + + This system does not apply to names of Kurds from Turkey or + other regions where Roman script is used. For non-Kurdish + names, use the relevant IC transliteration standard for + names from that language. Names of individuals from + languages written in Roman letters are spelled as they are + spelled in those languages. + + In cases where an individual's name has already been + transliterated in a variant spelling, that variant is + indicated in parentheses immediately following its rendition + in the transliteration standard. If the original Cyrillic or + Perso-Arabic-script spelling is known, that spelling should + also appear in parentheses following the name, following + best practices of the issuing organization and taking into + consideration information system capabilities. This + convention is designed to ensure that vital forensic + information is not lost. + + For active senior government officials listed in the online + CIA World Factbook and the online directory of Chiefs of + State and Cabinet Members of Foreign Governments, the + spellings given in those reference works are used in place + of the IC Standard. For individuals no longer listed, the IC + Standard spelling appears first, with the previous reference + spelling in parentheses at first usage. + + There is an effort in the region to purge Kurdish of Arabic + vocabulary, influencing how Kurdish names borrowed from + Arabic appear, especially in official publications. Defer to + the Kurdish IC Standard in these cases. + } + + notes { + # Remark A — Arabic borrowings + note "Transliteration of names and titles borrowed from other\n languages, such as Islamic names, is based on the modified\n Kurdish spelling used in formal Kurdish publications. A\n transliteration based on the Arabic spelling standard (for\n Kurds from Iraq) or the Persian spelling standard (for Kurds\n from Iran) may be used in parentheses. For uniquely Arabic\n consonants, ث and ص transliterate as 's,' ط transliterates\n as 't' and ذ, ض, ظ transliterate as 'z.' (For example, the\n modified Kurdish spelling of عثمان is عوسمان and\n transliterates as 'Usman.)\n\n Vowels/diacritics that are unwritten in Arabic are\n represented by vowels in modified Kurdish spellings as\n follows: fatha = ه, kasra = ی, dhamma = و. Diphthongs based\n on the combination of a diacritic and a written vowel in the\n original Arabic should be fully represented even for cases\n in which some Kurdish spelling conventions adopt a single\n letter. (For example, the diphthong for the Arabic name\n حسين is based on the modified Kurdish spelling of حوسهين\n 'Husayn' rather than the alternate modified Kurdish of\n حوسێن 'Husen.')\n\n As an exception, religious titles follow this pattern:\n fatha + ێ = 'e' instead of هی 'ay' (شيخ transliterates\n according to the Kurdish spelling شێخ 'Shekh,' and درويش as\n دهروێش 'Darwesh'); fatha + ۆ = 'o' instead of هو 'aw'\n (صوفي transliterates according to the Kurdish spelling سۆفی\n 'Sofi').\n\n In names borrowed from Arabic, doubled consonants with an\n explicit or implicit shaddah in Arabic are written without\n shaddah in modified Kurdish spellings and are generally\n viewed as having single consonants. They should be\n transliterated as single, not double (e.g., عهباس Abas,\n دهباغ Dabagh, سهيد Sayid, عهمار 'Amar, جهبار Jabar,\n موحهرهم Muharam). The name محمد (spelled موحهممهد in\n Kurdish) is an exception: Muhammad.\n\n Exceptions to the doubling rule include compound names formed\n with 'Allah' (e.g., 'Abdulla) or with 'al' (the definite\n article) before names beginning with 'lam' (e.g.,\n 'Abdullatif).\n\n In Kurdish, all vowels are written with the exception of the\n short 'i' sound, which is understood as a hidden (unwritten)\n kasra under the preceding consonant. The kasra most often\n occurs when there are two or three consonants in a row.\n While the kasra is rarely typed in the original Kurdish\n Perso-Arabic script, in transliteration it is represented by\n the letter 'i': كرن Kirin, گرد Gird, فازل Fazil." + # Remark B + note "When a name is composed of multiple parts (e.g.,\n abd-al-rahman), the name is transliterated as one block\n rather than as separate parts with hyphens (e.g.,\n Abdulrahman)." + # Remark C + note "The ل of ال (al-, Arabic 'the', -ul in compound Arabic\n names) is retained in the Romanized form (e.g., Abdulrahman,\n not Abdurrahman). Compound names which contained 'الدين'\n (al din) in the original Arabic show up in Kurdish without\n the l, and should be transliterated as such (e.g.,\n نهجمهدين Najmadin, سهالحهدين Salahadin)." + # Remark D + note "The Arabic article ال (al-, Arabic 'the') is not added to\n Kurdish names (e.g., خالد شوانی Khalid Shwani, not\n خالد الشوانی Khalid al Shwani)." + # Remark E + note "Two letter sequences in Kurdish (e.g., سه) are\n transliterated the same as single characters. For example,\n سه (sh) is transliterated the same as ش (sh). Example:\n ئهسهی 'Ashi.'" + # Remark F + note "Because access to Kurdish keyboards is limited, the\n following substitutions frequently occur in informal Kurdish\n writing for non-Arabic characters. Arabic-keyboard variants\n are ب for پ, ج for چ, ر for ڕ, ز for ژ, ف for ڤ, ك for گ,\n ل for ڵ, و for ۆ, and ی for ێ. Persian-keyboard variants are\n ب for پ, ج for چ, ر for ڕ, ز for ژ, ف for ڤ, ك for گ,\n ل for ڵ, و for ۆ, and ی for ێ. Observing which Kurdish\n characters are present in a given text helps in deciphering\n the correct transliteration for names taken from that text.\n\n As a result, names such as گوالڤ 'Gulav', پێژان 'Pezhan',\n ڕاگر 'Ragir', ژيڤان 'Zhivan', چۆپی 'Chopi' and گواڵسۆر\n 'Gulasor' would be typed as كوالف, بيزان, راكر, زيفان, جوبى\n and كوالسور on an Arabic keyboard, and as گوالف, پيژان,\n راگر, ژيفان, چوپی and گوالسور on a Persian keyboard.\n\n The letter ه used as a vowel may show up in modified connected\n forms: ھه وار / ھهوار / ھةوار for ھهوار 'Hawar'; ئه وين /\n ئهوين / ئةوين for ئهوين 'Awin'; به رزين / بهرزين / بةرزين\n for پهرژين 'Parzhin'; جه له نك / جهلهنك / جةلةنك for\n چهلهنگ 'Chalang'; ره زى / رھزى / رةزى for ڕهزێ 'Raze';\n به رويز / بهرويز / بةرويز for پهروێز 'Parwez'; به يتو /\n بهيتو / بةيتو for بهيتۆ 'Bayto.'" + # Remark G + note "Because word processors do not already include fonts with\n uniquely Kurdish letters, official publications are often\n drafted using specialized Kurdish fonts. Most of these fonts\n superimpose the uniquely Kurdish letters over uniquely Arabic\n letters, so a document read without the original font shows\n Arabic letters in place of Kurdish ones: ث for پ, ذ for ژ,\n ر for ڕ, ص for ێ, ض for چ, ط for گ, ظ for ڤ, ل for ڵ,\n ل for اڵ, ؤ for ۆ, ي for ی, ي for ێ, and ة for ه. Thus\n names such as گوالڤ 'Gulav', پێژان 'Pezhan', ڕاگر 'Ragir',\n ژيڤان 'Zhivan', چۆپی 'Chopi', پهروێز 'Parwez', چهلهنگ\n 'Chalang' and گواڵسۆر 'Gulasor' could be displayed as طوالظ,\n (ثصذان or ثيذان), راطر, ذيظان, ضؤثي, (ثةروصز or ثةرويز),\n ضةلةنط and طوالسؤر." + # Remark H + note "The letter و (wau) may show up as a 'v' in alternate\n Romanizations due to the influence of Persian. In such cases,\n the alternate may be placed within parentheses to maintain\n forensic information: پهروين Parwin (Parvin), پهروانه Parwana\n (Parvaneh), ھاوناز Hawnaz (Havnaz), ھهمهوهندی Hamawandi\n (Homavandi), ئاواره Awara (Avareh), ئهڵوهن Alwan (Alvan),\n والی Wali (Vali), وهلی Wali (Vali), ھاونار Hawnaz (Havnaz),\n كاروان Karwan (Karvan), جهواد Jawad (Javad), پهروێز Parwez\n (Parviz)." + # Remark I + note "Follow this standard for personal names that are based on\n place names even when it may differ from the BGN standard;\n for example, Galali instead of Gełałî, Garmiyani instead of\n Germiyanî, Karkuki instead of Kerkukî, Khanaqini instead of\n Xaneqînî, Penjweni instead of Pênicwênî, Shinki instead of\n Şînkî." + # Remark J + note "The double vowel combination وو can transliterate to either\n a diphthong ('wu' or 'uw') or a single vowel ('u'). For the\n diphthong cases, transliteration depends on whether the وو\n directly follows or immediately precedes another vowel. If\n it directly follows the vowel, it transliterates to 'wu' (as\n in تاووس 'Tawus'). If it immediately precedes the vowel, it\n transliterates to 'uw' (as in ڕووانگه 'Ruwanga'). When a word\n starts with وو (without a seated hamza) and is followed by a\n consonant, it transliterates to 'wu' (as in ووریا 'Wuriya').\n\n In general there is inconsistency in the use of وو for both\n the vowel and diphthong cases. When writers use only one و\n it is understood that there is a hidden or implied second و\n similar to the hidden kasra described in Remarks A and K.\n Because of this, a single و may follow the double وو\n transliteration pattern above: the alternate spelling of\n ڕوانگه still transliterates to 'Ruwanga,' and the alternate\n spelling of وریا still transliterates to 'Wuriya.'" + # Remark K + note "The double vowel combination یی transliterates to a\n diphthong ('yi' or 'iy'). Transliteration depends on whether\n the یی directly follows or immediately precedes another\n vowel. If it directly follows the vowel, it transliterates\n to 'yi' (as in حهمایيل 'Hamayil'). If it immediately\n precedes the vowel, it transliterates to 'iy' (as in دیيه\n 'Diya'). There is some inconsistency in the use of یی in\n informal contexts. For cases in which a vowel follows the ی,\n a hidden kasra preserves the 'iy' transliteration. For cases\n in which the vowel precedes the ی (as in حهمایل/حهمایيل),\n the transliteration follows the double یی pattern described\n above: حهمایل still transliterates as 'Hamayil' even though\n it is written with a single ی." + } +} + +tests { + # Examples printed in the annex and its remarks. + "ئومێد" -> "Umed" + "ئيران" -> "Iran" + "ئيمان" -> "Iman" + "پێژان" -> "Pezhan" + "چۆپی" -> "Chopi" + "ژيڤان" -> "Zhivan" + "ھهوار" -> "Hawar" + "ئهوين" -> "Awin" + "پهروانه" -> "Parwana" + "پهروين" -> "Parwin" + "تاووس" -> "Tawus" + "ڕووانگه" -> "Ruwanga" + "ووریا" -> "Wuriya" + "حهمایيل" -> "Hamayil" + "دیيه" -> "Diya" + "ئاواره" -> "Awara" + "ئهڵوهن" -> "Alwan" + "ھهمهوهندی" -> "Hamawandi" + "والی" -> "Wali" + "وهلی" -> "Wali" + "كاروان" -> "Karwan" + "جهواد" -> "Jawad" + "پهروێز" -> "Parwez" + "ڕهزێ" -> "Raze" + "بهيتۆ" -> "Bayto" + "نهجمهدين" -> "Najmadin" + # Arabic spelling with the modified-Kurdish reading given in Remark A + "عوسمان" -> "’Usman" + "موحهممهد" -> "Muhammad" + # The annex prints these two in visual RTL order; the logical + # spelling is tested here. + "گوڵاڤ" -> "Gulav" + "گوڵاسۆر" -> "Gulasor" + # Not tested: ئاگر (Agir) and ڕاگر (Ragir). Both depend on the + # unwritten short i of Remark A, which is lexical: the script + # omits it and only a Kurdish name dictionary can restore it. +} + +stage main { + # CHARACTERS + # Declare multi-character rules first: in a parallel group the longest + # match wins, and declaration order breaks ties. + parallel { + + # Diphthongs written with a seated hamza + sub "ئاو" "aw" + sub "ئاى" "ay" + sub "ئاي" "ay" + sub "ئوو" "u" + sub { from "ئهو" to "aw" not_after any("اويىۆێهە") } + sub { from "ئهي" to "ay" not_after any("اويىۆێهە") } + sub { from "ئهی" to "ay" not_after any("اويىۆێهە") } + sub "ئه" "a" + sub "ئا" "a" + sub "ئو" "u" + sub "ئۆ" "o" + sub "ئێ" "e" + sub "ئي" "i" + sub "ئى" "i" + sub "ئی" "i" + + # Double waw: wu / uw / u (Remark J) + sub "اوو" "awu" + sub { from "وو" to "wu" before any("اويىۆێهە") } + sub { from "وو" to "uw" after any("اويىۆێهە") } + sub { from "وو" to "wu" before boundary } + sub "وو" "u" + + # Diphthongs written with heh or yeh with small v + sub { from "هو" to "aw" not_after any("اويىۆێهە") } + sub { from "هي" to "ay" not_after any("اويىۆێهە") } + sub { from "هی" to "ay" not_after any("اويىۆێهە") } + sub { from "ێو" to "ew" not_after any("اويىۆێهە") } + sub { from "ێي" to "ey" not_after any("اويىۆێهە") } + sub { from "ێی" to "ey" not_after any("اويىۆێهە") } + + # Double yeh: yi / iy (Remark K) + sub { from "يي" to "yi" before any("اويىۆێهە") } + sub { from "يی" to "yi" before any("اويىۆێهە") } + sub { from "یي" to "yi" before any("اويىۆێهە") } + sub { from "یی" to "yi" before any("اويىۆێهە") } + sub { from "يي" to "iy" after any("اويىۆێهە") } + sub { from "يی" to "iy" after any("اويىۆێهە") } + sub { from "یي" to "iy" after any("اويىۆێهە") } + sub { from "یی" to "iy" after any("اويىۆێهە") } + sub "يي" "i" + sub "يی" "i" + sub "یي" "i" + sub "یی" "i" + + # Waw and yeh as consonants or vowels (Remarks H-J) + sub { from "ه" to "h" before boundary } + sub { from "و" to "w" before any("اويىۆێهە") } + sub { from "و" to "w" after any("اويىۆێهە") } + sub { from "و" to "w" before boundary } + sub { from "ي" to "y" before boundary } + sub { from "ی" to "y" before boundary } + sub { from "ى" to "y" before boundary } + sub { from "ي" to "yi" before any("ايىۆێهی") } + sub { from "ی" to "yi" before any("ايىۆێهی") } + sub { from "ى" to "yi" before any("ايىۆێهی") } + sub { from "ي" to "iy" after any("اويىۆێهە") } + sub { from "ی" to "iy" after any("اويىۆێهە") } + sub { from "ى" to "iy" after any("اويىۆێهە") } + + # Consonants + sub "ء" "" + sub "ب" "b" + sub "پ" "p" + sub "ت" "t" + sub "ث" "s" + sub "ج" "j" + sub "چ" "ch" + sub "ح" "h" + sub "خ" "kh" + sub "د" "d" + sub "ذ" "z" + sub "ر" "r" + sub "ڕ" "r" + sub "ز" "z" + sub "ژ" "zh" + sub "س" "s" + sub "ش" "sh" + sub "ص" "s" + sub "ض" "z" + sub "ط" "t" + sub "ظ" "z" + sub "ع" "’" + sub "غ" "gh" + sub "ف" "f" + sub "ڤ" "v" + sub "ق" "q" + sub "ك" "k" + sub "ک" "k" + sub "گ" "g" + sub "ل" "l" + sub "ڵ" "l" + sub "م" "m" + sub "ن" "n" + sub "ه" "a" + sub "ھ" "h" + sub "و" "u" + sub "ي" "i" + sub "ی" "i" + sub "ى" "i" + + # Vowels + sub "ا" "a" + sub "ة" "a" + sub "ە" "a" + sub "آ" "a" + sub "أ" "a" + sub "إ" "i" + sub "ؤ" "u" + sub "ۆ" "o" + sub "ێ" "e" + + # Diacritics: the ICS system reads modified Kurdish spelling, so + # Arabic vowel points are dropped; the short i is written in the + # transliteration when the kasra is present. + sub "ِ" "i" + sub "َ" "" + sub "ُ" "" + sub "ّ" "" + sub "ْ" "" + sub "ً" "" + sub "ٌ" "" + sub "ٍ" "" + sub "ًَ" "" + sub "ـ" "" + sub "‌" "" + sub "‍" "" + } + + # POSTRULES + # Capitalize the first letter of a word, including a word that begins + # with the apostrophe of an initial ayin. + sub { + from any("a".."￿") + to upcase + before boundary + not_before boundary + any("‘’'") + } + sub { + from any("a".."￿") + to upcase + before boundary + any("‘’'") + } +} +} diff --git a/public/maps/odni-prs-Arab-Latn-2004.isc b/public/maps/odni-prs-Arab-Latn-2004.isc index 9e4453ca..3a5f277a 100644 --- a/public/maps/odni-prs-Arab-Latn-2004.isc +++ b/public/maps/odni-prs-Arab-Latn-2004.isc @@ -48,7 +48,6 @@ stage main { # CHARACTERS parallel { -s sub "\u0626" "" sub "\u0624" "" diff --git a/public/maps/royin-tha-Thai-Latn-1999.isc b/public/maps/royin-tha-Thai-Latn-1999.isc new file mode 100644 index 00000000..dd080fbe --- /dev/null +++ b/public/maps/royin-tha-Thai-Latn-1999.isc @@ -0,0 +1,60 @@ +system "ROYIN:tha-Thai:Latn:1999" { + +metadata { + authority_id royin + id 1999 + language iso-639-2:tha + source_script Thai + destination_script Latn + name Royal Thai General System of Transcription (1999) — phoneme-to-RTGS stage + url http://www.royin.go.th/wp-content/uploads/royin-ebook/276/FileUpload/758_6484.pdf + creation_date 1999 + adoption_date 2002 + description + + notes { + "This is the PHONEME-to-RTGS tail stage of the Thai composite: it consumes a syllable-dotted phonemic reading (the output of a trained Thai reading layer, e.g. sequitur/ByT5 over the pythainlp thai-g2p corpus or the tha-phonemic lexicon) and renders the Royal Thai General System of Transcription. + + Historical: the v1 maps corpus carried this mapping as the post-rules of a seq2seq-dependent map (transcription: sequitur.pythainlp_lexicon); revived here as a standalone stage for the B6 composite (WO67). + + Tones (˨˩˦˧˥) and the syllable separator (.) are not romanized (the RTGS drops tone; the separator marks syllable bounds)." + } +} + +tests { + "k a ˨˩ . k aː ˧" -> "kaka" + "k o ˨˩ . h a n ˩˩˦" -> "kohan" + "k o k̚ ˨˩ . t͡ɕʰ aː ŋ ˦˥" -> "kokchang" + "r a ˦˥ . d u ŋ ˧" -> "radung" +} + + +stage main { + + # RTGS POST-RULES (revived from maps-staging/royin-tha-Thai-Latn-1999, + # the seq2seq composite tail; the phoneme inventory is the pythainlp + # thai-g2p / royalin one) + parallel { + sub "t͡ɕʰ" "ch" + sub "t͡ɕ" "ch" + sub "ʰ" "h" + sub "ŋ" "ng" + sub "j" "i" + sub "w" "w" + sub "ɔ" "o" + sub "ɤ" "oe" + sub "ɛ" "ae" + sub "ɯ" "ue" + sub "ʔ" "" + sub "̚" "" + sub "ː" "" + sub "˨" "" + sub "˩" "" + sub "˦" "" + sub "˧" "" + sub "˥" "" + sub "." "" + sub " " "" + } +} +} diff --git a/public/maps/un-bul-Cyrl-Latn-1977.isc b/public/maps/un-bul-Cyrl-Latn-1977.isc index 9573f477..b9d39b0a 100644 --- a/public/maps/un-bul-Cyrl-Latn-1977.isc +++ b/public/maps/un-bul-Cyrl-Latn-1977.isc @@ -118,6 +118,7 @@ tests { } dependency "posix" +dependency "var-kor" stage main { diff --git a/public/maps/un-mkd-Cyrl-Latn-1977.isc b/public/maps/un-mkd-Cyrl-Latn-1977.isc index 5cea148a..0cbbfc9e 100644 --- a/public/maps/un-mkd-Cyrl-Latn-1977.isc +++ b/public/maps/un-mkd-Cyrl-Latn-1977.isc @@ -29,6 +29,7 @@ tests { } dependency "posix" +dependency "var-kor" stage main { sub { diff --git a/public/maps/var-kor-Hang-Latn-mr-1939.isc b/public/maps/var-kor-Hang-Latn-mr-1939.isc index 985f5793..9a2c0dcb 100644 --- a/public/maps/var-kor-Hang-Latn-mr-1939.isc +++ b/public/maps/var-kor-Hang-Latn-mr-1939.isc @@ -1502,8 +1502,8 @@ stage main { } sub "ᅡ" "a" sub "ᅣ" "ya" - sub "ᅥ" "ŏ" - sub "ᅧ" "yŏ" + sub "ᅥ" "ŏ" + sub "ᅧ" "yŏ" sub "ᅩ" "o" sub "ᅭ" "yo" sub "ᅮ" "u" @@ -1518,7 +1518,7 @@ stage main { sub "ᅱ" "wi" sub "ᅴ" "ŭi" sub "ᅪ" "wa" - sub "ᅯ" "wŏ" + sub "ᅯ" "wŏ" sub "ᅫ" "wae" sub "ᅰ" "we" sub { diff --git a/scripts/generate-catalogue.mjs b/scripts/generate-catalogue.mjs index 6feec935..2970479f 100644 --- a/scripts/generate-catalogue.mjs +++ b/scripts/generate-catalogue.mjs @@ -45,6 +45,19 @@ function main() { const files = readdirSync(MAPS_DIR) .filter((f) => f.endsWith(".isc")) .sort() + // Invertibility verdicts from the maps repo's coverage ledger — merged + // per system so catalog pages can state lossless/lossy behavior. + let ledger = {} + try { + ledger = JSON.parse( + readFileSync( + resolve(MAPS_DIR, "..", "docs", "coverage", "invertibility-ledger.json"), + "utf8", + ), + ) + } catch { + console.warn("invertibility-ledger.json not found; omitting verdicts") + } const catalogue = {} let okCount = 0 const errors = [] @@ -53,7 +66,18 @@ function main() { try { const src = readFileSync(join(MAPS_DIR, f), "utf8") const doc = parseIsc(src, f) - catalogue[code] = buildEntry(doc) + const entry = buildEntry(doc) + const led = ledger[code] + if (led) { + entry.invertibility = { + verdict: led.verdict, + pairs: led.pairs, + context_rules: led.context_rules, + many_to_one: led.many_to_one, + one_to_many: led.one_to_many, + } + } + catalogue[code] = entry okCount++ } catch (e) { errors.push(`${f}: ${e.message}`) diff --git a/src/components/MapCatalogue.vue b/src/components/MapCatalogue.vue index f5499257..c43f3cd7 100644 --- a/src/components/MapCatalogue.vue +++ b/src/components/MapCatalogue.vue @@ -11,6 +11,14 @@ */ import { ref, computed, defineProps } from "vue" +interface Invertibility { + verdict: string + pairs: number + context_rules?: number + many_to_one: number + one_to_many: number +} + interface CatalogueEntry { code: string authority: string @@ -20,12 +28,19 @@ interface CatalogueEntry { year: string language?: string description?: string + invertibility?: Invertibility | null hasTest: boolean testInput: string | null testExpected: string | null liveDemoable: boolean } +const VERDICT_LABELS: Record = { + LOSSLESS_ONE_TO_ONE: "Lossless · 1:1", + LOSSY_MANY_TO_ONE: "Lossy · many-to-one", + CONTEXT_ONLY: "Context-only", +} + const props = defineProps<{ entries: CatalogueEntry[] authorities: string[] @@ -37,20 +52,26 @@ const search = ref("") const authorityFilter = ref("") const sourceFilter = ref("") const destFilter = ref("") +const verdictFilter = ref("") const onlyWithTests = ref(false) const onlyLiveDemoable = ref(false) const sortBy = ref<"authority" | "code" | "name">("authority") +const verdicts = computed(() => + [...new Set(props.entries.map((e) => e.invertibility?.verdict).filter(Boolean))].sort(), +) + const filtered = computed(() => { const q = search.value.trim().toLowerCase() let list = props.entries.filter((e) => { if (authorityFilter.value && e.authority !== authorityFilter.value) return false if (sourceFilter.value && e.sourceScript !== sourceFilter.value) return false if (destFilter.value && e.destinationScript !== destFilter.value) return false + if (verdictFilter.value && e.invertibility?.verdict !== verdictFilter.value) return false if (onlyWithTests.value && !e.hasTest) return false if (onlyLiveDemoable.value && !e.liveDemoable) return false if (q) { - const hay = `${e.code} ${e.name} ${e.authority}`.toLowerCase() + const hay = `${e.code} ${e.name} ${e.authority} ${e.description ?? ""}`.toLowerCase() if (!hay.includes(q)) return false } return true @@ -72,6 +93,7 @@ function clearFilters() { authorityFilter.value = "" sourceFilter.value = "" destFilter.value = "" + verdictFilter.value = "" onlyWithTests.value = false onlyLiveDemoable.value = false } @@ -82,6 +104,7 @@ const hasActiveFilters = computed( authorityFilter.value !== "" || sourceFilter.value !== "" || destFilter.value !== "" || + verdictFilter.value !== "" || onlyWithTests.value || onlyLiveDemoable.value, ) @@ -132,6 +155,18 @@ const hasActiveFilters = computed( +
+ +
+

{{ entry.name }}

{{ entry.code }} -
- {{ entry.sourceScript }} - - {{ entry.destinationScript }} +

{{ entry.description }}

+
+ + {{ VERDICT_LABELS[entry.invertibility.verdict] ?? entry.invertibility.verdict }} + + + {{ entry.sourceScript }} + + {{ entry.destinationScript }} +
{{ entry.testInput }} @@ -386,6 +432,35 @@ const hasActiveFilters = computed( padding: 0; word-break: break-all; } +.card-desc { + margin: 0.5rem 0 0; + font-size: 0.8125rem; + line-height: 1.45; + color: var(--color-stone); + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; +} +.card-meta { + display: flex; + align-items: center; + gap: 0.5rem; + margin-top: 0.5rem; + flex-wrap: wrap; +} +.tag-verdict { + font-family: var(--font-mono); + font-size: 0.6875rem; + letter-spacing: 0.04em; + padding: 0.125rem 0.5rem; + border: 1px solid var(--color-rule); + color: var(--color-stone); +} +.verdict-lossless_one_to_one { + border-color: var(--color-ochre); + color: var(--color-ochre); +} .card-flow { display: flex; align-items: center; @@ -393,7 +468,7 @@ const hasActiveFilters = computed( font-family: var(--font-mono); font-size: 0.75rem; color: var(--color-stone); - margin-top: 0.25rem; + margin-top: 0; } .card-flow .script { color: var(--color-ink); diff --git a/src/content/docs/Coverage_and_Gaps.adoc b/src/content/docs/Coverage_and_Gaps.adoc new file mode 100644 index 00000000..db6f5759 --- /dev/null +++ b/src/content/docs/Coverage_and_Gaps.adoc @@ -0,0 +1,62 @@ += Coverage and gaps + +Interscript ships a registry of authority-backed transliteration +systems. This page states what is covered today, what is not, and how +the gap list is tracked. Every claim here links to a source you can +check. + +== What is covered + +The map registry contains **318 systems** drawn from +https://github.com/interscript/maps[the maps repository] — each an +executable, test-carrying transliteration map with a named authority +and source document. Browse them on the +https://interscript.org/maps[map catalogue]; every system has its own +page with its description, source document, scripts, mapping counts, +invertibility class, a live in-browser preview, and its full rule +chart. + +Invertibility is measured per system and recorded in the +https://github.com/interscript/maps/tree/main/docs/coverage[coverage +ledger]: systems are classed as lossless one-to-one (reversible), +lossy many-to-one, or context-only. The counts are re-derived from the +maps themselves, not asserted. + +== What is not covered yet + +The open queue is tracked as work orders in +https://github.com/interscript/interscript-models/tree/main/TODO.sota[the +models repository's campaign ledger]. The remaining systems, by +source: + +* *DIN* — 1460-2 (Cyrillic, part 2), 31635 (Persian, Kurdish and Urdu + columns; the Arabic column is shipped), 31636 (Yiddish column; the + Hebrew column is shipped), 32708. +* *BSI PD 6505:1982* — the romanization of Korean (a mechanical BSI + system, not McCune-Reischauer); transcription from the scan is in + progress. +* *ISO* — ISO 9 non-Russian Cyrillic coverage check, ISO 259 Hebrew + letter table, ISO 7089/7098 Chinese pinyin, and the remaining ISO + 15919 Indic scripts. +* *ALA-LC* — the remaining systems of the ALA-LC romanization guide + beyond the 55 ALA-LC maps already in the registry, queued in + batches. +* *ICAO and UNGEGN* — current source documents need to be diffed + against the registry. + +== Neural lines with open targets + +The neural (learned) model lines and their open quality targets are +tracked in the same ledger. Where a line's next step depends on a +license or a dataset only the project owner can grant — additional +Hebrew vocalization data, commercial-license Urdu dictionaries, the +SEAlang and full Chuon Nath sources for Khmer — that gate is recorded +as owner-held and the line waits. + +== How to check any of this + +* Registry source: https://github.com/interscript/maps[maps repo] +* Coverage ledger: + https://github.com/interscript/maps/tree/main/docs/coverage[maps/docs/coverage] +* Campaign ledger (what is open, what shipped, what is blocked): + https://github.com/interscript/interscript-models/tree/main/TODO.sota[interscript-models/TODO.sota] diff --git a/src/data/maps-catalogue.json b/src/data/maps-catalogue.json index 83471b1b..6e6259f4 100644 --- a/src/data/maps-catalogue.json +++ b/src/data/maps-catalogue.json @@ -18,7 +18,14 @@ "Fukang", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 22411, + "context_rules": 5081, + "many_to_one": 396, + "one_to_many": 0 + } }, "alalc-amh-Ethi-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -39,7 +46,14 @@ "yazégenate kebere ba ʼiteyop̣eyāčene ṣaneto", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 268, + "context_rules": 32, + "many_to_one": 7, + "one_to_many": 0 + } }, "alalc-amh-Ethi-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -60,7 +74,14 @@ "yazégenate kebere ba ʼiteyop̣eyāčene ṣaneto", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-ara-Arab-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -81,7 +102,14 @@ "waḍ‘", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 360, + "context_rules": 22, + "many_to_one": 41, + "one_to_many": 39 + } }, "alalc-asm-Deva-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -102,7 +130,14 @@ "asamīẏā kabitā", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 78, + "context_rules": 39, + "many_to_one": 12, + "one_to_many": 0 + } }, "alalc-asm-Deva-Latn-2012": { "class": "Interscript::Node::MetaData", @@ -123,7 +158,14 @@ "rājẏika sbāsthẏa mantrī pīyusha hājarikāra biruddhe dākhila karā haiche ejāhāra.", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-aze-Arab-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -144,7 +186,14 @@ "Barakat", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 95, + "context_rules": 19, + "many_to_one": 9, + "one_to_many": 1 + } }, "alalc-aze-Cyrl-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -165,7 +214,14 @@ "Azărbaı̐jan dili", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 67, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 1 + } }, "alalc-bel-Cyrl-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -186,7 +242,14 @@ "Belarusʹ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 69, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 0 + } }, "alalc-ben-Beng-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -207,7 +270,14 @@ "āmāra sonāra bāṃlā, āmi tomāẏa bhālobāsi।\nciradina tomāra ākāśa, tomāra bātāsa, āmāra prāṇe bājāẏa bān̐śi॥\no mā, phāgune tora āmera bane ghrāṇe pāgala kare, mari hāẏa, hāẏa re—\no mā, aghrāṇe tora bharā kshete āmi kī dekhechi madhura hāsi॥\n\nkī śobhā, kī chāyaṛā go, kī sneha, kī māyaṛā go—\nkī ām̐cala bichāyaṛecha baṭera mūle, nadīra kūle kūle।\nmā, tora mukhera bāṇī āmāra kāne lāge sudhāra mato,\nmari hāẏa, hāẏa re—\nmā, tora badanakhāni malina hale, o mā, āmi naẏanajale bhāsi॥", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 76, + "context_rules": 40, + "many_to_one": 9, + "one_to_many": 0 + } }, "alalc-ben-Beng-Latn-2017": { "class": "Interscript::Node::MetaData", @@ -228,7 +298,14 @@ "rka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 53, + "context_rules": 0, + "many_to_one": 1, + "one_to_many": 1 + } }, "alalc-bul-Cyrl-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -249,7 +326,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 64, + "context_rules": 2, + "many_to_one": 1, + "one_to_many": 0 + } }, "alalc-div-Thaa-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -270,7 +354,14 @@ "maśaḫ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 48, + "context_rules": 28, + "many_to_one": 1, + "one_to_many": 0 + } }, "alalc-div-Thaa-Latn-2012": { "class": "Interscript::Node::MetaData", @@ -291,7 +382,14 @@ "maśaḫ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-ell-Grek-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -312,7 +410,14 @@ "Ena prama monon me parakinēse ki emena na grapsō oti toutēn tēn patrida tēn echomen oloi mazi, kai sophoi ki amatheis kai plousioi kai phtōchoi kai politikoi kai stratiōtikoi kai oi pleon mikroteroi anthrōpoi; osoi agōnistēkamen, analogōs o katheis, echomen na zēsomen edō. To loipon doulepsamen oloi mazi, na tēn phylamen ki oloi mazi kai na mēn legei oute o dynatos «egō» oute o adynatos. Xerete pote na legei o katheis «egō»? Otan agōnistei monos tou kai phkiasei ē chalasei, na legei «egō»; otan omōs agōnizontai polloi kai phkianoun, tote na lene «emeis». Eimaste eis to «emeis» ki ochi eis to «egō». Kai eis to exēs na mathomen gnōsē, an thelomen na phkiasomen chōrion, na zēsomen oloi mazi.\n\nGiannēs Makrygiannēs.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 74, + "context_rules": 21, + "many_to_one": 17, + "one_to_many": 0 + } }, "alalc-ell-Grek-Latn-2010": { "class": "Interscript::Node::MetaData", @@ -333,7 +438,14 @@ "Ena prama monon me parakinēse ki emena na grapsō oti toutēn tēn patrida tēn echomen oloi mazi, kai sophoi ki amatheis kai plousioi kai phtōchoi kai politikoi kai stratiōtikoi kai oi pleon mikroteroi anthrōpoi; osoi agōnistēkamen, analogōs o katheis, echomen na zēsomen edō. To loipon doulepsamen oloi mazi, na tēn phylamen ki oloi mazi kai na mēn legei oute o dynatos «egō» oute o adynatos. Xerete pote na legei o katheis «egō»? Otan agōnistei monos tou kai phkiasei ē chalasei, na legei «egō»; otan omōs agōnizontai polloi kai phkianoun, tote na lene «emeis». Eimaste eis to «emeis» ki ochi eis to «egō». Kai eis to exēs na mathomen gnōsē, an thelomen na phkiasomen chōrion, na zēsomen oloi mazi.\n\nGiannēs Makrygiannēs.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 74, + "context_rules": 25, + "many_to_one": 17, + "one_to_many": 0 + } }, "alalc-fas-Arab-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -354,7 +466,14 @@ "Dānā", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 88, + "context_rules": 20, + "many_to_one": 7, + "one_to_many": 0 + } }, "alalc-guj-Gujr-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -375,7 +494,14 @@ "amita śāhanȏ kȏrȏnā ripȏrṭa 2 ȏgasṭȇ pȏjhiṭiva āvyȏ hatȏ, tyārathī tȇmanuṃ svāsthya sāruṃ nathī", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 77, + "context_rules": 39, + "many_to_one": 13, + "one_to_many": 0 + } }, "alalc-guj-Gujr-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -396,7 +522,14 @@ "mȏrgana anȇ rasȇla phlȏpa rahyā", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-hin-Deva-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -417,7 +550,14 @@ "hama", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 91, + "context_rules": 5, + "many_to_one": 20, + "one_to_many": 0 + } }, "alalc-hin-Deva-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -438,7 +578,14 @@ "is cunăutīpūrṇ samay meṃ 'vark phrôm homa’ sāmāny ban cukā hai", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-kan-Kana-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -459,7 +606,14 @@ "karṇāṭaka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 83, + "context_rules": 40, + "many_to_one": 15, + "one_to_many": 0 + } }, "alalc-kan-Kana-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -480,7 +634,14 @@ "karṇāṭaka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-kat-Geok-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -501,7 +662,14 @@ "CIGNI", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 76, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-kat-Geok-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -522,7 +690,14 @@ "CIGNI", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-kat-Geor-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -543,7 +718,14 @@ "xaopʻse", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 41, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-kat-Geor-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -564,7 +746,14 @@ "xaopʻse", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-kor-Hang-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -585,7 +774,14 @@ "Ŭnha-ri", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-mal-Mlym-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -606,7 +802,14 @@ "cainayŭkŭketire lad̂ākŭkil sadāsajŭjaṃ; yuesilninŭnŭ 72,500 sigŭ–16 ṟaiphiḷ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 99, + "context_rules": 41, + "many_to_one": 16, + "one_to_many": 0 + } }, "alalc-mal-Mlym-Latn-2012": { "class": "Interscript::Node::MetaData", @@ -627,7 +830,14 @@ "bār kōḻa āviyāyi; makan māṇiye vŭyakŭtihatŭya naṭatŭtiyavaruṭe kūṭāratŭtil", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-mar-Deva-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -648,7 +858,14 @@ "ṭhaāṇae - jailahayaāta baudhavaāraī eka hajaāra raugaṇaāñcaī vaāḍha, tara jaṇaāñcayaā maṛitayaūcaī naonda", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 73, + "context_rules": 4, + "many_to_one": 8, + "one_to_many": 0 + } }, "alalc-mar-Deva-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -669,7 +886,14 @@ "kaoraonaācayaā laḍhaāīta paolaīsa thakalaeta, paṇa haimmata haralaelae naāhaīta; gaṛihamantarayaāṅkaḍaūna kaautauka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-mkd-Cyrl-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -690,7 +914,14 @@ "Opština Erdut", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 66, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-mkd-Cyrl-Latn-2013": { "class": "Interscript::Node::MetaData", @@ -711,7 +942,14 @@ "Opština Erdut", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 64, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-mon-Cyrl-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -732,7 +970,14 @@ "Êrdênêt Sum", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 0, + "many_to_one": 3, + "one_to_many": 0 + } }, "alalc-ori-Orya-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -753,7 +998,14 @@ "rka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 81, + "context_rules": 44, + "many_to_one": 11, + "one_to_many": 0 + } }, "alalc-ori-Orya-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -774,7 +1026,14 @@ "bihāra nirbācana: sandhẏā 6ṭā suddhā 53.54 pratiśata matadāna", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-pan-Guru-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -795,7 +1054,14 @@ "pañjaāba 'ca wadha raihaā khaudakaushaīāṃ daā raujhaāna", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 108, + "context_rules": 8, + "many_to_one": 14, + "one_to_many": 0 + } }, "alalc-pan-Guru-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -816,7 +1082,14 @@ "sawaāmaitawa yaojanaā tahaita jaāidaāda kaāraḍa waṇḍae", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-pli-Deva-Latn-2012": { "class": "Interscript::Node::MetaData", @@ -837,7 +1110,14 @@ "taena khao pana samayaena vaesaālaiyaā avaidaūrae kalanadagaāmao naāma atathai", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 53, + "context_rules": 4, + "many_to_one": 8, + "one_to_many": 0 + } }, "alalc-pra-Deva-Latn-2012": { "class": "Interscript::Node::MetaData", @@ -858,7 +1138,14 @@ "sṛṣṭisthitivināśānāṃ śaktibhūte sanātani", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-rus-Cyrl-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -879,7 +1166,14 @@ "Azov", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 67, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 0 + } }, "alalc-rus-Cyrl-Latn-2012": { "class": "Interscript::Node::MetaData", @@ -900,7 +1194,14 @@ "Azov", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 8, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-san-Deva-Latn-2012": { "class": "Interscript::Node::MetaData", @@ -921,7 +1222,14 @@ "pūrṇamadaḥ pūrṇamidaṃ pūrṇāt pūrṇmudacyate", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 66, + "context_rules": 38, + "many_to_one": 12, + "one_to_many": 0 + } }, "alalc-sin-Sinh-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -942,7 +1250,14 @@ "śīra laṃkāvē kīraḍāva itihāsayē ihaḷama tănakaṭa gēnanna kaṭayutu karanavā", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 89, + "context_rules": 43, + "many_to_one": 18, + "one_to_many": 0 + } }, "alalc-sin-Sinh-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -963,7 +1278,14 @@ "hiṭapu agrāmātya ranil vikramasiṃha aprēl 21 prahāraya sambanandhayen vimarśanaya karana janādhipati parīkṣaṇa komisama hamuvē deveni dinaṭat sākṣi labādīmaṭa pămiṇeyi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-srp-Cyrl-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -984,7 +1306,14 @@ "Opština Erdut", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 66, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-srp-Cyrl-Latn-2013": { "class": "Interscript::Node::MetaData", @@ -1005,7 +1334,14 @@ "Šuplja Stena", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 60, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-tam-Taml-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -1026,7 +1362,14 @@ "aḻintu pōṉa nakarattil , tolaintu pōṉa nāṉ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 1, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-tam-Taml-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -1047,7 +1390,14 @@ "malaiyāḷa naṭikar caṅkattiliruntu naṭikai pārvati tiṭīr vilakal.", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-tel-Telu-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -1068,7 +1418,14 @@ "tamiḷanāḍu", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 86, + "context_rules": 43, + "many_to_one": 13, + "one_to_many": 0 + } }, "alalc-tel-Telu-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -1089,7 +1446,14 @@ "tamiḷanāḍu", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-tir-Ethi-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -1110,7 +1474,14 @@ "yazégenate kebere ba ʼiteyop̣eyāčene ṣaneto", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 261, + "context_rules": 33, + "many_to_one": 6, + "one_to_many": 0 + } }, "alalc-tir-Ethi-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -1131,7 +1502,14 @@ "yazégenate kebere ba ʼiteyop̣eyāčene ṣaneto", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "alalc-ukr-Cyrl-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -1152,7 +1530,14 @@ "Avtonomna Respublika Krym", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 66, + "context_rules": 0, + "many_to_one": 1, + "one_to_many": 0 + } }, "alalc-ukr-Cyrl-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -1173,7 +1558,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "apcbg-bul-Cyrl-Latn-1995": { "class": "Interscript::Node::MetaData", @@ -1194,7 +1586,14 @@ "nunatak Abrit", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 64, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } }, "az-aze-Cyrl-Latn-1939": { "class": "Interscript::Node::MetaData", @@ -1215,7 +1614,14 @@ "Yuya", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 73, + "context_rules": 0, + "many_to_one": 3, + "one_to_many": 0 + } }, "az-aze-Cyrl-Latn-1958": { "class": "Interscript::Node::MetaData", @@ -1236,7 +1642,14 @@ "Azərbaycan əlifbası", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 12, + "context_rules": 0, + "many_to_one": 3, + "one_to_many": 2 + } }, "bas-rus-Cyrl-Latn-2017-bss": { "class": "Interscript::Node::MetaData", @@ -1257,7 +1670,14 @@ "Eh, troyka! ptitsa troyka, kto tebya vidumal? znat, u boykogo naroda\nti mogla tolko roditsya, v toy zemle, chto ne lyubit shutit, a\nrovnem-gladnem razmetnulas na polsveta, da i stupay schitat versti, poka\nne zaryabit tebe v ochi. I ne hitriy, kazhis, dorozhniy snaryad, ne\nzheleznim shvachen vintom, a naskoro zhivyem s odnim toporom da dolotom\nsnaryadil i sobral tebya yaroslavskiy rastoropniy muzhik. Ne v nemetskih\nbotfortah yamshchik: boroda da rukavitsi, i sidit chert znaet na chem; a\nprivstal, da zamahnulsya, da zatyanul pesnyu — koni vihrem, spitsi v\nkolesah smeshalis v odin gladkiy krug, tolko drognula doroga, da vskriknul\nv ispuge ostanovivshiysya peshehod — i von ona poneslas, poneslas,\nponeslas!\n\nN.V. Gogol", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 66, + "context_rules": 16, + "many_to_one": 5, + "one_to_many": 0 + } }, "bas-rus-Cyrl-Latn-2017-oss": { "class": "Interscript::Node::MetaData", @@ -1278,7 +1698,14 @@ "`Eh, troyka! ptitsa troyka, kto tebya v`idumal? znat', u boykogo naroda t`i mogla tol'ko rodit'sya, v toy zemle, chto ne lyubit shutit', a rovnem-gladnem razmetnulas' na polsveta, da i stupay schitat' verst`i, poka ne zaryabit tebe v ochi. I ne hitr`iy, kazhis', dorozhn`iy snaryad, ne zhelezn`im shvachen vintom, a naskoro zhivy``em s odnim toporom da dolotom snaryadil i sobral tebya yaroslavskiy rastoropn`iy muzhik. Ne v nemetskih botfortah yamshchik: boroda da rukavits`i, i sidit ch``ert znaet na ch``em; a privstal, da zamahnulsya, da zatyanul pesnyu — koni vihrem, spits`i v kolesah smeshalis' v odin gladkiy krug, tol'ko drognula doroga, da vskriknul v ispuge ostanovivshiysya peshehod — i von ona poneslas', poneslas', poneslas'!\nN.V. Gogol'", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 64, + "context_rules": 18, + "many_to_one": 1, + "one_to_many": 0 + } }, "bgn-jpn-Hrkt-Latn-1962": { "class": "Interscript::Node::MetaData", @@ -1299,7 +1726,14 @@ "shimbashi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 12, + "context_rules": 13, + "many_to_one": 6, + "one_to_many": 0 + } }, "bgn-kor-Hang-Latn-1943": { "class": "Interscript::Node::MetaData", @@ -1320,7 +1754,14 @@ "Sŏul", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgn-kor-Kore-Latn-1943": { "class": "Interscript::Node::MetaData", @@ -1341,7 +1782,14 @@ "Sŏul", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgna-bul-Cyrl-Latn-2006": { "class": "Interscript::Node::MetaData", @@ -1362,7 +1810,14 @@ "nunatak Abrit", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgna-bul-Cyrl-Latn-2009": { "class": "Interscript::Node::MetaData", @@ -1383,7 +1838,42 @@ "nunatak Abrit", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } + }, + "bgnpcgn-ady-Cyrl-Latn-2012": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2012", + "language": "iso-639-2:ady", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Romanization of Adyghe (2012)", + "description": "The BGN/PCGN system for Adyghe is designed for use in romanizing names written in the\n Adyghe Cyrillic alphabet. Adyghe, a language of the north-western Caucasian family, is\n principally spoken in Russia's republic of Adygeya and has been written in a modified\n Cyrillic script since 1938. Also known as West Circassian, Adyghe is notable for its\n rich density of consonant phonemes and corresponding paucity of vowels. Adyghe letters\n are addressed in the romanizations as per their articulation: glottalised consonants\n are marked with an apostrophe, labialized consonants with w, and retroflex consonants\n with an underbar. Phonemes shared with Kabardian are represented as per the\n BGN/PCGN Kabardian Romanization System.", + "url": "https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names", + "creation_date": "2012", + "nonstandard": {} + }, + "test": [ + "А", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 134, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } }, "bgnpcgn-amh-Ethi-Latn-1967": { "class": "Interscript::Node::MetaData", @@ -1404,7 +1894,14 @@ "yezēgnet kbr be ītyop’yachn ts’ento", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 246, + "context_rules": 40, + "many_to_one": 21, + "one_to_many": 0 + } }, "bgnpcgn-ara-Arab-Latn-1956": { "class": "Interscript::Node::MetaData", @@ -1425,7 +1922,14 @@ "Qur’ān", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 185, + "context_rules": 19, + "many_to_one": 33, + "one_to_many": 0 + } }, "bgnpcgn-arm-Armn-Latn-1981": { "class": "Interscript::Node::MetaData", @@ -1446,7 +1950,70 @@ "Hayastan", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 78, + "context_rules": 0, + "many_to_one": 6, + "one_to_many": 0 + } + }, + "bgnpcgn-av-Cyrl-Latn-2011": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2011", + "language": "iso-639-2:ava", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Romanization of Avar (BGN/PCGN 2011 System)", + "description": "The BGN/PCGN system for Avar is designed for use in romanizing names written\n in the Avar Cyrillic alphabet. Avar is a consonant-rich north-eastern Caucasian language,\n spoken principally in Russia’s republic of Dagestan. It has been written in a modified\n Cyrillic script since 1938 and, as other Caucasian languages, features glottalised\n consonants, and though these are not marked with a uniform marker in Avar Cyrillic, an\n apostrophe denotes the glottalised form of consonants in this romanization table.", + "url": "https://geonames.nga.mil/gns/html/Romanization/ROMANIZATION%20OF%20AVAR.pdf", + "creation_date": "2011", + "nonstandard": {} + }, + "test": [ + "МагӀарул", + "Maġarul", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 94, + "context_rules": 4, + "many_to_one": 6, + "one_to_many": 0 + } + }, + "bgnpcgn-ava-Cyrl-Latn-2011": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2011", + "language": "iso-639-2:ava", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Romanization of Avar (2011)", + "description": "The BGN/PCGN system for Avar is designed for use in romanizing names written in the\n Avar Cyrillic alphabet. Avar is a consonant-rich north-eastern Caucasian language,\n spoken principally in Russia's republic of Dagestan. It has been written in a modified\n Cyrillic script since 1938 and, as other Caucasian languages, features glottalised\n consonants; an apostrophe denotes the glottalised form of consonants in this\n romanization table.", + "url": "https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names", + "creation_date": "2011", + "nonstandard": {} + }, + "test": [ + "А", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 98, + "context_rules": 2, + "many_to_one": 6, + "one_to_many": 0 + } }, "bgnpcgn-aze-Cyrl-Latn-1993": { "class": "Interscript::Node::MetaData", @@ -1467,7 +2034,14 @@ "Azərbaycan əlifbası", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 64, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-bak-Cyrl-Latn-2007": { "class": "Interscript::Node::MetaData", @@ -1488,7 +2062,14 @@ "Wasyılğa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 84, + "context_rules": 2, + "many_to_one": 4, + "one_to_many": 0 + } }, "bgnpcgn-bal-Arab-Latn-2008": { "class": "Interscript::Node::MetaData", @@ -1509,7 +2090,14 @@ "Benṭag", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 129, + "context_rules": 0, + "many_to_one": 16, + "one_to_many": 1 + } }, "bgnpcgn-bel-Cyrl-Latn-1979": { "class": "Interscript::Node::MetaData", @@ -1530,7 +2118,14 @@ "Anton", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 79, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } }, "bgnpcgn-bul-Cyrl-Latn-1952": { "class": "Interscript::Node::MetaData", @@ -1551,7 +2146,14 @@ "Sofiya", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 67, + "context_rules": 18, + "many_to_one": 3, + "one_to_many": 0 + } }, "bgnpcgn-bul-Cyrl-Latn-2013": { "class": "Interscript::Node::MetaData", @@ -1572,7 +2174,14 @@ "Sofia", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 1, + "context_rules": 2, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-che-Cyrl-Latn-2008": { "class": "Interscript::Node::MetaData", @@ -1593,7 +2202,70 @@ "khant", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 94, + "context_rules": 4, + "many_to_one": 6, + "one_to_many": 3 + } + }, + "bgnpcgn-chv-Cyrl-Latn-2011": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2011", + "language": "iso-639-2:chv", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Romanization of Chuvash (2011)", + "description": "The BGN/PCGN system for Chuvash is designed for use in romanizing names written in the\n Chuvash Cyrillic alphabet. Chuvash is an official language within Chuvashiya, one of the\n republics of the Russian Federation.", + "url": "https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names", + "creation_date": "2011", + "nonstandard": {} + }, + "test": [ + "А", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 76, + "context_rules": 4, + "many_to_one": 6, + "one_to_many": 0 + } + }, + "bgnpcgn-cv-Cyrl-Latn-2011": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2011", + "language": "iso-639-2:chv", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Romanization of Chuvash (BGN/PCGN 2011 System)", + "description": "The BGN/PCGN system for Chuvash is designed for use in romanizing names written\n in the Chuvash Cyrillic alphabet. Chuvash is an official language within Chuvashiya, one of\n the republics of the Russian Federation.", + "url": "https://geonames.nga.mil/gns/html/Romanization/ROMANIZATION%20OF%20CHUVASH.pdf", + "creation_date": "2011", + "nonstandard": {} + }, + "test": [ + "Чӑвашла", + "Chăvashla", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 74, + "context_rules": 8, + "many_to_one": 4, + "one_to_many": 0 + } }, "bgnpcgn-deu-Latn-Latn-2000": { "class": "Interscript::Node::MetaData", @@ -1614,7 +2286,14 @@ "Dein weisses Fleisch erregt mich so", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 7, + "context_rules": 4, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-div-Thaa-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -1635,7 +2314,14 @@ "’iruga’i", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 36, + "context_rules": 4, + "many_to_one": 2, + "one_to_many": 0 + } }, "bgnpcgn-div-Thaa-Latn-1988": { "class": "Interscript::Node::MetaData", @@ -1656,7 +2342,14 @@ "irugai", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 14, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-ell-Grek-Latn-1962": { "class": "Interscript::Node::MetaData", @@ -1677,7 +2370,14 @@ "Éna práma mónon me parakínise ki eména na grápso óti toútin tin patrídha tin ékhomen óloi mazí, kai sofoí ki amathís kai ploúsioi kai ftokhoí kai politikoí kai stratiotikoí kai oi pléon mikróteroi ánthropoi; ósoi agonistíkamen, analógos o kathís, ékhomen na zísomen edhó. To loipón dhoulépsamen óloi mazí, na tin filámen ki óloi mazí kai na min léyi oúte o dhinatós «egó» oúte o adhínatos. Xérete póte na léyi o kathís «egó»? Ótan agonistí mónos tou kai fkiási í khalási, na léyi «egó»; ótan ómos agonízondai polloí kai fkiánoun, tóte na léne «emís». Ímaste is to «emís» ki ókhi is to «egó». Kai is to exís na máthomen gnósi, an thélomen na fkiásomen khorión, na zísomen óloi mazí.\n\nYiánnis Makriyiánnis.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 92, + "context_rules": 61, + "many_to_one": 17, + "one_to_many": 1 + } }, "bgnpcgn-ell-Grek-Latn-1996": { "class": "Interscript::Node::MetaData", @@ -1698,7 +2398,14 @@ "Éna práma mónon me parakínise ki eména na grápso óti toútin tin patrída tin échomen óloi mazí, kai sofoí ki amatheís kai ploúsioi kai ftochoí kai politikoí kai stratiotikoí kai oi pléon mikróteroi ánthropoi; ósoi agonistíkamen, analógos o katheís, échomen na zísomen edó. To loipón doulépsamen óloi mazí, na tin fylámen ki óloi mazí kai na min légei oúte o dynatós «egó» oúte o adýnatos. Xérete póte na légei o katheís «egó»? Ótan agonisteí mónos tou kai fkiásei í chalásei, na légei «egó»; ótan ómos agonízontai polloí kai fkiánoun, tóte na léne «emeís». Eímaste eis to «emeís» ki óchi eis to «egó». Kai eis to exís na máthomen gnósi, an thélomen na fkiásomen chorión, na zísomen óloi mazí.\n\nGiánnis Makrygiánnis.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-fao-Latn-Latn-1964": { "class": "Interscript::Node::MetaData", @@ -1719,7 +2426,14 @@ "Fyrirgefdhu", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 4, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-fao-Latn-Latn-1968": { "class": "Interscript::Node::MetaData", @@ -1740,7 +2454,14 @@ "Fyrirgefdhu", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-fas-Arab-Latn-1956": { "class": "Interscript::Node::MetaData", @@ -1761,7 +2482,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 30, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } }, "bgnpcgn-isl-Latn-Latn-1964": { "class": "Interscript::Node::MetaData", @@ -1782,7 +2510,14 @@ "Fyrirgefdhu", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 4, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-isl-Latn-Latn-1968": { "class": "Interscript::Node::MetaData", @@ -1803,7 +2538,42 @@ "Fyrirgefdhu", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } + }, + "bgnpcgn-iu-Cans-Latn-2013": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2013", + "language": "iso-639-2:iu", + "source_script": "Cans", + "destination_script": "Latn", + "name": "Romanization of Inuktitut (2013 Agreement)", + "description": "The BGN/PCGN system for Inuktitut romanizes Canadian Aboriginal Syllabics\n (qaniujaaqpait) used for geographic names in Nunavut. The syllabic chart was\n approved by the Inuit Cultural Institute at Arviat in 1976. The BGN/PCGN\n agreement is dated 2013 and was checked for validity and accuracy in June 2018.", + "url": "https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names", + "creation_date": "2013", + "nonstandard": {} + }, + "test": [ + "ᐃ", + "I", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 114, + "context_rules": 0, + "many_to_one": 1, + "one_to_many": 0 + } }, "bgnpcgn-jpn-Hrkt-Latn-1976": { "class": "Interscript::Node::MetaData", @@ -1824,7 +2594,14 @@ "Tegata-karamiden", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 78, + "context_rules": 0, + "many_to_one": 37, + "one_to_many": 0 + } }, "bgnpcgn-kat-Geor-Latn-1981": { "class": "Interscript::Node::MetaData", @@ -1845,7 +2622,14 @@ "hebudi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 36, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 0 + } }, "bgnpcgn-kat-Geor-Latn-2009": { "class": "Interscript::Node::MetaData", @@ -1866,7 +2650,14 @@ "tbilisi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-kaz-Cyrl-Latn-1979": { "class": "Interscript::Node::MetaData", @@ -1887,7 +2678,42 @@ "Öngirek", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 84, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } + }, + "bgnpcgn-kbd-Cyrl-Latn-2011": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2011", + "language": "iso-639-2:kbd", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Romanization of Kabardian (2011)", + "description": "The BGN/PCGN system for Kabardian is designed for use in romanizing names written in the\n Kabardian Cyrillic alphabet. Kabardian, of the north-western Caucasian language family, is\n principally spoken in Russia's republics of Kabardino-Balkariya and Karachayevo-Cherkesiya\n and has been written in a modified Cyrillic script since 1936. Also known as East\n Circassian, Kabardian is notable for its rich density of consonant phonemes (most\n commentators agree on an inventory of 47 or 48) and corresponding paucity of vowels.\n Kabardian letters are addressed in the romanizations as per their articulation:\n glottalised consonants are marked with an apostrophe, and labialized consonants with w.", + "url": "https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names", + "creation_date": "2011", + "nonstandard": {} + }, + "test": [ + "А", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 116, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } }, "bgnpcgn-kir-Cyrl-Latn-1979": { "class": "Interscript::Node::MetaData", @@ -1908,7 +2734,14 @@ "Ysyk-Köl Oblusu", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 72, + "context_rules": 0, + "many_to_one": 6, + "one_to_many": 0 + } }, "bgnpcgn-kor-Hang-Latn-kn-1945": { "class": "Interscript::Node::MetaData", @@ -1929,7 +2762,14 @@ "P’yŏngyang", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 10, + "context_rules": 28, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-kor-Hang-Latn-rok-2011": { "class": "Interscript::Node::MetaData", @@ -1950,7 +2790,14 @@ "Bulguksa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-kor-Kore-Latn-rok-2011": { "class": "Interscript::Node::MetaData", @@ -1971,7 +2818,42 @@ "Bulguksa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } + }, + "bgnpcgn-krc-Cyrl-Latn-2008": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2008", + "language": "iso-639-2:krc", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Table of Correspondences for Karachay-Balkar (Cyrillic-Roman) (2008 Agreement)", + "description": "Karachay-Balkar is an official language within Karachayevo-Cherkesiya and\n Kabardino-Balkariya, two of the republics of the Russian Federation. It will normally\n be encountered in Cyrillic script, in which case it should be romanized by means of\n the Cyrillic-Roman table of correspondences given below.", + "url": "https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names", + "creation_date": "2008", + "nonstandard": {} + }, + "test": [ + "А", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 79, + "context_rules": 2, + "many_to_one": 7, + "one_to_many": 0 + } }, "bgnpcgn-kur-Arab-Latn-2007": { "class": "Interscript::Node::MetaData", @@ -1992,7 +2874,14 @@ "Kanî Masê", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 49, + "context_rules": 6, + "many_to_one": 10, + "one_to_many": 4 + } }, "bgnpcgn-mkd-Cyrl-Latn-1981": { "class": "Interscript::Node::MetaData", @@ -2013,7 +2902,14 @@ "Đol", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 62, + "context_rules": 4, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-mkd-Cyrl-Latn-2013": { "class": "Interscript::Node::MetaData", @@ -2034,7 +2930,14 @@ "Ǵenovi Livaǵe", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 62, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-mon-Cyrl-Latn-1964": { "class": "Interscript::Node::MetaData", @@ -2055,7 +2958,14 @@ "Erdenet Sum", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 4, + "many_to_one": 1, + "one_to_many": 0 + } }, "bgnpcgn-nep-Deva-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -2076,7 +2986,70 @@ "lekhn", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 75, + "context_rules": 4, + "many_to_one": 13, + "one_to_many": 0 + } + }, + "bgnpcgn-os-Cyrl-Latn-2009": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2009", + "language": "iso-639-2:oss", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Romanization of Ossetian (BGN/PCGN 2009 System)", + "description": "The BGN/PCGN system for Ossetian is designed for use in romanizing names written\n in the Ossetian Cyrillic alphabet. Ossetian is a member of the north-eastern Iranian language\n group and has over half a million speakers. It has principally been written in a modified\n Cyrillic alphabet though a Roman alphabet was used between 1923 and 1938. The BGN/PCGN\n Romanization System is derived from the correspondences between that Roman alphabet and\n the Cyrillic alphabet used for Ossetian today, with modifications to suit an\n English-language user.", + "url": "https://geonames.nga.mil/gns/html/Romanization/ROMANIZATION%20OF%20OSSETIAN.pdf", + "creation_date": "2009", + "nonstandard": {} + }, + "test": [ + "Дзау", + "Dzaw", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 98, + "context_rules": 4, + "many_to_one": 6, + "one_to_many": 0 + } + }, + "bgnpcgn-oss-Cyrl-Latn-2009": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2009", + "language": "iso-639-2:oss", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Romanization of Ossetian (2009)", + "description": "The BGN/PCGN system for Ossetian is designed for use in romanizing names written in the\n Ossetian Cyrillic alphabet. Ossetian is a member of the north-eastern Iranian language\n group and has over half a million speakers. It has principally been written in a modified\n Cyrillic alphabet, though a Roman alphabet was used between 1923 and 1938. The\n BGN/PCGN Romanization System is derived from the correspondences between that Roman\n alphabet and the Cyrillic alphabet used for Ossetian today, with modifications to suit\n an English-language user.", + "url": "https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names", + "creation_date": "2009", + "nonstandard": {} + }, + "test": [ + "А", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 86, + "context_rules": 6, + "many_to_one": 6, + "one_to_many": 0 + } }, "bgnpcgn-per-Arab-Latn-1958": { "class": "Interscript::Node::MetaData", @@ -2097,7 +3070,14 @@ "Anjīreh", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 81, + "context_rules": 7, + "many_to_one": 9, + "one_to_many": 0 + } }, "bgnpcgn-prs-Arab-Latn-2007": { "class": "Interscript::Node::MetaData", @@ -2118,7 +3098,14 @@ "Baghlān", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 114, + "context_rules": 19, + "many_to_one": 12, + "one_to_many": 0 + } }, "bgnpcgn-prs-Arab-Latn-yaghoubi": { "class": "Interscript::Node::MetaData", @@ -2139,7 +3126,14 @@ "baghlān", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 98, + "context_rules": 24, + "many_to_one": 13, + "one_to_many": 4 + } }, "bgnpcgn-pus-Arab-Latn-1968": { "class": "Interscript::Node::MetaData", @@ -2160,7 +3154,14 @@ "Baghlān", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 20, + "context_rules": 1, + "many_to_one": 1, + "one_to_many": 0 + } }, "bgnpcgn-ron-Cyrl-Latn-2002": { "class": "Interscript::Node::MetaData", @@ -2181,7 +3182,14 @@ "Bună diminea'ţa!", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 62, + "context_rules": 15, + "many_to_one": 3, + "one_to_many": 0 + } }, "bgnpcgn-rue-Cyrl-Latn-2016": { "class": "Interscript::Node::MetaData", @@ -2202,7 +3210,14 @@ "rusyn'skyj yazyk", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 0, + "many_to_one": 3, + "one_to_many": 0 + } }, "bgnpcgn-rus-Cyrl-Latn-1947": { "class": "Interscript::Node::MetaData", @@ -2223,7 +3238,42 @@ "Vybory deputatov Gosudarstvennoy Dumy Federal’nogo Sobraniya Rossiyskoy Federatsii sed’mogo sozyva\nData golosovaniya: 18.09.2016\n\nNaimenovaniye Izbiratel’noy komissii: TSIK Rossii\n\nSvodnaya tablitsa rezul’tatov vyborov po federal’nomu izbiratel’nomu okrugu\n\n\nChislo izbirateley, vnesennykh v spisok izbirateley na moment okonchaniya golosovaniya\nChislo izbiratel’nykh byulleteney, poluchennykh uchastkovoy izbiratel’noy komissiyey\nChislo izbiratel’nykh byulleteney, vydannykh izbiratelyam, progolosovavshim dosrochno\nChislo izbiratel’nykh byulleteney, vydannykh v pomeshchenii dlya golosovaniya v den’ golosovaniya\nChislo izbiratel’nykh byulleteney, vydannykh vne pomeshcheniya dlya golosovaniya v den’ golosovaniya\nChislo pogashennykh izbiratel’nykh byulleteney\nChislo izbiratel’nykh byulleteney, soderzhashchikhsya v perenosnykh yashchikakh dlya golosovaniya\nChislo izbiratel’nykh byulleteney, soderzhashchikhsya v statsionarnykh yashchikakh dlya golosovaniya\nChislo nedeystvitel’nykh izbiratel’nykh byulleteney\nChislo deystvitel’nykh izbiratel’nykh byulleteney\nChislo otkrepitel’nykh udostovereniy, poluchennykh uchastkovoy izbiratel’noy komissiyey\nChislo otkrepitel’nykh udostovereniy, vydannykh na izbiratel’nom uchastke do dnya golosovaniya\nChislo izbirateley, progolosovavshikh po otkrepitel’nym udostovereniyam na izbiratel’nom uchastke\nChislo pogashennykh neispol’zovannykh otkrepitel’nykh udostovereniy\nChislo otkrepitel’nykh udostovereniy, vydannykh izbiratelyam territorial’noy izbiratel’noy komissiyey\nChislo utrachennykh otkrepitel’nykh udostovereniy\nChislo utrachennykh izbiratel’nykh byulleteney\nChislo izbiratel’nykh byulleteney, ne uchtennykh pri poluchenii\n1. VSEROSSIYSKAYA POLITICHESKAYA PARTIYA \"RODINA\"\n2. Politicheskaya partiya KOMMUNISTICHESKAYA PARTIYA KOMMUNISTY ROSSII\n3. Politicheskaya partiya \"Rossiyskaya partiya pensionerov za spravedlivost’\"\n4. Vserossiyskaya politicheskaya partiya \"YEDINAYA ROSSIYA\"\n5. Politicheskaya partiya \"Rossiyskaya ekologicheskaya partiya \"Zelenyye\"\n6. Politicheskaya partiya \"Grazhdanskaya Platforma\"\n7. Politicheskaya partiya LDPR - Liberal’no-demokraticheskaya partiya Rossii\n8. Politicheskaya partiya \"Partiya narodnoy svobody\" (PARNAS)\n9. Vserossiyskaya politicheskaya partiya \"PARTIYA ROSTA\"\n10. Obshchestvennaya organizatsiya Vserossiyskaya politicheskaya partiya \"Grazhdanskaya Sila\"\n11. Politicheskaya partiya \"Rossiyskaya ob\"yedinennaya demokraticheskaya partiya \"YABLOKO\"\n12. Politicheskaya partiya \"KOMMUNISTICHESKAYA PARTIYA ROSSIYSKOY FEDERATSII\"\n13. Politicheskaya partiya \"PATRIOTY ROSSII\"\n14. Politicheskaya partiya SPRAVEDLIVAYA ROSSIYA\n\nDannyye okruzhnykh izbiratel’nykh komissiy o chisle otkrepitel’nykh udostovereniy\n\n\nChislo otkrepitel’nykh udostovereniy, poluchennykh okruzhnoy izbiratel’noy komissiyey\nChislo otkrepitel’nykh udostovereniy, vydannykh territorial’nym izbiratel’nym komissiyam\nChislo neispol’zovannykh otkrepitel’nykh udostovereniy, pogashennykh okruzhnoy izbiratel’noy komissiyey\nChislo otkrepitel’nykh udostovereniy, utrachennykh v okruzhnoy izbiratel’noy komissii", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 64, + "context_rules": 24, + "many_to_one": 5, + "one_to_many": 0 + } + }, + "bgnpcgn-sah-Cyrl-Latn-2012": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2012", + "language": "iso-639-2:sah", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Romanization of Yakut (2012)", + "description": "Yakut, or Sakha, is a Turkic language spoken by the Yakut people of the Sakha\n (Yakutiya) Republic of the Russian Federation. The BGN/PCGN system romanizes names\n written in the Yakut Cyrillic alphabet.", + "url": "https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names", + "creation_date": "2012", + "nonstandard": {} + }, + "test": [ + "А", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 84, + "context_rules": 4, + "many_to_one": 8, + "one_to_many": 0 + } }, "bgnpcgn-sme-Latn-Latn-1984": { "class": "Interscript::Node::MetaData", @@ -2244,7 +3294,14 @@ "adjágas", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 2, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-srp-Cyrl-Latn-1962": { "class": "Interscript::Node::MetaData", @@ -2265,7 +3322,14 @@ "Šuplja Stena", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-srp-Cyrl-Latn-2005": { "class": "Interscript::Node::MetaData", @@ -2286,7 +3350,42 @@ "Šuplja Stena", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 60, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } + }, + "bgnpcgn-syc-Syrc-Latn-2011": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2011", + "language": "iso-639-2:syc", + "source_script": "Syrc", + "destination_script": "Latn", + "name": "Romanization System for Modern Syriac Script (BGN/PCGN 2011 System)", + "description": "The modern Syriac script is used today by Assyrian writers of the neo-Aramaic language.\n This Romanization System may be applied to any toponyms written in this script as may be\n encountered in parts of northern Iraq, Syria, northern Iran and eastern Turkey. The\n Neo-Aramaic language has a degree of locally official status within Iraq, and accordingly\n some bilingual Arabic and modern Syriac signage may be encountered.\n\n The script is closely aligned to that of both Hebrew and Arabic, and, as these, is written\n from right to left. In this Romanization System, “strong” consonants have been marked with\n a sub-dot so as not to give a closer visual relation to either Arabic (which marks such\n consonants with a cedilla) or Hebrew (which marks these with an underbar). The equivalences\n where they exist in the Arabic and Hebrew scripts have also been shown only for a guide to\n the cognate root.", + "url": "https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/693736/ROMANIZATION_OF_MODERN_SYRIAC.pdf", + "creation_date": "2011", + "nonstandard": {} + }, + "test": [ + "ܒܝܬ", + "byt", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 7, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-tat-Cyrl-Latn-2007": { "class": "Interscript::Node::MetaData", @@ -2307,7 +3406,14 @@ "Ğil’miew", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 68, + "context_rules": 27, + "many_to_one": 4, + "one_to_many": 0 + } }, "bgnpcgn-tgk-Cyrl-Latn-1994": { "class": "Interscript::Node::MetaData", @@ -2328,7 +3434,42 @@ "Tamomi odamon ozod ba dunyo meoyand va az lihozi manzilatu huquq bo ham barobarand.\nHama sohibi aqlu vijdonand, boyad nisbat ba yakdigar barodarvor munosabat namoyand.", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 78, + "context_rules": 4, + "many_to_one": 6, + "one_to_many": 0 + } + }, + "bgnpcgn-tha-Thai-Latn-2002": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2002", + "language": "iso-639-2:tha", + "source_script": "Thai", + "destination_script": "Latn", + "name": "BGN/PCGN 2002 agreement — Romanization of Thai (Royal Institute of Thailand system)", + "description": "", + "url": "https://www.gov.uk/government/publications/romanization-systems", + "creation_date": "2000", + "nonstandard": {} + }, + "test": [ + "ภาษาไทย", + "phasathai", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 109, + "context_rules": 0, + "many_to_one": 19, + "one_to_many": 1 + } }, "bgnpcgn-tir-Ethi-Latn-2007": { "class": "Interscript::Node::MetaData", @@ -2349,7 +3490,14 @@ "yeziegĭnetĭ kĭbĭrĭ be ’itĭyop’ĭyachĭnĭ ts’enĭto", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 276, + "context_rules": 41, + "many_to_one": 16, + "one_to_many": 0 + } }, "bgnpcgn-tuk-Cyrl-Latn-1979": { "class": "Interscript::Node::MetaData", @@ -2370,7 +3518,14 @@ "Ashgabat", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 74, + "context_rules": 4, + "many_to_one": 5, + "one_to_many": 0 + } }, "bgnpcgn-tuk-Cyrl-Latn-1993": { "class": "Interscript::Node::MetaData", @@ -2391,7 +3546,42 @@ "Aşgabat", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 30, + "context_rules": 2, + "many_to_one": 1, + "one_to_many": 0 + } + }, + "bgnpcgn-udm-Cyrl-Latn-2011": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bgnpcgn", + "id": "2011", + "language": "iso-639-2:udm", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "Romanization of Udmurt (2011)", + "description": "The BGN/PCGN system for Udmurt is designed for use in romanizing names written in the\n Udmurt Cyrillic alphabet. Udmurt (sometimes known as Votyak) is a member of the Permian\n branch of the Finno-Ugric languages and is an official language alongside Russian in the\n Russian Federation's republic of Udmurtiya; it has existed in written form since the late\n 18th century, and first appeared in its present Cyrillic orthography in 1905.", + "url": "https://www.gov.uk/government/organisations/permanent-committee-on-geographical-names", + "creation_date": "2011", + "nonstandard": {} + }, + "test": [ + "А", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 76, + "context_rules": 2, + "many_to_one": 6, + "one_to_many": 0 + } }, "bgnpcgn-ukr-Cyrl-Latn-1965": { "class": "Interscript::Node::MetaData", @@ -2412,7 +3602,14 @@ "Avdiyivs’ka Mis’krada", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 67, + "context_rules": 0, + "many_to_one": 3, + "one_to_many": 0 + } }, "bgnpcgn-ukr-Cyrl-Latn-2019": { "class": "Interscript::Node::MetaData", @@ -2433,7 +3630,14 @@ "Alushta", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 1, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "bgnpcgn-urd-Arab-Latn-2007": { "class": "Interscript::Node::MetaData", @@ -2454,7 +3658,14 @@ "Pālīr", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 107, + "context_rules": 19, + "many_to_one": 10, + "one_to_many": 2 + } }, "bgnpcgn-uzb-Cyrl-Latn-1979": { "class": "Interscript::Node::MetaData", @@ -2475,7 +3686,14 @@ "Ŭzbek yozuwi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 18, + "many_to_one": 3, + "one_to_many": 0 + } }, "bgnpcgn-uzb-Cyrl-Latn-2000": { "class": "Interscript::Node::MetaData", @@ -2496,7 +3714,14 @@ "O‘zbek yozuwi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 14, + "context_rules": 2, + "many_to_one": 1, + "one_to_many": 0 + } }, "bgnpcgn-zho-Hans-Latn-1979": { "class": "Interscript::Node::MetaData", @@ -2517,7 +3742,14 @@ "zhongguo", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 7341, + "context_rules": 3, + "many_to_one": 384, + "one_to_many": 3 + } }, "bis-asm-Beng-Latn-13194-1991": { "class": "Interscript::Node::MetaData", @@ -2538,7 +3770,14 @@ "asmīẏā kbitā", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 68, + "context_rules": 5, + "many_to_one": 14, + "one_to_many": 0 + } }, "bis-ben-Beng-Latn-13194-1991": { "class": "Interscript::Node::MetaData", @@ -2559,7 +3798,14 @@ "ṭikā", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 67, + "context_rules": 5, + "many_to_one": 14, + "one_to_many": 0 + } }, "bis-dev-Deva-Latn-13194-1991": { "class": "Interscript::Node::MetaData", @@ -2580,7 +3826,14 @@ "hm", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 83, + "context_rules": 5, + "many_to_one": 14, + "one_to_many": 0 + } }, "bis-guj-Gujr-Latn-13194-1991": { "class": "Interscript::Node::MetaData", @@ -2601,7 +3854,14 @@ "amit śāhnŏ kŏrŏnā ripŏrṭ 2 ŏgsṭē pŏjhiṭiv āvyŏ htŏ, tyārthī tēmnuṃ svāsthy sāruṃ nthī", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 77, + "context_rules": 5, + "many_to_one": 13, + "one_to_many": 0 + } }, "bis-kan-Kana-Latn-13194-1991": { "class": "Interscript::Node::MetaData", @@ -2622,7 +3882,14 @@ "īg vairl āguttide kṅgnā rṇāvut hḷēy viḍiyō", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 72, + "context_rules": 5, + "many_to_one": 13, + "one_to_many": 0 + } }, "bis-mlm-Mlym-Latn-13194-1991": { "class": "Interscript::Node::MetaData", @@ -2643,7 +3910,14 @@ "svpnykkeāppṃ hōṭṭlil mntriputrṇ, citrṅṅḷ; 4 kōṭi kmmiṣniluṃ pṅkupṟṟi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 78, + "context_rules": 5, + "many_to_one": 19, + "one_to_many": 0 + } }, "bis-ori-Orya-Latn-13194-1991": { "class": "Interscript::Node::MetaData", @@ -2664,7 +3938,14 @@ "sāmprtik biśb sthitābsthāku cālēñj kruthibā dui mukhẏ prtidbndbī hēuchnti cīn ŏ ruṣ: iṃlṇḍ guindā adhikārī", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 79, + "context_rules": 5, + "many_to_one": 12, + "one_to_many": 0 + } }, "bis-pnj-Guru-Latn-13194-1991": { "class": "Interscript::Node::MetaData", @@ -2685,7 +3966,14 @@ "sdā jvāṉ rhō", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 5, + "many_to_one": 11, + "one_to_many": 0 + } }, "bis-tel-Telu-Latn-13194-1991": { "class": "Interscript::Node::MetaData", @@ -2706,7 +3994,14 @@ "ippuḍu idē kŏvlŏ ṭālīvuḍlŏ mrŏ mlṭīsṭārr rūpondnundni sinī vrgāllŏ vārtlu vinipistunnāyi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 74, + "context_rules": 5, + "many_to_one": 15, + "one_to_many": 0 + } }, "bis-tml-Taml-Latn-13194-1991": { "class": "Interscript::Node::MetaData", @@ -2727,7 +4022,266 @@ "iḷaiñrkḷiṉ uṟutiyāṉ mṉnilaiyai pirtiplikkiṟtu: nīṭ tērvil 85-90 ctvīt māṇvrkḷ pṅkēṟpu - rmēṣ pokriyāl", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 58, + "context_rules": 5, + "many_to_one": 13, + "one_to_many": 0 + } + }, + "bsi-bel-Cyrl-Latn-1958": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bsi", + "id": "1958", + "language": "iso-639-2:bel", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Byelorussian (White R.) column (the British system)", + "description": "BS 2979:1958, Table A, Byelorussian (White R.) column: the \"British\" system for (modern) Cyrillic.\n Table A is a five-column family table (East Slavonic: Russian, Ukrainian,\n Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian).", + "url": "https://www.bsigroup.com", + "creation_date": "1958", + "nonstandard": {} + }, + "test": [ + "Мінск", + "Minsk", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } + }, + "bsi-bul-Cyrl-Latn-1958": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bsi", + "id": "1958", + "language": "iso-639-2:bul", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Bulgarian column (the British system)", + "description": "BS 2979:1958, Table A, Bulgarian column: the \"British\" system for (modern) Cyrillic.\n Table A is a five-column family table (East Slavonic: Russian, Ukrainian,\n Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian).", + "url": "https://www.bsigroup.com", + "creation_date": "1958", + "nonstandard": {} + }, + "test": [ + "София", + "Sofiya", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 64, + "context_rules": 0, + "many_to_one": 1, + "one_to_many": 0 + } + }, + "bsi-chu-Cyrl-Latn-1958": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bsi", + "id": "1958", + "language": "iso-639-2:chu", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table D, Transliteration of Church Slavonic Cyrillic", + "description": "BS 2979:1958, Table D: transliteration of Church Slavonic Cyrillic. The table\n covers the full Church Slavonic alphabet including the yuses, ksi, psi, fita\n and izhitsa, with the letters' numerical values annotated.", + "url": "https://www.bsigroup.com", + "creation_date": "1958", + "nonstandard": {} + }, + "test": [ + "А", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 94, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } + }, + "bsi-ell-Grek-Latn-1958": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bsi", + "id": "1958", + "language": "iso-639-2:ell", + "source_script": "Grek", + "destination_script": "Latn", + "name": "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table G, Transliteration of Greek characters", + "description": "BS 2979:1958, Table G: a letter-for-letter system for Greek, aimed at\n cataloguers and providing a one-to-one correspondence between Greek and\n Roman characters in both directions.", + "url": "https://www.bsigroup.com", + "creation_date": "1958", + "nonstandard": {} + }, + "test": [ + "Α", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 49, + "context_rules": 68, + "many_to_one": 1, + "one_to_many": 0 + } + }, + "bsi-mkd-Cyrl-Latn-1958": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bsi", + "id": "1958", + "language": "iso-639-2:mkd", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Serbian & Macedonian (Macedonian) column (the British system)", + "description": "BS 2979:1958, Table A, Serbian & Macedonian (Macedonian) column: the \"British\" system for (modern) Cyrillic.\n Table A is a five-column family table (East Slavonic: Russian, Ukrainian,\n Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian).\n The column is shared with Serbian; this map adds the Macedonian-specific\n letters ѓ, ѕ and ќ to the shared rows.", + "url": "https://www.bsigroup.com", + "creation_date": "1958", + "nonstandard": {} + }, + "test": [ + "Македонски Јазик", + "Makedonski Jazik", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 62, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } + }, + "bsi-ron-Cyrl-Latn-1958": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bsi", + "id": "1958", + "language": "iso-639-2:ron", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table E, Transliteration of Rumanian Cyrillic (Alfabetul Cirilic)", + "description": "BS 2979:1958, Table E: transliteration of Rumanian Cyrillic (Alfabetul Cirilic),\n the Cyrillic alphabet used for Romanian until 1860. For transliteration of\n Moldavian in the modern orthography, the table's companion note directs the\n reader to Table C (ISO/R9) in Section 2.", + "url": "https://www.bsigroup.com", + "creation_date": "1958", + "nonstandard": {} + }, + "test": [ + "А", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 94, + "context_rules": 2, + "many_to_one": 10, + "one_to_many": 0 + } + }, + "bsi-rus-Cyrl-Latn-1958": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bsi", + "id": "1958", + "language": "iso-639-2:rus", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Russian column (the British system)", + "description": "BS 2979:1958, Table A, Russian column: the \"British\" system for (modern) Cyrillic.\n Table A is a five-column family table (East Slavonic: Russian, Ukrainian,\n Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian); this map is the\n Russian column. The Serbian and Macedonian column gives the latinica, the existing\n Latin alphabet of Serbo-Croat. British Standard confirmed December 1998; the BSI\n 05-2000 reprint is the digitized edition.", + "url": "https://www.bsigroup.com", + "creation_date": "1958", + "nonstandard": {} + }, + "test": [ + "Бюллетень", + "Byulleten’", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 72, + "context_rules": 0, + "many_to_one": 7, + "one_to_many": 1 + } + }, + "bsi-srp-Cyrl-Latn-1958": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bsi", + "id": "1958", + "language": "iso-639-2:srp", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Serbian column (the British system)", + "description": "BS 2979:1958, Table A, Serbian column: the \"British\" system for (modern) Cyrillic.\n Table A is a five-column family table (East Slavonic: Russian, Ukrainian,\n Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian).\n This map is the Serbian rows of the column; the Macedonian-specific letters\n (ѓ, ѕ, ќ) are a separate map.", + "url": "https://www.bsigroup.com", + "creation_date": "1958", + "nonstandard": {} + }, + "test": [ + "Заштита биља", + "Zaštita bilja", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 56, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } + }, + "bsi-ukr-Cyrl-Latn-1958": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "bsi", + "id": "1958", + "language": "iso-639-2:ukr", + "source_script": "Cyrl", + "destination_script": "Latn", + "name": "BS 2979:1958 Transliteration of Cyrillic and Greek characters - Table A, Ukrainian column (the British system)", + "description": "BS 2979:1958, Table A, Ukrainian column: the \"British\" system for (modern) Cyrillic.\n Table A is a five-column family table (East Slavonic: Russian, Ukrainian,\n Byelorussian; South Slavonic: Bulgarian, Serbian and Macedonian).", + "url": "https://www.bsigroup.com", + "creation_date": "1958", + "nonstandard": {} + }, + "test": [ + "Української", + "Ukrayins’koyi", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 72, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 0 + } }, "by-bel-Cyrl-Latn-1998": { "class": "Interscript::Node::MetaData", @@ -2748,7 +4302,14 @@ "Aršanski", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 31, + "context_rules": 8, + "many_to_one": 1, + "one_to_many": 0 + } }, "by-bel-Cyrl-Latn-2007": { "class": "Interscript::Node::MetaData", @@ -2769,7 +4330,42 @@ "Aršanski", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } + }, + "din-ara-Arab-Latn-31635-2011": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "din", + "id": "31635-2011", + "language": "iso-639-2:ara", + "source_script": "Arab", + "destination_script": "Latn", + "name": "DIN 31635:2011-07 Transliteration des arabischen Alphabets", + "description": "DIN 31635:2011-07, section 6: transliteration of the Arabic alphabet, applicable\n to classical and modern standard Arabic. Based on the 1935 recommendation of the\n International Orientalists' Congress and nearly identical to ISO 233:1984, with\n additional provisions in the notes for transliteration work. The norm's Persian,\n Kurdish and Urdu sections are separate maps; its Ottoman-Turkish section gives\n references only.", + "url": "https://www.din.de", + "creation_date": "2011", + "nonstandard": {} + }, + "test": [ + "ء", + "", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 80, + "context_rules": 13, + "many_to_one": 9, + "one_to_many": 0 + } }, "din-grc-Grek-Latn-31634-2011-t1": { "class": "Interscript::Node::MetaData", @@ -2790,7 +4386,42 @@ "Ena prama monon me parakinēse ki emena na grapsō oti toutēn tēn patrida tēn echomen oloi mazi, kai sophoi ki amatheis kai plousioi kai phtōchoi kai politikoi kai stratiōtikoi kai oi pleon mikroteroi anthrōpoi; osoi agōnistēkamen, analogōs o katheis, echomen na zēsomen edō. To loipon doulepsamen oloi mazi, na tēn phylamen ki oloi mazi kai na mēn legei oute o dynatos «egō» oute o adynatos. Xerete pote na legei o katheis «egō»? Otan agōnistei monos tou kai phkiasei ē chalasei, na legei «egō»; otan omōs agōnizontai polloi kai phkianoun, tote na lene «emeis». Eimaste eis to «emeis» ki ochi eis to «egō». Kai eis to exēs na mathomen gnōsē, an thelomen na phkiasomen chōrion, na zēsomen oloi mazi.\n\nGiannēs Makrygiannēs.", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 283, + "context_rules": 20, + "many_to_one": 36, + "one_to_many": 2 + } + }, + "din-heb-Hebr-Latn-31636-2018": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "din", + "id": "31636-2018", + "language": "iso-639-2:heb", + "source_script": "Hebr", + "destination_script": "Latn", + "name": "DIN 31636:2018-10 Information und Dokumentation - Umschrift des hebraeischen Alphabets", + "description": "Information and documentation -- Romanization of the Hebrew alphabet.\n 2018-10 edition, replacing DIN 31636:2011-01. The norm fixes the rendering of the\n letters of the Hebrew alphabet (including Ivrit) in letters of the Latin alphabet.\n This map implements the Hebrew (including Ivrit) column over vocalized input;\n the Yiddish column of the same norm is a separate map.", + "url": "https://www.din.de", + "creation_date": "2018", + "nonstandard": {} + }, + "test": [ + "יִשְׂרָאֵל", + "yiśraʾel", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 59, + "context_rules": 39, + "many_to_one": 16, + "one_to_many": 0 + } }, "din-hin-Deva-Latn-33904-2018": { "class": "Interscript::Node::MetaData", @@ -2811,7 +4442,42 @@ "gambhīra marījoṃ ke māmale meṃ bhārata dūsare nambara para", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 20, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } + }, + "din-hye-Armn-Latn-32706-2010": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "din", + "id": "32706-2010", + "language": "iso-639-2:hye", + "source_script": "Armn", + "destination_script": "Latn", + "name": "DIN 32706:2010-01 Information und Dokumentation - Umschrift des armenischen Alphabets", + "description": "Information and documentation -- Romanization of the Armenian alphabet.\n The norm fixes the rendering of the letters of the Armenian alphabet in letters of the\n Latin alphabet and is suitable for all fields of application. It follows the principle\n of transliteration and is based on library practice and on ISO 9985:1996.", + "url": "https://www.din.de", + "creation_date": "2010", + "nonstandard": {} + }, + "test": [ + "Ա", + "A", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 77, + "context_rules": 0, + "many_to_one": 1, + "one_to_many": 1 + } }, "din-kat-Geor-Latn-32707-2010": { "class": "Interscript::Node::MetaData", @@ -2832,7 +4498,14 @@ "xaop̕se", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 41, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "din-mar-Deva-Latn-33904-2018": { "class": "Interscript::Node::MetaData", @@ -2853,7 +4526,14 @@ "ṭhāṇe - jilhyāta budhavārī eka hajāra rugṇāñcī vāḍha, tara jaṇāñcyā mṛtyūcī nonda", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 2, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "din-nep-Deva-Latn-33904-2018": { "class": "Interscript::Node::MetaData", @@ -2874,7 +4554,14 @@ "lekhana", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 21, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "din-pli-Deva-Latn-33904-2018": { "class": "Interscript::Node::MetaData", @@ -2895,7 +4582,14 @@ "tena kho pana samayena vesāliyā avidūre kalandagāmo nāma atthi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "din-pra-Deva-Latn-33904-2018": { "class": "Interscript::Node::MetaData", @@ -2916,7 +4610,14 @@ "sṛṣṭisthitivināśānāṃ śaktibhūte sanātani", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "din-san-Deva-Latn-33904-2018": { "class": "Interscript::Node::MetaData", @@ -2937,7 +4638,14 @@ "pustaka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 113, + "context_rules": 40, + "many_to_one": 12, + "one_to_many": 0 + } }, "din-tam-Taml-Latn-33903-2016": { "class": "Interscript::Node::MetaData", @@ -2958,7 +4666,42 @@ "kārttikēyaṉ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 85, + "context_rules": 23, + "many_to_one": 12, + "one_to_many": 0 + } + }, + "din-yid-Hebr-Latn-31636-2018": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "din", + "id": "31636-2018-yid", + "language": "iso-639-2:yid", + "source_script": "Hebr", + "destination_script": "Latn", + "name": "DIN 31636:2018-10 Information und Dokumentation - Umschrift des hebraeischen Alphabets (jiddische Spalte)", + "description": "Information and documentation -- Romanization of the Hebrew alphabet, Yiddish\n column. 2018-10 edition, replacing DIN 31636:2011-01. This map implements the\n Yiddish column of Table 1 with the Yiddish vowel table (Table 4) and the Yiddish\n notes (section 9) of the norm. The Hebrew column is a separate map.", + "url": "https://www.din.de", + "creation_date": "2018", + "nonstandard": {} + }, + "test": [ + "א", + "ʾ", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 63, + "context_rules": 10, + "many_to_one": 16, + "one_to_many": 0 + } }, "dos-nep-Deva-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -2979,7 +4722,14 @@ "duhkh", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 1, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "elot-ell-Grek-Latn-743-1982-tl": { "class": "Interscript::Node::MetaData", @@ -3000,7 +4750,14 @@ "Éna práma mónon me parakíni̱se ki eména na grápso̱ óti toúti̱n ti̱n patrída ti̱n échomen óloi mazí, kai sofoí ki amatheís kai ploúsioi kai fto̱choí kai politikoí kai stratio̱tikoí kai oi pléon mikróteroi ánthro̱poi; ósoi ago̱nistí̱kamen, analógo̱s o katheís, échomen na zí̱somen edó̱. To loipón doulépsamen óloi mazí, na ti̱n fylámen ki óloi mazí kai na mi̱n légei oúte o dynatós «egó̱» oúte o adýnatos. Xérete póte na légei o katheís «egó̱»? Ótan ago̱nisteí mónos tou kai fkiásei í̱ chalásei, na légei «egó̱»; ótan ómo̱s ago̱nízontai polloí kai fkiánoun, tóte na léne «emeís». Eímaste eis to «emeís» ki óchi eis to «egó̱». Kai eis to exí̱s na máthomen gnó̱si̱, an thélomen na fkiásomen cho̱rión, na zí̱somen óloi mazí.\n\nGiánni̱s Makrygiánni̱s.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 81, + "context_rules": 40, + "many_to_one": 6, + "one_to_many": 1 + } }, "elot-ell-Grek-Latn-743-1982-ts": { "class": "Interscript::Node::MetaData", @@ -3021,7 +4778,14 @@ "Éna práma mónon me parakínise ki eména na grápso óti toútin tin patrída tin échomen óloi mazí, kai sofoí ki amatheís kai ploúsioi kai ftochoí kai politikoí kai stratiotikoí kai oi pléon mikróteroi ánthropoi; ósoi agonistíkamen, analógos o katheís, échomen na zísomen edó. To loipón doulépsamen óloi mazí, na tin fylámen ki óloi mazí kai na min légei oúte o dynatós «egó» oúte o adýnatos. Xérete póte na légei o katheís «egó»? Ótan agonisteí mónos tou kai fkiásei í chalásei, na légei «egó»; ótan ómos agonízontai polloí kai fkiánoun, tóte na léne «emeís». Eímaste eis to «emeís» ki óchi eis to «egó». Kai eis to exís na máthomen gnósi, an thélomen na fkiásomen chorión, na zísomen óloi mazí.\n\nGiánnis Makrygiánnis.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 87, + "context_rules": 34, + "many_to_one": 12, + "one_to_many": 0 + } }, "elot-ell-Grek-Latn-743-2001-tl": { "class": "Interscript::Node::MetaData", @@ -3042,7 +4806,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "elot-ell-Grek-Latn-743-2001-ts": { "class": "Interscript::Node::MetaData", @@ -3063,7 +4834,14 @@ "Éna práma mónon me parakínise ki eména na grápso óti toútin tin patrída tin échomen óloi mazí, kai sofoí ki amatheís kai ploúsioi kai ftochoí kai politikoí kai stratiotikoí kai oi pléon mikróteroi ánthropoi; ósoi agonistíkamen, analógos o katheís, échomen na zísomen edó. To loipón doulépsamen óloi mazí, na tin fylámen ki óloi mazí kai na min légei oúte o dynatós «egó» oúte o adýnatos. Xérete póte na légei o katheís «egó»? Ótan agonisteí mónos tou kai fkiásei í chalásei, na légei «egó»; ótan ómos agonízontai polloí kai fkiánoun, tóte na léne «emeís». Eímaste eis to «emeís» ki óchi eis to «egó». Kai eis to exís na máthomen gnósi, an thélomen na fkiásomen chorión, na zísomen óloi mazí.\n\nGiánnis Makrygiánnis.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "ggg-kat-Geor-Latn-2002": { "class": "Interscript::Node::MetaData", @@ -3084,7 +4862,14 @@ "tbilisi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 33, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "gki-bel-Cyrl-Latn-1992": { "class": "Interscript::Node::MetaData", @@ -3105,7 +4890,14 @@ "Sjamaški", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 10, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "gki-bel-Cyrl-Latn-2000": { "class": "Interscript::Node::MetaData", @@ -3126,7 +4918,14 @@ "Aršanski", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 65, + "context_rules": 8, + "many_to_one": 1, + "one_to_many": 0 + } }, "gost-rus-Cyrl-Latn-16876-71-1983": { "class": "Interscript::Node::MetaData", @@ -3147,7 +4946,14 @@ "Anapa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 64, + "context_rules": 3, + "many_to_one": 1, + "one_to_many": 0 + } }, "gost-rus-Cyrl-Latn-7.79-2000-2002": { "class": "Interscript::Node::MetaData", @@ -3168,7 +4974,14 @@ "adres", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 64, + "context_rules": 2, + "many_to_one": 1, + "one_to_many": 0 + } }, "hk-yue-Hani-Latn-1888": { "class": "Interscript::Node::MetaData", @@ -3189,7 +5002,14 @@ "Tsin Yue Wan", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 24932, + "context_rules": 4212, + "many_to_one": 376, + "one_to_many": 0 + } }, "icao-bel-Cyrl-Latn-9303": { "class": "Interscript::Node::MetaData", @@ -3210,7 +5030,14 @@ "Babrykovich Aliaksandr", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 91, + "context_rules": 0, + "many_to_one": 12, + "one_to_many": 0 + } }, "icao-bul-Cyrl-Latn-9303": { "class": "Interscript::Node::MetaData", @@ -3231,7 +5058,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 89, + "context_rules": 0, + "many_to_one": 12, + "one_to_many": 1 + } }, "icao-fas-Arab-Latn-9303": { "class": "Interscript::Node::MetaData", @@ -3252,7 +5086,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 75, + "context_rules": 0, + "many_to_one": 9, + "one_to_many": 0 + } }, "icao-heb-Hebr-Latn-9303": { "class": "Interscript::Node::MetaData", @@ -3273,7 +5114,14 @@ "MEDIYNAT YSEREEL", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 115, + "context_rules": 0, + "many_to_one": 29, + "one_to_many": 1 + } }, "icao-mkd-Cyrl-Latn-9303": { "class": "Interscript::Node::MetaData", @@ -3294,7 +5142,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 89, + "context_rules": 0, + "many_to_one": 12, + "one_to_many": 0 + } }, "icao-rus-Cyrl-Latn-9303": { "class": "Interscript::Node::MetaData", @@ -3315,7 +5170,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 89, + "context_rules": 0, + "many_to_one": 12, + "one_to_many": 0 + } }, "icao-srp-Cyrl-Latn-9303": { "class": "Interscript::Node::MetaData", @@ -3336,7 +5198,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 89, + "context_rules": 0, + "many_to_one": 20, + "one_to_many": 0 + } }, "icao-ukr-Cyrl-Latn-9303": { "class": "Interscript::Node::MetaData", @@ -3357,7 +5226,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 90, + "context_rules": 0, + "many_to_one": 14, + "one_to_many": 0 + } }, "iso-ara-Arab-Latn-233-1984": { "class": "Interscript::Node::MetaData", @@ -3378,7 +5254,14 @@ "Miṣr", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 160, + "context_rules": 3, + "many_to_one": 30, + "one_to_many": 0 + } }, "iso-ara-Arab-Latn-233-2-1993": { "class": "Interscript::Node::MetaData", @@ -3399,7 +5282,14 @@ "Miṣr", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 153, + "context_rules": 6, + "many_to_one": 29, + "one_to_many": 0 + } }, "iso-asm-Beng-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3420,7 +5310,14 @@ "asamaīẏaā kabaitaā", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 2, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-ben-Beng-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3441,7 +5338,14 @@ "āgauẏaeraora haām̐ṭaura caoṭa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 81, + "context_rules": 0, + "many_to_one": 13, + "one_to_many": 0 + } }, "iso-ell-Grek-Latn-843-1997-t1": { "class": "Interscript::Node::MetaData", @@ -3462,7 +5366,14 @@ "Éna práma mónon me parakínīse ki eména na grápsō óti toútīn tīn patrída tīn échomen óloi mazí, kai sofoí ki amatheís kai ploúsioi kai ftōchoí kai politikoí kai stratiōtikoí kai oi pléon mikróteroi ánthrōpoi; ósoi agōnistī́kamen, analógōs o katheís, échomen na zī́somen edṓ. To loipón doulépsamen óloi mazí, na tīn fylámen ki óloi mazí kai na mīn légei oúte o dynatós «egṓ» oúte o adýnatos. Xérete póte na légei o katheís «egṓ»? Ótan agōnisteí mónos tou kai fkiásei ī́ chalásei, na légei «egṓ»; ótan ómōs agōnízontai polloí kai fkiánoun, tóte na léne «emeís». Eímaste eis to «emeís» ki óchi eis to «egṓ». Kai eis to exī́s na máthomen gnṓsī, an thélomen na fkiásomen chōrión, na zī́somen óloi mazí.\n\nGiánnīs Makrygiánnīs.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 78, + "context_rules": 3, + "many_to_one": 4, + "one_to_many": 0 + } }, "iso-ell-Grek-Latn-843-1997-t2": { "class": "Interscript::Node::MetaData", @@ -3483,7 +5394,14 @@ "Éna práma mónon me parakínise ki eména na grápso óti toútin tin patrída tin échomen óloi mazí, kai sofoí ki amatheís kai ploúsioi kai ftochoí kai politikoí kai stratiotikoí kai oi pléon mikróteroi ánthropoi; ósoi agonistíkamen, analógos o katheís, échomen na zísomen edó. To loipón doulépsamen óloi mazí, na tin fylámen ki óloi mazí kai na min légei oúte o dynatós «egó» oúte o adýnatos. Xérete póte na légei o katheís «egó»? Ótan agonisteí mónos tou kai fkiásei í chalásei, na légei «egó»; ótan ómos agonízontai polloí kai fkiánoun, tóte na léne «emeís». Eímaste eis to «emeís» ki óchi eis to «egó». Kai eis to exís na máthomen gnósi, an thélomen na fkiásomen chorión, na zísomen óloi mazí.\n\nGiánnis Makrygiánnis.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 6, + "context_rules": 0, + "many_to_one": 1, + "one_to_many": 0 + } }, "iso-guj-Gujr-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3504,7 +5422,14 @@ "amaita śaāhanao kaoraonaā raipaoratạ 2 ogasatạe paojhaitạiva āvayao hatao, tayaārathaī taemanauṁ savaāsathaya saārauṁ nathaī", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 94, + "context_rules": 0, + "many_to_one": 16, + "one_to_many": 0 + } }, "iso-hin-Deva-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3525,7 +5450,14 @@ "hama", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-inc-Deva-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3546,7 +5478,14 @@ "upamaukhayamaṁtarayaāṁcaī 'maoṭhaī' ghaoṣaṇaā; raājayaāta kaeṁdaraācayaā kaṛṣaī va kaāmagaāra vaidhaeyakaācaī aṁmalabajaāvaṇaī naāhaī", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-jpn-Hrkt-Latn-3602-1989": { "class": "Interscript::Node::MetaData", @@ -3567,7 +5506,14 @@ "kan’ô", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 2, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-kan-Kana-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3588,7 +5534,14 @@ "īga vaairala āgautataidae kaṁganaā raṇaāvauta haḷaēya vaiḍaiyaō", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 97, + "context_rules": 0, + "many_to_one": 16, + "one_to_many": 0 + } }, "iso-kat-Geor-Latn-9984-1996": { "class": "Interscript::Node::MetaData", @@ -3609,7 +5562,14 @@ "xaop̕se", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 39, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-kor-Hang-Latn-1996-method1": { "class": "Interscript::Node::MetaData", @@ -3630,7 +5590,14 @@ "kkoch'i", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 38, + "context_rules": 1, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-kor-Hang-Latn-1996-method2": { "class": "Interscript::Node::MetaData", @@ -3651,7 +5618,14 @@ "ggoc'i", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 23, + "context_rules": 1, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-mal-Mlym-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3672,7 +5646,14 @@ "svapnaykkaeāppam haōṭṭalai:la mantraipautra:ṇa, caitraṅṅa:ḷa; 4 kaōṭai kammaiṣanailaum paṅkaupaṟṟai", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 133, + "context_rules": 3, + "many_to_one": 17, + "one_to_many": 0 + } }, "iso-mar-Deva-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3693,7 +5674,14 @@ "ṭhaāṇae - jailahayaāta baudhavaāraī eka hajaāra raugaṇaāṁcaī vaāḍha, tara jaṇaāṁcayaā maṛtayaūcaī naoṁda", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-nep-Deva-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3714,7 +5702,14 @@ "laekhana", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-ori-Orya-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3735,7 +5730,14 @@ "saāmaparataika baiśaba sathaitaābasathaākau caālaeñaja karauthaibaā daui maukhaẏa parataidabanadabaī haeuchanatai caīna o rauṣa: iṁlaṇaḍa gauinadaā adhaikaāraī", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 82, + "context_rules": 0, + "many_to_one": 14, + "one_to_many": 0 + } }, "iso-pan-Guru-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3756,7 +5758,14 @@ "paṁjaāba 'ca vadha raihaā ḵẖaudakauśaīāṃ daā raujhaāna", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 94, + "context_rules": 0, + "many_to_one": 18, + "one_to_many": 0 + } }, "iso-pli-Beng-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3777,7 +5786,14 @@ "taena samayaena baudadhao bhagavaā vaerañajaāyaṁ vaiharatai nala়eraupaucaimanadamaūlae mahataā bhaikakhausaṅaghaena sadadhaiṁ pañacamatataehai bhaikakhausataehai", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-pli-Deva-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3798,7 +5814,14 @@ "taena khao pana samayaena vaesaālaiyaā avaidaūrae kalanadagaāmao naāma atathai", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-pli-Sinh-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3819,7 +5842,14 @@ "taena samayaena baudadhao bhagavaā vaerañajaāyaṁ vaiharatai naḷaeraupaucaimanadamaūlae mahataā bhaikakhausaṅaghaena sadadhaiṁ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 97, + "context_rules": 0, + "many_to_one": 18, + "one_to_many": 0 + } }, "iso-pli-Thai-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3840,7 +5870,14 @@ "oy kp–̥pokṭīh̄ipi xp–̥pemy–̥ẙ;", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-pra-Deva-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3861,7 +5898,14 @@ "saṛṣaṭaisathaitaivainaāśaānaāṁ śakataibhaūtae sanaātanai", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "iso-prs-Arab-Latn-233-3-1999": { "class": "Interscript::Node::MetaData", @@ -3882,7 +5926,14 @@ "âẕar", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 72, + "context_rules": 17, + "many_to_one": 16, + "one_to_many": 35 + } }, "iso-rus-Cyrl-Latn-9-1995": { "class": "Interscript::Node::MetaData", @@ -3903,7 +5954,14 @@ null, null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 251, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 0 + } }, "iso-san-Deva-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3924,7 +5982,14 @@ "paūraṇamadaḥ paūraṇamaidaṁ paūraṇaāta paūraṇamaudacayatae", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 99, + "context_rules": 0, + "many_to_one": 16, + "one_to_many": 0 + } }, "iso-tam-Taml-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3945,7 +6010,14 @@ "kaāratataikaēyaṉa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 62, + "context_rules": 0, + "many_to_one": 12, + "one_to_many": 0 + } }, "iso-tel-Telu-Latn-15919-2001": { "class": "Interscript::Node::MetaData", @@ -3966,7 +6038,14 @@ "ipapauḍau idaē kaōvalaō ṭaālaīvauḍalaō maraō malaṭaīsaṭaārara raūpaoṁdanauṁdanai sainaī varagaālalaō vaāratalau vainaipaisataunanaāyai", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 99, + "context_rules": 0, + "many_to_one": 15, + "one_to_many": 0 + } }, "iso-tha-Thai-Latn-11940-1998": { "class": "Interscript::Node::MetaData", @@ -3987,7 +6066,14 @@ "p̣hās̛̄āịthy", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 86, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "kp-kor-Hang-Latn-2002": { "class": "Interscript::Node::MetaData", @@ -4008,7 +6094,14 @@ "Urisan", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 253, + "context_rules": 80, + "many_to_one": 58, + "one_to_many": 0 + } }, "lshk-yue-Hani-Latn-jyutping-1993": { "class": "Interscript::Node::MetaData", @@ -4029,7 +6122,14 @@ "jat1ji6saam1sei3ng5luk6cat1baat3gau2sap6", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 22276, + "context_rules": 6678, + "many_to_one": 1363, + "one_to_many": 0 + } }, "masm-mon-Cyrl-Latn-5217-2012": { "class": "Interscript::Node::MetaData", @@ -4050,7 +6150,14 @@ "Avarga, khalbaga, aav", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } }, "masm-mon-Latn-Cyrl-5217-2012": { "class": "Interscript::Node::MetaData", @@ -4071,7 +6178,14 @@ "Аварга, халбага, аав", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "CONTEXT_ONLY", + "pairs": 72, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 4 + } }, "mext-jpn-Hrkt-Latn-1954": { "class": "Interscript::Node::MetaData", @@ -4092,7 +6206,14 @@ "kan'ô", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 267, + "context_rules": 5, + "many_to_one": 126, + "one_to_many": 0 + } }, "moct-kor-Hang-Latn-2000": { "class": "Interscript::Node::MetaData", @@ -4113,7 +6234,14 @@ "Bulguksa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 262, + "context_rules": 60, + "many_to_one": 59, + "one_to_many": 0 + } }, "mofa-jpn-Hrkt-Latn-1989": { "class": "Interscript::Node::MetaData", @@ -4134,7 +6262,14 @@ "NAMBA", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 301, + "context_rules": 8, + "many_to_one": 116, + "one_to_many": 1 + } }, "mv-div-Thaa-Latn-1987": { "class": "Interscript::Node::MetaData", @@ -4155,7 +6290,14 @@ "en’boodhoo", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 35, + "context_rules": 50, + "many_to_one": 1, + "one_to_many": 0 + } }, "mvd-bel-Cyrl-Latn-2008": { "class": "Interscript::Node::MetaData", @@ -4176,7 +6318,14 @@ "Jeva", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 73, + "context_rules": 30, + "many_to_one": 1, + "one_to_many": 0 + } }, "mvd-bel-Cyrl-Latn-2010": { "class": "Interscript::Node::MetaData", @@ -4197,7 +6346,14 @@ "Babrykovich Aliaksandr", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 4, + "context_rules": 2, + "many_to_one": 1, + "one_to_many": 0 + } }, "mvd-rus-Cyrl-Latn-2008": { "class": "Interscript::Node::MetaData", @@ -4218,7 +6374,14 @@ "Eva", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 69, + "context_rules": 2, + "many_to_one": 5, + "one_to_many": 0 + } }, "mvd-rus-Cyrl-Latn-2010": { "class": "Interscript::Node::MetaData", @@ -4239,7 +6402,14 @@ "Eva", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 1, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "odni-ara-Arab-Latn-2004": { "class": "Interscript::Node::MetaData", @@ -4260,7 +6430,14 @@ "Miṣr", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "odni-ara-Arab-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4281,7 +6458,14 @@ "Miṣr", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 17, + "many_to_one": 12, + "one_to_many": 0 + } }, "odni-aze-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4302,7 +6486,14 @@ "Rashad Sadykhov", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 76, + "context_rules": 0, + "many_to_one": 12, + "one_to_many": 0 + } }, "odni-bel-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4323,7 +6514,14 @@ "Mikhail", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 67, + "context_rules": 0, + "many_to_one": 3, + "one_to_many": 0 + } }, "odni-bul-Cyrl-Latn-2005": { "class": "Interscript::Node::MetaData", @@ -4344,7 +6542,14 @@ "Dobri Khristov", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 60, + "context_rules": 0, + "many_to_one": 4, + "one_to_many": 0 + } }, "odni-bul-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4365,7 +6570,14 @@ "Dobri Khristov", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 16, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 0 + } }, "odni-che-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4386,7 +6598,14 @@ "Ilyas Akhmadkant", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 4, + "context_rules": 3, + "many_to_one": 1, + "one_to_many": 0 + } }, "odni-fas-Arab-Latn-2004": { "class": "Interscript::Node::MetaData", @@ -4407,7 +6626,14 @@ "musa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 86, + "context_rules": 7, + "many_to_one": 20, + "one_to_many": 1 + } }, "odni-fas-Arab-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4428,7 +6654,14 @@ "musa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 85, + "context_rules": 7, + "many_to_one": 19, + "one_to_many": 1 + } }, "odni-hin-Deva-Latn-2004": { "class": "Interscript::Node::MetaData", @@ -4449,7 +6682,14 @@ "dilli", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 71, + "context_rules": 0, + "many_to_one": 20, + "one_to_many": 1 + } }, "odni-hin-Deva-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4470,7 +6710,14 @@ "hsn mohmmd", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 0, + "many_to_one": 20, + "one_to_many": 0 + } }, "odni-kat-Geor-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4491,7 +6738,14 @@ "baqaqi", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 33, + "context_rules": 0, + "many_to_one": 5, + "one_to_many": 0 + } }, "odni-kaz-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4512,7 +6766,14 @@ "Bekzat Sattarkhanov", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 80, + "context_rules": 0, + "many_to_one": 12, + "one_to_many": 0 + } }, "odni-kir-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4533,7 +6794,14 @@ "Guljigit Kalykov", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 68, + "context_rules": 0, + "many_to_one": 8, + "one_to_many": 0 + } }, "odni-kor-Hang-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4554,7 +6822,42 @@ "Kim Yo’ng-su", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 1, + "many_to_one": 1, + "one_to_many": 0 + } + }, + "odni-kur-Arab-Latn-2011": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "odni", + "id": "2011", + "language": "iso-639-2:kur", + "source_script": "Arab", + "destination_script": "Latn", + "name": "ICS-630-01 Romanization of Kurdish Personal Names (2011)", + "description": "This system is the Intelligence Community standard for the\n transliteration of Kurdish names that will be applied to all\n final written reports and products for IC consumers. It is\n not intended to eliminate variations of a name that can\n contribute forensic information. Rather, it is to provide an\n IC standard Romanized (English) transliteration from Kurdish\n that can then be linked to forensic information in ways that\n will help identify the referent of a name.\n\n The system uses the 26 letters of the standard (English)\n Roman alphabet plus the apostrophe. Some ambiguities in the\n Romanized form will occur without the use of diacritics.\n Within the context of a report, where additional information\n about the individual is provided, the referent will be\n clearly identified. The system is used in conjunction with\n on-line tools, name dictionaries, and lists containing\n conventional spellings of names of well-known individuals.\n\n This system does not apply to names of Kurds from Turkey or\n other regions where Roman script is used. For non-Kurdish\n names, use the relevant IC transliteration standard for\n names from that language. Names of individuals from\n languages written in Roman letters are spelled as they are\n spelled in those languages.\n\n In cases where an individual's name has already been\n transliterated in a variant spelling, that variant is\n indicated in parentheses immediately following its rendition\n in the transliteration standard. If the original Cyrillic or\n Perso-Arabic-script spelling is known, that spelling should\n also appear in parentheses following the name, following\n best practices of the issuing organization and taking into\n consideration information system capabilities. This\n convention is designed to ensure that vital forensic\n information is not lost.\n\n For active senior government officials listed in the online\n CIA World Factbook and the online directory of Chiefs of\n State and Cabinet Members of Foreign Governments, the\n spellings given in those reference works are used in place\n of the IC Standard. For individuals no longer listed, the IC\n Standard spelling appears first, with the previous reference\n spelling in parentheses at first usage.\n\n There is an effort in the region to purge Kurdish of Arabic\n vocabulary, influencing how Kurdish names borrowed from\n Arabic appear, especially in official publications. Defer to\n the Kurdish IC Standard in these cases.", + "url": "", + "creation_date": "2011", + "nonstandard": {} + }, + "test": [ + "ئومێد", + "Umed", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 78, + "context_rules": 0, + "many_to_one": 14, + "one_to_many": 0 + } }, "odni-mkd-Cyrl-Latn-2005": { "class": "Interscript::Node::MetaData", @@ -4575,7 +6878,14 @@ "Biljana", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "odni-mkd-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4596,7 +6906,14 @@ "Biljana", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 63, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "odni-prs-Arab-Latn-2004": { "class": "Interscript::Node::MetaData", @@ -4617,7 +6934,14 @@ "musa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 11, + "context_rules": 2, + "many_to_one": 2, + "one_to_many": 0 + } }, "odni-prs-Arab-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4638,7 +6962,14 @@ "musa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 12, + "context_rules": 2, + "many_to_one": 2, + "one_to_many": 0 + } }, "odni-pus-Arab-Latn-2011": { "class": "Interscript::Node::MetaData", @@ -4659,7 +6990,14 @@ "Hassan", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 46, + "context_rules": 9, + "many_to_one": 7, + "one_to_many": 1 + } }, "odni-rus-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4680,7 +7018,14 @@ "Irina Ivanovna Nikitina", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "odni-srp-Cyrl-Latn-2005": { "class": "Interscript::Node::MetaData", @@ -4701,7 +7046,14 @@ "Gojko Mitic", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "odni-srp-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4722,7 +7074,14 @@ "Gojko Mitic", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 60, + "context_rules": 0, + "many_to_one": 6, + "one_to_many": 0 + } }, "odni-tat-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4743,7 +7102,14 @@ "Rustam Abdrashitov", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 74, + "context_rules": 0, + "many_to_one": 10, + "one_to_many": 0 + } }, "odni-tgk-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4764,7 +7130,14 @@ "Parvona Jamshedov", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 74, + "context_rules": 0, + "many_to_one": 8, + "one_to_many": 0 + } }, "odni-tuk-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4785,7 +7158,14 @@ "Akgyul", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 76, + "context_rules": 0, + "many_to_one": 12, + "one_to_many": 0 + } }, "odni-uig-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4806,7 +7186,14 @@ "Zordun Sabir", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 70, + "context_rules": 0, + "many_to_one": 6, + "one_to_many": 0 + } }, "odni-ukr-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4827,7 +7214,14 @@ "Andriy", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 66, + "context_rules": 0, + "many_to_one": 3, + "one_to_many": 0 + } }, "odni-urd-Arab-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4848,7 +7242,14 @@ "ishal tsakr", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 54, + "context_rules": 0, + "many_to_one": 10, + "one_to_many": 0 + } }, "odni-uzb-Cyrl-Latn-2015": { "class": "Interscript::Node::MetaData", @@ -4869,7 +7270,42 @@ "Farkhod Tojiev", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 84, + "context_rules": 0, + "many_to_one": 12, + "one_to_many": 0 + } + }, + "royin-tha-Thai-Latn-1999": { + "class": "Interscript::Node::MetaData", + "data": { + "authority_id": "royin", + "id": "1999", + "language": "iso-639-2:tha", + "source_script": "Thai", + "destination_script": "Latn", + "name": "Royal Thai General System of Transcription (1999) — phoneme-to-RTGS stage", + "description": "", + "url": "http://www.royin.go.th/wp-content/uploads/royin-ebook/276/FileUpload/758_6484.pdf", + "creation_date": "1999", + "nonstandard": {} + }, + "test": [ + "k a ˨˩ . k aː ˧", + "kaka", + null + ], + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 20, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 0 + } }, "sac-zho-Hans-Latn-1979": { "class": "Interscript::Node::MetaData", @@ -4890,7 +7326,14 @@ "yun2hu4qi2wu3", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 18617, + "context_rules": 1818, + "many_to_one": 1131, + "one_to_many": 0 + } }, "sasm-mon-Mong-Latn-general-1978": { "class": "Interscript::Node::MetaData", @@ -4911,7 +7354,14 @@ "ordos hota", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 32, + "context_rules": 0, + "many_to_one": 5, + "one_to_many": 0 + } }, "sasm-mon-Mong-Latn-phonetic-1978": { "class": "Interscript::Node::MetaData", @@ -4932,7 +7382,14 @@ "ôrdôs hôta", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 2, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "ses-ara-Arab-Latn-1930": { "class": "Interscript::Node::MetaData", @@ -4953,7 +7410,14 @@ "Sharm el-Sheikh", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 38, + "context_rules": 40, + "many_to_one": 7, + "one_to_many": 0 + } }, "stategeocadastre-ukr-Cyrl-Latn-1993": { "class": "Interscript::Node::MetaData", @@ -4974,7 +7438,14 @@ "Kamianka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 68, + "context_rules": 0, + "many_to_one": 3, + "one_to_many": 0 + } }, "ua-ukr-Cyrl-Latn-1996": { "class": "Interscript::Node::MetaData", @@ -4995,7 +7466,14 @@ "Alushta", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 66, + "context_rules": 2, + "many_to_one": 3, + "one_to_many": 0 + } }, "ua-ukr-Cyrl-Latn-2007": { "class": "Interscript::Node::MetaData", @@ -5016,7 +7494,14 @@ "OLEKSANDR YAN", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 20, + "context_rules": 1, + "many_to_one": 3, + "one_to_many": 2 + } }, "ua-ukr-Cyrl-Latn-2010": { "class": "Interscript::Node::MetaData", @@ -5037,7 +7522,14 @@ "Alushta", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 8, + "context_rules": 0, + "many_to_one": 1, + "one_to_many": 2 + } }, "un-amh-Ethi-Latn-2016": { "class": "Interscript::Node::MetaData", @@ -5058,7 +7550,14 @@ "Ye̠zegi̠ne̠ti̠ Ki̠bi̠ri̠ Be̠ Iti̠yop’i̠yachi̠ni̠ Ts’e̠ni̠to", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 249, + "context_rules": 32, + "many_to_one": 24, + "one_to_many": 0 + } }, "un-ara-Arab-Latn-1971": { "class": "Interscript::Node::MetaData", @@ -5079,7 +7578,14 @@ "K͟haybar", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 31, + "context_rules": 0, + "many_to_one": 6, + "one_to_many": 0 + } }, "un-ara-Arab-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5100,7 +7606,14 @@ "Mişr", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 28, + "context_rules": 0, + "many_to_one": 5, + "one_to_many": 0 + } }, "un-ara-Arab-Latn-2017": { "class": "Interscript::Node::MetaData", @@ -5121,7 +7634,14 @@ "Mis̱r", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 159, + "context_rules": 17, + "many_to_one": 30, + "one_to_many": 0 + } }, "un-asm-Beng-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5142,7 +7662,14 @@ "asamīyā kabitā", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 65, + "context_rules": 39, + "many_to_one": 12, + "one_to_many": 0 + } }, "un-bel-Cyrl-Latn-2007": { "class": "Interscript::Node::MetaData", @@ -5163,7 +7690,14 @@ "Aršanski", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "un-ben-Beng-Latn-2016": { "class": "Interscript::Node::MetaData", @@ -5184,7 +7718,14 @@ "rka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 363, + "context_rules": 0, + "many_to_one": 15, + "one_to_many": 2 + } }, "un-bul-Cyrl-Latn-1977": { "class": "Interscript::Node::MetaData", @@ -5205,7 +7746,14 @@ "nunatak Abrit", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 60, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 0 + } }, "un-ell-Grek-Latn-1987-phonetic": { "class": "Interscript::Node::MetaData", @@ -5226,7 +7774,14 @@ "ɛnɑ prɑmɑ monon mɛ pɑrɑkinisɛ ki ɛmɛnɑ nɑ ɣrɑpso oti tutin tin pɑtriðɑ tin ɛxomɛn oli mɑzi,\n\nkɛ sofi ki ɑmɑθis kɛ plusii kɛ ftoxi kɛ politiki kɛ strɑtiotiki kɛ i plɛon mikrotɛri ɑnθropi;\n\nosi ɑɣonistikɑmɛn, ɑnɑloɣos o kɑθis, ɛxomɛn nɑ zisomɛn ɛðo.\n\nto lipon ðulɛpsɑmɛn oli mɑzi, nɑ tin filɑmɛn ki oli mɑzi kɛ nɑ min lɛɣi utɛ o ðinɑtos «ɛɣo» utɛ o ɑðinɑtos.\n\nksɛrɛtɛ potɛ nɑ lɛɣi o kɑθis «ɛɣo»? otɑn ɑɣonisti monos tu kɛ fkiɑsi i xɑlɑsi, nɑ lɛɣi «ɛɣo»;\n\notɑn omos ɑɣonizondɛ poli kɛ fkiɑnun, totɛ nɑ lɛnɛ «ɛmis». imɑstɛ is to «ɛmis» ki oxi is to «ɛɣo».\n\nkɛ is to ɛksis nɑ mɑθomɛn ɣnosi, ɑn θɛlomɛn nɑ fkiɑsomɛn xorion, nɑ zisomɛn oli mɑzi.\n\nɣiɑnis mɑkriɣiɑnis.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 99, + "context_rules": 50, + "many_to_one": 27, + "one_to_many": 0 + } }, "un-ell-Grek-Latn-1987-tl": { "class": "Interscript::Node::MetaData", @@ -5247,7 +7802,14 @@ "Éna práma mónon me parakíni̱se ki eména na grápso̱ óti toúti̱n ti̱n patrída ti̱n échomen óloi mazí, kai sofoí ki amatheís kai ploúsioi kai fto̱choí kai politikoí kai stratio̱tikoí kai oi pléon mikróteroi ánthro̱poi; ósoi ago̱nistí̱kamen, analógo̱s o katheís, échomen na zí̱somen edó̱. To loipón doulépsamen óloi mazí, na ti̱n fylámen ki óloi mazí kai na mi̱n légei oúte o dynatós «egó̱» oúte o adýnatos. Xérete póte na légei o katheís «egó̱»? Ótan ago̱nisteí mónos tou kai fkiásei í̱ chalásei, na légei «egó̱»; ótan ómo̱s ago̱nízontai polloí kai fkiánoun, tóte na léne «emeís». Eímaste eis to «emeís» ki óchi eis to «egó̱». Kai eis to exí̱s na máthomen gnó̱si̱, an thélomen na fkiásomen cho̱rión, na zí̱somen óloi mazí.\n\nGiánni̱s Makrygiánni̱s.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "un-ell-Grek-Latn-1987-ts": { "class": "Interscript::Node::MetaData", @@ -5268,7 +7830,14 @@ "Éna práma mónon me parakínise ki eména na grápso óti toútin tin patrída tin échomen óloi mazí, kai sofoí ki amatheís kai ploúsioi kai ftochoí kai politikoí kai stratiotikoí kai oi pléon mikróteroi ánthropoi; ósoi agonistíkamen, analógos o katheís, échomen na zísomen edó. To loipón doulépsamen óloi mazí, na tin fylámen ki óloi mazí kai na min légei oúte o dynatós «egó» oúte o adýnatos. Xérete póte na légei o katheís «egó»? Ótan agonisteí mónos tou kai fkiásei í chalásei, na légei «egó»; ótan ómos agonízontai polloí kai fkiánoun, tóte na léne «emeís». Eímaste eis to «emeís» ki óchi eis to «egó». Kai eis to exís na máthomen gnósi, an thélomen na fkiásomen chorión, na zísomen óloi mazí.\n\nGiánnis Makrygiánnis.\n", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "un-guj-Gujr-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5289,7 +7858,14 @@ "amita shāhanŏ kŏrŏnā ripŏrṭa 2 ŏgasṭĕ pŏjhiṭiva āvyŏ hatŏ, tyārathī tĕmanuṁ svāsthya sāruṁ nathī", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 77, + "context_rules": 34, + "many_to_one": 13, + "one_to_many": 0 + } }, "un-hin-Deva-Latn-2016": { "class": "Interscript::Node::MetaData", @@ -5310,7 +7886,14 @@ "dillī", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 107, + "context_rules": 80, + "many_to_one": 10, + "one_to_many": 0 + } }, "un-kan-Kana-Latn-2016": { "class": "Interscript::Node::MetaData", @@ -5331,7 +7914,14 @@ "karṇāṭaka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 77, + "context_rules": 34, + "many_to_one": 13, + "one_to_many": 0 + } }, "un-mal-Mlym-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5352,7 +7942,14 @@ "chainaykkĕtirĕ laḍākkil sadāsajjaṃ; yuĕsilninn 72,500 sig–16 ṟaiphiḷ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 91, + "context_rules": 37, + "many_to_one": 13, + "one_to_many": 0 + } }, "un-mar-Deva-Latn-2016": { "class": "Interscript::Node::MetaData", @@ -5373,7 +7970,14 @@ "mahārāṣhṭr", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 11, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "un-mkd-Cyrl-Latn-1977": { "class": "Interscript::Node::MetaData", @@ -5394,7 +7998,14 @@ "Makedonija", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 62, + "context_rules": 4, + "many_to_one": 0, + "one_to_many": 0 + } }, "un-mon-Mong-Latn-general-2013": { "class": "Interscript::Node::MetaData", @@ -5415,7 +8026,14 @@ "ordos hota", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "un-mon-Mong-Latn-phonetic-2013": { "class": "Interscript::Node::MetaData", @@ -5436,7 +8054,14 @@ "ôrdôs hôta", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "un-nep-Deva-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5457,7 +8082,14 @@ "nepāl", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 66, + "context_rules": 80, + "many_to_one": 11, + "one_to_many": 0 + } }, "un-nep-Deva-Latn-2013": { "class": "Interscript::Node::MetaData", @@ -5478,7 +8110,14 @@ "nepāl", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "un-ori-Orya-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5499,7 +8138,14 @@ "rka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 81, + "context_rules": 37, + "many_to_one": 11, + "one_to_many": 0 + } }, "un-pan-Guru-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5520,7 +8166,14 @@ "paṁzāba 'cha vadha rihā khaḳhudakusḳhīāṁ dā rujhāna", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 155, + "context_rules": 66, + "many_to_one": 16, + "one_to_many": 0 + } }, "un-prs-Arab-Latn-1967": { "class": "Interscript::Node::MetaData", @@ -5541,7 +8194,14 @@ "Anjīrah", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 75, + "context_rules": 19, + "many_to_one": 7, + "one_to_many": 0 + } }, "un-rus-Cyrl-Latn-1987": { "class": "Interscript::Node::MetaData", @@ -5562,7 +8222,14 @@ "Anapa", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 8, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 0 + } }, "un-sin-Sinh-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5583,7 +8250,14 @@ "shīra laṁkāve kīraḍāva itihāsaye ihaḷama tæ̆nakaṭa genna kaṭayutu karanavā", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 89, + "context_rules": 35, + "many_to_one": 16, + "one_to_many": 0 + } }, "un-srp-Cyrl-Latn-1997": { "class": "Interscript::Node::MetaData", @@ -5604,7 +8278,14 @@ "Šuplja Stena", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "un-tam-Taml-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5625,7 +8306,14 @@ "al̮intu poṉa nakarattil , tŏlaintu poṉa nāṉ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 66, + "context_rules": 23, + "many_to_one": 12, + "one_to_many": 0 + } }, "un-tel-Telu-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5646,7 +8334,14 @@ "tamiḷanāḍu", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 83, + "context_rules": 35, + "many_to_one": 14, + "one_to_many": 0 + } }, "un-ukr-Cyrl-Latn-1998": { "class": "Interscript::Node::MetaData", @@ -5667,7 +8362,14 @@ "OLEKSANDR ÂN", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 6, + "context_rules": 0, + "many_to_one": 2, + "one_to_many": 0 + } }, "un-ukr-Cyrl-Latn-2012": { "class": "Interscript::Node::MetaData", @@ -5688,7 +8390,14 @@ "Alushta", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "un-urd-Arab-Latn-1972": { "class": "Interscript::Node::MetaData", @@ -5709,7 +8418,14 @@ "Bvghdī", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 105, + "context_rules": 19, + "many_to_one": 21, + "one_to_many": 3 + } }, "var-amh-Ethi-Latn-eae-2003": { "class": "Interscript::Node::MetaData", @@ -5730,7 +8446,14 @@ "yäzegənätə kəbərə bä ʾitəyoṗəyačənə ṣänəto", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 288, + "context_rules": 0, + "many_to_one": 5, + "one_to_many": 0 + } }, "var-ara-Arab-Arab-rababa": { "class": "Interscript::Node::MetaData", @@ -5751,7 +8474,14 @@ "قِطْرَ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "var-gez-Ethi-Latn-eae-2003": { "class": "Interscript::Node::MetaData", @@ -5772,7 +8502,14 @@ "bäqädami gäbərä ʾəgəziʾabəḥerə sämayä wämədərä", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "var-hin-Deva-Latn-hunterian-1872": { "class": "Interscript::Node::MetaData", @@ -5793,7 +8530,14 @@ "paraipakka", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 108, + "context_rules": 4, + "many_to_one": 28, + "one_to_many": 0 + } }, "var-jpn-Hrkt-Latn-hepburn-1886": { "class": "Interscript::Node::MetaData", @@ -5814,7 +8558,14 @@ "gumma", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 264, + "context_rules": 5, + "many_to_one": 127, + "one_to_many": 0 + } }, "var-jpn-Hrkt-Latn-hepburn-1954": { "class": "Interscript::Node::MetaData", @@ -5835,7 +8586,14 @@ "kagomma", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 264, + "context_rules": 5, + "many_to_one": 126, + "one_to_many": 0 + } }, "var-kor-Hang-Hang-jamo": { "class": "Interscript::Node::MetaData", @@ -5856,7 +8614,14 @@ "안녕", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 11172, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "var-kor-Hang-Latn-mr-1939": { "class": "Interscript::Node::MetaData", @@ -5877,7 +8642,14 @@ "kugyŏng", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 23, + "context_rules": 295, + "many_to_one": 0, + "one_to_many": 0 + } }, "var-kor-Kore-Hang-2013": { "class": "Interscript::Node::MetaData", @@ -5898,7 +8670,14 @@ "일일일", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 59616, + "context_rules": 0, + "many_to_one": 2422, + "one_to_many": 114 + } }, "var-kor-Kore-Latn-mr-1939": { "class": "Interscript::Node::MetaData", @@ -5919,7 +8698,14 @@ "Pangmulgwan", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "var-mar-Deva-Latn-hunterian-1872": { "class": "Interscript::Node::MetaData", @@ -5940,7 +8726,14 @@ "thaānae - jailhyaāta baudhawaāraī eka hajaāra raugnaānchaī waādha, tara janaānchyaā marityaūchaī naonda", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "var-mon-Mong-Latn-1930": { "class": "Interscript::Node::MetaData", @@ -5961,7 +8754,14 @@ "man-u ulus-un nejislel kota ulaganbagatur bol 80 000 sikam kymyn-tei, ulus-un olan nejite-jin, aƶu akui-jin tөb gaƶar-ud orosigsan jekeken oron bolun-a.\ntus ulus-un dotor-a-aça garku tygykei ƶujil-i bolbasuragulku aƶu yiledbyri-jin gaƶar-ud-i bajigulku ni çikula.", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 28, + "context_rules": 2, + "many_to_one": 2, + "one_to_many": 0 + } }, "var-mon-Mong-Latn-lessing": { "class": "Interscript::Node::MetaData", @@ -5982,7 +8782,14 @@ "køkexota", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 35, + "context_rules": 2, + "many_to_one": 1, + "one_to_many": 0 + } }, "var-mon-Mong-Latn-vpmc": { "class": "Interscript::Node::MetaData", @@ -6003,7 +8810,14 @@ "q-a", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 33, + "context_rules": 2, + "many_to_one": 1, + "one_to_many": 0 + } }, "var-pra-Deva-Latn-iast-1912": { "class": "Interscript::Node::MetaData", @@ -6024,7 +8838,14 @@ "naitayaḥ saravagataḥ sathaāṇauracalao’yaṃ sanaātanaḥ", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSLESS_ONE_TO_ONE", + "pairs": 0, + "context_rules": 0, + "many_to_one": 0, + "one_to_many": 0 + } }, "var-san-Deva-Latn-iast-1912": { "class": "Interscript::Node::MetaData", @@ -6045,7 +8866,14 @@ "paūraṇamadaḥ paūraṇamaidaṃ paūraṇaāta paūraṇamaudacayatae", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 69, + "context_rules": 0, + "many_to_one": 17, + "one_to_many": 0 + } }, "var-zho-Hani-Latn-wd-1979": { "class": "Interscript::Node::MetaData", @@ -6066,6 +8894,13 @@ "Hsi-nan", null ], - "skip_js": false + "skip_js": false, + "invertibility": { + "verdict": "LOSSY_MANY_TO_ONE", + "pairs": 22412, + "context_rules": 5081, + "many_to_one": 396, + "one_to_many": 0 + } } } diff --git a/src/pages/docs/isc-language.astro b/src/pages/docs/isc-language.astro index bc7165c1..9e682993 100644 --- a/src/pages/docs/isc-language.astro +++ b/src/pages/docs/isc-language.astro @@ -65,10 +65,8 @@ const tests = `tests { "input" -> "expected" }`

Rules and contexts

{rules}

before/after are zero-width - lookbehind/lookahead. boundary is a zero-width word edge. - not_before/not_after negate. - There is no alternation operator — alternatives are - separate rules.

+ lookbehind/lookahead. boundary is a zero-width + word edge. not_before/not_after negate. There is no alternation operator — alternatives are separate rules.

Aliases

{aliases}
@@ -77,10 +75,11 @@ const tests = `tests { "input" -> "expected" }`

Stages calling stages; stdlib directives

{run}
-

run takes no other form — stray identifiers are a - parse error (a typo'd map fails loudly). The rababa - directive invokes the ML adapter with mandatory keyword arguments; - an unprovisioned model raises a named error enumerating known ids.

+

run takes no other form — stray identifiers + are a parse error (a typo'd map fails loudly). + The rababa directive invokes the ML adapter with + mandatory keyword arguments; an unprovisioned model raises a named + error enumerating known ids.

Casing targets

{casing}
@@ -96,7 +95,7 @@ const tests = `tests { "input" -> "expected" }`

Normative reference

The full specification (IS-1 v2) with the 22 frozen rulings and the - cross-runtime guarantee lives in - interscript-models/docs/IS-1-v2.md.

+ cross-runtime guarantee lives in interscript-models/docs/IS-1-v2.md.

diff --git a/src/pages/maps/[systemCode].astro b/src/pages/maps/[systemCode].astro index 8ef475f7..e0af4c5c 100644 --- a/src/pages/maps/[systemCode].astro +++ b/src/pages/maps/[systemCode].astro @@ -46,6 +46,16 @@ if (!entry) { } const { data, test } = entry +const invertibility = ( + entry as { + invertibility?: { + verdict: string + pairs: number + many_to_one: number + one_to_many: number + } | null + } +).invertibility const year = data.creation_date ?? data.id const languageDisplay = parseLanguageField(data.language) const sourceName = scriptName(data.source_script) @@ -102,6 +112,25 @@ const pageDesc =
) } + { + invertibility && ( +
+
Invertibility
+
+ {invertibility.verdict === "LOSSLESS_ONE_TO_ONE" + ? "Lossless · one-to-one" + : invertibility.verdict === "LOSSY_MANY_TO_ONE" + ? "Lossy · many-to-one" + : invertibility.verdict}{" "} + + ({invertibility.pairs} pairs + {invertibility.many_to_one > 0 && `, ${invertibility.many_to_one} many-to-one`} + {invertibility.one_to_many > 0 && `, ${invertibility.one_to_many} one-to-many`}) + +
+
+ ) + } { data.confirmation_date && (
diff --git a/src/pages/maps/index.astro b/src/pages/maps/index.astro index 5b63a5d3..2a350072 100644 --- a/src/pages/maps/index.astro +++ b/src/pages/maps/index.astro @@ -22,6 +22,14 @@ interface MapEntry { test?: (string | null)[] } +interface Invertibility { + verdict: string + pairs: number + context_rules?: number + many_to_one: number + one_to_many: number +} + const entries = Object.entries(catalogue).map(([code, entry]) => ({ code, ...entry, @@ -94,6 +102,8 @@ const liveDemoable = entries.filter((e) => bundledCodes.has(e.code)).length year: e.data.creation_date ?? e.data.id, language: e.data.language, description: e.data.description, + invertibility: + (e as unknown as { invertibility?: Invertibility }).invertibility ?? null, hasTest: Boolean(e.test && e.test[0]), testInput: e.test?.[0] ?? null, testExpected: e.test?.[1] ?? null,