diff --git a/rake.d/iso15924.rb b/rake.d/iso15924.rb index 56e5829e3..08c8185e3 100644 --- a/rake.d/iso15924.rb +++ b/rake.d/iso15924.rb @@ -48,16 +48,21 @@ def create_iso15924_script_list_file namespace mtx::iso15924 { -std::vector const g_scripts{ +std::vector g_scripts; + +void +init() { + g_scripts.reserve(#{rows.size}); + EOT footer = < ',', :row_prefix => " { ", :row_suffix => " },").join("\n") + "\n" + footer + content = header + format_table(rows.sort, :column_suffix => ',', :row_prefix => " g_scripts.emplace_back(", :row_suffix => ");").join("\n") + "\n" + footer runq("write", cpp_file_name) { IO.write("#{$source_dir}/#{cpp_file_name}", content); 0 } diff --git a/src/common/common.cpp b/src/common/common.cpp index fe46617e9..f73a9ce07 100644 --- a/src/common/common.cpp +++ b/src/common/common.cpp @@ -31,6 +31,7 @@ #include "common/iana_language_subtag_registry.h" #include "common/iso639.h" #include "common/iso3166.h" +#include "common/iso15924.h" #include "common/mm_file_io.h" #include "common/mm_stdio.h" #include "common/random.h" @@ -202,6 +203,7 @@ mtx_common_init(std::string const &program_name, mtx::iana::language_subtag_registry::init(); mtx::iso639::init(); mtx::iso3166::init(); + mtx::iso15924::init(); stereo_mode_c::init(); mtx::sys::determine_path_to_current_executable(argv0 ? std::string{argv0} : std::string{}); diff --git a/src/common/iso15924.h b/src/common/iso15924.h index 9b2866ff6..8ed5cef6f 100644 --- a/src/common/iso15924.h +++ b/src/common/iso15924.h @@ -21,10 +21,18 @@ struct script_t { std::string const code; unsigned int number; std::string const english_name; + + script_t(std::string &&p_code, unsigned int p_number, std::string &&p_english_name) + : code{std::move(p_code)} + , number{p_number} + , english_name{std::move(p_english_name)} + { + } }; -extern std::vector const g_scripts; +extern std::vector g_scripts; +void init(); std::optional look_up(std::string const &s); } // namespace mtx::iso15924 diff --git a/src/common/iso15924_script_list.cpp b/src/common/iso15924_script_list.cpp index b4963d673..47c505036 100644 --- a/src/common/iso15924_script_list.cpp +++ b/src/common/iso15924_script_list.cpp @@ -21,210 +21,215 @@ namespace mtx::iso15924 { -std::vector const g_scripts{ - { "Adlm"s, 166, u8"Adlam"s }, - { "Afak"s, 439, u8"Afaka"s }, - { "Aghb"s, 239, u8"Caucasian Albanian"s }, - { "Ahom"s, 338, u8"Ahom, Tai Ahom"s }, - { "Arab"s, 160, u8"Arabic"s }, - { "Aran"s, 161, u8"Arabic (Nastaliq variant)"s }, - { "Armi"s, 124, u8"Imperial Aramaic"s }, - { "Armn"s, 230, u8"Armenian"s }, - { "Avst"s, 134, u8"Avestan"s }, - { "Bali"s, 360, u8"Balinese"s }, - { "Bamu"s, 435, u8"Bamum"s }, - { "Bass"s, 259, u8"Bassa Vah"s }, - { "Batk"s, 365, u8"Batak"s }, - { "Beng"s, 325, u8"Bengali (Bangla)"s }, - { "Bhks"s, 334, u8"Bhaiksuki"s }, - { "Blis"s, 550, u8"Blissymbols"s }, - { "Bopo"s, 285, u8"Bopomofo"s }, - { "Brah"s, 300, u8"Brahmi"s }, - { "Brai"s, 570, u8"Braille"s }, - { "Bugi"s, 367, u8"Buginese"s }, - { "Buhd"s, 372, u8"Buhid"s }, - { "Cakm"s, 349, u8"Chakma"s }, - { "Cans"s, 440, u8"Unified Canadian Aboriginal Syllabics"s }, - { "Cari"s, 201, u8"Carian"s }, - { "Cham"s, 358, u8"Cham"s }, - { "Cher"s, 445, u8"Cherokee"s }, - { "Chrs"s, 109, u8"Chorasmian"s }, - { "Cirt"s, 291, u8"Cirth"s }, - { "Copt"s, 204, u8"Coptic"s }, - { "Cpmn"s, 402, u8"Cypro-Minoan"s }, - { "Cprt"s, 403, u8"Cypriot syllabary"s }, - { "Cyrl"s, 220, u8"Cyrillic"s }, - { "Cyrs"s, 221, u8"Cyrillic (Old Church Slavonic variant)"s }, - { "Deva"s, 315, u8"Devanagari (Nagari)"s }, - { "Diak"s, 342, u8"Dives Akuru"s }, - { "Dogr"s, 328, u8"Dogra"s }, - { "Dsrt"s, 250, u8"Deseret (Mormon)"s }, - { "Dupl"s, 755, u8"Duployan shorthand, Duployan stenography"s }, - { "Egyd"s, 70, u8"Egyptian demotic"s }, - { "Egyh"s, 60, u8"Egyptian hieratic"s }, - { "Egyp"s, 50, u8"Egyptian hieroglyphs"s }, - { "Elba"s, 226, u8"Elbasan"s }, - { "Elym"s, 128, u8"Elymaic"s }, - { "Ethi"s, 430, u8"Ethiopic (Geʻez)"s }, - { "Geok"s, 241, u8"Khutsuri (Asomtavruli and Nuskhuri)"s }, - { "Geor"s, 240, u8"Georgian (Mkhedruli and Mtavruli)"s }, - { "Glag"s, 225, u8"Glagolitic"s }, - { "Gong"s, 312, u8"Gunjala Gondi"s }, - { "Gonm"s, 313, u8"Masaram Gondi"s }, - { "Goth"s, 206, u8"Gothic"s }, - { "Gran"s, 343, u8"Grantha"s }, - { "Grek"s, 200, u8"Greek"s }, - { "Gujr"s, 320, u8"Gujarati"s }, - { "Guru"s, 310, u8"Gurmukhi"s }, - { "Hanb"s, 503, u8"Han with Bopomofo (alias for Han + Bopomofo)"s }, - { "Hang"s, 286, u8"Hangul (Hangŭl, Hangeul)"s }, - { "Hani"s, 500, u8"Han (Hanzi, Kanji, Hanja)"s }, - { "Hano"s, 371, u8"Hanunoo (Hanunóo)"s }, - { "Hans"s, 501, u8"Han (Simplified variant)"s }, - { "Hant"s, 502, u8"Han (Traditional variant)"s }, - { "Hatr"s, 127, u8"Hatran"s }, - { "Hebr"s, 125, u8"Hebrew"s }, - { "Hira"s, 410, u8"Hiragana"s }, - { "Hluw"s, 80, u8"Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs)"s }, - { "Hmng"s, 450, u8"Pahawh Hmong"s }, - { "Hmnp"s, 451, u8"Nyiakeng Puachue Hmong"s }, - { "Hrkt"s, 412, u8"Japanese syllabaries (alias for Hiragana + Katakana)"s }, - { "Hung"s, 176, u8"Old Hungarian (Hungarian Runic)"s }, - { "Inds"s, 610, u8"Indus (Harappan)"s }, - { "Ital"s, 210, u8"Old Italic (Etruscan, Oscan, etc.)"s }, - { "Jamo"s, 284, u8"Jamo (alias for Jamo subset of Hangul)"s }, - { "Java"s, 361, u8"Javanese"s }, - { "Jpan"s, 413, u8"Japanese (alias for Han + Hiragana + Katakana)"s }, - { "Jurc"s, 510, u8"Jurchen"s }, - { "Kali"s, 357, u8"Kayah Li"s }, - { "Kana"s, 411, u8"Katakana"s }, - { "Khar"s, 305, u8"Kharoshthi"s }, - { "Khmr"s, 355, u8"Khmer"s }, - { "Khoj"s, 322, u8"Khojki"s }, - { "Kitl"s, 505, u8"Khitan large script"s }, - { "Kits"s, 288, u8"Khitan small script"s }, - { "Knda"s, 345, u8"Kannada"s }, - { "Kore"s, 287, u8"Korean (alias for Hangul + Han)"s }, - { "Kpel"s, 436, u8"Kpelle"s }, - { "Kthi"s, 317, u8"Kaithi"s }, - { "Lana"s, 351, u8"Tai Tham (Lanna)"s }, - { "Laoo"s, 356, u8"Lao"s }, - { "Latf"s, 217, u8"Latin (Fraktur variant)"s }, - { "Latg"s, 216, u8"Latin (Gaelic variant)"s }, - { "Latn"s, 215, u8"Latin"s }, - { "Leke"s, 364, u8"Leke"s }, - { "Lepc"s, 335, u8"Lepcha (Róng)"s }, - { "Limb"s, 336, u8"Limbu"s }, - { "Lina"s, 400, u8"Linear A"s }, - { "Linb"s, 401, u8"Linear B"s }, - { "Lisu"s, 399, u8"Lisu (Fraser)"s }, - { "Loma"s, 437, u8"Loma"s }, - { "Lyci"s, 202, u8"Lycian"s }, - { "Lydi"s, 116, u8"Lydian"s }, - { "Mahj"s, 314, u8"Mahajani"s }, - { "Maka"s, 366, u8"Makasar"s }, - { "Mand"s, 140, u8"Mandaic, Mandaean"s }, - { "Mani"s, 139, u8"Manichaean"s }, - { "Marc"s, 332, u8"Marchen"s }, - { "Maya"s, 90, u8"Mayan hieroglyphs"s }, - { "Medf"s, 265, u8"Medefaidrin (Oberi Okaime, Oberi Ɔkaimɛ)"s }, - { "Mend"s, 438, u8"Mende Kikakui"s }, - { "Merc"s, 101, u8"Meroitic Cursive"s }, - { "Mero"s, 100, u8"Meroitic Hieroglyphs"s }, - { "Mlym"s, 347, u8"Malayalam"s }, - { "Modi"s, 324, u8"Modi, Moḍī"s }, - { "Mong"s, 145, u8"Mongolian"s }, - { "Moon"s, 218, u8"Moon (Moon code, Moon script, Moon type)"s }, - { "Mroo"s, 264, u8"Mro, Mru"s }, - { "Mtei"s, 337, u8"Meitei Mayek (Meithei, Meetei)"s }, - { "Mult"s, 323, u8"Multani"s }, - { "Mymr"s, 350, u8"Myanmar (Burmese)"s }, - { "Nand"s, 311, u8"Nandinagari"s }, - { "Narb"s, 106, u8"Old North Arabian (Ancient North Arabian)"s }, - { "Nbat"s, 159, u8"Nabataean"s }, - { "Newa"s, 333, u8"Newa, Newar, Newari, Nepāla lipi"s }, - { "Nkdb"s, 85, u8"Naxi Dongba (na²¹ɕi³³ to³³ba²¹, Nakhi Tomba)"s }, - { "Nkgb"s, 420, u8"Naxi Geba (na²¹ɕi³³ gʌ²¹ba²¹, 'Na-'Khi ²Ggŏ-¹baw, Nakhi Geba)"s }, - { "Nkoo"s, 165, u8"N’Ko"s }, - { "Nshu"s, 499, u8"Nüshu"s }, - { "Ogam"s, 212, u8"Ogham"s }, - { "Olck"s, 261, u8"Ol Chiki (Ol Cemet’, Ol, Santali)"s }, - { "Orkh"s, 175, u8"Old Turkic, Orkhon Runic"s }, - { "Orya"s, 327, u8"Oriya (Odia)"s }, - { "Osge"s, 219, u8"Osage"s }, - { "Osma"s, 260, u8"Osmanya"s }, - { "Palm"s, 126, u8"Palmyrene"s }, - { "Pauc"s, 263, u8"Pau Cin Hau"s }, - { "Perm"s, 227, u8"Old Permic"s }, - { "Phag"s, 331, u8"Phags-pa"s }, - { "Phli"s, 131, u8"Inscriptional Pahlavi"s }, - { "Phlp"s, 132, u8"Psalter Pahlavi"s }, - { "Phlv"s, 133, u8"Book Pahlavi"s }, - { "Phnx"s, 115, u8"Phoenician"s }, - { "Piqd"s, 293, u8"Klingon (KLI pIqaD)"s }, - { "Plrd"s, 282, u8"Miao (Pollard)"s }, - { "Prti"s, 130, u8"Inscriptional Parthian"s }, - { "Qaaa"s, 900, u8"Reserved for private use (start)"s }, - { "Qabx"s, 949, u8"Reserved for private use (end)"s }, - { "Rjng"s, 363, u8"Rejang (Redjang, Kaganga)"s }, - { "Rohg"s, 167, u8"Hanifi Rohingya"s }, - { "Roro"s, 620, u8"Rongorongo"s }, - { "Runr"s, 211, u8"Runic"s }, - { "Samr"s, 123, u8"Samaritan"s }, - { "Sara"s, 292, u8"Sarati"s }, - { "Sarb"s, 105, u8"Old South Arabian"s }, - { "Saur"s, 344, u8"Saurashtra"s }, - { "Sgnw"s, 95, u8"SignWriting"s }, - { "Shaw"s, 281, u8"Shavian (Shaw)"s }, - { "Shrd"s, 319, u8"Sharada, Śāradā"s }, - { "Shui"s, 530, u8"Shuishu"s }, - { "Sidd"s, 302, u8"Siddham, Siddhaṃ, Siddhamātṛkā"s }, - { "Sind"s, 318, u8"Khudawadi, Sindhi"s }, - { "Sinh"s, 348, u8"Sinhala"s }, - { "Sogd"s, 141, u8"Sogdian"s }, - { "Sogo"s, 142, u8"Old Sogdian"s }, - { "Sora"s, 398, u8"Sora Sompeng"s }, - { "Soyo"s, 329, u8"Soyombo"s }, - { "Sund"s, 362, u8"Sundanese"s }, - { "Sylo"s, 316, u8"Syloti Nagri"s }, - { "Syrc"s, 135, u8"Syriac"s }, - { "Syre"s, 138, u8"Syriac (Estrangelo variant)"s }, - { "Syrj"s, 137, u8"Syriac (Western variant)"s }, - { "Syrn"s, 136, u8"Syriac (Eastern variant)"s }, - { "Tagb"s, 373, u8"Tagbanwa"s }, - { "Takr"s, 321, u8"Takri, Ṭākrī, Ṭāṅkrī"s }, - { "Tale"s, 353, u8"Tai Le"s }, - { "Talu"s, 354, u8"New Tai Lue"s }, - { "Taml"s, 346, u8"Tamil"s }, - { "Tang"s, 520, u8"Tangut"s }, - { "Tavt"s, 359, u8"Tai Viet"s }, - { "Telu"s, 340, u8"Telugu"s }, - { "Teng"s, 290, u8"Tengwar"s }, - { "Tfng"s, 120, u8"Tifinagh (Berber)"s }, - { "Tglg"s, 370, u8"Tagalog (Baybayin, Alibata)"s }, - { "Thaa"s, 170, u8"Thaana"s }, - { "Thai"s, 352, u8"Thai"s }, - { "Tibt"s, 330, u8"Tibetan"s }, - { "Tirh"s, 326, u8"Tirhuta"s }, - { "Toto"s, 294, u8"Toto"s }, - { "Ugar"s, 40, u8"Ugaritic"s }, - { "Vaii"s, 470, u8"Vai"s }, - { "Visp"s, 280, u8"Visible Speech"s }, - { "Wara"s, 262, u8"Warang Citi (Varang Kshiti)"s }, - { "Wcho"s, 283, u8"Wancho"s }, - { "Wole"s, 480, u8"Woleai"s }, - { "Xpeo"s, 30, u8"Old Persian"s }, - { "Xsux"s, 20, u8"Cuneiform, Sumero-Akkadian"s }, - { "Yezi"s, 192, u8"Yezidi"s }, - { "Yiii"s, 460, u8"Yi"s }, - { "Zanb"s, 339, u8"Zanabazar Square (Zanabazarin Dörböljin Useg, Xewtee Dörböljin Bicig, Horizontal Square Script)"s }, - { "Zinh"s, 994, u8"Code for inherited script"s }, - { "Zmth"s, 995, u8"Mathematical notation"s }, - { "Zsye"s, 993, u8"Symbols (Emoji variant)"s }, - { "Zsym"s, 996, u8"Symbols"s }, - { "Zxxx"s, 997, u8"Code for unwritten documents"s }, - { "Zyyy"s, 998, u8"Code for undetermined script"s }, - { "Zzzz"s, 999, u8"Code for uncoded script"s }, -}; +std::vector g_scripts; + +void +init() { + g_scripts.reserve(203); + + g_scripts.emplace_back("Adlm"s, 166, u8"Adlam"s ); + g_scripts.emplace_back("Afak"s, 439, u8"Afaka"s ); + g_scripts.emplace_back("Aghb"s, 239, u8"Caucasian Albanian"s ); + g_scripts.emplace_back("Ahom"s, 338, u8"Ahom, Tai Ahom"s ); + g_scripts.emplace_back("Arab"s, 160, u8"Arabic"s ); + g_scripts.emplace_back("Aran"s, 161, u8"Arabic (Nastaliq variant)"s ); + g_scripts.emplace_back("Armi"s, 124, u8"Imperial Aramaic"s ); + g_scripts.emplace_back("Armn"s, 230, u8"Armenian"s ); + g_scripts.emplace_back("Avst"s, 134, u8"Avestan"s ); + g_scripts.emplace_back("Bali"s, 360, u8"Balinese"s ); + g_scripts.emplace_back("Bamu"s, 435, u8"Bamum"s ); + g_scripts.emplace_back("Bass"s, 259, u8"Bassa Vah"s ); + g_scripts.emplace_back("Batk"s, 365, u8"Batak"s ); + g_scripts.emplace_back("Beng"s, 325, u8"Bengali (Bangla)"s ); + g_scripts.emplace_back("Bhks"s, 334, u8"Bhaiksuki"s ); + g_scripts.emplace_back("Blis"s, 550, u8"Blissymbols"s ); + g_scripts.emplace_back("Bopo"s, 285, u8"Bopomofo"s ); + g_scripts.emplace_back("Brah"s, 300, u8"Brahmi"s ); + g_scripts.emplace_back("Brai"s, 570, u8"Braille"s ); + g_scripts.emplace_back("Bugi"s, 367, u8"Buginese"s ); + g_scripts.emplace_back("Buhd"s, 372, u8"Buhid"s ); + g_scripts.emplace_back("Cakm"s, 349, u8"Chakma"s ); + g_scripts.emplace_back("Cans"s, 440, u8"Unified Canadian Aboriginal Syllabics"s ); + g_scripts.emplace_back("Cari"s, 201, u8"Carian"s ); + g_scripts.emplace_back("Cham"s, 358, u8"Cham"s ); + g_scripts.emplace_back("Cher"s, 445, u8"Cherokee"s ); + g_scripts.emplace_back("Chrs"s, 109, u8"Chorasmian"s ); + g_scripts.emplace_back("Cirt"s, 291, u8"Cirth"s ); + g_scripts.emplace_back("Copt"s, 204, u8"Coptic"s ); + g_scripts.emplace_back("Cpmn"s, 402, u8"Cypro-Minoan"s ); + g_scripts.emplace_back("Cprt"s, 403, u8"Cypriot syllabary"s ); + g_scripts.emplace_back("Cyrl"s, 220, u8"Cyrillic"s ); + g_scripts.emplace_back("Cyrs"s, 221, u8"Cyrillic (Old Church Slavonic variant)"s ); + g_scripts.emplace_back("Deva"s, 315, u8"Devanagari (Nagari)"s ); + g_scripts.emplace_back("Diak"s, 342, u8"Dives Akuru"s ); + g_scripts.emplace_back("Dogr"s, 328, u8"Dogra"s ); + g_scripts.emplace_back("Dsrt"s, 250, u8"Deseret (Mormon)"s ); + g_scripts.emplace_back("Dupl"s, 755, u8"Duployan shorthand, Duployan stenography"s ); + g_scripts.emplace_back("Egyd"s, 70, u8"Egyptian demotic"s ); + g_scripts.emplace_back("Egyh"s, 60, u8"Egyptian hieratic"s ); + g_scripts.emplace_back("Egyp"s, 50, u8"Egyptian hieroglyphs"s ); + g_scripts.emplace_back("Elba"s, 226, u8"Elbasan"s ); + g_scripts.emplace_back("Elym"s, 128, u8"Elymaic"s ); + g_scripts.emplace_back("Ethi"s, 430, u8"Ethiopic (Geʻez)"s ); + g_scripts.emplace_back("Geok"s, 241, u8"Khutsuri (Asomtavruli and Nuskhuri)"s ); + g_scripts.emplace_back("Geor"s, 240, u8"Georgian (Mkhedruli and Mtavruli)"s ); + g_scripts.emplace_back("Glag"s, 225, u8"Glagolitic"s ); + g_scripts.emplace_back("Gong"s, 312, u8"Gunjala Gondi"s ); + g_scripts.emplace_back("Gonm"s, 313, u8"Masaram Gondi"s ); + g_scripts.emplace_back("Goth"s, 206, u8"Gothic"s ); + g_scripts.emplace_back("Gran"s, 343, u8"Grantha"s ); + g_scripts.emplace_back("Grek"s, 200, u8"Greek"s ); + g_scripts.emplace_back("Gujr"s, 320, u8"Gujarati"s ); + g_scripts.emplace_back("Guru"s, 310, u8"Gurmukhi"s ); + g_scripts.emplace_back("Hanb"s, 503, u8"Han with Bopomofo (alias for Han + Bopomofo)"s ); + g_scripts.emplace_back("Hang"s, 286, u8"Hangul (Hangŭl, Hangeul)"s ); + g_scripts.emplace_back("Hani"s, 500, u8"Han (Hanzi, Kanji, Hanja)"s ); + g_scripts.emplace_back("Hano"s, 371, u8"Hanunoo (Hanunóo)"s ); + g_scripts.emplace_back("Hans"s, 501, u8"Han (Simplified variant)"s ); + g_scripts.emplace_back("Hant"s, 502, u8"Han (Traditional variant)"s ); + g_scripts.emplace_back("Hatr"s, 127, u8"Hatran"s ); + g_scripts.emplace_back("Hebr"s, 125, u8"Hebrew"s ); + g_scripts.emplace_back("Hira"s, 410, u8"Hiragana"s ); + g_scripts.emplace_back("Hluw"s, 80, u8"Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs)"s ); + g_scripts.emplace_back("Hmng"s, 450, u8"Pahawh Hmong"s ); + g_scripts.emplace_back("Hmnp"s, 451, u8"Nyiakeng Puachue Hmong"s ); + g_scripts.emplace_back("Hrkt"s, 412, u8"Japanese syllabaries (alias for Hiragana + Katakana)"s ); + g_scripts.emplace_back("Hung"s, 176, u8"Old Hungarian (Hungarian Runic)"s ); + g_scripts.emplace_back("Inds"s, 610, u8"Indus (Harappan)"s ); + g_scripts.emplace_back("Ital"s, 210, u8"Old Italic (Etruscan, Oscan, etc.)"s ); + g_scripts.emplace_back("Jamo"s, 284, u8"Jamo (alias for Jamo subset of Hangul)"s ); + g_scripts.emplace_back("Java"s, 361, u8"Javanese"s ); + g_scripts.emplace_back("Jpan"s, 413, u8"Japanese (alias for Han + Hiragana + Katakana)"s ); + g_scripts.emplace_back("Jurc"s, 510, u8"Jurchen"s ); + g_scripts.emplace_back("Kali"s, 357, u8"Kayah Li"s ); + g_scripts.emplace_back("Kana"s, 411, u8"Katakana"s ); + g_scripts.emplace_back("Khar"s, 305, u8"Kharoshthi"s ); + g_scripts.emplace_back("Khmr"s, 355, u8"Khmer"s ); + g_scripts.emplace_back("Khoj"s, 322, u8"Khojki"s ); + g_scripts.emplace_back("Kitl"s, 505, u8"Khitan large script"s ); + g_scripts.emplace_back("Kits"s, 288, u8"Khitan small script"s ); + g_scripts.emplace_back("Knda"s, 345, u8"Kannada"s ); + g_scripts.emplace_back("Kore"s, 287, u8"Korean (alias for Hangul + Han)"s ); + g_scripts.emplace_back("Kpel"s, 436, u8"Kpelle"s ); + g_scripts.emplace_back("Kthi"s, 317, u8"Kaithi"s ); + g_scripts.emplace_back("Lana"s, 351, u8"Tai Tham (Lanna)"s ); + g_scripts.emplace_back("Laoo"s, 356, u8"Lao"s ); + g_scripts.emplace_back("Latf"s, 217, u8"Latin (Fraktur variant)"s ); + g_scripts.emplace_back("Latg"s, 216, u8"Latin (Gaelic variant)"s ); + g_scripts.emplace_back("Latn"s, 215, u8"Latin"s ); + g_scripts.emplace_back("Leke"s, 364, u8"Leke"s ); + g_scripts.emplace_back("Lepc"s, 335, u8"Lepcha (Róng)"s ); + g_scripts.emplace_back("Limb"s, 336, u8"Limbu"s ); + g_scripts.emplace_back("Lina"s, 400, u8"Linear A"s ); + g_scripts.emplace_back("Linb"s, 401, u8"Linear B"s ); + g_scripts.emplace_back("Lisu"s, 399, u8"Lisu (Fraser)"s ); + g_scripts.emplace_back("Loma"s, 437, u8"Loma"s ); + g_scripts.emplace_back("Lyci"s, 202, u8"Lycian"s ); + g_scripts.emplace_back("Lydi"s, 116, u8"Lydian"s ); + g_scripts.emplace_back("Mahj"s, 314, u8"Mahajani"s ); + g_scripts.emplace_back("Maka"s, 366, u8"Makasar"s ); + g_scripts.emplace_back("Mand"s, 140, u8"Mandaic, Mandaean"s ); + g_scripts.emplace_back("Mani"s, 139, u8"Manichaean"s ); + g_scripts.emplace_back("Marc"s, 332, u8"Marchen"s ); + g_scripts.emplace_back("Maya"s, 90, u8"Mayan hieroglyphs"s ); + g_scripts.emplace_back("Medf"s, 265, u8"Medefaidrin (Oberi Okaime, Oberi Ɔkaimɛ)"s ); + g_scripts.emplace_back("Mend"s, 438, u8"Mende Kikakui"s ); + g_scripts.emplace_back("Merc"s, 101, u8"Meroitic Cursive"s ); + g_scripts.emplace_back("Mero"s, 100, u8"Meroitic Hieroglyphs"s ); + g_scripts.emplace_back("Mlym"s, 347, u8"Malayalam"s ); + g_scripts.emplace_back("Modi"s, 324, u8"Modi, Moḍī"s ); + g_scripts.emplace_back("Mong"s, 145, u8"Mongolian"s ); + g_scripts.emplace_back("Moon"s, 218, u8"Moon (Moon code, Moon script, Moon type)"s ); + g_scripts.emplace_back("Mroo"s, 264, u8"Mro, Mru"s ); + g_scripts.emplace_back("Mtei"s, 337, u8"Meitei Mayek (Meithei, Meetei)"s ); + g_scripts.emplace_back("Mult"s, 323, u8"Multani"s ); + g_scripts.emplace_back("Mymr"s, 350, u8"Myanmar (Burmese)"s ); + g_scripts.emplace_back("Nand"s, 311, u8"Nandinagari"s ); + g_scripts.emplace_back("Narb"s, 106, u8"Old North Arabian (Ancient North Arabian)"s ); + g_scripts.emplace_back("Nbat"s, 159, u8"Nabataean"s ); + g_scripts.emplace_back("Newa"s, 333, u8"Newa, Newar, Newari, Nepāla lipi"s ); + g_scripts.emplace_back("Nkdb"s, 85, u8"Naxi Dongba (na²¹ɕi³³ to³³ba²¹, Nakhi Tomba)"s ); + g_scripts.emplace_back("Nkgb"s, 420, u8"Naxi Geba (na²¹ɕi³³ gʌ²¹ba²¹, 'Na-'Khi ²Ggŏ-¹baw, Nakhi Geba)"s ); + g_scripts.emplace_back("Nkoo"s, 165, u8"N’Ko"s ); + g_scripts.emplace_back("Nshu"s, 499, u8"Nüshu"s ); + g_scripts.emplace_back("Ogam"s, 212, u8"Ogham"s ); + g_scripts.emplace_back("Olck"s, 261, u8"Ol Chiki (Ol Cemet’, Ol, Santali)"s ); + g_scripts.emplace_back("Orkh"s, 175, u8"Old Turkic, Orkhon Runic"s ); + g_scripts.emplace_back("Orya"s, 327, u8"Oriya (Odia)"s ); + g_scripts.emplace_back("Osge"s, 219, u8"Osage"s ); + g_scripts.emplace_back("Osma"s, 260, u8"Osmanya"s ); + g_scripts.emplace_back("Palm"s, 126, u8"Palmyrene"s ); + g_scripts.emplace_back("Pauc"s, 263, u8"Pau Cin Hau"s ); + g_scripts.emplace_back("Perm"s, 227, u8"Old Permic"s ); + g_scripts.emplace_back("Phag"s, 331, u8"Phags-pa"s ); + g_scripts.emplace_back("Phli"s, 131, u8"Inscriptional Pahlavi"s ); + g_scripts.emplace_back("Phlp"s, 132, u8"Psalter Pahlavi"s ); + g_scripts.emplace_back("Phlv"s, 133, u8"Book Pahlavi"s ); + g_scripts.emplace_back("Phnx"s, 115, u8"Phoenician"s ); + g_scripts.emplace_back("Piqd"s, 293, u8"Klingon (KLI pIqaD)"s ); + g_scripts.emplace_back("Plrd"s, 282, u8"Miao (Pollard)"s ); + g_scripts.emplace_back("Prti"s, 130, u8"Inscriptional Parthian"s ); + g_scripts.emplace_back("Qaaa"s, 900, u8"Reserved for private use (start)"s ); + g_scripts.emplace_back("Qabx"s, 949, u8"Reserved for private use (end)"s ); + g_scripts.emplace_back("Rjng"s, 363, u8"Rejang (Redjang, Kaganga)"s ); + g_scripts.emplace_back("Rohg"s, 167, u8"Hanifi Rohingya"s ); + g_scripts.emplace_back("Roro"s, 620, u8"Rongorongo"s ); + g_scripts.emplace_back("Runr"s, 211, u8"Runic"s ); + g_scripts.emplace_back("Samr"s, 123, u8"Samaritan"s ); + g_scripts.emplace_back("Sara"s, 292, u8"Sarati"s ); + g_scripts.emplace_back("Sarb"s, 105, u8"Old South Arabian"s ); + g_scripts.emplace_back("Saur"s, 344, u8"Saurashtra"s ); + g_scripts.emplace_back("Sgnw"s, 95, u8"SignWriting"s ); + g_scripts.emplace_back("Shaw"s, 281, u8"Shavian (Shaw)"s ); + g_scripts.emplace_back("Shrd"s, 319, u8"Sharada, Śāradā"s ); + g_scripts.emplace_back("Shui"s, 530, u8"Shuishu"s ); + g_scripts.emplace_back("Sidd"s, 302, u8"Siddham, Siddhaṃ, Siddhamātṛkā"s ); + g_scripts.emplace_back("Sind"s, 318, u8"Khudawadi, Sindhi"s ); + g_scripts.emplace_back("Sinh"s, 348, u8"Sinhala"s ); + g_scripts.emplace_back("Sogd"s, 141, u8"Sogdian"s ); + g_scripts.emplace_back("Sogo"s, 142, u8"Old Sogdian"s ); + g_scripts.emplace_back("Sora"s, 398, u8"Sora Sompeng"s ); + g_scripts.emplace_back("Soyo"s, 329, u8"Soyombo"s ); + g_scripts.emplace_back("Sund"s, 362, u8"Sundanese"s ); + g_scripts.emplace_back("Sylo"s, 316, u8"Syloti Nagri"s ); + g_scripts.emplace_back("Syrc"s, 135, u8"Syriac"s ); + g_scripts.emplace_back("Syre"s, 138, u8"Syriac (Estrangelo variant)"s ); + g_scripts.emplace_back("Syrj"s, 137, u8"Syriac (Western variant)"s ); + g_scripts.emplace_back("Syrn"s, 136, u8"Syriac (Eastern variant)"s ); + g_scripts.emplace_back("Tagb"s, 373, u8"Tagbanwa"s ); + g_scripts.emplace_back("Takr"s, 321, u8"Takri, Ṭākrī, Ṭāṅkrī"s ); + g_scripts.emplace_back("Tale"s, 353, u8"Tai Le"s ); + g_scripts.emplace_back("Talu"s, 354, u8"New Tai Lue"s ); + g_scripts.emplace_back("Taml"s, 346, u8"Tamil"s ); + g_scripts.emplace_back("Tang"s, 520, u8"Tangut"s ); + g_scripts.emplace_back("Tavt"s, 359, u8"Tai Viet"s ); + g_scripts.emplace_back("Telu"s, 340, u8"Telugu"s ); + g_scripts.emplace_back("Teng"s, 290, u8"Tengwar"s ); + g_scripts.emplace_back("Tfng"s, 120, u8"Tifinagh (Berber)"s ); + g_scripts.emplace_back("Tglg"s, 370, u8"Tagalog (Baybayin, Alibata)"s ); + g_scripts.emplace_back("Thaa"s, 170, u8"Thaana"s ); + g_scripts.emplace_back("Thai"s, 352, u8"Thai"s ); + g_scripts.emplace_back("Tibt"s, 330, u8"Tibetan"s ); + g_scripts.emplace_back("Tirh"s, 326, u8"Tirhuta"s ); + g_scripts.emplace_back("Toto"s, 294, u8"Toto"s ); + g_scripts.emplace_back("Ugar"s, 40, u8"Ugaritic"s ); + g_scripts.emplace_back("Vaii"s, 470, u8"Vai"s ); + g_scripts.emplace_back("Visp"s, 280, u8"Visible Speech"s ); + g_scripts.emplace_back("Wara"s, 262, u8"Warang Citi (Varang Kshiti)"s ); + g_scripts.emplace_back("Wcho"s, 283, u8"Wancho"s ); + g_scripts.emplace_back("Wole"s, 480, u8"Woleai"s ); + g_scripts.emplace_back("Xpeo"s, 30, u8"Old Persian"s ); + g_scripts.emplace_back("Xsux"s, 20, u8"Cuneiform, Sumero-Akkadian"s ); + g_scripts.emplace_back("Yezi"s, 192, u8"Yezidi"s ); + g_scripts.emplace_back("Yiii"s, 460, u8"Yi"s ); + g_scripts.emplace_back("Zanb"s, 339, u8"Zanabazar Square (Zanabazarin Dörböljin Useg, Xewtee Dörböljin Bicig, Horizontal Square Script)"s); + g_scripts.emplace_back("Zinh"s, 994, u8"Code for inherited script"s ); + g_scripts.emplace_back("Zmth"s, 995, u8"Mathematical notation"s ); + g_scripts.emplace_back("Zsye"s, 993, u8"Symbols (Emoji variant)"s ); + g_scripts.emplace_back("Zsym"s, 996, u8"Symbols"s ); + g_scripts.emplace_back("Zxxx"s, 997, u8"Code for unwritten documents"s ); + g_scripts.emplace_back("Zyyy"s, 998, u8"Code for undetermined script"s ); + g_scripts.emplace_back("Zzzz"s, 999, u8"Code for uncoded script"s ); +} } // namespace mtx::iso15924