tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 */