diff --git a/src/hb-ot-name-language.cc b/src/hb-ot-name-language.cc index 8b79d4d6d..0e37e0acb 100644 --- a/src/hb-ot-name-language.cc +++ b/src/hb-ot-name-language.cc @@ -27,7 +27,10 @@ #include "hb-ot-name-language.hh" /* Following two tables were generated by joining FreeType, FontConfig, - * and OpenType specification language lists. */ + * and OpenType specification language lists, then filled in missing + * entries using: + * https://docs.microsoft.com/en-us/windows/desktop/intl/language-identifier-constants-and-strings + */ struct hb_ot_language_map_t { @@ -50,7 +53,7 @@ hb_ms_language_map[] = {0x0009, "en"}, /* ??? */ {0x0401, "ar"}, /* Arabic (Saudi Arabia) */ {0x0402, "bg"}, /* Bulgarian (Bulgaria) */ -//{0x0403, ""}, /* Catalan (Catalan) */ + {0x0403, "ca"}, /* Catalan (Catalan) */ {0x0404, "zh-tw"}, /* Chinese (Taiwan) */ {0x0405, "cs"}, /* Czech (Czech Republic) */ {0x0406, "da"}, /* Danish (Denmark) */ @@ -65,12 +68,12 @@ hb_ms_language_map[] = {0x040F, "is"}, /* Icelandic (Iceland) */ {0x0410, "it"}, /* Italian (Italy) */ {0x0411, "ja"}, /* Japanese (Japan) */ -//{0x0412, ""}, /* Korean (Korea) */ + {0x0412, "ko"}, /* Korean (Korea) */ {0x0413, "nl"}, /* Dutch (Netherlands) */ {0x0414, "no"}, /* Norwegian (Bokmal) (Norway) */ {0x0415, "pl"}, /* Polish (Poland) */ {0x0416, "pt"}, /* Portuguese (Brazil) */ -//{0x0417, ""}, /* Romansh (Switzerland) */ + {0x0417, "rm"}, /* Romansh (Switzerland) */ {0x0418, "ro"}, /* Romanian (Romania) */ {0x0419, "ru"}, /* Russian (Russia) */ {0x041A, "hr"}, /* Croatian (Croatia) */ @@ -83,24 +86,24 @@ hb_ms_language_map[] = {0x0421, "id"}, /* Indonesian (Indonesia) */ {0x0422, "uk"}, /* Ukrainian (Ukraine) */ {0x0423, "be"}, /* Belarusian (Belarus) */ -//{0x0424, ""}, /* Slovenian (Slovenia) */ + {0x0424, "sl"}, /* Slovenian (Slovenia) */ {0x0425, "et"}, /* Estonian (Estonia) */ {0x0426, "lv"}, /* Latvian (Latvia) */ {0x0427, "lt"}, /* Lithuanian (Lithuania) */ {0x0428, "tg"}, /* Tajik (Cyrillic) (Tajikistan) */ - {0x0429, "fa"}, /* ??? */ + {0x0429, "fa"}, /* Persian (Iran) */ {0x042A, "vi"}, /* Vietnamese (Vietnam) */ {0x042B, "hy"}, /* Armenian (Armenia) */ {0x042C, "az"}, /* Azeri (Latin) (Azerbaijan) */ -//{0x042D, ""}, /* Basque (Basque) */ -//{0x042E, ""}, /* Upper Sorbian (Germany) */ + {0x042D, "eu"}, /* Basque (Basque) */ + {0x042E, "hsb"}, /* Upper Sorbian (Germany) */ {0x042F, "mk"}, /* Macedonian (FYROM) (Former Yugoslav Republic of Macedonia) */ {0x0430, "st"}, /* ??? */ {0x0431, "ts"}, /* ??? */ -//{0x0432, ""}, /* Setswana (South Africa) */ + {0x0432, "tn"}, /* Setswana (South Africa) */ {0x0433, "ven"}, /* ??? */ -//{0x0434, ""}, /* isiXhosa (South Africa) */ -//{0x0435, ""}, /* isiZulu (South Africa) */ + {0x0434, "xh"}, /* isiXhosa (South Africa) */ + {0x0435, "zu"}, /* isiZulu (South Africa) */ {0x0436, "af"}, /* Afrikaans (South Africa) */ {0x0437, "ka"}, /* Georgian (Georgia) */ {0x0438, "fo"}, /* Faroese (Faroe Islands) */ @@ -110,16 +113,16 @@ hb_ms_language_map[] = {0x043C, "ga"}, /* ??? */ {0x043D, "yi"}, /* ??? */ {0x043E, "ms"}, /* Malay (Malaysia) */ -//{0x043F, ""}, /* Kazakh (Kazakhstan) */ -//{0x0440, ""}, /* Kyrgyz (Kyrgyzstan) */ -//{0x0441, ""}, /* Kiswahili (Kenya) */ + {0x043F, "kk"}, /* Kazakh (Kazakhstan) */ + {0x0440, "ky"}, /* Kyrgyz (Kyrgyzstan) */ + {0x0441, "sw"}, /* Kiswahili (Kenya) */ {0x0442, "tk"}, /* Turkmen (Turkmenistan) */ {0x0443, "uz"}, /* Uzbek (Latin) (Uzbekistan) */ -//{0x0444, ""}, /* Tatar (Russia) */ + {0x0444, "tt"}, /* Tatar (Russia) */ {0x0445, "bn"}, /* Bengali (India) */ {0x0446, "pa"}, /* Punjabi (India) */ {0x0447, "gu"}, /* Gujarati (India) */ -//{0x0448, ""}, /* Odia (formerly Oriya) (India) */ + {0x0448, "or"}, /* Odia (formerly Oriya) (India) */ {0x0449, "ta"}, /* Tamil (India) */ {0x044A, "te"}, /* Telugu (India) */ {0x044B, "kn"}, /* Kannada (India) */ @@ -128,17 +131,17 @@ hb_ms_language_map[] = {0x044E, "mr"}, /* Marathi (India) */ {0x044F, "sa"}, /* Sanskrit (India) */ {0x0450, "mn"}, /* Mongolian (Cyrillic) (Mongolia) */ -//{0x0451, ""}, /* Tibetan (PRC) */ -//{0x0452, ""}, /* Welsh (United Kingdom) */ + {0x0451, "bo"}, /* Tibetan (PRC) */ + {0x0452, "cy"}, /* Welsh (United Kingdom) */ {0x0453, "km"}, /* Khmer (Cambodia) */ {0x0454, "lo"}, /* Lao (Lao P.D.R.) */ {0x0455, "my"}, /* ??? */ -//{0x0456, ""}, /* Galician (Galician) */ + {0x0456, "gl"}, /* Galician (Galician) */ {0x0457, "kok"}, /* Konkani (India) */ {0x0458, "mni"}, /* ??? */ {0x0459, "sd"}, /* ??? */ {0x045A, "syr"}, /* Syriac (Syria) */ -//{0x045B, ""}, /* Sinhala (Sri Lanka) */ + {0x045B, "si"}, /* Sinhala (Sri Lanka) */ {0x045C, "chr"}, /* ??? */ {0x045D, "iu"}, /* Inuktitut (Canada) */ {0x045E, "am"}, /* Amharic (Ethiopia) */ @@ -150,11 +153,11 @@ hb_ms_language_map[] = {0x0465, "div"}, /* Divehi (Maldives) */ {0x0468, "ha"}, /* Hausa (Latin) (Nigeria) */ {0x046A, "yo"}, /* Yoruba (Nigeria) */ -//{0x046B, ""}, /* Quechua (Bolivia) */ -//{0x046C, ""}, /* Sesotho sa Leboa (South Africa) */ -//{0x046D, ""}, /* Bashkir (Russia) */ -//{0x046E, ""}, /* Luxembourgish (Luxembourg) */ -//{0x046F, ""}, /* Greenlandic (Greenland) */ + {0x046B, "quz"}, /* Quechua (Bolivia) */ + {0x046C, "nso"}, /* Sesotho sa Leboa (South Africa) */ + {0x046D, "ba"}, /* Bashkir (Russia) */ + {0x046E, "lb"}, /* Luxembourgish (Luxembourg) */ + {0x046F, "kl"}, /* Greenlandic (Greenland) */ {0x0470, "ibo"}, /* Igbo (Nigeria) */ {0x0471, "kau"}, /* ??? */ {0x0472, "om"}, /* ??? */ @@ -163,21 +166,21 @@ hb_ms_language_map[] = {0x0475, "haw"}, /* ??? */ {0x0476, "la"}, /* ??? */ {0x0477, "so"}, /* ??? */ -//{0x0478, ""}, /* Yi (PRC) */ + {0x0478, "ii"}, /* Yi (PRC) */ {0x0479, "pap"}, /* ??? */ -//{0x047A, ""}, /* Mapudungun (Chile) */ -//{0x047C, ""}, /* Mohawk (Mohawk) */ -//{0x047E, ""}, /* Breton (France) */ -//{0x0480, ""}, /* Uighur (PRC) */ + {0x047A, "arn"}, /* Mapudungun (Chile) */ + {0x047C, "moh"}, /* Mohawk (Mohawk) */ + {0x047E, "br"}, /* Breton (France) */ + {0x0480, "ug"}, /* Uighur (PRC) */ {0x0481, "mi"}, /* Maori (New Zealand) */ -//{0x0482, ""}, /* Occitan (France) */ -//{0x0483, ""}, /* Corsican (France) */ -//{0x0484, ""}, /* Alsatian (France) */ -//{0x0485, ""}, /* Yakut (Russia) */ -//{0x0486, ""}, /* K'iche (Guatemala) */ -//{0x0487, ""}, /* Kinyarwanda (Rwanda) */ -//{0x0488, ""}, /* Wolof (Senegal) */ -//{0x048C, ""}, /* Dari (Afghanistan) */ + {0x0482, "oc"}, /* Occitan (France) */ + {0x0483, "co"}, /* Corsican (France) */ + {0x0484, "gsw"}, /* Alsatian (France) */ + {0x0485, "sah"}, /* Yakut (Russia) */ + {0x0486, "qut"}, /* K'iche (Guatemala) */ + {0x0487, "rw"}, /* Kinyarwanda (Rwanda) */ + {0x0488, "wo"}, /* Wolof (Senegal) */ + {0x048C, "fa"}, /* Dari (Afghanistan) */ {0x0801, "ar"}, /* Arabic (Iraq) */ {0x0804, "zh-cn"}, /* Chinese (People’s Republic of China) */ {0x0807, "de"}, /* German (Switzerland) */ @@ -196,17 +199,17 @@ hb_ms_language_map[] = {0x0820, "ur"}, /* ??? */ {0x0827, "lt"}, /* ??? */ {0x082C, "az"}, /* Azeri (Cyrillic) (Azerbaijan) */ -//{0x082E, ""}, /* Lower Sorbian (Germany) */ + {0x082E, "dsb"}, /* Lower Sorbian (Germany) */ //{0x083B, ""}, /* Sami (Northern) (Sweden) */ {0x083C, "gd"}, /* Irish (Ireland) */ {0x083E, "ms"}, /* Malay (Brunei Darussalam) */ {0x0843, "uz"}, /* Uzbek (Cyrillic) (Uzbekistan) */ {0x0845, "bn"}, /* Bengali (Bangladesh) */ {0x0846, "ar"}, /* ??? */ -//{0x0850, ""}, /* Mongolian (Traditional) (People’s Republic of China) */ + {0x0850, "mn"}, /* Mongolian (Traditional) (People’s Republic of China) */ {0x0851, "dz"}, /* ??? */ -//{0x085D, ""}, /* Inuktitut (Latin) (Canada) */ -//{0x085F, ""}, /* Tamazight (Latin) (Algeria) */ + {0x085D, "iu"}, /* Inuktitut (Latin) (Canada) */ + {0x085F, "tzm"}, /* Tamazight (Latin) (Algeria) */ {0x0861, "ne"}, /* ??? */ //{0x086B, ""}, /* Quechua (Ecuador) */ {0x0873, "ti"}, /* ??? */ @@ -214,10 +217,10 @@ hb_ms_language_map[] = {0x0C04, "zh-hk"}, /* Chinese (Hong Kong S.A.R.) */ {0x0C07, "de"}, /* German (Austria) */ {0x0C09, "en"}, /* English (Australia) */ -//{0x0C0A, ""}, /* Spanish (Modern Sort) (Spain) */ + {0x0C0A, "es"}, /* Spanish (Modern Sort) (Spain) */ {0x0C0C, "fr"}, /* French (Canada) */ {0x0C1A, "sr"}, /* Serbian (Cyrillic) (Serbia) */ -//{0x0C3B, ""}, /* Sami (Northern) (Finland) */ + {0x0C3B, "se"}, /* Sami (Northern) (Finland) */ //{0x0C6B, ""}, /* Quechua (Peru) */ {0x1001, "ar"}, /* Arabic (Libya) */ {0x1004, "zh-sg"}, /* Chinese (Singapore) */ @@ -225,15 +228,14 @@ hb_ms_language_map[] = {0x1009, "en"}, /* English (Canada) */ {0x100A, "es"}, /* Spanish (Guatemala) */ {0x100C, "fr"}, /* French (Switzerland) */ -//{0x101A, ""}, /* Croatian (Latin) (Bosnia and Herzegovina) */ -//{0x103B, ""}, /* Sami (Lule) (Norway) */ + {0x101A, "hr"}, /* Croatian (Latin) (Bosnia and Herzegovina) */ + {0x103B, "smj"}, /* Sami (Lule) (Norway) */ {0x1401, "ar"}, /* Arabic (Algeria) */ //{0x1404, ""}, /* Chinese (Macao S.A.R.) */ -//{0x1407, ""}, /* German (Liechtenstein) */ + {0x1407, "de"}, /* German (Liechtenstein) */ {0x1409, "en"}, /* English (New Zealand) */ {0x140A, "es"}, /* Spanish (Costa Rica) */ - {0x140C, "fr"}, /* ??? */ -//{0x140c, ""}, /* French (Luxembourg) */ + {0x140C, "fr"}, /* French (Luxembourg) */ {0x141A, "bs"}, /* Bosnian (Latin) (Bosnia and Herzegovina) */ //{0x143B, ""}, /* Sami (Lule) (Sweden) */ {0x1801, "ar"}, /* Arabic (Morocco) */ @@ -241,7 +243,7 @@ hb_ms_language_map[] = {0x180A, "es"}, /* Spanish (Panama) */ {0x180C, "fr"}, /* French (Principality of Monaco) */ //{0x181A, ""}, /* Serbian (Latin) (Bosnia and Herzegovina) */ -//{0x183B, ""}, /* Sami (Southern) (Norway) */ + {0x183B, "sma"}, /* Sami (Southern) (Norway) */ {0x1C01, "ar"}, /* Arabic (Tunisia) */ {0x1C09, "en"}, /* English (South Africa) */ {0x1C0A, "es"}, /* Spanish (Dominican Republic) */ @@ -252,13 +254,13 @@ hb_ms_language_map[] = {0x2009, "en"}, /* English (Jamaica) */ {0x200A, "es"}, /* Spanish (Venezuela) */ {0x200C, "fr"}, /* ??? */ -//{0x201A, ""}, /* Bosnian (Cyrillic) (Bosnia and Herzegovina) */ -//{0x203B, ""}, /* Sami (Skolt) (Finland) */ + {0x201A, "bs"}, /* Bosnian (Cyrillic) (Bosnia and Herzegovina) */ + {0x203B, "sms"}, /* Sami (Skolt) (Finland) */ {0x2401, "ar"}, /* Arabic (Yemen) */ {0x2409, "en"}, /* English (Caribbean) */ {0x240A, "es"}, /* Spanish (Colombia) */ {0x240C, "fr"}, /* ??? */ -//{0x243B, ""}, /* Sami (Inari) (Finland) */ + {0x243B, "smn"}, /* Sami (Inari) (Finland) */ {0x2801, "ar"}, /* Arabic (Syria) */ {0x2809, "en"}, /* English (Belize) */ {0x280A, "es"}, /* Spanish (Peru) */ @@ -349,15 +351,15 @@ hb_mac_language_map[] = { 47, "uz"}, /* Uzbek */ { 48, "kk"}, /* Kazakh */ { 49, "az"}, /* Azerbaijani (Cyrillic script) */ - { 50, "ar"}, /* Azerbaijani (Arabic script) */ + { 50, "az"}, /* Azerbaijani (Arabic script) */ { 51, "hy"}, /* Armenian */ { 52, "ka"}, /* Georgian */ { 53, "mo"}, /* Moldavian */ { 54, "ky"}, /* Kirghiz */ { 55, "tg"}, /* Tajiki */ { 56, "tk"}, /* Turkmen */ - { 57, "mo"}, /* Mongolian (Mongolian script) */ - { 58, "mo"}, /* Mongolian (Cyrillic script) */ + { 57, "mn"}, /* Mongolian (Mongolian script) */ + { 58, "mn"}, /* Mongolian (Cyrillic script) */ { 59, "ps"}, /* Pashto */ { 60, "ku"}, /* Kurdish */ { 61, "ks"}, /* Kashmiri */