hb-ot-name-language-static.hh (16705B)
1 /* 2 * Copyright © 2018 Google, Inc. 3 * 4 * This is part of HarfBuzz, a text shaping library. 5 * 6 * Permission is hereby granted, without written agreement and without 7 * license or royalty fees, to use, copy, modify, and distribute this 8 * software and its documentation for any purpose, provided that the 9 * above copyright notice and the following two paragraphs appear in 10 * all copies of this software. 11 * 12 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 13 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 14 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 15 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 16 * DAMAGE. 17 * 18 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 19 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 20 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 21 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 22 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 23 * 24 * Google Author(s): Behdad Esfahbod 25 */ 26 27 #ifndef HB_OT_NAME_LANGUAGE_STATIC_HH 28 #define HB_OT_NAME_LANGUAGE_STATIC_HH 29 30 #include "hb-ot-name-language.hh" 31 32 /* Following two tables were generated by joining FreeType, FontConfig, 33 * and OpenType specification language lists, then filled in missing 34 * entries using: 35 * https://docs.microsoft.com/en-us/windows/desktop/intl/language-identifier-constants-and-strings 36 */ 37 38 struct hb_ot_language_map_t 39 { 40 int cmp (unsigned int key) const 41 { return key < code ? -1 : key > code ? +1 : 0; } 42 43 uint16_t code; 44 char lang[6]; 45 }; 46 47 static const hb_ot_language_map_t 48 _hb_ms_language_map[] = 49 { 50 {0x0001, "ar"}, /* ??? */ 51 {0x0004, "zh"}, /* ??? */ 52 {0x0009, "en"}, /* ??? */ 53 {0x0401, "ar"}, /* Arabic (Saudi Arabia) */ 54 {0x0402, "bg"}, /* Bulgarian (Bulgaria) */ 55 {0x0403, "ca"}, /* Catalan (Catalan) */ 56 {0x0404, "zh-tw"}, /* Chinese (Taiwan) */ 57 {0x0405, "cs"}, /* Czech (Czech Republic) */ 58 {0x0406, "da"}, /* Danish (Denmark) */ 59 {0x0407, "de"}, /* German (Germany) */ 60 {0x0408, "el"}, /* Greek (Greece) */ 61 {0x0409, "en"}, /* English (United States) */ 62 {0x040A, "es"}, /* Spanish (Traditional Sort) (Spain) */ 63 {0x040B, "fi"}, /* Finnish (Finland) */ 64 {0x040C, "fr"}, /* French (France) */ 65 {0x040D, "he"}, /* Hebrew (Israel) */ 66 {0x040E, "hu"}, /* Hungarian (Hungary) */ 67 {0x040F, "is"}, /* Icelandic (Iceland) */ 68 {0x0410, "it"}, /* Italian (Italy) */ 69 {0x0411, "ja"}, /* Japanese (Japan) */ 70 {0x0412, "ko"}, /* Korean (Korea) */ 71 {0x0413, "nl"}, /* Dutch (Netherlands) */ 72 {0x0414, "no"}, /* Norwegian (Bokmal) (Norway) */ 73 {0x0415, "pl"}, /* Polish (Poland) */ 74 {0x0416, "pt"}, /* Portuguese (Brazil) */ 75 {0x0417, "rm"}, /* Romansh (Switzerland) */ 76 {0x0418, "ro"}, /* Romanian (Romania) */ 77 {0x0419, "ru"}, /* Russian (Russia) */ 78 {0x041A, "hr"}, /* Croatian (Croatia) */ 79 {0x041B, "sk"}, /* Slovak (Slovakia) */ 80 {0x041C, "sq"}, /* Albanian (Albania) */ 81 {0x041D, "sv"}, /* Swedish (Sweden) */ 82 {0x041E, "th"}, /* Thai (Thailand) */ 83 {0x041F, "tr"}, /* Turkish (Turkey) */ 84 {0x0420, "ur"}, /* Urdu (Islamic Republic of Pakistan) */ 85 {0x0421, "id"}, /* Indonesian (Indonesia) */ 86 {0x0422, "uk"}, /* Ukrainian (Ukraine) */ 87 {0x0423, "be"}, /* Belarusian (Belarus) */ 88 {0x0424, "sl"}, /* Slovenian (Slovenia) */ 89 {0x0425, "et"}, /* Estonian (Estonia) */ 90 {0x0426, "lv"}, /* Latvian (Latvia) */ 91 {0x0427, "lt"}, /* Lithuanian (Lithuania) */ 92 {0x0428, "tg"}, /* Tajik (Cyrillic) (Tajikistan) */ 93 {0x0429, "fa"}, /* Persian (Iran) */ 94 {0x042A, "vi"}, /* Vietnamese (Vietnam) */ 95 {0x042B, "hy"}, /* Armenian (Armenia) */ 96 {0x042C, "az"}, /* Azeri (Latin) (Azerbaijan) */ 97 {0x042D, "eu"}, /* Basque (Basque) */ 98 {0x042E, "hsb"}, /* Upper Sorbian (Germany) */ 99 {0x042F, "mk"}, /* Macedonian (FYROM) (Former Yugoslav Republic of Macedonia) */ 100 {0x0430, "st"}, /* ??? */ 101 {0x0431, "ts"}, /* ??? */ 102 {0x0432, "tn"}, /* Setswana (South Africa) */ 103 {0x0433, "ven"}, /* ??? */ 104 {0x0434, "xh"}, /* isiXhosa (South Africa) */ 105 {0x0435, "zu"}, /* isiZulu (South Africa) */ 106 {0x0436, "af"}, /* Afrikaans (South Africa) */ 107 {0x0437, "ka"}, /* Georgian (Georgia) */ 108 {0x0438, "fo"}, /* Faroese (Faroe Islands) */ 109 {0x0439, "hi"}, /* Hindi (India) */ 110 {0x043A, "mt"}, /* Maltese (Malta) */ 111 {0x043B, "se"}, /* Sami (Northern) (Norway) */ 112 {0x043C, "ga"}, /* ??? */ 113 {0x043D, "yi"}, /* ??? */ 114 {0x043E, "ms"}, /* Malay (Malaysia) */ 115 {0x043F, "kk"}, /* Kazakh (Kazakhstan) */ 116 {0x0440, "ky"}, /* Kyrgyz (Kyrgyzstan) */ 117 {0x0441, "sw"}, /* Kiswahili (Kenya) */ 118 {0x0442, "tk"}, /* Turkmen (Turkmenistan) */ 119 {0x0443, "uz"}, /* Uzbek (Latin) (Uzbekistan) */ 120 {0x0444, "tt"}, /* Tatar (Russia) */ 121 {0x0445, "bn"}, /* Bengali (India) */ 122 {0x0446, "pa"}, /* Punjabi (India) */ 123 {0x0447, "gu"}, /* Gujarati (India) */ 124 {0x0448, "or"}, /* Odia (formerly Oriya) (India) */ 125 {0x0449, "ta"}, /* Tamil (India) */ 126 {0x044A, "te"}, /* Telugu (India) */ 127 {0x044B, "kn"}, /* Kannada (India) */ 128 {0x044C, "ml"}, /* Malayalam (India) */ 129 {0x044D, "as"}, /* Assamese (India) */ 130 {0x044E, "mr"}, /* Marathi (India) */ 131 {0x044F, "sa"}, /* Sanskrit (India) */ 132 {0x0450, "mn"}, /* Mongolian (Cyrillic) (Mongolia) */ 133 {0x0451, "bo"}, /* Tibetan (PRC) */ 134 {0x0452, "cy"}, /* Welsh (United Kingdom) */ 135 {0x0453, "km"}, /* Khmer (Cambodia) */ 136 {0x0454, "lo"}, /* Lao (Lao P.D.R.) */ 137 {0x0455, "my"}, /* ??? */ 138 {0x0456, "gl"}, /* Galician (Galician) */ 139 {0x0457, "kok"}, /* Konkani (India) */ 140 {0x0458, "mni"}, /* ??? */ 141 {0x0459, "sd"}, /* ??? */ 142 {0x045A, "syr"}, /* Syriac (Syria) */ 143 {0x045B, "si"}, /* Sinhala (Sri Lanka) */ 144 {0x045C, "chr"}, /* ??? */ 145 {0x045D, "iu"}, /* Inuktitut (Canada) */ 146 {0x045E, "am"}, /* Amharic (Ethiopia) */ 147 {0x0460, "ks"}, /* ??? */ 148 {0x0461, "ne"}, /* Nepali (Nepal) */ 149 {0x0462, "fy"}, /* Frisian (Netherlands) */ 150 {0x0463, "ps"}, /* Pashto (Afghanistan) */ 151 {0x0464, "phi"}, /* Filipino (Philippines) */ 152 {0x0465, "div"}, /* Divehi (Maldives) */ 153 {0x0468, "ha"}, /* Hausa (Latin) (Nigeria) */ 154 {0x046A, "yo"}, /* Yoruba (Nigeria) */ 155 {0x046B, "quz"}, /* Quechua (Bolivia) */ 156 {0x046C, "nso"}, /* Sesotho sa Leboa (South Africa) */ 157 {0x046D, "ba"}, /* Bashkir (Russia) */ 158 {0x046E, "lb"}, /* Luxembourgish (Luxembourg) */ 159 {0x046F, "kl"}, /* Greenlandic (Greenland) */ 160 {0x0470, "ibo"}, /* Igbo (Nigeria) */ 161 {0x0471, "kau"}, /* ??? */ 162 {0x0472, "om"}, /* ??? */ 163 {0x0473, "ti"}, /* ??? */ 164 {0x0474, "gn"}, /* ??? */ 165 {0x0475, "haw"}, /* ??? */ 166 {0x0476, "la"}, /* ??? */ 167 {0x0477, "so"}, /* ??? */ 168 {0x0478, "ii"}, /* Yi (PRC) */ 169 {0x0479, "pap"}, /* ??? */ 170 {0x047A, "arn"}, /* Mapudungun (Chile) */ 171 {0x047C, "moh"}, /* Mohawk (Mohawk) */ 172 {0x047E, "br"}, /* Breton (France) */ 173 {0x0480, "ug"}, /* Uighur (PRC) */ 174 {0x0481, "mi"}, /* Maori (New Zealand) */ 175 {0x0482, "oc"}, /* Occitan (France) */ 176 {0x0483, "co"}, /* Corsican (France) */ 177 {0x0484, "gsw"}, /* Alsatian (France) */ 178 {0x0485, "sah"}, /* Yakut (Russia) */ 179 {0x0486, "qut"}, /* K'iche (Guatemala) */ 180 {0x0487, "rw"}, /* Kinyarwanda (Rwanda) */ 181 {0x0488, "wo"}, /* Wolof (Senegal) */ 182 {0x048C, "fa"}, /* Dari (Afghanistan) */ 183 {0x0801, "ar"}, /* Arabic (Iraq) */ 184 {0x0804, "zh-cn"}, /* Chinese (People’s Republic of China) */ 185 {0x0807, "de"}, /* German (Switzerland) */ 186 {0x0809, "en"}, /* English (United Kingdom) */ 187 {0x080A, "es"}, /* Spanish (Mexico) */ 188 {0x080C, "fr"}, /* French (Belgium) */ 189 {0x0810, "it"}, /* Italian (Switzerland) */ 190 {0x0812, "ko"}, /* ??? */ 191 {0x0813, "nl"}, /* Dutch (Belgium) */ 192 {0x0814, "nn"}, /* Norwegian (Nynorsk) (Norway) */ 193 {0x0816, "pt"}, /* Portuguese (Portugal) */ 194 {0x0818, "mo"}, /* ??? */ 195 {0x0819, "ru"}, /* ??? */ 196 {0x081A, "sr"}, /* Serbian (Latin) (Serbia) */ 197 {0x081D, "sv"}, /* Sweden (Finland) */ 198 {0x0820, "ur"}, /* ??? */ 199 {0x0827, "lt"}, /* ??? */ 200 {0x082C, "az"}, /* Azeri (Cyrillic) (Azerbaijan) */ 201 {0x082E, "dsb"}, /* Lower Sorbian (Germany) */ 202 //{0x083B, ""}, /* Sami (Northern) (Sweden) */ 203 {0x083C, "gd"}, /* Irish (Ireland) */ 204 {0x083E, "ms"}, /* Malay (Brunei Darussalam) */ 205 {0x0843, "uz"}, /* Uzbek (Cyrillic) (Uzbekistan) */ 206 {0x0845, "bn"}, /* Bengali (Bangladesh) */ 207 {0x0846, "ar"}, /* ??? */ 208 {0x0850, "mn"}, /* Mongolian (Traditional) (People’s Republic of China) */ 209 {0x0851, "dz"}, /* ??? */ 210 {0x085D, "iu"}, /* Inuktitut (Latin) (Canada) */ 211 {0x085F, "tzm"}, /* Tamazight (Latin) (Algeria) */ 212 {0x0861, "ne"}, /* ??? */ 213 //{0x086B, ""}, /* Quechua (Ecuador) */ 214 {0x0873, "ti"}, /* ??? */ 215 {0x0C01, "ar"}, /* Arabic (Egypt) */ 216 {0x0C04, "zh-hk"}, /* Chinese (Hong Kong S.A.R.) */ 217 {0x0C07, "de"}, /* German (Austria) */ 218 {0x0C09, "en"}, /* English (Australia) */ 219 {0x0C0A, "es"}, /* Spanish (Modern Sort) (Spain) */ 220 {0x0C0C, "fr"}, /* French (Canada) */ 221 {0x0C1A, "sr"}, /* Serbian (Cyrillic) (Serbia) */ 222 {0x0C3B, "se"}, /* Sami (Northern) (Finland) */ 223 //{0x0C6B, ""}, /* Quechua (Peru) */ 224 {0x1001, "ar"}, /* Arabic (Libya) */ 225 {0x1004, "zh-sg"}, /* Chinese (Singapore) */ 226 {0x1007, "de"}, /* German (Luxembourg) */ 227 {0x1009, "en"}, /* English (Canada) */ 228 {0x100A, "es"}, /* Spanish (Guatemala) */ 229 {0x100C, "fr"}, /* French (Switzerland) */ 230 {0x101A, "hr"}, /* Croatian (Latin) (Bosnia and Herzegovina) */ 231 {0x103B, "smj"}, /* Sami (Lule) (Norway) */ 232 {0x1401, "ar"}, /* Arabic (Algeria) */ 233 //{0x1404, ""}, /* Chinese (Macao S.A.R.) */ 234 {0x1407, "de"}, /* German (Liechtenstein) */ 235 {0x1409, "en"}, /* English (New Zealand) */ 236 {0x140A, "es"}, /* Spanish (Costa Rica) */ 237 {0x140C, "fr"}, /* French (Luxembourg) */ 238 {0x141A, "bs"}, /* Bosnian (Latin) (Bosnia and Herzegovina) */ 239 //{0x143B, ""}, /* Sami (Lule) (Sweden) */ 240 {0x1801, "ar"}, /* Arabic (Morocco) */ 241 {0x1809, "en"}, /* English (Ireland) */ 242 {0x180A, "es"}, /* Spanish (Panama) */ 243 {0x180C, "fr"}, /* French (Principality of Monaco) */ 244 //{0x181A, ""}, /* Serbian (Latin) (Bosnia and Herzegovina) */ 245 {0x183B, "sma"}, /* Sami (Southern) (Norway) */ 246 {0x1C01, "ar"}, /* Arabic (Tunisia) */ 247 {0x1C09, "en"}, /* English (South Africa) */ 248 {0x1C0A, "es"}, /* Spanish (Dominican Republic) */ 249 {0x1C0C, "fr"}, /* ??? */ 250 //{0x1C1A, ""}, /* Serbian (Cyrillic) (Bosnia and Herzegovina) */ 251 //{0x1C3B, ""}, /* Sami (Southern) (Sweden) */ 252 {0x2001, "ar"}, /* Arabic (Oman) */ 253 {0x2009, "en"}, /* English (Jamaica) */ 254 {0x200A, "es"}, /* Spanish (Venezuela) */ 255 {0x200C, "fr"}, /* ??? */ 256 {0x201A, "bs"}, /* Bosnian (Cyrillic) (Bosnia and Herzegovina) */ 257 {0x203B, "sms"}, /* Sami (Skolt) (Finland) */ 258 {0x2401, "ar"}, /* Arabic (Yemen) */ 259 {0x2409, "en"}, /* English (Caribbean) */ 260 {0x240A, "es"}, /* Spanish (Colombia) */ 261 {0x240C, "fr"}, /* ??? */ 262 {0x243B, "smn"}, /* Sami (Inari) (Finland) */ 263 {0x2801, "ar"}, /* Arabic (Syria) */ 264 {0x2809, "en"}, /* English (Belize) */ 265 {0x280A, "es"}, /* Spanish (Peru) */ 266 {0x280C, "fr"}, /* ??? */ 267 {0x2C01, "ar"}, /* Arabic (Jordan) */ 268 {0x2C09, "en"}, /* English (Trinidad and Tobago) */ 269 {0x2C0A, "es"}, /* Spanish (Argentina) */ 270 {0x2C0C, "fr"}, /* ??? */ 271 {0x3001, "ar"}, /* Arabic (Lebanon) */ 272 {0x3009, "en"}, /* English (Zimbabwe) */ 273 {0x300A, "es"}, /* Spanish (Ecuador) */ 274 {0x300C, "fr"}, /* ??? */ 275 {0x3401, "ar"}, /* Arabic (Kuwait) */ 276 {0x3409, "en"}, /* English (Republic of the Philippines) */ 277 {0x340A, "es"}, /* Spanish (Chile) */ 278 {0x340C, "fr"}, /* ??? */ 279 {0x3801, "ar"}, /* Arabic (U.A.E.) */ 280 {0x380A, "es"}, /* Spanish (Uruguay) */ 281 {0x380C, "fr"}, /* ??? */ 282 {0x3C01, "ar"}, /* Arabic (Bahrain) */ 283 {0x3C09, "en"}, /* ??? */ 284 {0x3C0A, "es"}, /* Spanish (Paraguay) */ 285 {0x3C0C, "fr"}, /* ??? */ 286 {0x4001, "ar"}, /* Arabic (Qatar) */ 287 {0x4009, "en"}, /* English (India) */ 288 {0x400A, "es"}, /* Spanish (Bolivia) */ 289 {0x4409, "en"}, /* English (Malaysia) */ 290 {0x440A, "es"}, /* Spanish (El Salvador) */ 291 {0x4809, "en"}, /* English (Singapore) */ 292 {0x480A, "es"}, /* Spanish (Honduras) */ 293 {0x4C0A, "es"}, /* Spanish (Nicaragua) */ 294 {0x500A, "es"}, /* Spanish (Puerto Rico) */ 295 {0x540A, "es"}, /* Spanish (United States) */ 296 {0xE40A, "es"}, /* ??? */ 297 {0xE40C, "fr"}, /* ??? */ 298 }; 299 300 static const hb_ot_language_map_t 301 _hb_mac_language_map[] = 302 { 303 { 0, "en"}, /* English */ 304 { 1, "fr"}, /* French */ 305 { 2, "de"}, /* German */ 306 { 3, "it"}, /* Italian */ 307 { 4, "nl"}, /* Dutch */ 308 { 5, "sv"}, /* Swedish */ 309 { 6, "es"}, /* Spanish */ 310 { 7, "da"}, /* Danish */ 311 { 8, "pt"}, /* Portuguese */ 312 { 9, "no"}, /* Norwegian */ 313 { 10, "he"}, /* Hebrew */ 314 { 11, "ja"}, /* Japanese */ 315 { 12, "ar"}, /* Arabic */ 316 { 13, "fi"}, /* Finnish */ 317 { 14, "el"}, /* Greek */ 318 { 15, "is"}, /* Icelandic */ 319 { 16, "mt"}, /* Maltese */ 320 { 17, "tr"}, /* Turkish */ 321 { 18, "hr"}, /* Croatian */ 322 { 19, "zh-tw"}, /* Chinese (Traditional) */ 323 { 20, "ur"}, /* Urdu */ 324 { 21, "hi"}, /* Hindi */ 325 { 22, "th"}, /* Thai */ 326 { 23, "ko"}, /* Korean */ 327 { 24, "lt"}, /* Lithuanian */ 328 { 25, "pl"}, /* Polish */ 329 { 26, "hu"}, /* Hungarian */ 330 { 27, "et"}, /* Estonian */ 331 { 28, "lv"}, /* Latvian */ 332 //{ 29, ""}, /* Sami */ 333 { 30, "fo"}, /* Faroese */ 334 { 31, "fa"}, /* Farsi/Persian */ 335 { 32, "ru"}, /* Russian */ 336 { 33, "zh-cn"}, /* Chinese (Simplified) */ 337 { 34, "nl"}, /* Flemish */ 338 { 35, "ga"}, /* Irish Gaelic */ 339 { 36, "sq"}, /* Albanian */ 340 { 37, "ro"}, /* Romanian */ 341 { 38, "cs"}, /* Czech */ 342 { 39, "sk"}, /* Slovak */ 343 { 40, "sl"}, /* Slovenian */ 344 { 41, "yi"}, /* Yiddish */ 345 { 42, "sr"}, /* Serbian */ 346 { 43, "mk"}, /* Macedonian */ 347 { 44, "bg"}, /* Bulgarian */ 348 { 45, "uk"}, /* Ukrainian */ 349 { 46, "be"}, /* Byelorussian */ 350 { 47, "uz"}, /* Uzbek */ 351 { 48, "kk"}, /* Kazakh */ 352 { 49, "az"}, /* Azerbaijani (Cyrillic script) */ 353 { 50, "az"}, /* Azerbaijani (Arabic script) */ 354 { 51, "hy"}, /* Armenian */ 355 { 52, "ka"}, /* Georgian */ 356 { 53, "mo"}, /* Moldavian */ 357 { 54, "ky"}, /* Kirghiz */ 358 { 55, "tg"}, /* Tajiki */ 359 { 56, "tk"}, /* Turkmen */ 360 { 57, "mn"}, /* Mongolian (Mongolian script) */ 361 { 58, "mn"}, /* Mongolian (Cyrillic script) */ 362 { 59, "ps"}, /* Pashto */ 363 { 60, "ku"}, /* Kurdish */ 364 { 61, "ks"}, /* Kashmiri */ 365 { 62, "sd"}, /* Sindhi */ 366 { 63, "bo"}, /* Tibetan */ 367 { 64, "ne"}, /* Nepali */ 368 { 65, "sa"}, /* Sanskrit */ 369 { 66, "mr"}, /* Marathi */ 370 { 67, "bn"}, /* Bengali */ 371 { 68, "as"}, /* Assamese */ 372 { 69, "gu"}, /* Gujarati */ 373 { 70, "pa"}, /* Punjabi */ 374 { 71, "or"}, /* Oriya */ 375 { 72, "ml"}, /* Malayalam */ 376 { 73, "kn"}, /* Kannada */ 377 { 74, "ta"}, /* Tamil */ 378 { 75, "te"}, /* Telugu */ 379 { 76, "si"}, /* Sinhalese */ 380 { 77, "my"}, /* Burmese */ 381 { 78, "km"}, /* Khmer */ 382 { 79, "lo"}, /* Lao */ 383 { 80, "vi"}, /* Vietnamese */ 384 { 81, "id"}, /* Indonesian */ 385 { 82, "tl"}, /* Tagalog */ 386 { 83, "ms"}, /* Malay (Roman script) */ 387 { 84, "ms"}, /* Malay (Arabic script) */ 388 { 85, "am"}, /* Amharic */ 389 { 86, "ti"}, /* Tigrinya */ 390 { 87, "om"}, /* Galla */ 391 { 88, "so"}, /* Somali */ 392 { 89, "sw"}, /* Swahili */ 393 { 90, "rw"}, /* Kinyarwanda/Ruanda */ 394 { 91, "rn"}, /* Rundi */ 395 { 92, "ny"}, /* Nyanja/Chewa */ 396 { 93, "mg"}, /* Malagasy */ 397 { 94, "eo"}, /* Esperanto */ 398 {128, "cy"}, /* Welsh */ 399 {129, "eu"}, /* Basque */ 400 {130, "ca"}, /* Catalan */ 401 {131, "la"}, /* Latin */ 402 {132, "qu"}, /* Quechua */ 403 {133, "gn"}, /* Guarani */ 404 {134, "ay"}, /* Aymara */ 405 {135, "tt"}, /* Tatar */ 406 {136, "ug"}, /* Uighur */ 407 {137, "dz"}, /* Dzongkha */ 408 {138, "jw"}, /* Javanese (Roman script) */ 409 {139, "su"}, /* Sundanese (Roman script) */ 410 {140, "gl"}, /* Galician */ 411 {141, "af"}, /* Afrikaans */ 412 {142, "br"}, /* Breton */ 413 {143, "iu"}, /* Inuktitut */ 414 {144, "gd"}, /* Scottish Gaelic */ 415 {145, "gv"}, /* Manx Gaelic */ 416 {146, "ga"}, /* Irish Gaelic (with dot above) */ 417 {147, "to"}, /* Tongan */ 418 {148, "el"}, /* Greek (polytonic) */ 419 {149, "ik"}, /* Greenlandic */ 420 {150, "az"}, /* Azerbaijani (Roman script) */ 421 }; 422 423 424 static hb_language_t 425 _hb_ot_name_language_for (unsigned int code, 426 const hb_ot_language_map_t *array, 427 unsigned int len) 428 { 429 #ifdef HB_NO_OT_NAME_LANGUAGE 430 return HB_LANGUAGE_INVALID; 431 #endif 432 auto *entry = hb_bsearch (code, array, len); 433 434 if (entry) 435 return hb_language_from_string (entry->lang, -1); 436 437 return HB_LANGUAGE_INVALID; 438 } 439 440 hb_language_t 441 _hb_ot_name_language_for_ms_code (unsigned int code) 442 { 443 return _hb_ot_name_language_for (code, 444 _hb_ms_language_map, 445 ARRAY_LENGTH (_hb_ms_language_map)); 446 } 447 448 hb_language_t 449 _hb_ot_name_language_for_mac_code (unsigned int code) 450 { 451 return _hb_ot_name_language_for (code, 452 _hb_mac_language_map, 453 ARRAY_LENGTH (_hb_mac_language_map)); 454 } 455 456 #endif /* HB_OT_NAME_LANGUAGE_STATIC_HH */