|
|
|
@ -186,14 +186,18 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"aa", HB_TAG('A','F','R',' ')}, /* Afar */ |
|
|
|
|
{"ab", HB_TAG('A','B','K',' ')}, /* Abkhazian */ |
|
|
|
|
{"abq", HB_TAG('A','B','A',' ')}, /* Abaza */ |
|
|
|
|
{"acf", HB_TAG('F','A','N',' ')}, /* French Antillean */ |
|
|
|
|
{"ach", HB_TAG('A','C','H',' ')}, /* Acoli */ |
|
|
|
|
{"acr", HB_TAG('A','C','R',' ')}, /* Achi */ |
|
|
|
|
{"ada", HB_TAG('D','N','G',' ')}, /* Dangme */ |
|
|
|
|
{"ady", HB_TAG('A','D','Y',' ')}, /* Adyghe */ |
|
|
|
|
{"af", HB_TAG('A','F','K',' ')}, /* Afrikaans */ |
|
|
|
|
{"ahg", HB_TAG('A','G','W',' ')}, /* Agaw */ |
|
|
|
|
{"aii", HB_TAG('S','W','A',' ')}, /* Swadaya Aramaic */ |
|
|
|
|
{"aio", HB_TAG('A','I','O',' ')}, /* Aiton */ |
|
|
|
|
{"aiw", HB_TAG('A','R','I',' ')}, /* Aari */ |
|
|
|
|
{"ak", HB_TAG('T','W','I',' ')}, /* Akan [macrolanguage] */ |
|
|
|
|
{"aka", HB_TAG('A','K','A',' ')}, /* Akan */ |
|
|
|
|
{"alt", HB_TAG('A','L','T',' ')}, /* [Southern] Altai */ |
|
|
|
|
{"am", HB_TAG('A','M','H',' ')}, /* Amharic */ |
|
|
|
|
{"amf", HB_TAG('H','B','N',' ')}, /* Hammer-Banna */ |
|
|
|
@ -206,6 +210,7 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"as", HB_TAG('A','S','M',' ')}, /* Assamese */ |
|
|
|
|
{"ast", HB_TAG('A','S','T',' ')}, /* Asturian/Asturleonese/Bable/Leonese */ |
|
|
|
|
{"ath", HB_TAG('A','T','H',' ')}, /* Athapaskan [family] */ |
|
|
|
|
{"atj", HB_TAG('R','C','R',' ')}, /* R-Cree */ |
|
|
|
|
{"atv", HB_TAG('A','L','T',' ')}, /* [Northern] Altai */ |
|
|
|
|
{"av", HB_TAG('A','V','R',' ')}, /* Avaric */ |
|
|
|
|
{"awa", HB_TAG('A','W','A',' ')}, /* Awadhi */ |
|
|
|
@ -214,6 +219,7 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"azb", HB_TAG('A','Z','B',' ')}, /* South Azerbaijani */ |
|
|
|
|
{"azj", HB_TAG('A','Z','E',' ')}, /* North Azerbaijani */ |
|
|
|
|
{"ba", HB_TAG('B','S','H',' ')}, /* Bashkir */ |
|
|
|
|
{"bad", HB_TAG('B','A','D','0')}, /* Banda */ |
|
|
|
|
{"bai", HB_TAG('B','M','L',' ')}, /* Bamileke [family] */ |
|
|
|
|
{"bal", HB_TAG('B','L','I',' ')}, /* Baluchi [macrolangauge] */ |
|
|
|
|
{"ban", HB_TAG('B','A','N',' ')}, /* Balinese */ |
|
|
|
@ -222,11 +228,13 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"bci", HB_TAG('B','A','U',' ')}, /* Baoulé */ |
|
|
|
|
{"bcl", HB_TAG('B','I','K',' ')}, /* Central Bikol */ |
|
|
|
|
{"bcq", HB_TAG('B','C','H',' ')}, /* Bench */ |
|
|
|
|
{"bdy", HB_TAG('B','D','Y',' ')}, /* Bandjalang */ |
|
|
|
|
{"be", HB_TAG('B','E','L',' ')}, /* Belarusian */ |
|
|
|
|
{"bem", HB_TAG('B','E','M',' ')}, /* Bemba (Zambia) */ |
|
|
|
|
{"ber", HB_TAG('B','E','R',' ')}, /* Berber [family] */ |
|
|
|
|
{"bfq", HB_TAG('B','A','D',' ')}, /* Badaga */ |
|
|
|
|
{"bft", HB_TAG('B','L','T',' ')}, /* Balti */ |
|
|
|
|
{"bfu", HB_TAG('L','A','H',' ')}, /* Lahuli */ |
|
|
|
|
{"bfy", HB_TAG('B','A','G',' ')}, /* Baghelkhandi */ |
|
|
|
|
{"bg", HB_TAG('B','G','R',' ')}, /* Bulgarian */ |
|
|
|
|
{"bgc", HB_TAG('B','G','C',' ')}, /* Haryanvi */ |
|
|
|
@ -260,11 +268,13 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"bxr", HB_TAG('R','B','U',' ')}, /* Russian Buriat */ |
|
|
|
|
{"byn", HB_TAG('B','I','L',' ')}, /* Bilen */ |
|
|
|
|
{"ca", HB_TAG('C','A','T',' ')}, /* Catalan */ |
|
|
|
|
{"cak", HB_TAG('C','A','K',' ')}, /* Kaqchikel */ |
|
|
|
|
{"cbk", HB_TAG('C','B','K',' ')}, /* Chavacano */ |
|
|
|
|
{"ce", HB_TAG('C','H','E',' ')}, /* Chechen */ |
|
|
|
|
{"ceb", HB_TAG('C','E','B',' ')}, /* Cebuano */ |
|
|
|
|
{"cgg", HB_TAG('C','G','G',' ')}, /* Chiga */ |
|
|
|
|
{"ch", HB_TAG('C','H','A',' ')}, /* Chamorro */ |
|
|
|
|
{"chk", HB_TAG('C','H','K','0')}, /* Chuukese */ |
|
|
|
|
{"cho", HB_TAG('C','H','O',' ')}, /* Choctaw */ |
|
|
|
|
{"chp", HB_TAG('C','H','P',' ')}, /* Chipewyan */ |
|
|
|
|
{"chr", HB_TAG('C','H','R',' ')}, /* Cherokee */ |
|
|
|
@ -272,9 +282,12 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"ckb", HB_TAG('K','U','R',' ')}, /* Central Kurdish (Sorani) */ |
|
|
|
|
{"ckt", HB_TAG('C','H','K',' ')}, /* Chukchi */ |
|
|
|
|
{"cop", HB_TAG('C','O','P',' ')}, /* Coptic */ |
|
|
|
|
{"cpp", HB_TAG('C','P','P',' ')}, /* Creoles */ |
|
|
|
|
{"cr", HB_TAG('C','R','E',' ')}, /* Cree */ |
|
|
|
|
{"cre", HB_TAG('Y','C','R',' ')}, /* Y-Cree */ |
|
|
|
|
{"crh", HB_TAG('C','R','T',' ')}, /* Crimean Tatar */ |
|
|
|
|
{"crj", HB_TAG('E','C','R',' ')}, /* [Southern] East Cree */ |
|
|
|
|
{"crk", HB_TAG('W','C','R',' ')}, /* West-Cree */ |
|
|
|
|
{"crl", HB_TAG('E','C','R',' ')}, /* [Northern] East Cree */ |
|
|
|
|
{"crm", HB_TAG('M','C','R',' ')}, /* Moose Cree */ |
|
|
|
|
{"crx", HB_TAG('C','R','R',' ')}, /* Carrier */ |
|
|
|
@ -283,21 +296,27 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"ctg", HB_TAG('C','T','G',' ')}, /* Chittagonian */ |
|
|
|
|
{"cts", HB_TAG('B','I','K',' ')}, /* Northern Catanduanes Bikol */ |
|
|
|
|
{"cu", HB_TAG('C','S','L',' ')}, /* Church Slavic */ |
|
|
|
|
{"cuk", HB_TAG('C','U','K',' ')}, /* San Blas Kuna */ |
|
|
|
|
{"cv", HB_TAG('C','H','U',' ')}, /* Chuvash */ |
|
|
|
|
{"cwd", HB_TAG('D','C','R',' ')}, /* Woods Cree */ |
|
|
|
|
{"cy", HB_TAG('W','E','L',' ')}, /* Welsh */ |
|
|
|
|
{"da", HB_TAG('D','A','N',' ')}, /* Danish */ |
|
|
|
|
{"dap", HB_TAG('N','I','S',' ')}, /* Nisi (India) */ |
|
|
|
|
{"dar", HB_TAG('D','A','R',' ')}, /* Dargwa */ |
|
|
|
|
{"dax", HB_TAG('D','A','X',' ')}, /* Dayi */ |
|
|
|
|
{"de", HB_TAG('D','E','U',' ')}, /* German */ |
|
|
|
|
{"dgo", HB_TAG('D','G','O',' ')}, /* Dogri */ |
|
|
|
|
{"dhd", HB_TAG('M','A','W',' ')}, /* Dhundari */ |
|
|
|
|
{"dhg", HB_TAG('D','H','G',' ')}, /* Dhangu */ |
|
|
|
|
{"din", HB_TAG('D','N','K',' ')}, /* Dinka [macrolanguage] */ |
|
|
|
|
{"diq", HB_TAG('D','I','Q',' ')}, /* Dimli */ |
|
|
|
|
{"dje", HB_TAG('D','J','R',' ')}, /* Zarma */ |
|
|
|
|
{"djr", HB_TAG('D','J','R','0')}, /* Djambarrpuyngu */ |
|
|
|
|
{"dng", HB_TAG('D','U','N',' ')}, /* Dungan */ |
|
|
|
|
{"dnj", HB_TAG('D','N','J',' ')}, /* Dan */ |
|
|
|
|
{"doi", HB_TAG('D','G','R',' ')}, /* Dogri [macrolanguage] */ |
|
|
|
|
{"dsb", HB_TAG('L','S','B',' ')}, /* Lower Sorbian */ |
|
|
|
|
{"duj", HB_TAG('D','U','J',' ')}, /* Dhuwal */ |
|
|
|
|
{"dv", HB_TAG('D','I','V',' ')}, /* Dhivehi/Divehi/Maldivian */ |
|
|
|
|
{"dyu", HB_TAG('J','U','L',' ')}, /* Jula */ |
|
|
|
|
{"dz", HB_TAG('D','Z','N',' ')}, /* Dzongkha */ |
|
|
|
@ -307,23 +326,30 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"el", HB_TAG('E','L','L',' ')}, /* Modern Greek (1453-) */ |
|
|
|
|
{"emk", HB_TAG('M','N','K',' ')}, /* Eastern Maninkakan */ |
|
|
|
|
{"en", HB_TAG('E','N','G',' ')}, /* English */ |
|
|
|
|
{"enf", HB_TAG('F','N','E',' ')}, /* Forest Nenets */ |
|
|
|
|
{"enh", HB_TAG('T','N','E',' ')}, /* Tundra Nenets */ |
|
|
|
|
{"eo", HB_TAG('N','T','O',' ')}, /* Esperanto */ |
|
|
|
|
{"eot", HB_TAG('B','T','I',' ')}, /* Beti (Côte d'Ivoire) */ |
|
|
|
|
{"es", HB_TAG('E','S','P',' ')}, /* Spanish */ |
|
|
|
|
{"esu", HB_TAG('E','S','U',' ')}, /* Central Yupik */ |
|
|
|
|
{"et", HB_TAG('E','T','I',' ')}, /* Estonian [macrolanguage] */ |
|
|
|
|
{"eu", HB_TAG('E','U','Q',' ')}, /* Basque */ |
|
|
|
|
{"eve", HB_TAG('E','V','N',' ')}, /* Even */ |
|
|
|
|
{"evn", HB_TAG('E','V','K',' ')}, /* Evenki */ |
|
|
|
|
{"fa", HB_TAG('F','A','R',' ')}, /* Persian [macrolanguage] */ |
|
|
|
|
{"fan", HB_TAG('F','A','N','0')}, /* Fang */ |
|
|
|
|
{"fat", HB_TAG('F','A','T',' ')}, /* Fanti */ |
|
|
|
|
{"ff", HB_TAG('F','U','L',' ')}, /* Fulah [macrolanguage] */ |
|
|
|
|
{"fi", HB_TAG('F','I','N',' ')}, /* Finnish */ |
|
|
|
|
{"fil", HB_TAG('P','I','L',' ')}, /* Filipino */ |
|
|
|
|
{"fj", HB_TAG('F','J','I',' ')}, /* Fijian */ |
|
|
|
|
{"flm", HB_TAG('H','A','L',' ')}, /* Halam */ |
|
|
|
|
{"fo", HB_TAG('F','O','S',' ')}, /* Faroese */ |
|
|
|
|
{"fon", HB_TAG('F','O','N',' ')}, /* Fon */ |
|
|
|
|
{"fr", HB_TAG('F','R','A',' ')}, /* French */ |
|
|
|
|
{"frc", HB_TAG('F','R','C',' ')}, /* Cajun French */ |
|
|
|
|
{"frp", HB_TAG('F','R','P',' ')}, /* Arpitan/Francoprovençal */ |
|
|
|
|
{"fuf", HB_TAG('F','T','A',' ')}, /* Futa */ |
|
|
|
|
{"fur", HB_TAG('F','R','L',' ')}, /* Friulian */ |
|
|
|
|
{"fuv", HB_TAG('F','U','V',' ')}, /* Nigerian Fulfulde */ |
|
|
|
|
{"fy", HB_TAG('F','R','I',' ')}, /* Western Frisian */ |
|
|
|
@ -334,17 +360,24 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"gd", HB_TAG('G','A','E',' ')}, /* Scottish Gaelic */ |
|
|
|
|
{"gez", HB_TAG('G','E','Z',' ')}, /* Ge'ez */ |
|
|
|
|
{"ggo", HB_TAG('G','O','N',' ')}, /* Southern Gondi */ |
|
|
|
|
{"gih", HB_TAG('G','I','H',' ')}, /* Githabul */ |
|
|
|
|
{"gil", HB_TAG('G','I','L','0')}, /* Kiribati (Gilbertese) */ |
|
|
|
|
{"gkp", HB_TAG('G','K','P',' ')}, /* Kpelle (Guinea) */ |
|
|
|
|
{"gl", HB_TAG('G','A','L',' ')}, /* Galician */ |
|
|
|
|
{"gld", HB_TAG('N','A','N',' ')}, /* Nanai */ |
|
|
|
|
{"gle", HB_TAG('I','R','T',' ')}, /* Irish Traditional */ |
|
|
|
|
{"glk", HB_TAG('G','L','K',' ')}, /* Gilaki */ |
|
|
|
|
{"gn", HB_TAG('G','U','A',' ')}, /* Guarani [macrolanguage] */ |
|
|
|
|
{"gnn", HB_TAG('G','N','N',' ')}, /* Gumatj */ |
|
|
|
|
{"gno", HB_TAG('G','O','N',' ')}, /* Northern Gondi */ |
|
|
|
|
{"gog", HB_TAG('G','O','G',' ')}, /* Gogo */ |
|
|
|
|
{"gon", HB_TAG('G','O','N',' ')}, /* Gondi [macrolanguage] */ |
|
|
|
|
{"grt", HB_TAG('G','R','O',' ')}, /* Garo */ |
|
|
|
|
{"gru", HB_TAG('S','O','G',' ')}, /* Sodo Gurage */ |
|
|
|
|
{"gsw", HB_TAG('A','L','S',' ')}, /* Alsatian */ |
|
|
|
|
{"gu", HB_TAG('G','U','J',' ')}, /* Gujarati */ |
|
|
|
|
{"guc", HB_TAG('G','U','C',' ')}, /* Wayuu */ |
|
|
|
|
{"guf", HB_TAG('G','U','F',' ')}, /* Gupapuyngu */ |
|
|
|
|
{"guk", HB_TAG('G','M','Z',' ')}, /* Gumuz */ |
|
|
|
|
/*{"guk", HB_TAG('G','U','K',' ')},*/ /* Gumuz (in SIL fonts) */ |
|
|
|
|
{"guz", HB_TAG('G','U','Z',' ')}, /* Ekegusii/Gusii */ |
|
|
|
@ -357,6 +390,7 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"he", HB_TAG('I','W','R',' ')}, /* Hebrew */ |
|
|
|
|
{"hi", HB_TAG('H','I','N',' ')}, /* Hindi */ |
|
|
|
|
{"hil", HB_TAG('H','I','L',' ')}, /* Hiligaynon */ |
|
|
|
|
{"hmn", HB_TAG('H','M','N',' ')}, /* Hmong */ |
|
|
|
|
{"hnd", HB_TAG('H','N','D',' ')}, /* [Southern] Hindko */ |
|
|
|
|
{"hne", HB_TAG('C','H','H',' ')}, /* Chattisgarhi */ |
|
|
|
|
{"hno", HB_TAG('H','N','D',' ')}, /* [Northern] Hindko */ |
|
|
|
@ -370,11 +404,13 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"hy", HB_TAG('H','Y','E',' ')}, /* Armenian */ |
|
|
|
|
{"hz", HB_TAG('H','E','R',' ')}, /* Herero */ |
|
|
|
|
{"ia", HB_TAG('I','N','A',' ')}, /* Interlingua (International Auxiliary Language Association) */ |
|
|
|
|
{"iba", HB_TAG('I','B','A',' ')}, /* Iban */ |
|
|
|
|
{"ibb", HB_TAG('I','B','B',' ')}, /* Ibibio */ |
|
|
|
|
{"id", HB_TAG('I','N','D',' ')}, /* Indonesian */ |
|
|
|
|
{"ie", HB_TAG('I','L','E',' ')}, /* Interlingue/Occidental */ |
|
|
|
|
{"ig", HB_TAG('I','B','O',' ')}, /* Igbo */ |
|
|
|
|
{"igb", HB_TAG('E','B','I',' ')}, /* Ebira */ |
|
|
|
|
{"ii", HB_TAG('Y','I','M',' ')}, /* Yi Modern */ |
|
|
|
|
{"ijc", HB_TAG('I','J','O',' ')}, /* Izon */ |
|
|
|
|
{"ijo", HB_TAG('I','J','O',' ')}, /* Ijo [family] */ |
|
|
|
|
{"ik", HB_TAG('I','P','K',' ')}, /* Inupiaq [macrolanguage] */ |
|
|
|
@ -390,15 +426,20 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"jv", HB_TAG('J','A','V',' ')}, /* Javanese */ |
|
|
|
|
{"ka", HB_TAG('K','A','T',' ')}, /* Georgian */ |
|
|
|
|
{"kaa", HB_TAG('K','R','K',' ')}, /* Karakalpak */ |
|
|
|
|
{"kab", HB_TAG('K','A','B',' ')}, /* Kabyle */ |
|
|
|
|
{"kab", HB_TAG('K','A','B','0')}, /* Kabyle */ |
|
|
|
|
{"kam", HB_TAG('K','M','B',' ')}, /* Kamba (Kenya) */ |
|
|
|
|
{"kar", HB_TAG('K','R','N',' ')}, /* Karen [family] */ |
|
|
|
|
{"kat", HB_TAG('K','G','E',' ')}, /* Khutsuri Georgian */ |
|
|
|
|
{"kbd", HB_TAG('K','A','B',' ')}, /* Kabardian */ |
|
|
|
|
{"kde", HB_TAG('K','D','E',' ')}, /* Makonde */ |
|
|
|
|
{"kdr", HB_TAG('K','R','M',' ')}, /* Karaim */ |
|
|
|
|
{"kdt", HB_TAG('K','U','Y',' ')}, /* Kuy */ |
|
|
|
|
{"kea", HB_TAG('K','E','A',' ')}, /* Kabuverdianu (Crioulo) */ |
|
|
|
|
{"kek", HB_TAG('K','E','K',' ')}, /* Kekchi */ |
|
|
|
|
{"kex", HB_TAG('K','K','N',' ')}, /* Kokni */ |
|
|
|
|
{"kfa", HB_TAG('K','O','D',' ')}, /* Kodagu */ |
|
|
|
|
{"kfr", HB_TAG('K','A','C',' ')}, /* Kachchi */ |
|
|
|
|
{"kfx", HB_TAG('K','U','L',' ')}, /* Kulvi */ |
|
|
|
|
{"kfy", HB_TAG('K','M','N',' ')}, /* Kumaoni */ |
|
|
|
|
{"kg", HB_TAG('K','O','N',' ')}, /* Kongo [macrolanguage] */ |
|
|
|
|
{"kha", HB_TAG('K','S','I',' ')}, /* Khasi */ |
|
|
|
@ -407,7 +448,9 @@ static const LangTag ot_languages[] = { |
|
|
|
|
/*{"kht", HB_TAG('K','H','T',' ')},*/ /* Khamti (OpenType spec and SIL fonts) */ |
|
|
|
|
{"khw", HB_TAG('K','H','W',' ')}, /* Khowar */ |
|
|
|
|
{"ki", HB_TAG('K','I','K',' ')}, /* Gikuyu/Kikuyu */ |
|
|
|
|
{"kiu", HB_TAG('K','I','U',' ')}, /* Kirmanjki */ |
|
|
|
|
{"kj", HB_TAG('K','U','A',' ')}, /* Kuanyama/Kwanyama */ |
|
|
|
|
{"kjd", HB_TAG('K','J','D',' ')}, /* Southern Kiwai */ |
|
|
|
|
{"kjh", HB_TAG('K','H','A',' ')}, /* Khakass */ |
|
|
|
|
{"kjp", HB_TAG('K','J','P',' ')}, /* Pwo Eastern Karen */ |
|
|
|
|
{"kk", HB_TAG('K','A','Z',' ')}, /* Kazakh */ |
|
|
|
@ -421,6 +464,8 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"ko", HB_TAG('K','O','R',' ')}, /* Korean */ |
|
|
|
|
{"koi", HB_TAG('K','O','P',' ')}, /* Komi-Permyak */ |
|
|
|
|
{"kok", HB_TAG('K','O','K',' ')}, /* Konkani [macrolanguage] */ |
|
|
|
|
{"kon", HB_TAG('K','O','N','0')}, /* Kongo */ |
|
|
|
|
{"kos", HB_TAG('K','O','S',' ')}, /* Kosraean */ |
|
|
|
|
{"kpe", HB_TAG('K','P','L',' ')}, /* Kpelle [macrolanguage] */ |
|
|
|
|
{"kpv", HB_TAG('K','O','Z',' ')}, /* Komi-Zyrian */ |
|
|
|
|
{"kpy", HB_TAG('K','Y','K',' ')}, /* Koryak */ |
|
|
|
@ -430,9 +475,11 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"krl", HB_TAG('K','R','L',' ')}, /* Karelian */ |
|
|
|
|
{"kru", HB_TAG('K','U','U',' ')}, /* Kurukh */ |
|
|
|
|
{"ks", HB_TAG('K','S','H',' ')}, /* Kashmiri */ |
|
|
|
|
{"ksh", HB_TAG('K','S','H',' ')}, /* Kölsch */ |
|
|
|
|
{"ksh", HB_TAG('K','S','H','0')}, /* Ripuarian, Kölsch */ |
|
|
|
|
/*{"ksw", HB_TAG('K','R','N',' ')},*/ /* S'gaw Karen (Microsoft fonts?) */ |
|
|
|
|
{"ksw", HB_TAG('K','S','W',' ')}, /* S'gaw Karen (OpenType spec and SIL fonts) */ |
|
|
|
|
{"ktb", HB_TAG('K','E','B',' ')}, /* Kebena */ |
|
|
|
|
{"ktu", HB_TAG('K','O','N',' ')}, /* Kikongo */ |
|
|
|
|
{"ku", HB_TAG('K','U','R',' ')}, /* Kurdish [macrolanguage] */ |
|
|
|
|
{"kum", HB_TAG('K','U','M',' ')}, /* Kumyk */ |
|
|
|
|
{"kv", HB_TAG('K','O','M',' ')}, /* Komi [macrolanguage] */ |
|
|
|
@ -460,6 +507,7 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"lmo", HB_TAG('L','M','O',' ')}, /* Lombard */ |
|
|
|
|
{"ln", HB_TAG('L','I','N',' ')}, /* Lingala */ |
|
|
|
|
{"lo", HB_TAG('L','A','O',' ')}, /* Lao */ |
|
|
|
|
{"lom", HB_TAG('L','O','M',' ')}, /* Loma */ |
|
|
|
|
{"lrc", HB_TAG('L','R','C',' ')}, /* Northern Luri */ |
|
|
|
|
{"lt", HB_TAG('L','T','H',' ')}, /* Lithuanian */ |
|
|
|
|
{"lu", HB_TAG('L','U','B',' ')}, /* Luba-Katanga */ |
|
|
|
@ -474,6 +522,8 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"mag", HB_TAG('M','A','G',' ')}, /* Magahi */ |
|
|
|
|
{"mai", HB_TAG('M','T','H',' ')}, /* Maithili */ |
|
|
|
|
{"mak", HB_TAG('M','K','R',' ')}, /* Makasar */ |
|
|
|
|
{"mal", HB_TAG('M','A','L',' ')}, /* Malayalam */ |
|
|
|
|
{"mam", HB_TAG('M','A','M',' ')}, /* Mam */ |
|
|
|
|
{"man", HB_TAG('M','N','K',' ')}, /* Manding/Mandingo [macrolanguage] */ |
|
|
|
|
{"mdc", HB_TAG('M','L','E',' ')}, /* Male (Papua New Guinea) */ |
|
|
|
|
{"mdf", HB_TAG('M','O','K',' ')}, /* Moksha */ |
|
|
|
@ -516,6 +566,7 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"mww", HB_TAG('M','W','W',' ')}, /* Hmong Daw */ |
|
|
|
|
{"my", HB_TAG('B','R','M',' ')}, /* Burmese */ |
|
|
|
|
{"mym", HB_TAG('M','E','N',' ')}, /* Me'en */ |
|
|
|
|
{"myn", HB_TAG('M','Y','N',' ')}, /* Mayan */ |
|
|
|
|
{"myq", HB_TAG('M','N','K',' ')}, /* Forest Maninka (retired code) */ |
|
|
|
|
{"myv", HB_TAG('E','R','Z',' ')}, /* Erzya */ |
|
|
|
|
{"mzn", HB_TAG('M','Z','N',' ')}, /* Mazanderani */ |
|
|
|
@ -533,6 +584,7 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"ng", HB_TAG('N','D','G',' ')}, /* Ndonga */ |
|
|
|
|
{"nga", HB_TAG('N','G','A',' ')}, /* Ngabaka */ |
|
|
|
|
{"ngl", HB_TAG('L','M','W',' ')}, /* Lomwe */ |
|
|
|
|
{"ngo", HB_TAG('S','X','T',' ')}, /* Sutu */ |
|
|
|
|
{"niu", HB_TAG('N','I','U',' ')}, /* Niuean */ |
|
|
|
|
{"niv", HB_TAG('G','I','L',' ')}, /* Gilyak */ |
|
|
|
|
{"nl", HB_TAG('N','L','D',' ')}, /* Dutch */ |
|
|
|
@ -553,13 +605,15 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"oc", HB_TAG('O','C','I',' ')}, /* Occitan (post 1500) */ |
|
|
|
|
{"oj", HB_TAG('O','J','B',' ')}, /* Ojibwa [macrolanguage] */ |
|
|
|
|
{"ojs", HB_TAG('O','C','R',' ')}, /* Oji-Cree */ |
|
|
|
|
{"okm", HB_TAG('K','O','H',' ')}, /* Korean Old Hangul */ |
|
|
|
|
{"om", HB_TAG('O','R','O',' ')}, /* Oromo [macrolanguage] */ |
|
|
|
|
{"or", HB_TAG('O','R','I',' ')}, /* Oriya */ |
|
|
|
|
{"os", HB_TAG('O','S','S',' ')}, /* Ossetian */ |
|
|
|
|
{"pa", HB_TAG('P','A','N',' ')}, /* Panjabi */ |
|
|
|
|
{"pag", HB_TAG('P','A','G',' ')}, /* Pangasinan */ |
|
|
|
|
{"pam", HB_TAG('P','A','M',' ')}, /* Kapampangan/Pampanga */ |
|
|
|
|
{"pap", HB_TAG('P','A','P',' ')}, /* Papiamento */ |
|
|
|
|
{"pap", HB_TAG('P','A','P','0')}, /* Papiamento */ |
|
|
|
|
{"pau", HB_TAG('P','A','U',' ')}, /* Palauan */ |
|
|
|
|
{"pcc", HB_TAG('P','C','C',' ')}, /* Bouyei */ |
|
|
|
|
{"pcd", HB_TAG('P','C','D',' ')}, /* Picard */ |
|
|
|
|
{"pce", HB_TAG('P','L','G',' ')}, /* [Ruching] Palaung */ |
|
|
|
@ -573,24 +627,34 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"plp", HB_TAG('P','A','P',' ')}, /* Palpa */ |
|
|
|
|
{"pms", HB_TAG('P','M','S',' ')}, /* Piemontese */ |
|
|
|
|
{"pnb", HB_TAG('P','N','B',' ')}, /* Western Panjabi */ |
|
|
|
|
{"poh", HB_TAG('P','O','H',' ')}, /* Pocomchi */ |
|
|
|
|
{"pon", HB_TAG('P','O','N',' ')}, /* Pohnpeian */ |
|
|
|
|
{"prs", HB_TAG('D','R','I',' ')}, /* Afghan Persian/Dari */ |
|
|
|
|
{"ps", HB_TAG('P','A','S',' ')}, /* Pashto/Pushto [macrolanguage] */ |
|
|
|
|
{"pt", HB_TAG('P','T','G',' ')}, /* Portuguese */ |
|
|
|
|
{"pwo", HB_TAG('P','W','O',' ')}, /* Pwo Western Karen */ |
|
|
|
|
{"qu", HB_TAG('Q','U','Z',' ')}, /* Quechua [macrolanguage] */ |
|
|
|
|
{"quc", HB_TAG('Q','U','C',' ')}, /* K'iche'/Quiché */ |
|
|
|
|
{"quh", HB_TAG('Q','U','H',' ')}, /* Quechua (Bolivia) */ |
|
|
|
|
{"quz", HB_TAG('Q','U','Z',' ')}, /* Cusco Quechua */ |
|
|
|
|
{"qvi", HB_TAG('Q','V','I',' ')}, /* Quechua (Ecuador) */ |
|
|
|
|
{"qwh", HB_TAG('Q','W','H',' ')}, /* Quechua (Peru) */ |
|
|
|
|
{"raj", HB_TAG('R','A','J',' ')}, /* Rajasthani [macrolanguage] */ |
|
|
|
|
{"rar", HB_TAG('R','A','R',' ')}, /* Rarotongan */ |
|
|
|
|
{"rbb", HB_TAG('P','L','G',' ')}, /* Rumai Palaung */ |
|
|
|
|
{"rej", HB_TAG('R','E','J',' ')}, /* Rejang */ |
|
|
|
|
{"ria", HB_TAG('R','I','A',' ')}, /* Riang (India) */ |
|
|
|
|
{"rif", HB_TAG('R','I','F',' ')}, /* Tarifit */ |
|
|
|
|
{"ril", HB_TAG('R','I','A',' ')}, /* Riang (Myanmar) */ |
|
|
|
|
{"rit", HB_TAG('R','I','T',' ')}, /* Ritarungo */ |
|
|
|
|
{"rki", HB_TAG('A','R','K',' ')}, /* Rakhine */ |
|
|
|
|
{"rkw", HB_TAG('R','K','W',' ')}, /* Arakwal */ |
|
|
|
|
{"rm", HB_TAG('R','M','S',' ')}, /* Romansh */ |
|
|
|
|
{"rmy", HB_TAG('R','M','Y',' ')}, /* Vlax Romani */ |
|
|
|
|
{"rn", HB_TAG('R','U','N',' ')}, /* Rundi */ |
|
|
|
|
{"ro", HB_TAG('R','O','M',' ')}, /* Romanian */ |
|
|
|
|
{"rom", HB_TAG('R','O','Y',' ')}, /* Romany [macrolanguage] */ |
|
|
|
|
{"rtm", HB_TAG('R','T','M',' ')}, /* Rotuman */ |
|
|
|
|
{"ru", HB_TAG('R','U','S',' ')}, /* Russian */ |
|
|
|
|
{"rue", HB_TAG('R','S','Y',' ')}, /* Rusyn */ |
|
|
|
|
{"rup", HB_TAG('R','U','P',' ')}, /* Aromanian/Arumanian/Macedo-Romanian */ |
|
|
|
@ -598,6 +662,7 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"rwr", HB_TAG('M','A','W',' ')}, /* Marwari (India) */ |
|
|
|
|
{"sa", HB_TAG('S','A','N',' ')}, /* Sanskrit */ |
|
|
|
|
{"sah", HB_TAG('Y','A','K',' ')}, /* Yakut */ |
|
|
|
|
{"sam", HB_TAG('P','A','A',' ')}, /* Palestinian Aramaic */ |
|
|
|
|
{"sas", HB_TAG('S','A','S',' ')}, /* Sasak */ |
|
|
|
|
{"sat", HB_TAG('S','A','T',' ')}, /* Santali */ |
|
|
|
|
{"sc", HB_TAG('S','R','D',' ')}, /* Sardinian [macrolanguage] */ |
|
|
|
@ -614,6 +679,7 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"sgs", HB_TAG('S','G','S',' ')}, /* Samogitian */ |
|
|
|
|
{"sgw", HB_TAG('C','H','G',' ')}, /* Sebat Bet Gurage */ |
|
|
|
|
/*{"sgw", HB_TAG('S','G','W',' ')},*/ /* Sebat Bet Gurage (in SIL fonts) */ |
|
|
|
|
{"shi", HB_TAG('S','H','I',' ')}, /* Tachelhit */ |
|
|
|
|
{"shn", HB_TAG('S','H','N',' ')}, /* Shan */ |
|
|
|
|
{"si", HB_TAG('S','N','H',' ')}, /* Sinhala */ |
|
|
|
|
{"sid", HB_TAG('S','I','D',' ')}, /* Sidamo */ |
|
|
|
@ -626,7 +692,7 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"smj", HB_TAG('L','S','M',' ')}, /* Lule Sami */ |
|
|
|
|
{"smn", HB_TAG('I','S','M',' ')}, /* Inari Sami */ |
|
|
|
|
{"sms", HB_TAG('S','K','S',' ')}, /* Skolt Sami */ |
|
|
|
|
{"sn", HB_TAG('S','N','A',' ')}, /* Shona */ |
|
|
|
|
{"sn", HB_TAG('S','N','A','0')}, /* Shona */ |
|
|
|
|
{"snk", HB_TAG('S','N','K',' ')}, /* Soninke */ |
|
|
|
|
{"so", HB_TAG('S','M','L',' ')}, /* Somali */ |
|
|
|
|
{"sop", HB_TAG('S','O','P',' ')}, /* Songe */ |
|
|
|
@ -664,20 +730,24 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"tiv", HB_TAG('T','I','V',' ')}, /* Tiv */ |
|
|
|
|
{"tk", HB_TAG('T','K','M',' ')}, /* Turkmen */ |
|
|
|
|
{"tl", HB_TAG('T','G','L',' ')}, /* Tagalog */ |
|
|
|
|
{"tmh", HB_TAG('t','m','h',' ')}, /* Tamashek [macrolanguage] */ |
|
|
|
|
{"tmh", HB_TAG('T','M','H',' ')}, /* Tamashek */ |
|
|
|
|
{"tn", HB_TAG('T','N','A',' ')}, /* Tswana */ |
|
|
|
|
{"to", HB_TAG('T','G','N',' ')}, /* Tonga (Tonga Islands) */ |
|
|
|
|
{"tod", HB_TAG('T','O','D','0')}, /* Toma */ |
|
|
|
|
{"toi", HB_TAG('T','N','G',' ')}, /* Tonga */ |
|
|
|
|
{"tpi", HB_TAG('T','P','I',' ')}, /* Tok Pisin */ |
|
|
|
|
{"tr", HB_TAG('T','R','K',' ')}, /* Turkish */ |
|
|
|
|
{"tru", HB_TAG('T','U','A',' ')}, /* Turoyo Aramaic */ |
|
|
|
|
{"ts", HB_TAG('T','S','G',' ')}, /* Tsonga */ |
|
|
|
|
{"tt", HB_TAG('T','A','T',' ')}, /* Tatar */ |
|
|
|
|
{"tum", HB_TAG('T','U','M',' ')}, /* Tumbuka */ |
|
|
|
|
{"tvl", HB_TAG('T','V','L',' ')}, /* Tuvalu */ |
|
|
|
|
{"tw", HB_TAG('T','W','I',' ')}, /* Twi */ |
|
|
|
|
{"ty", HB_TAG('T','H','T',' ')}, /* Tahitian */ |
|
|
|
|
{"tyv", HB_TAG('T','U','V',' ')}, /* Tuvin */ |
|
|
|
|
{"tyz", HB_TAG('T','Y','Z',' ')}, /* Tày */ |
|
|
|
|
{"tzm", HB_TAG('T','Z','M',' ')}, /* Central Atlas Tamazight */ |
|
|
|
|
{"tzo", HB_TAG('T','Z','O',' ')}, /* Tzotzil */ |
|
|
|
|
{"udm", HB_TAG('U','D','M',' ')}, /* Udmurt */ |
|
|
|
|
{"ug", HB_TAG('U','Y','G',' ')}, /* Uighur */ |
|
|
|
|
{"uk", HB_TAG('U','K','R',' ')}, /* Ukrainian */ |
|
|
|
@ -703,68 +773,56 @@ static const LangTag ot_languages[] = { |
|
|
|
|
{"wry", HB_TAG('M','A','W',' ')}, /* Merwari */ |
|
|
|
|
{"wtm", HB_TAG('W','T','M',' ')}, /* Mewati */ |
|
|
|
|
{"xal", HB_TAG('K','L','M',' ')}, /* Kalmyk */ |
|
|
|
|
{"xan", HB_TAG('S','E','K',' ')}, /* Sekota */ |
|
|
|
|
{"xh", HB_TAG('X','H','S',' ')}, /* Xhosa */ |
|
|
|
|
{"xjb", HB_TAG('X','J','B',' ')}, /* Minjangbal */ |
|
|
|
|
{"xog", HB_TAG('X','O','G',' ')}, /* Soga */ |
|
|
|
|
{"xom", HB_TAG('K','M','O',' ')}, /* Komo (Sudan) */ |
|
|
|
|
{"xpe", HB_TAG('X','P','E',' ')}, /* Kpelle (Liberia) */ |
|
|
|
|
{"xsl", HB_TAG('S','S','L',' ')}, /* South Slavey */ |
|
|
|
|
{"xst", HB_TAG('S','I','G',' ')}, /* Silt'e (retired code) */ |
|
|
|
|
{"xwo", HB_TAG('T','O','D',' ')}, /* Written Oirat (Todo) */ |
|
|
|
|
{"yao", HB_TAG('Y','A','O',' ')}, /* Yao */ |
|
|
|
|
{"yap", HB_TAG('Y','A','P',' ')}, /* Yapese */ |
|
|
|
|
{"yi", HB_TAG('J','I','I',' ')}, /* Yiddish [macrolanguage] */ |
|
|
|
|
{"yo", HB_TAG('Y','B','A',' ')}, /* Yoruba */ |
|
|
|
|
{"yso", HB_TAG('N','I','S',' ')}, /* Nisi (China) */ |
|
|
|
|
{"za", HB_TAG('Z','H','A',' ')}, /* Chuang/Zhuang [macrolanguage] */ |
|
|
|
|
{"zea", HB_TAG('Z','E','A',' ')}, /* Zeeuws */ |
|
|
|
|
{"zgh", HB_TAG('Z','G','H',' ')}, /* Standard Morrocan Tamazigh */ |
|
|
|
|
{"zne", HB_TAG('Z','N','D',' ')}, /* Zande */ |
|
|
|
|
{"zu", HB_TAG('Z','U','L',' ')}, /* Zulu */ |
|
|
|
|
{"zum", HB_TAG('L','R','C',' ')} /* Kumzari */ |
|
|
|
|
{"zum", HB_TAG('L','R','C',' ')}, /* Kumzari */ |
|
|
|
|
{"zza", HB_TAG('Z','Z','A',' ')}, /* Zazaki */ |
|
|
|
|
|
|
|
|
|
/* The corresponding languages IDs for the following IDs are unclear,
|
|
|
|
|
* overlap, or are architecturally weird. Needs more research. */ |
|
|
|
|
|
|
|
|
|
/*{"ahg/awn/xan?", HB_TAG('A','G','W',' ')},*/ /* Agaw */ |
|
|
|
|
/*{"gsw?/gsw-FR?", HB_TAG('A','L','S',' ')},*/ /* Alsatian */ |
|
|
|
|
/*{"chp", HB_TAG('S','A','Y',' ')},*/ /* Sayisi */ |
|
|
|
|
/*{"cwd", HB_TAG('T','C','R',' ')},*/ /* TH-Cree */ |
|
|
|
|
/*{"emk", HB_TAG('E','M','K',' ')},*/ /* Eastern Maninkakan */ |
|
|
|
|
/*{"krc", HB_TAG('B','A','L',' ')},*/ /* Balkar */ |
|
|
|
|
/*{"??", HB_TAG('B','C','R',' ')},*/ /* Bible Cree */ |
|
|
|
|
/*{"zh?", HB_TAG('C','H','N',' ')},*/ /* Chinese (seen in Microsoft fonts) */ |
|
|
|
|
/*{"acf/gcf?", HB_TAG('F','A','N',' ')},*/ /* French Antillean */ |
|
|
|
|
/*{"enf?/yrk?", HB_TAG('F','N','E',' ')},*/ /* Forest Nenets */ |
|
|
|
|
/*{"fuf?", HB_TAG('F','T','A',' ')},*/ /* Futa */ |
|
|
|
|
/*{"ar-Syrc?", HB_TAG('G','A','R',' ')},*/ /* Garshuni */ |
|
|
|
|
/*{"cfm/rnl?", HB_TAG('H','A','L',' ')},*/ /* Halam */ |
|
|
|
|
/*{"ga-Latg?/Latg?", HB_TAG('I','R','T',' ')},*/ /* Irish Traditional */ |
|
|
|
|
/*{"hy?", HB_TAG('H','Y','E','0')},*/ /* Armenian East (ISO 639-3 hye according to Microsoft, but that’s equivalent to ISO 639-1 hy) */ |
|
|
|
|
/*{"ga-Latg?/" HB_TAG('I','R','T',' ')},*/ /* Irish Traditional */ |
|
|
|
|
/*{"krc", HB_TAG('K','A','R',' ')},*/ /* Karachay */ |
|
|
|
|
/*{"alw?/ktb?", HB_TAG('K','E','B',' ')},*/ /* Kebena */ |
|
|
|
|
/*{"Geok", HB_TAG('K','G','E',' ')},*/ /* Khutsuri Georgian */ |
|
|
|
|
/*{"ka-Geok?", HB_TAG('K','G','E',' ')},*/ /* Khutsuri Georgian */ |
|
|
|
|
/*{"kca", HB_TAG('K','H','K',' ')},*/ /* Khanty-Kazim */ |
|
|
|
|
/*{"kca", HB_TAG('K','H','S',' ')},*/ /* Khanty-Shurishkar */ |
|
|
|
|
/*{"kca", HB_TAG('K','H','V',' ')},*/ /* Khanty-Vakhi */ |
|
|
|
|
/*{"guz?/kqs?/kss?", HB_TAG('K','I','S',' ')},*/ /* Kisii */ |
|
|
|
|
/*{"kfa/kfi?/kpb?/xua?/xuj?", HB_TAG('K','O','D',' ')},*/ /* Kodagu */ |
|
|
|
|
/*{"okm?/oko?", HB_TAG('K','O','H',' ')},*/ /* Korean Old Hangul */ |
|
|
|
|
/*{"kon?/ktu?/...", HB_TAG('K','O','N',' ')},*/ /* Kikongo */ |
|
|
|
|
/*{"kfx?", HB_TAG('K','U','L',' ')},*/ /* Kulvi */ |
|
|
|
|
/*{"??", HB_TAG('L','A','H',' ')},*/ /* Lahuli */ |
|
|
|
|
/*{"??", HB_TAG('L','C','R',' ')},*/ /* L-Cree */ |
|
|
|
|
/*{"kqs, kss", HB_TAG('K','I','S',' ')},*/ /* Kisii */ |
|
|
|
|
/*{"lua", HB_TAG('L','U','A',' ')},*/ /* Luba-Lulua */ |
|
|
|
|
/*{"mlq", HB_TAG('M','L','N',' ')},*/ /* Malinke */ |
|
|
|
|
/*{"nso", HB_TAG('N','S','O',' ')},*/ /* Sotho, Northern */ |
|
|
|
|
/*{"??", HB_TAG('M','A','L',' ')},*/ /* Malayalam Traditional */ |
|
|
|
|
/*{"mnk?/mlq?/...", HB_TAG('M','L','N',' ')},*/ /* Malinke */ |
|
|
|
|
/*{"??", HB_TAG('N','C','R',' ')},*/ /* N-Cree */ |
|
|
|
|
/*{"??", HB_TAG('N','H','C',' ')},*/ /* Norway House Cree */ |
|
|
|
|
/*{"jpa?/sam?", HB_TAG('P','A','A',' ')},*/ /* Palestinian Aramaic */ |
|
|
|
|
/*{"polyton", HB_TAG('P','G','R',' ')},*/ /* Polytonic Greek */ |
|
|
|
|
/*{"??", HB_TAG('Q','I','N',' ')},*/ /* Asho Chin */ |
|
|
|
|
/*{"??", HB_TAG('R','C','R',' ')},*/ /* R-Cree */ |
|
|
|
|
/*{"chp?", HB_TAG('S','A','Y',' ')},*/ /* Sayisi */ |
|
|
|
|
/*{"xan?", HB_TAG('S','E','K',' ')},*/ /* Sekota */ |
|
|
|
|
/*{"ngo?", HB_TAG('S','X','T',' ')},*/ /* Sutu */ |
|
|
|
|
/*{"??", HB_TAG('T','C','R',' ')},*/ /* TH-Cree */ |
|
|
|
|
/*{"tnz?/tog?/toi?", HB_TAG('T','N','G',' ')},*/ /* Tonga */ |
|
|
|
|
/*{"enh?/yrk?", HB_TAG('T','N','E',' ')},*/ /* Tundra Nenets */ |
|
|
|
|
/*{"??", HB_TAG('W','C','R',' ')},*/ /* West-Cree */ |
|
|
|
|
/*{"cre?", HB_TAG('Y','C','R',' ')},*/ /* Y-Cree */ |
|
|
|
|
/*{"csw", HB_TAG('N','C','R',' ')},*/ /* N-Cree */ |
|
|
|
|
/*{"csw", HB_TAG('N','H','C',' ')},*/ /* Norway House Cree */ |
|
|
|
|
/*{"el-polyton", HB_TAG('P','G','R',' ')},*/ /* Polytonic Greek */ |
|
|
|
|
/*{"bgr, cnh, cnw, czt, sez, tcp, csy, ctd, flm, pck, tcz, zom, cmr, dao, hlt, cka, cnk, mrh, mwg, cbl, cnb, csh", HB_TAG('Q','I','N',' ')},*/ /* Chin */ |
|
|
|
|
/*{"??", HB_TAG('Y','I','C',' ')},*/ /* Yi Classic */ |
|
|
|
|
/*{"ii?/Yiii?", HB_TAG('Y','I','M',' ')},*/ /* Yi Modern */ |
|
|
|
|
/*{"??", HB_TAG('Z','H','P',' ')},*/ /* Chinese Phonetic */ |
|
|
|
|
/*{"zh-Latn-pinyin", HB_TAG('Z','H','P',' ')},*/ /* Chinese Phonetic */ |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|