1 /* == Start of generated table == */
   2 /*
   3  * The following table is generated by running:
   4  *
   5  *   ./gen-tag-table.py languagetags language-subtag-registry
   6  *
   7  * on files with these headers:
   8  *
   9  * <meta name="updated_at" content="2018-09-07 07:45 PM" />
  10  * File-Date: 2018-08-08
  11  */
  12 
  13 #ifndef HB_OT_TAG_TABLE_HH
  14 #define HB_OT_TAG_TABLE_HH
  15 
  16 static const LangTag ot_languages[] = {
  17   {"aa",        {HB_TAG('A','F','R',' ')}},     /* Afar */
  18   {"aae",       {HB_TAG('S','Q','I',' ')}},     /* Arbëreshë Albanian -> Albanian */
  19   {"aao",       {HB_TAG('A','R','A',' ')}},     /* Algerian Saharan Arabic -> Arabic */
  20   {"aat",       {HB_TAG('S','Q','I',' ')}},     /* Arvanitika Albanian -> Albanian */
  21   {"ab",        {HB_TAG('A','B','K',' ')}},     /* Abkhazian */
  22   {"abh",       {HB_TAG('A','R','A',' ')}},     /* Tajiki Arabic -> Arabic */
  23   {"abq",       {HB_TAG('A','B','A',' ')}},     /* Abaza */
  24   {"abv",       {HB_TAG('A','R','A',' ')}},     /* Baharna Arabic -> Arabic */
  25   {"acf",       {HB_TAG('F','A','N',' ')}},     /* Saint Lucian Creole French -> French Antillean */
  26   {"ach",       {HB_TAG('A','C','H',' ')}},     /* Acoli -> Acholi */
  27   {"acm",       {HB_TAG('A','R','A',' ')}},     /* Mesopotamian Arabic -> Arabic */
  28   {"acq",       {HB_TAG('A','R','A',' ')}},     /* Ta'izzi-Adeni Arabic -> Arabic */
  29   {"acr",       {HB_TAG('A','C','R',' ')}},     /* Achi */
  30   {"acw",       {HB_TAG('A','R','A',' ')}},     /* Hijazi Arabic -> Arabic */
  31   {"acx",       {HB_TAG('A','R','A',' ')}},     /* Omani Arabic -> Arabic */
  32   {"acy",       {HB_TAG('A','R','A',' ')}},     /* Cypriot Arabic -> Arabic */
  33   {"ada",       {HB_TAG('D','N','G',' ')}},     /* Adangme -> Dangme */
  34   {"adf",       {HB_TAG('A','R','A',' ')}},     /* Dhofari Arabic -> Arabic */
  35   {"adp",       {HB_TAG('D','Z','N',' ')}},     /* Adap (retired code) -> Dzongkha */
  36   {"ady",       {HB_TAG('A','D','Y',' ')}},     /* Adyghe */
  37   {"aeb",       {HB_TAG('A','R','A',' ')}},     /* Tunisian Arabic -> Arabic */
  38   {"aec",       {HB_TAG('A','R','A',' ')}},     /* Saidi Arabic -> Arabic */
  39   {"af",        {HB_TAG('A','F','K',' ')}},     /* Afrikaans */
  40   {"afb",       {HB_TAG('A','R','A',' ')}},     /* Gulf Arabic -> Arabic */
  41   {"ahg",       {HB_TAG('A','G','W',' ')}},     /* Qimant -> Agaw */
  42   {"aht",       {HB_TAG('A','T','H',' ')}},     /* Ahtena -> Athapaskan */
  43   {"aii",       {HB_TAG('S','W','A',' '),       /* Assyrian Neo-Aramaic -> Swadaya Aramaic */
  44                  HB_TAG('S','Y','R',' ')}},     /* Assyrian Neo-Aramaic -> Syriac */
  45   {"aio",       {HB_TAG('A','I','O',' ')}},     /* Aiton */
  46   {"aiw",       {HB_TAG('A','R','I',' ')}},     /* Aari */
  47   {"ajp",       {HB_TAG('A','R','A',' ')}},     /* South Levantine Arabic -> Arabic */
  48   {"ak",        {HB_TAG('A','K','A',' '),       /* Akan [macrolanguage] */
  49                  HB_TAG('T','W','I',' ')}},     /* Akan [macrolanguage] -> Twi */
  50   {"aln",       {HB_TAG('S','Q','I',' ')}},     /* Gheg Albanian -> Albanian */
  51   {"als",       {HB_TAG('S','Q','I',' ')}},     /* Tosk Albanian -> Albanian */
  52   {"alt",       {HB_TAG('A','L','T',' ')}},     /* Southern Altai -> Altai */
  53   {"am",        {HB_TAG('A','M','H',' ')}},     /* Amharic */
  54   {"amf",       {HB_TAG('H','B','N',' ')}},     /* Hamer-Banna -> Hammer-Banna */
  55   {"amw",       {HB_TAG('S','Y','R',' ')}},     /* Western Neo-Aramaic -> Syriac */
  56   {"an",        {HB_TAG('A','R','G',' ')}},     /* Aragonese */
  57   {"ang",       {HB_TAG('A','N','G',' ')}},     /* Old English (ca. 450-1100) -> Anglo-Saxon */
  58   {"apc",       {HB_TAG('A','R','A',' ')}},     /* North Levantine Arabic -> Arabic */
  59   {"apd",       {HB_TAG('A','R','A',' ')}},     /* Sudanese Arabic -> Arabic */
  60   {"apj",       {HB_TAG('A','T','H',' ')}},     /* Jicarilla Apache -> Athapaskan */
  61   {"apk",       {HB_TAG('A','T','H',' ')}},     /* Kiowa Apache -> Athapaskan */
  62   {"apl",       {HB_TAG('A','T','H',' ')}},     /* Lipan Apache -> Athapaskan */
  63   {"apm",       {HB_TAG('A','T','H',' ')}},     /* Mescalero-Chiricahua Apache -> Athapaskan */
  64   {"apw",       {HB_TAG('A','T','H',' ')}},     /* Western Apache -> Athapaskan */
  65   {"ar",        {HB_TAG('A','R','A',' ')}},     /* Arabic [macrolanguage] */
  66   {"arb",       {HB_TAG('A','R','A',' ')}},     /* Standard Arabic -> Arabic */
  67   {"arn",       {HB_TAG('M','A','P',' ')}},     /* Mapudungun */
  68   {"arq",       {HB_TAG('A','R','A',' ')}},     /* Algerian Arabic -> Arabic */
  69   {"ars",       {HB_TAG('A','R','A',' ')}},     /* Najdi Arabic -> Arabic */
  70   {"ary",       {HB_TAG('M','O','R',' ')}},     /* Moroccan Arabic -> Moroccan */
  71   {"arz",       {HB_TAG('A','R','A',' ')}},     /* Egyptian Arabic -> Arabic */
  72   {"as",        {HB_TAG('A','S','M',' ')}},     /* Assamese */
  73   {"ast",       {HB_TAG('A','S','T',' ')}},     /* Asturian */
  74   {"ath",       {HB_TAG('A','T','H',' ')}},     /* Athapascan [family] -> Athapaskan */
  75   {"atj",       {HB_TAG('R','C','R',' ')}},     /* Atikamekw -> R-Cree */
  76   {"atv",       {HB_TAG('A','L','T',' ')}},     /* Northern Altai -> Altai */
  77   {"auz",       {HB_TAG('A','R','A',' ')}},     /* Uzbeki Arabic -> Arabic */
  78   {"av",        {HB_TAG('A','V','R',' ')}},     /* Avaric -> Avar */
  79   {"avl",       {HB_TAG('A','R','A',' ')}},     /* Eastern Egyptian Bedawi Arabic -> Arabic */
  80   {"awa",       {HB_TAG('A','W','A',' ')}},     /* Awadhi */
  81   {"ay",        {HB_TAG('A','Y','M',' ')}},     /* Aymara [macrolanguage] */
  82   {"ayc",       {HB_TAG('A','Y','M',' ')}},     /* Southern Aymara -> Aymara */
  83   {"ayh",       {HB_TAG('A','R','A',' ')}},     /* Hadrami Arabic -> Arabic */
  84   {"ayl",       {HB_TAG('A','R','A',' ')}},     /* Libyan Arabic -> Arabic */
  85   {"ayn",       {HB_TAG('A','R','A',' ')}},     /* Sanaani Arabic -> Arabic */
  86   {"ayp",       {HB_TAG('A','R','A',' ')}},     /* North Mesopotamian Arabic -> Arabic */
  87   {"ayr",       {HB_TAG('A','Y','M',' ')}},     /* Central Aymara -> Aymara */
  88   {"az",        {HB_TAG('A','Z','E',' ')}},     /* Azerbaijani [macrolanguage] */
  89   {"azb",       {HB_TAG('A','Z','B',' ')}},     /* South Azerbaijani -> Torki */
  90   {"azj",       {HB_TAG('A','Z','E',' ')}},     /* North Azerbaijani -> Azerbaijani */
  91   {"ba",        {HB_TAG('B','S','H',' ')}},     /* Bashkir */
  92   {"bad",       {HB_TAG('B','A','D','0')}},     /* Banda [family] */
  93   {"bai",       {HB_TAG('B','M','L',' ')}},     /* Bamileke [family] */
  94   {"bal",       {HB_TAG('B','L','I',' ')}},     /* Baluchi [macrolanguage] */
  95   {"ban",       {HB_TAG('B','A','N',' ')}},     /* Balinese */
  96   {"bar",       {HB_TAG('B','A','R',' ')}},     /* Bavarian */
  97   {"bbc",       {HB_TAG('B','B','C',' ')}},     /* Batak Toba */
  98   {"bbz",       {HB_TAG('A','R','A',' ')}},     /* Babalia Creole Arabic -> Arabic */
  99   {"bcc",       {HB_TAG('B','L','I',' ')}},     /* Southern Balochi -> Baluchi */
 100   {"bci",       {HB_TAG('B','A','U',' ')}},     /* Baoulé -> Baulé */
 101   {"bcl",       {HB_TAG('B','I','K',' ')}},     /* Central Bikol -> Bikol */
 102   {"bcq",       {HB_TAG('B','C','H',' ')}},     /* Bench */
 103   {"bcr",       {HB_TAG('A','T','H',' ')}},     /* Babine -> Athapaskan */
 104   {"bdy",       {HB_TAG('B','D','Y',' ')}},     /* Bandjalang */
 105   {"be",        {HB_TAG('B','E','L',' ')}},     /* Belarusian -> Belarussian */
 106   {"bea",       {HB_TAG('A','T','H',' ')}},     /* Beaver -> Athapaskan */
 107   {"beb",       {HB_TAG('B','T','I',' ')}},     /* Bebele -> Beti */
 108   {"bem",       {HB_TAG('B','E','M',' ')}},     /* Bemba (Zambia) */
 109   {"ber",       {HB_TAG('B','B','R',' ')}},     /* Berber [family] */
 110   {"bfq",       {HB_TAG('B','A','D',' ')}},     /* Badaga */
 111   {"bft",       {HB_TAG('B','L','T',' ')}},     /* Balti */
 112   {"bfu",       {HB_TAG('L','A','H',' ')}},     /* Gahri -> Lahuli */
 113   {"bfy",       {HB_TAG('B','A','G',' ')}},     /* Bagheli -> Baghelkhandi */
 114   {"bg",        {HB_TAG('B','G','R',' ')}},     /* Bulgarian */
 115   {"bgc",       {HB_TAG('B','G','C',' ')}},     /* Haryanvi */
 116   {"bgn",       {HB_TAG('B','L','I',' ')}},     /* Western Balochi -> Baluchi */
 117   {"bgp",       {HB_TAG('B','L','I',' ')}},     /* Eastern Balochi -> Baluchi */
 118   {"bgq",       {HB_TAG('B','G','Q',' ')}},     /* Bagri */
 119   {"bgr",       {HB_TAG('Q','I','N',' ')}},     /* Bawm Chin -> Chin */
 120   {"bhb",       {HB_TAG('B','H','I',' ')}},     /* Bhili */
 121   {"bhi",       {HB_TAG('B','H','I',' ')}},     /* Bhilali -> Bhili */
 122   {"bhk",       {HB_TAG('B','I','K',' ')}},     /* Albay Bicolano (retired code) -> Bikol */
 123   {"bho",       {HB_TAG('B','H','O',' ')}},     /* Bhojpuri */
 124   {"bhr",       {HB_TAG('M','L','G',' ')}},     /* Bara Malagasy -> Malagasy */
 125   {"bi",        {HB_TAG('B','I','S',' ')}},     /* Bislama */
 126   {"bik",       {HB_TAG('B','I','K',' ')}},     /* Bikol [macrolanguage] */
 127   {"bin",       {HB_TAG('E','D','O',' ')}},     /* Edo */
 128   {"bjj",       {HB_TAG('B','J','J',' ')}},     /* Kanauji */
 129   {"bjn",       {HB_TAG('M','L','Y',' ')}},     /* Banjar -> Malay */
 130   {"bjq",       {HB_TAG('M','L','G',' ')}},     /* Southern Betsimisaraka Malagasy (retired code) -> Malagasy */
 131   {"bjt",       {HB_TAG('B','L','N',' ')}},     /* Balanta-Ganja -> Balante */
 132   {"bla",       {HB_TAG('B','K','F',' ')}},     /* Siksika -> Blackfoot */
 133   {"ble",       {HB_TAG('B','L','N',' ')}},     /* Balanta-Kentohe -> Balante */
 134   {"blk",       {HB_TAG('B','L','K',' ')}},     /* Pa'o Karen */
 135   {"bln",       {HB_TAG('B','I','K',' ')}},     /* Southern Catanduanes Bikol -> Bikol */
 136   {"bm",        {HB_TAG('B','M','B',' ')}},     /* Bambara (Bamanankan) */
 137   {"bmm",       {HB_TAG('M','L','G',' ')}},     /* Northern Betsimisaraka Malagasy -> Malagasy */
 138   {"bn",        {HB_TAG('B','E','N',' ')}},     /* Bengali */
 139   {"bo",        {HB_TAG('T','I','B',' ')}},     /* Tibetan */
 140   {"bpy",       {HB_TAG('B','P','Y',' ')}},     /* Bishnupriya -> Bishnupriya Manipuri */
 141   {"bqi",       {HB_TAG('L','R','C',' ')}},     /* Bakhtiari -> Luri */
 142   {"br",        {HB_TAG('B','R','E',' ')}},     /* Breton */
 143   {"bra",       {HB_TAG('B','R','I',' ')}},     /* Braj -> Braj Bhasha */
 144   {"brh",       {HB_TAG('B','R','H',' ')}},     /* Brahui */
 145   {"brx",       {HB_TAG('B','R','X',' ')}},     /* Bodo (India) */
 146   {"bs",        {HB_TAG('B','O','S',' ')}},     /* Bosnian */
 147   {"bsk",       {HB_TAG('B','S','K',' ')}},     /* Burushaski */
 148   {"btb",       {HB_TAG('B','T','I',' ')}},     /* Beti (Cameroon) (retired code) */
 149   {"btj",       {HB_TAG('M','L','Y',' ')}},     /* Bacanese Malay -> Malay */
 150   {"bto",       {HB_TAG('B','I','K',' ')}},     /* Rinconada Bikol -> Bikol */
 151   {"bts",       {HB_TAG('B','T','S',' ')}},     /* Batak Simalungun */
 152   {"bug",       {HB_TAG('B','U','G',' ')}},     /* Buginese -> Bugis */
 153   {"bum",       {HB_TAG('B','T','I',' ')}},     /* Bulu (Cameroon) -> Beti */
 154   {"bve",       {HB_TAG('M','L','Y',' ')}},     /* Berau Malay -> Malay */
 155   {"bvu",       {HB_TAG('M','L','Y',' ')}},     /* Bukit Malay -> Malay */
 156   {"bxk",       {HB_TAG('L','U','H',' ')}},     /* Bukusu -> Luyia */
 157   {"bxp",       {HB_TAG('B','T','I',' ')}},     /* Bebil -> Beti */
 158   {"bxr",       {HB_TAG('R','B','U',' ')}},     /* Russia Buriat -> Russian Buriat */
 159   {"byn",       {HB_TAG('B','I','L',' ')}},     /* Bilin -> Bilen */
 160   {"byv",       {HB_TAG('B','Y','V',' ')}},     /* Medumba */
 161   {"bzc",       {HB_TAG('M','L','G',' ')}},     /* Southern Betsimisaraka Malagasy -> Malagasy */
 162   {"ca",        {HB_TAG('C','A','T',' ')}},     /* Catalan */
 163   {"caf",       {HB_TAG('C','R','R',' '),       /* Southern Carrier -> Carrier */
 164                  HB_TAG('A','T','H',' ')}},     /* Southern Carrier -> Athapaskan */
 165   {"cak",       {HB_TAG('C','A','K',' ')}},     /* Kaqchikel */
 166   {"cbk",       {HB_TAG('C','B','K',' ')}},     /* Chavacano -> Zamboanga Chavacano */
 167   {"cbl",       {HB_TAG('Q','I','N',' ')}},     /* Bualkhaw Chin -> Chin */
 168   {"cco",       {HB_TAG('C','C','H','N')}},     /* Comaltepec Chinantec -> Chinantec */
 169   {"ccq",       {HB_TAG('A','R','K',' ')}},     /* Chaungtha (retired code) -> Rakhine */
 170   {"cdo",       {HB_TAG('Z','H','S',' ')}},     /* Min Dong Chinese -> Chinese Simplified */
 171   {"ce",        {HB_TAG('C','H','E',' ')}},     /* Chechen */
 172   {"ceb",       {HB_TAG('C','E','B',' ')}},     /* Cebuano */
 173   {"cfm",       {HB_TAG('H','A','L',' ')}},     /* Halam (Falam Chin) */
 174   {"cgg",       {HB_TAG('C','G','G',' ')}},     /* Chiga */
 175   {"ch",        {HB_TAG('C','H','A',' ')}},     /* Chamorro */
 176   {"chj",       {HB_TAG('C','C','H','N')}},     /* Ojitlán Chinantec -> Chinantec */
 177   {"chk",       {HB_TAG('C','H','K','0')}},     /* Chuukese */
 178   {"cho",       {HB_TAG('C','H','O',' ')}},     /* Choctaw */
 179   {"chp",       {HB_TAG('C','H','P',' '),       /* Chipewyan */
 180                  HB_TAG('S','A','Y',' '),       /* Chipewyan -> Sayisi */
 181                  HB_TAG('A','T','H',' ')}},     /* Chipewyan -> Athapaskan */
 182   {"chq",       {HB_TAG('C','C','H','N')}},     /* Quiotepec Chinantec -> Chinantec */
 183   {"chr",       {HB_TAG('C','H','R',' ')}},     /* Cherokee */
 184   {"chy",       {HB_TAG('C','H','Y',' ')}},     /* Cheyenne */
 185   {"chz",       {HB_TAG('C','C','H','N')}},     /* Ozumacín Chinantec -> Chinantec */
 186   {"ciw",       {HB_TAG('O','J','B',' ')}},     /* Chippewa -> Ojibway */
 187   {"cja",       {HB_TAG('C','J','A',' ')}},     /* Western Cham */
 188   {"cjm",       {HB_TAG('C','J','M',' ')}},     /* Eastern Cham */
 189   {"cjy",       {HB_TAG('Z','H','S',' ')}},     /* Jinyu Chinese -> Chinese Simplified */
 190   {"cka",       {HB_TAG('Q','I','N',' ')}},     /* Khumi Awa Chin (retired code) -> Chin */
 191   {"ckb",       {HB_TAG('K','U','R',' ')}},     /* Central Kurdish -> Kurdish */
 192   {"ckt",       {HB_TAG('C','H','K',' ')}},     /* Chukot -> Chukchi */
 193   {"clc",       {HB_TAG('A','T','H',' ')}},     /* Chilcotin -> Athapaskan */
 194   {"cld",       {HB_TAG('S','Y','R',' ')}},     /* Chaldean Neo-Aramaic -> Syriac */
 195   {"cle",       {HB_TAG('C','C','H','N')}},     /* Lealao Chinantec -> Chinantec */
 196   {"cmn",       {HB_TAG('Z','H','S',' ')}},     /* Mandarin Chinese -> Chinese Simplified */
 197   {"cmr",       {HB_TAG('Q','I','N',' ')}},     /* Mro-Khimi Chin -> Chin */
 198   {"cnb",       {HB_TAG('Q','I','N',' ')}},     /* Chinbon Chin -> Chin */
 199   {"cnh",       {HB_TAG('Q','I','N',' ')}},     /* Hakha Chin -> Chin */
 200   {"cnk",       {HB_TAG('Q','I','N',' ')}},     /* Khumi Chin -> Chin */
 201   {"cnl",       {HB_TAG('C','C','H','N')}},     /* Lalana Chinantec -> Chinantec */
 202   {"cnt",       {HB_TAG('C','C','H','N')}},     /* Tepetotutla Chinantec -> Chinantec */
 203   {"cnw",       {HB_TAG('Q','I','N',' ')}},     /* Ngawn Chin -> Chin */
 204   {"co",        {HB_TAG('C','O','S',' ')}},     /* Corsican */
 205   {"coa",       {HB_TAG('M','L','Y',' ')}},     /* Cocos Islands Malay -> Malay */
 206   {"cop",       {HB_TAG('C','O','P',' ')}},     /* Coptic */
 207   {"coq",       {HB_TAG('A','T','H',' ')}},     /* Coquille -> Athapaskan */
 208   {"cpa",       {HB_TAG('C','C','H','N')}},     /* Palantla Chinantec -> Chinantec */
 209   {"cpe",       {HB_TAG('C','P','P',' ')}},     /* English-based creoles and pidgins [family] -> Creoles */
 210   {"cpf",       {HB_TAG('C','P','P',' ')}},     /* French-based creoles and pidgins [family] -> Creoles */
 211   {"cpp",       {HB_TAG('C','P','P',' ')}},     /* Portuguese-based creoles and pidgins [family] -> Creoles */
 212   {"cpx",       {HB_TAG('Z','H','S',' ')}},     /* Pu-Xian Chinese -> Chinese Simplified */
 213   {"cqd",       {HB_TAG('H','M','N',' ')}},     /* Chuanqiandian Cluster Miao -> Hmong */
 214   {"cqu",       {HB_TAG('Q','U','H',' ')}},     /* Chilean Quechua (retired code) -> Quechua (Bolivia) */
 215   {"cr",        {HB_TAG('C','R','E',' '),       /* Cree [macrolanguage] */
 216                  HB_TAG('Y','C','R',' ')}},     /* Cree [macrolanguage] -> Y-Cree */
 217   {"crh",       {HB_TAG('C','R','T',' ')}},     /* Crimean Tatar */
 218   {"crj",       {HB_TAG('E','C','R',' ')}},     /* Southern East Cree -> Eastern Cree */
 219   {"crk",       {HB_TAG('W','C','R',' ')}},     /* Plains Cree -> West-Cree */
 220   {"crl",       {HB_TAG('E','C','R',' ')}},     /* Northern East Cree -> Eastern Cree */
 221   {"crm",       {HB_TAG('M','C','R',' '),       /* Moose Cree */
 222                  HB_TAG('L','C','R',' ')}},     /* Moose Cree -> L-Cree */
 223   {"crp",       {HB_TAG('C','P','P',' ')}},     /* Creoles and pidgins [family] -> Creoles */
 224   {"crx",       {HB_TAG('C','R','R',' '),       /* Carrier */
 225                  HB_TAG('A','T','H',' ')}},     /* Carrier -> Athapaskan */
 226   {"cs",        {HB_TAG('C','S','Y',' ')}},     /* Czech */
 227   {"csa",       {HB_TAG('C','C','H','N')}},     /* Chiltepec Chinantec -> Chinantec */
 228   {"csb",       {HB_TAG('C','S','B',' ')}},     /* Kashubian */
 229   {"csh",       {HB_TAG('Q','I','N',' ')}},     /* Asho Chin -> Chin */
 230   {"cso",       {HB_TAG('C','C','H','N')}},     /* Sochiapam Chinantec -> Chinantec */
 231   {"csw",       {HB_TAG('N','C','R',' '),       /* Swampy Cree -> N-Cree */
 232                  HB_TAG('N','H','C',' ')}},     /* Swampy Cree -> Norway House Cree */
 233   {"csy",       {HB_TAG('Q','I','N',' ')}},     /* Siyin Chin -> Chin */
 234   {"ctc",       {HB_TAG('A','T','H',' ')}},     /* Chetco -> Athapaskan */
 235   {"ctd",       {HB_TAG('Q','I','N',' ')}},     /* Tedim Chin -> Chin */
 236   {"cte",       {HB_TAG('C','C','H','N')}},     /* Tepinapa Chinantec -> Chinantec */
 237   {"ctg",       {HB_TAG('C','T','G',' ')}},     /* Chittagonian */
 238   {"ctl",       {HB_TAG('C','C','H','N')}},     /* Tlacoatzintepec Chinantec -> Chinantec */
 239   {"cts",       {HB_TAG('B','I','K',' ')}},     /* Northern Catanduanes Bikol -> Bikol */
 240   {"cu",        {HB_TAG('C','S','L',' ')}},     /* Church Slavonic */
 241   {"cuc",       {HB_TAG('C','C','H','N')}},     /* Usila Chinantec -> Chinantec */
 242   {"cuk",       {HB_TAG('C','U','K',' ')}},     /* San Blas Kuna */
 243   {"cv",        {HB_TAG('C','H','U',' ')}},     /* Chuvash */
 244   {"cvn",       {HB_TAG('C','C','H','N')}},     /* Valle Nacional Chinantec -> Chinantec */
 245   {"cwd",       {HB_TAG('D','C','R',' '),       /* Woods Cree */
 246                  HB_TAG('T','C','R',' ')}},     /* Woods Cree -> TH-Cree */
 247   {"cy",        {HB_TAG('W','E','L',' ')}},     /* Welsh */
 248   {"czh",       {HB_TAG('Z','H','S',' ')}},     /* Huizhou Chinese -> Chinese Simplified */
 249   {"czo",       {HB_TAG('Z','H','S',' ')}},     /* Min Zhong Chinese -> Chinese Simplified */
 250   {"czt",       {HB_TAG('Q','I','N',' ')}},     /* Zotung Chin -> Chin */
 251   {"da",        {HB_TAG('D','A','N',' ')}},     /* Danish */
 252   {"dao",       {HB_TAG('Q','I','N',' ')}},     /* Daai Chin -> Chin */
 253   {"dap",       {HB_TAG('N','I','S',' ')}},     /* Nisi (India) (retired code) */
 254   {"dar",       {HB_TAG('D','A','R',' ')}},     /* Dargwa */
 255   {"dax",       {HB_TAG('D','A','X',' ')}},     /* Dayi */
 256   {"de",        {HB_TAG('D','E','U',' ')}},     /* German */
 257   {"den",       {HB_TAG('S','L','A',' '),       /* Slave (Athapascan) [macrolanguage] -> Slavey */
 258                  HB_TAG('A','T','H',' ')}},     /* Slave (Athapascan) [macrolanguage] -> Athapaskan */
 259   {"dgo",       {HB_TAG('D','G','O',' ')}},     /* Dogri */
 260   {"dgr",       {HB_TAG('A','T','H',' ')}},     /* Dogrib -> Athapaskan */
 261   {"dhd",       {HB_TAG('M','A','W',' ')}},     /* Dhundari -> Marwari */
 262   {"dhg",       {HB_TAG('D','H','G',' ')}},     /* Dhangu */
 263   {"dib",       {HB_TAG('D','N','K',' ')}},     /* South Central Dinka -> Dinka */
 264   {"dik",       {HB_TAG('D','N','K',' ')}},     /* Southwestern Dinka -> Dinka */
 265   {"din",       {HB_TAG('D','N','K',' ')}},     /* Dinka [macrolanguage] */
 266   {"dip",       {HB_TAG('D','N','K',' ')}},     /* Northeastern Dinka -> Dinka */
 267   {"diq",       {HB_TAG('D','I','Q',' ')}},     /* Dimli */
 268   {"diw",       {HB_TAG('D','N','K',' ')}},     /* Northwestern Dinka -> Dinka */
 269   {"dje",       {HB_TAG('D','J','R',' ')}},     /* Zarma */
 270   {"djr",       {HB_TAG('D','J','R','0')}},     /* Djambarrpuyngu */
 271   {"dks",       {HB_TAG('D','N','K',' ')}},     /* Southeastern Dinka -> Dinka */
 272   {"dng",       {HB_TAG('D','U','N',' ')}},     /* Dungan */
 273   {"dnj",       {HB_TAG('D','N','J',' ')}},     /* Dan */
 274   {"doi",       {HB_TAG('D','G','R',' ')}},     /* Dogri [macrolanguage] */
 275   {"drh",       {HB_TAG('M','N','G',' ')}},     /* Darkhat (retired code) -> Mongolian */
 276   {"drw",       {HB_TAG('D','R','I',' ')}},     /* Darwazi (retired code) -> Dari */
 277   {"dsb",       {HB_TAG('L','S','B',' ')}},     /* Lower Sorbian */
 278   {"dty",       {HB_TAG('N','E','P',' ')}},     /* Dotyali -> Nepali */
 279   {"duj",       {HB_TAG('D','U','J',' ')}},     /* Dhuwal (retired code) */
 280   {"dup",       {HB_TAG('M','L','Y',' ')}},     /* Duano -> Malay */
 281   {"dv",        {HB_TAG('D','I','V',' '),       /* Divehi (Dhivehi, Maldivian) */
 282                  HB_TAG('D','H','V',' ')}},     /* Divehi (Dhivehi, Maldivian) (deprecated) */
 283   {"dwu",       {HB_TAG('D','U','J',' ')}},     /* Dhuwal */
 284   {"dwy",       {HB_TAG('D','U','J',' ')}},     /* Dhuwaya -> Dhuwal */
 285   {"dyu",       {HB_TAG('J','U','L',' ')}},     /* Dyula -> Jula */
 286   {"dz",        {HB_TAG('D','Z','N',' ')}},     /* Dzongkha */
 287   {"ee",        {HB_TAG('E','W','E',' ')}},     /* Ewe */
 288   {"efi",       {HB_TAG('E','F','I',' ')}},     /* Efik */
 289   {"ekk",       {HB_TAG('E','T','I',' ')}},     /* Standard Estonian -> Estonian */
 290   {"el",        {HB_TAG('E','L','L',' ')}},     /* Modern Greek (1453-) -> Greek */
 291   {"emk",       {HB_TAG('E','M','K',' '),       /* Eastern Maninkakan */
 292                  HB_TAG('M','N','K',' ')}},     /* Eastern Maninkakan -> Maninka */
 293   {"en",        {HB_TAG('E','N','G',' ')}},     /* English */
 294   {"enb",       {HB_TAG('K','A','L',' ')}},     /* Markweeta -> Kalenjin */
 295   {"enf",       {HB_TAG('F','N','E',' ')}},     /* Forest Enets -> Forest Nenets */
 296   {"enh",       {HB_TAG('T','N','E',' ')}},     /* Tundra Enets -> Tundra Nenets */
 297   {"eo",        {HB_TAG('N','T','O',' ')}},     /* Esperanto */
 298   {"es",        {HB_TAG('E','S','P',' ')}},     /* Spanish */
 299   {"esg",       {HB_TAG('G','O','N',' ')}},     /* Aheri Gondi -> Gondi */
 300   {"esi",       {HB_TAG('I','P','K',' ')}},     /* North Alaskan Inupiatun -> Inupiat */
 301   {"esk",       {HB_TAG('I','P','K',' ')}},     /* Northwest Alaska Inupiatun -> Inupiat */
 302   {"esu",       {HB_TAG('E','S','U',' ')}},     /* Central Yupik */
 303   {"et",        {HB_TAG('E','T','I',' ')}},     /* Estonian [macrolanguage] */
 304   {"eto",       {HB_TAG('B','T','I',' ')}},     /* Eton (Cameroon) -> Beti */
 305   {"eu",        {HB_TAG('E','U','Q',' ')}},     /* Basque */
 306   {"eve",       {HB_TAG('E','V','N',' ')}},     /* Even */
 307   {"evn",       {HB_TAG('E','V','K',' ')}},     /* Evenki */
 308   {"ewo",       {HB_TAG('B','T','I',' ')}},     /* Ewondo -> Beti */
 309   {"eyo",       {HB_TAG('K','A','L',' ')}},     /* Keiyo -> Kalenjin */
 310   {"fa",        {HB_TAG('F','A','R',' ')}},     /* Persian [macrolanguage] */
 311   {"fan",       {HB_TAG('F','A','N','0')}},     /* Fang (Equatorial Guinea) */
 312   {"fat",       {HB_TAG('F','A','T',' ')}},     /* Fanti */
 313   {"fbl",       {HB_TAG('B','I','K',' ')}},     /* West Albay Bikol -> Bikol */
 314   {"ff",        {HB_TAG('F','U','L',' ')}},     /* Fulah [macrolanguage] */
 315   {"ffm",       {HB_TAG('F','U','L',' ')}},     /* Maasina Fulfulde -> Fulah */
 316   {"fi",        {HB_TAG('F','I','N',' ')}},     /* Finnish */
 317   {"fil",       {HB_TAG('P','I','L',' ')}},     /* Filipino */
 318   {"fj",        {HB_TAG('F','J','I',' ')}},     /* Fijian */
 319   {"flm",       {HB_TAG('H','A','L',' '),       /* Halam (Falam Chin) (retired code) */
 320                  HB_TAG('Q','I','N',' ')}},     /* Falam Chin (retired code) -> Chin */
 321   {"fmp",       {HB_TAG('F','M','P',' ')}},     /* Fe'fe' */
 322   {"fo",        {HB_TAG('F','O','S',' ')}},     /* Faroese */
 323   {"fon",       {HB_TAG('F','O','N',' ')}},     /* Fon */
 324   {"fr",        {HB_TAG('F','R','A',' ')}},     /* French */
 325   {"frc",       {HB_TAG('F','R','C',' ')}},     /* Cajun French */
 326   {"frp",       {HB_TAG('F','R','P',' ')}},     /* Arpitan */
 327   {"fub",       {HB_TAG('F','U','L',' ')}},     /* Adamawa Fulfulde -> Fulah */
 328   {"fuc",       {HB_TAG('F','U','L',' ')}},     /* Pulaar -> Fulah */
 329   {"fue",       {HB_TAG('F','U','L',' ')}},     /* Borgu Fulfulde -> Fulah */
 330   {"fuf",       {HB_TAG('F','T','A',' ')}},     /* Pular -> Futa */
 331   {"fuh",       {HB_TAG('F','U','L',' ')}},     /* Western Niger Fulfulde -> Fulah */
 332   {"fui",       {HB_TAG('F','U','L',' ')}},     /* Bagirmi Fulfulde -> Fulah */
 333   {"fuq",       {HB_TAG('F','U','L',' ')}},     /* Central-Eastern Niger Fulfulde -> Fulah */
 334   {"fur",       {HB_TAG('F','R','L',' ')}},     /* Friulian */
 335   {"fuv",       {HB_TAG('F','U','V',' ')}},     /* Nigerian Fulfulde */
 336   {"fy",        {HB_TAG('F','R','I',' ')}},     /* Western Frisian -> Frisian */
 337   {"ga",        {HB_TAG('I','R','I',' ')}},     /* Irish */
 338   {"gaa",       {HB_TAG('G','A','D',' ')}},     /* Ga */
 339   {"gag",       {HB_TAG('G','A','G',' ')}},     /* Gagauz */
 340   {"gan",       {HB_TAG('Z','H','S',' ')}},     /* Gan Chinese -> Chinese Simplified */
 341   {"gax",       {HB_TAG('O','R','O',' ')}},     /* Borana-Arsi-Guji Oromo -> Oromo */
 342   {"gaz",       {HB_TAG('O','R','O',' ')}},     /* West Central Oromo -> Oromo */
 343   {"gbm",       {HB_TAG('G','A','W',' ')}},     /* Garhwali */
 344   {"gce",       {HB_TAG('A','T','H',' ')}},     /* Galice -> Athapaskan */
 345   {"gd",        {HB_TAG('G','A','E',' ')}},     /* Scottish Gaelic (Gaelic) */
 346   {"gda",       {HB_TAG('R','A','J',' ')}},     /* Gade Lohar -> Rajasthani */
 347   {"gez",       {HB_TAG('G','E','Z',' ')}},     /* Geez */
 348   {"ggo",       {HB_TAG('G','O','N',' ')}},     /* Southern Gondi (retired code) -> Gondi */
 349   {"gih",       {HB_TAG('G','I','H',' ')}},     /* Githabul */
 350   {"gil",       {HB_TAG('G','I','L','0')}},     /* Kiribati (Gilbertese) */
 351   {"gju",       {HB_TAG('R','A','J',' ')}},     /* Gujari -> Rajasthani */
 352   {"gkp",       {HB_TAG('G','K','P',' ')}},     /* Guinea Kpelle -> Kpelle (Guinea) */
 353   {"gl",        {HB_TAG('G','A','L',' ')}},     /* Galician */
 354   {"gld",       {HB_TAG('N','A','N',' ')}},     /* Nanai */
 355   {"glk",       {HB_TAG('G','L','K',' ')}},     /* Gilaki */
 356   {"gn",        {HB_TAG('G','U','A',' ')}},     /* Guarani [macrolanguage] */
 357   {"gnn",       {HB_TAG('G','N','N',' ')}},     /* Gumatj */
 358   {"gno",       {HB_TAG('G','O','N',' ')}},     /* Northern Gondi -> Gondi */
 359   {"gnw",       {HB_TAG('G','U','A',' ')}},     /* Western Bolivian Guaraní -> Guarani */
 360   {"gog",       {HB_TAG('G','O','G',' ')}},     /* Gogo */
 361   {"gom",       {HB_TAG('K','O','K',' ')}},     /* Goan Konkani -> Konkani */
 362   {"gon",       {HB_TAG('G','O','N',' ')}},     /* Gondi [macrolanguage] */
 363   {"grt",       {HB_TAG('G','R','O',' ')}},     /* Garo */
 364   {"gru",       {HB_TAG('S','O','G',' ')}},     /* Kistane -> Sodo Gurage */
 365   {"gsw",       {HB_TAG('A','L','S',' ')}},     /* Alsatian */
 366   {"gu",        {HB_TAG('G','U','J',' ')}},     /* Gujarati */
 367   {"guc",       {HB_TAG('G','U','C',' ')}},     /* Wayuu */
 368   {"guf",       {HB_TAG('G','U','F',' ')}},     /* Gupapuyngu */
 369   {"gug",       {HB_TAG('G','U','A',' ')}},     /* Paraguayan Guaraní -> Guarani */
 370   {"gui",       {HB_TAG('G','U','A',' ')}},     /* Eastern Bolivian Guaraní -> Guarani */
 371   {"guk",       {HB_TAG('G','M','Z',' '),       /* Gumuz */
 372                  HB_TAG('G','U','K',' ')}},     /* Gumuz (SIL fonts) */
 373   {"gun",       {HB_TAG('G','U','A',' ')}},     /* Mbyá Guaraní -> Guarani */
 374   {"guz",       {HB_TAG('G','U','Z',' ')}},     /* Gusii */
 375   {"gv",        {HB_TAG('M','N','X',' ')}},     /* Manx */
 376   {"gwi",       {HB_TAG('A','T','H',' ')}},     /* Gwichʼin -> Athapaskan */
 377   {"ha",        {HB_TAG('H','A','U',' ')}},     /* Hausa */
 378   {"haa",       {HB_TAG('A','T','H',' ')}},     /* Han -> Athapaskan */
 379   {"hae",       {HB_TAG('O','R','O',' ')}},     /* Eastern Oromo -> Oromo */
 380   {"hak",       {HB_TAG('Z','H','S',' ')}},     /* Hakka Chinese -> Chinese Simplified */
 381   {"har",       {HB_TAG('H','R','I',' ')}},     /* Harari */
 382   {"haw",       {HB_TAG('H','A','W',' ')}},     /* Hawaiian */
 383   {"hay",       {HB_TAG('H','A','Y',' ')}},     /* Haya */
 384   {"haz",       {HB_TAG('H','A','Z',' ')}},     /* Hazaragi */
 385   {"he",        {HB_TAG('I','W','R',' ')}},     /* Hebrew */
 386   {"hea",       {HB_TAG('H','M','N',' ')}},     /* Northern Qiandong Miao -> Hmong */
 387   {"hi",        {HB_TAG('H','I','N',' ')}},     /* Hindi */
 388   {"hil",       {HB_TAG('H','I','L',' ')}},     /* Hiligaynon */
 389   {"hji",       {HB_TAG('M','L','Y',' ')}},     /* Haji -> Malay */
 390   {"hlt",       {HB_TAG('Q','I','N',' ')}},     /* Matu Chin -> Chin */
 391   {"hma",       {HB_TAG('H','M','N',' ')}},     /* Southern Mashan Hmong -> Hmong */
 392   {"hmc",       {HB_TAG('H','M','N',' ')}},     /* Central Huishui Hmong -> Hmong */
 393   {"hmd",       {HB_TAG('H','M','N',' ')}},     /* Large Flowery Miao -> Hmong */
 394   {"hme",       {HB_TAG('H','M','N',' ')}},     /* Eastern Huishui Hmong -> Hmong */
 395   {"hmg",       {HB_TAG('H','M','N',' ')}},     /* Southwestern Guiyang Hmong -> Hmong */
 396   {"hmh",       {HB_TAG('H','M','N',' ')}},     /* Southwestern Huishui Hmong -> Hmong */
 397   {"hmi",       {HB_TAG('H','M','N',' ')}},     /* Northern Huishui Hmong -> Hmong */
 398   {"hmj",       {HB_TAG('H','M','N',' ')}},     /* Ge -> Hmong */
 399   {"hml",       {HB_TAG('H','M','N',' ')}},     /* Luopohe Hmong -> Hmong */
 400   {"hmm",       {HB_TAG('H','M','N',' ')}},     /* Central Mashan Hmong -> Hmong */
 401   {"hmn",       {HB_TAG('H','M','N',' ')}},     /* Hmong [macrolanguage] */
 402   {"hmp",       {HB_TAG('H','M','N',' ')}},     /* Northern Mashan Hmong -> Hmong */
 403   {"hmq",       {HB_TAG('H','M','N',' ')}},     /* Eastern Qiandong Miao -> Hmong */
 404   {"hms",       {HB_TAG('H','M','N',' ')}},     /* Southern Qiandong Miao -> Hmong */
 405   {"hmw",       {HB_TAG('H','M','N',' ')}},     /* Western Mashan Hmong -> Hmong */
 406   {"hmy",       {HB_TAG('H','M','N',' ')}},     /* Southern Guiyang Hmong -> Hmong */
 407   {"hmz",       {HB_TAG('H','M','N',' ')}},     /* Hmong Shua -> Hmong */
 408   {"hnd",       {HB_TAG('H','N','D',' ')}},     /* Southern Hindko -> Hindko */
 409   {"hne",       {HB_TAG('C','H','H',' ')}},     /* Chhattisgarhi -> Chattisgarhi */
 410   {"hnj",       {HB_TAG('H','M','N',' ')}},     /* Hmong Njua -> Hmong */
 411   {"hno",       {HB_TAG('H','N','D',' ')}},     /* Northern Hindko -> Hindko */
 412   {"ho",        {HB_TAG('H','M','O',' ')}},     /* Hiri Motu */
 413   {"hoc",       {HB_TAG('H','O',' ',' ')}},     /* Ho */
 414   {"hoi",       {HB_TAG('A','T','H',' ')}},     /* Holikachuk -> Athapaskan */
 415   {"hoj",       {HB_TAG('H','A','R',' ')}},     /* Hadothi -> Harauti */
 416   {"hr",        {HB_TAG('H','R','V',' ')}},     /* Croatian */
 417   {"hrm",       {HB_TAG('H','M','N',' ')}},     /* Horned Miao -> Hmong */
 418   {"hsb",       {HB_TAG('U','S','B',' ')}},     /* Upper Sorbian */
 419   {"hsn",       {HB_TAG('Z','H','S',' ')}},     /* Xiang Chinese -> Chinese Simplified */
 420   {"ht",        {HB_TAG('H','A','I',' ')}},     /* Haitian (Haitian Creole) */
 421   {"hu",        {HB_TAG('H','U','N',' ')}},     /* Hungarian */
 422   {"huj",       {HB_TAG('H','M','N',' ')}},     /* Northern Guiyang Hmong -> Hmong */
 423   {"hup",       {HB_TAG('A','T','H',' ')}},     /* Hupa -> Athapaskan */
 424   {"hy",        {HB_TAG('H','Y','E','0'),       /* Armenian -> Armenian East */
 425                  HB_TAG('H','Y','E',' ')}},     /* Armenian */
 426   {"hyw",       {HB_TAG('H','Y','E',' ')}},     /* Western Armenian -> Armenian */
 427   {"hz",        {HB_TAG('H','E','R',' ')}},     /* Herero */
 428   {"ia",        {HB_TAG('I','N','A',' ')}},     /* Interlingua (International Auxiliary Language Association) */
 429   {"iba",       {HB_TAG('I','B','A',' ')}},     /* Iban */
 430   {"ibb",       {HB_TAG('I','B','B',' ')}},     /* Ibibio */
 431   {"id",        {HB_TAG('I','N','D',' ')}},     /* Indonesian */
 432   {"ida",       {HB_TAG('L','U','H',' ')}},     /* Idakho-Isukha-Tiriki -> Luyia */
 433   {"ie",        {HB_TAG('I','L','E',' ')}},     /* Interlingue */
 434   {"ig",        {HB_TAG('I','B','O',' ')}},     /* Igbo */
 435   {"igb",       {HB_TAG('E','B','I',' ')}},     /* Ebira */
 436   {"ii",        {HB_TAG('Y','I','M',' ')}},     /* Sichuan Yi -> Yi Modern */
 437   {"ijc",       {HB_TAG('I','J','O',' ')}},     /* Izon -> Ijo */
 438   {"ijo",       {HB_TAG('I','J','O',' ')}},     /* Ijo [family] */
 439   {"ik",        {HB_TAG('I','P','K',' ')}},     /* Inupiaq [macrolanguage] -> Inupiat */
 440   {"ike",       {HB_TAG('I','N','U',' ')}},     /* Eastern Canadian Inuktitut -> Inuktitut */
 441   {"ikt",       {HB_TAG('I','N','U',' ')}},     /* Inuinnaqtun -> Inuktitut */
 442   {"ilo",       {HB_TAG('I','L','O',' ')}},     /* Iloko -> Ilokano */
 443   {"in",        {HB_TAG('I','N','D',' ')}},     /* Indonesian (retired code) */
 444   {"ing",       {HB_TAG('A','T','H',' ')}},     /* Degexit'an -> Athapaskan */
 445   {"inh",       {HB_TAG('I','N','G',' ')}},     /* Ingush */
 446   {"io",        {HB_TAG('I','D','O',' ')}},     /* Ido */
 447   {"is",        {HB_TAG('I','S','L',' ')}},     /* Icelandic */
 448   {"it",        {HB_TAG('I','T','A',' ')}},     /* Italian */
 449   {"iu",        {HB_TAG('I','N','U',' ')}},     /* Inuktitut [macrolanguage] */
 450   {"iw",        {HB_TAG('I','W','R',' ')}},     /* Hebrew (retired code) */
 451   {"ja",        {HB_TAG('J','A','N',' ')}},     /* Japanese */
 452   {"jak",       {HB_TAG('M','L','Y',' ')}},     /* Jakun -> Malay */
 453   {"jam",       {HB_TAG('J','A','M',' ')}},     /* Jamaican Creole English -> Jamaican Creole */
 454   {"jax",       {HB_TAG('M','L','Y',' ')}},     /* Jambi Malay -> Malay */
 455   {"jbo",       {HB_TAG('J','B','O',' ')}},     /* Lojban */
 456   {"jct",       {HB_TAG('J','C','T',' ')}},     /* Krymchak */
 457   {"ji",        {HB_TAG('J','I','I',' ')}},     /* Yiddish (retired code) */
 458   {"jv",        {HB_TAG('J','A','V',' ')}},     /* Javanese */
 459   {"jw",        {HB_TAG('J','A','V',' ')}},     /* Javanese (retired code) */
 460   {"ka",        {HB_TAG('K','A','T',' ')}},     /* Georgian */
 461   {"kaa",       {HB_TAG('K','R','K',' ')}},     /* Kara-Kalpak -> Karakalpak */
 462   {"kab",       {HB_TAG('K','A','B','0')}},     /* Kabyle */
 463   {"kam",       {HB_TAG('K','M','B',' ')}},     /* Kamba (Kenya) */
 464   {"kar",       {HB_TAG('K','R','N',' ')}},     /* Karen [family] */
 465   {"kbd",       {HB_TAG('K','A','B',' ')}},     /* Kabardian */
 466   {"kby",       {HB_TAG('K','N','R',' ')}},     /* Manga Kanuri -> Kanuri */
 467   {"kca",       {HB_TAG('K','H','K',' '),       /* Khanty -> Khanty-Kazim */
 468                  HB_TAG('K','H','S',' '),       /* Khanty -> Khanty-Shurishkar */
 469                  HB_TAG('K','H','V',' ')}},     /* Khanty -> Khanty-Vakhi */
 470   {"kde",       {HB_TAG('K','D','E',' ')}},     /* Makonde */
 471   {"kdr",       {HB_TAG('K','R','M',' ')}},     /* Karaim */
 472   {"kdt",       {HB_TAG('K','U','Y',' ')}},     /* Kuy */
 473   {"kea",       {HB_TAG('K','E','A',' ')}},     /* Kabuverdianu (Crioulo) */
 474   {"kek",       {HB_TAG('K','E','K',' ')}},     /* Kekchi */
 475   {"kex",       {HB_TAG('K','K','N',' ')}},     /* Kukna -> Kokni */
 476   {"kfa",       {HB_TAG('K','O','D',' ')}},     /* Kodava -> Kodagu */
 477   {"kfr",       {HB_TAG('K','A','C',' ')}},     /* Kachhi -> Kachchi */
 478   {"kfx",       {HB_TAG('K','U','L',' ')}},     /* Kullu Pahari -> Kulvi */
 479   {"kfy",       {HB_TAG('K','M','N',' ')}},     /* Kumaoni */
 480   {"kg",        {HB_TAG('K','O','N','0')}},     /* Kongo [macrolanguage] */
 481   {"kha",       {HB_TAG('K','S','I',' ')}},     /* Khasi */
 482   {"khb",       {HB_TAG('X','B','D',' ')}},     /* Lü */
 483   {"khk",       {HB_TAG('M','N','G',' ')}},     /* Halh Mongolian -> Mongolian */
 484   {"kht",       {HB_TAG('K','H','N',' '),       /* Khamti -> Khamti Shan (Microsoft fonts) */
 485                  HB_TAG('K','H','T',' ')}},     /* Khamti -> Khamti Shan (OpenType spec and SIL fonts) */
 486   {"khw",       {HB_TAG('K','H','W',' ')}},     /* Khowar */
 487   {"ki",        {HB_TAG('K','I','K',' ')}},     /* Kikuyu (Gikuyu) */
 488   {"kiu",       {HB_TAG('K','I','U',' ')}},     /* Kirmanjki */
 489   {"kj",        {HB_TAG('K','U','A',' ')}},     /* Kuanyama */
 490   {"kjd",       {HB_TAG('K','J','D',' ')}},     /* Southern Kiwai */
 491   {"kjh",       {HB_TAG('K','H','A',' ')}},     /* Khakas -> Khakass */
 492   {"kjp",       {HB_TAG('K','J','P',' ')}},     /* Pwo Eastern Karen -> Eastern Pwo Karen */
 493   {"kjz",       {HB_TAG('K','J','Z',' ')}},     /* Bumthangkha */
 494   {"kk",        {HB_TAG('K','A','Z',' ')}},     /* Kazakh */
 495   {"kkz",       {HB_TAG('A','T','H',' ')}},     /* Kaska -> Athapaskan */
 496   {"kl",        {HB_TAG('G','R','N',' ')}},     /* Greenlandic */
 497   {"kln",       {HB_TAG('K','A','L',' ')}},     /* Kalenjin [macrolanguage] */
 498   {"km",        {HB_TAG('K','H','M',' ')}},     /* Khmer */
 499   {"kmb",       {HB_TAG('M','B','N',' ')}},     /* Kimbundu -> Mbundu */
 500   {"kmr",       {HB_TAG('K','U','R',' ')}},     /* Northern Kurdish -> Kurdish */
 501   {"kmw",       {HB_TAG('K','M','O',' ')}},     /* Komo (Democratic Republic of Congo) */
 502   {"kmz",       {HB_TAG('K','M','Z',' ')}},     /* Khorasani Turkish -> Khorasani Turkic */
 503   {"kn",        {HB_TAG('K','A','N',' ')}},     /* Kannada */
 504   {"knc",       {HB_TAG('K','N','R',' ')}},     /* Central Kanuri -> Kanuri */
 505   {"kng",       {HB_TAG('K','O','N','0')}},     /* Koongo -> Kongo */
 506   {"knn",       {HB_TAG('K','O','K',' ')}},     /* Konkani */
 507   {"ko",        {HB_TAG('K','O','R',' ')}},     /* Korean */
 508   {"koi",       {HB_TAG('K','O','P',' ')}},     /* Komi-Permyak */
 509   {"kok",       {HB_TAG('K','O','K',' ')}},     /* Konkani [macrolanguage] */
 510   {"kos",       {HB_TAG('K','O','S',' ')}},     /* Kosraean */
 511   {"koy",       {HB_TAG('A','T','H',' ')}},     /* Koyukon -> Athapaskan */
 512   {"kpe",       {HB_TAG('K','P','L',' ')}},     /* Kpelle [macrolanguage] */
 513   {"kpv",       {HB_TAG('K','O','Z',' ')}},     /* Komi-Zyrian */
 514   {"kpy",       {HB_TAG('K','Y','K',' ')}},     /* Koryak */
 515   {"kqs",       {HB_TAG('K','I','S',' ')}},     /* Northern Kissi -> Kisii */
 516   {"kqy",       {HB_TAG('K','R','T',' ')}},     /* Koorete */
 517   {"kr",        {HB_TAG('K','N','R',' ')}},     /* Kanuri [macrolanguage] */
 518   {"krc",       {HB_TAG('K','A','R',' '),       /* Karachay-Balkar -> Karachay */
 519                  HB_TAG('B','A','L',' ')}},     /* Karachay-Balkar -> Balkar */
 520   {"kri",       {HB_TAG('K','R','I',' ')}},     /* Krio */
 521   {"krl",       {HB_TAG('K','R','L',' ')}},     /* Karelian */
 522   {"krt",       {HB_TAG('K','N','R',' ')}},     /* Tumari Kanuri -> Kanuri */
 523   {"kru",       {HB_TAG('K','U','U',' ')}},     /* Kurukh */
 524   {"ks",        {HB_TAG('K','S','H',' ')}},     /* Kashmiri */
 525   {"ksh",       {HB_TAG('K','S','H','0')}},     /* Kölsch -> Ripuarian */
 526   {"kss",       {HB_TAG('K','I','S',' ')}},     /* Southern Kisi -> Kisii */
 527   {"ksw",       {HB_TAG('K','S','W',' ')}},     /* S’gaw Karen */
 528   {"ktb",       {HB_TAG('K','E','B',' ')}},     /* Kambaata -> Kebena */
 529   {"ktu",       {HB_TAG('K','O','N',' ')}},     /* Kituba (Democratic Republic of Congo) -> Kikongo */
 530   {"ktw",       {HB_TAG('A','T','H',' ')}},     /* Kato -> Athapaskan */
 531   {"ku",        {HB_TAG('K','U','R',' ')}},     /* Kurdish [macrolanguage] */
 532   {"kum",       {HB_TAG('K','U','M',' ')}},     /* Kumyk */
 533   {"kuu",       {HB_TAG('A','T','H',' ')}},     /* Upper Kuskokwim -> Athapaskan */
 534   {"kv",        {HB_TAG('K','O','M',' ')}},     /* Komi [macrolanguage] */
 535   {"kvb",       {HB_TAG('M','L','Y',' ')}},     /* Kubu -> Malay */
 536   {"kvr",       {HB_TAG('M','L','Y',' ')}},     /* Kerinci -> Malay */
 537   {"kw",        {HB_TAG('C','O','R',' ')}},     /* Cornish */
 538   {"kwy",       {HB_TAG('K','O','N','0')}},     /* San Salvador Kongo -> Kongo */
 539   {"kxc",       {HB_TAG('K','M','S',' ')}},     /* Konso -> Komso */
 540   {"kxd",       {HB_TAG('M','L','Y',' ')}},     /* Brunei -> Malay */
 541   {"kxu",       {HB_TAG('K','U','I',' ')}},     /* Kui (India) */
 542   {"ky",        {HB_TAG('K','I','R',' ')}},     /* Kirghiz (Kyrgyz) */
 543   {"kyu",       {HB_TAG('K','Y','U',' ')}},     /* Western Kayah */
 544   {"la",        {HB_TAG('L','A','T',' ')}},     /* Latin */
 545   {"lad",       {HB_TAG('J','U','D',' ')}},     /* Ladino */
 546   {"lb",        {HB_TAG('L','T','Z',' ')}},     /* Luxembourgish */
 547   {"lbe",       {HB_TAG('L','A','K',' ')}},     /* Lak */
 548   {"lbj",       {HB_TAG('L','D','K',' ')}},     /* Ladakhi */
 549   {"lbl",       {HB_TAG('B','I','K',' ')}},     /* Libon Bikol -> Bikol */
 550   {"lce",       {HB_TAG('M','L','Y',' ')}},     /* Loncong -> Malay */
 551   {"lcf",       {HB_TAG('M','L','Y',' ')}},     /* Lubu -> Malay */
 552   {"ldi",       {HB_TAG('K','O','N','0')}},     /* Laari -> Kongo */
 553   {"lez",       {HB_TAG('L','E','Z',' ')}},     /* Lezghian -> Lezgi */
 554   {"lg",        {HB_TAG('L','U','G',' ')}},     /* Ganda */
 555   {"li",        {HB_TAG('L','I','M',' ')}},     /* Limburgish */
 556   {"lif",       {HB_TAG('L','M','B',' ')}},     /* Limbu */
 557   {"lij",       {HB_TAG('L','I','J',' ')}},     /* Ligurian */
 558   {"lis",       {HB_TAG('L','I','S',' ')}},     /* Lisu */
 559   {"liw",       {HB_TAG('M','L','Y',' ')}},     /* Col -> Malay */
 560   {"ljp",       {HB_TAG('L','J','P',' ')}},     /* Lampung Api -> Lampung */
 561   {"lkb",       {HB_TAG('L','U','H',' ')}},     /* Kabras -> Luyia */
 562   {"lki",       {HB_TAG('L','K','I',' ')}},     /* Laki */
 563   {"lko",       {HB_TAG('L','U','H',' ')}},     /* Khayo -> Luyia */
 564   {"lks",       {HB_TAG('L','U','H',' ')}},     /* Kisa -> Luyia */
 565   {"lld",       {HB_TAG('L','A','D',' ')}},     /* Ladin */
 566   {"lmn",       {HB_TAG('L','A','M',' ')}},     /* Lambadi -> Lambani */
 567   {"lmo",       {HB_TAG('L','M','O',' ')}},     /* Lombard */
 568   {"ln",        {HB_TAG('L','I','N',' ')}},     /* Lingala */
 569   {"lo",        {HB_TAG('L','A','O',' ')}},     /* Lao */
 570   {"lom",       {HB_TAG('L','O','M',' ')}},     /* Loma (Liberia) */
 571   {"lrc",       {HB_TAG('L','R','C',' ')}},     /* Northern Luri -> Luri */
 572   {"lri",       {HB_TAG('L','U','H',' ')}},     /* Marachi -> Luyia */
 573   {"lrm",       {HB_TAG('L','U','H',' ')}},     /* Marama -> Luyia */
 574   {"lsm",       {HB_TAG('L','U','H',' ')}},     /* Saamia -> Luyia */
 575   {"lt",        {HB_TAG('L','T','H',' ')}},     /* Lithuanian */
 576   {"ltg",       {HB_TAG('L','V','I',' ')}},     /* Latgalian -> Latvian */
 577   {"lto",       {HB_TAG('L','U','H',' ')}},     /* Tsotso -> Luyia */
 578   {"lts",       {HB_TAG('L','U','H',' ')}},     /* Tachoni -> Luyia */
 579   {"lu",        {HB_TAG('L','U','B',' ')}},     /* Luba-Katanga */
 580   {"lua",       {HB_TAG('L','U','A',' ')}},     /* Luba-Lulua */
 581   {"luo",       {HB_TAG('L','U','O',' ')}},     /* Luo (Kenya and Tanzania) */
 582   {"lus",       {HB_TAG('M','I','Z',' ')}},     /* Lushai -> Mizo */
 583   {"luy",       {HB_TAG('L','U','H',' ')}},     /* Luyia [macrolanguage] */
 584   {"luz",       {HB_TAG('L','R','C',' ')}},     /* Southern Luri -> Luri */
 585   {"lv",        {HB_TAG('L','V','I',' ')}},     /* Latvian [macrolanguage] */
 586   {"lvs",       {HB_TAG('L','V','I',' ')}},     /* Standard Latvian -> Latvian */
 587   {"lwg",       {HB_TAG('L','U','H',' ')}},     /* Wanga -> Luyia */
 588   {"lzh",       {HB_TAG('Z','H','T',' ')}},     /* Literary Chinese -> Chinese Traditional */
 589   {"lzz",       {HB_TAG('L','A','Z',' ')}},     /* Laz */
 590   {"mad",       {HB_TAG('M','A','D',' ')}},     /* Madurese -> Madura */
 591   {"mag",       {HB_TAG('M','A','G',' ')}},     /* Magahi */
 592   {"mai",       {HB_TAG('M','T','H',' ')}},     /* Maithili */
 593   {"mak",       {HB_TAG('M','K','R',' ')}},     /* Makasar */
 594   {"mam",       {HB_TAG('M','A','M',' ')}},     /* Mam */
 595   {"man",       {HB_TAG('M','N','K',' ')}},     /* Mandingo [macrolanguage] -> Maninka */
 596   {"max",       {HB_TAG('M','L','Y',' ')}},     /* North Moluccan Malay -> Malay */
 597   {"mbo",       {HB_TAG('M','B','O',' ')}},     /* Mbo (Cameroon) */
 598   {"mct",       {HB_TAG('B','T','I',' ')}},     /* Mengisa -> Beti */
 599   {"mdf",       {HB_TAG('M','O','K',' ')}},     /* Moksha */
 600   {"mdr",       {HB_TAG('M','D','R',' ')}},     /* Mandar */
 601   {"mdy",       {HB_TAG('M','L','E',' ')}},     /* Male (Ethiopia) */
 602   {"men",       {HB_TAG('M','D','E',' ')}},     /* Mende (Sierra Leone) */
 603   {"meo",       {HB_TAG('M','L','Y',' ')}},     /* Kedah Malay -> Malay */
 604   {"mer",       {HB_TAG('M','E','R',' ')}},     /* Meru */
 605   {"mfa",       {HB_TAG('M','F','A',' ')}},     /* Pattani Malay */
 606   {"mfb",       {HB_TAG('M','L','Y',' ')}},     /* Bangka -> Malay */
 607   {"mfe",       {HB_TAG('M','F','E',' ')}},     /* Morisyen */
 608   {"mg",        {HB_TAG('M','L','G',' ')}},     /* Malagasy [macrolanguage] */
 609   {"mh",        {HB_TAG('M','A','H',' ')}},     /* Marshallese */
 610   {"mhr",       {HB_TAG('L','M','A',' ')}},     /* Eastern Mari -> Low Mari */
 611   {"mhv",       {HB_TAG('A','R','K',' ')}},     /* Arakanese (retired code) -> Rakhine */
 612   {"mi",        {HB_TAG('M','R','I',' ')}},     /* Maori */
 613   {"min",       {HB_TAG('M','I','N',' ')}},     /* Minangkabau */
 614   {"mk",        {HB_TAG('M','K','D',' ')}},     /* Macedonian */
 615   {"mku",       {HB_TAG('M','N','K',' ')}},     /* Konyanka Maninka -> Maninka */
 616   {"mkw",       {HB_TAG('M','K','W',' ')}},     /* Kituba (Congo) */
 617   {"ml",        {HB_TAG('M','A','L',' '),       /* Malayalam -> Malayalam Traditional */
 618                  HB_TAG('M','L','R',' ')}},     /* Malayalam -> Malayalam Reformed */
 619   {"mlq",       {HB_TAG('M','L','N',' '),       /* Western Maninkakan -> Malinke */
 620                  HB_TAG('M','N','K',' ')}},     /* Western Maninkakan -> Maninka */
 621   {"mmr",       {HB_TAG('H','M','N',' ')}},     /* Western Xiangxi Miao -> Hmong */
 622   {"mn",        {HB_TAG('M','N','G',' ')}},     /* Mongolian [macrolanguage] */
 623   {"mnc",       {HB_TAG('M','C','H',' ')}},     /* Manchu */
 624   {"mni",       {HB_TAG('M','N','I',' ')}},     /* Manipuri */
 625   {"mnk",       {HB_TAG('M','N','D',' '),       /* Mandinka */
 626                  HB_TAG('M','N','K',' ')}},     /* Mandinka -> Maninka */
 627   {"mnp",       {HB_TAG('Z','H','S',' ')}},     /* Min Bei Chinese -> Chinese Simplified */
 628   {"mns",       {HB_TAG('M','A','N',' ')}},     /* Mansi */
 629   {"mnw",       {HB_TAG('M','O','N',' ')}},     /* Mon */
 630   {"mo",        {HB_TAG('M','O','L',' ')}},     /* Moldavian (retired code) */
 631   {"moh",       {HB_TAG('M','O','H',' ')}},     /* Mohawk */
 632   {"mos",       {HB_TAG('M','O','S',' ')}},     /* Mossi */
 633   {"mpe",       {HB_TAG('M','A','J',' ')}},     /* Majang */
 634   {"mqg",       {HB_TAG('M','L','Y',' ')}},     /* Kota Bangun Kutai Malay -> Malay */
 635   {"mr",        {HB_TAG('M','A','R',' ')}},     /* Marathi */
 636   {"mrh",       {HB_TAG('Q','I','N',' ')}},     /* Mara Chin -> Chin */
 637   {"mrj",       {HB_TAG('H','M','A',' ')}},     /* Western Mari -> High Mari */
 638   {"ms",        {HB_TAG('M','L','Y',' ')}},     /* Malay [macrolanguage] */
 639   {"msc",       {HB_TAG('M','N','K',' ')}},     /* Sankaran Maninka -> Maninka */
 640   {"msh",       {HB_TAG('M','L','G',' ')}},     /* Masikoro Malagasy -> Malagasy */
 641   {"msi",       {HB_TAG('M','L','Y',' ')}},     /* Sabah Malay -> Malay */
 642   {"mt",        {HB_TAG('M','T','S',' ')}},     /* Maltese */
 643   {"mtr",       {HB_TAG('M','A','W',' ')}},     /* Mewari -> Marwari */
 644   {"mui",       {HB_TAG('M','L','Y',' ')}},     /* Musi -> Malay */
 645   {"mup",       {HB_TAG('R','A','J',' ')}},     /* Malvi -> Rajasthani */
 646   {"muq",       {HB_TAG('H','M','N',' ')}},     /* Eastern Xiangxi Miao -> Hmong */
 647   {"mus",       {HB_TAG('M','U','S',' ')}},     /* Creek -> Muscogee */
 648   {"mvb",       {HB_TAG('A','T','H',' ')}},     /* Mattole -> Athapaskan */
 649   {"mve",       {HB_TAG('M','A','W',' ')}},     /* Marwari (Pakistan) */
 650   {"mvf",       {HB_TAG('M','N','G',' ')}},     /* Peripheral Mongolian -> Mongolian */
 651   {"mwk",       {HB_TAG('M','N','K',' ')}},     /* Kita Maninkakan -> Maninka */
 652   {"mwl",       {HB_TAG('M','W','L',' ')}},     /* Mirandese */
 653   {"mwr",       {HB_TAG('M','A','W',' ')}},     /* Marwari [macrolanguage] */
 654   {"mww",       {HB_TAG('M','W','W',' ')}},     /* Hmong Daw */
 655   {"my",        {HB_TAG('B','R','M',' ')}},     /* Burmese */
 656   {"mym",       {HB_TAG('M','E','N',' ')}},     /* Me'en */
 657   {"myn",       {HB_TAG('M','Y','N',' ')}},     /* Mayan [family] */
 658   {"myq",       {HB_TAG('M','N','K',' ')}},     /* Forest Maninka (retired code) -> Maninka */
 659   {"myv",       {HB_TAG('E','R','Z',' ')}},     /* Erzya */
 660   {"mzn",       {HB_TAG('M','Z','N',' ')}},     /* Mazanderani */
 661   {"na",        {HB_TAG('N','A','U',' ')}},     /* Nauru -> Nauruan */
 662   {"nag",       {HB_TAG('N','A','G',' ')}},     /* Naga Pidgin -> Naga-Assamese */
 663   {"nah",       {HB_TAG('N','A','H',' ')}},     /* Nahuatl [family] */
 664   {"nan",       {HB_TAG('Z','H','S',' ')}},     /* Min Nan Chinese -> Chinese Simplified */
 665   {"nap",       {HB_TAG('N','A','P',' ')}},     /* Neapolitan */
 666   {"nb",        {HB_TAG('N','O','R',' ')}},     /* Norwegian Bokmål -> Norwegian */
 667   {"nd",        {HB_TAG('N','D','B',' ')}},     /* North Ndebele -> Ndebele */
 668   {"ndc",       {HB_TAG('N','D','C',' ')}},     /* Ndau */
 669   {"nds",       {HB_TAG('N','D','S',' ')}},     /* Low Saxon */
 670   {"ne",        {HB_TAG('N','E','P',' ')}},     /* Nepali [macrolanguage] */
 671   {"new",       {HB_TAG('N','E','W',' ')}},     /* Newari */
 672   {"ng",        {HB_TAG('N','D','G',' ')}},     /* Ndonga */
 673   {"nga",       {HB_TAG('N','G','A',' ')}},     /* Ngbaka */
 674   {"ngl",       {HB_TAG('L','M','W',' ')}},     /* Lomwe */
 675   {"ngo",       {HB_TAG('S','X','T',' ')}},     /* Ngoni -> Sutu */
 676   {"nhd",       {HB_TAG('G','U','A',' ')}},     /* Chiripá -> Guarani */
 677   {"niq",       {HB_TAG('K','A','L',' ')}},     /* Nandi -> Kalenjin */
 678   {"niu",       {HB_TAG('N','I','U',' ')}},     /* Niuean */
 679   {"niv",       {HB_TAG('G','I','L',' ')}},     /* Gilyak */
 680   {"njz",       {HB_TAG('N','I','S',' ')}},     /* Nyishi -> Nisi */
 681   {"nl",        {HB_TAG('N','L','D',' ')}},     /* Dutch */
 682   {"nle",       {HB_TAG('L','U','H',' ')}},     /* East Nyala -> Luyia */
 683   {"nn",        {HB_TAG('N','Y','N',' ')}},     /* Norwegian Nynorsk (Nynorsk, Norwegian) */
 684   {"no",        {HB_TAG('N','O','R',' ')}},     /* Norwegian [macrolanguage] */
 685   {"nod",       {HB_TAG('N','T','A',' ')}},     /* Northern Thai -> Northern Tai */
 686   {"noe",       {HB_TAG('N','O','E',' ')}},     /* Nimadi */
 687   {"nog",       {HB_TAG('N','O','G',' ')}},     /* Nogai */
 688   {"nov",       {HB_TAG('N','O','V',' ')}},     /* Novial */
 689   {"npi",       {HB_TAG('N','E','P',' ')}},     /* Nepali */
 690   {"nqo",       {HB_TAG('N','K','O',' ')}},     /* N'Ko */
 691   {"nr",        {HB_TAG('N','D','B',' ')}},     /* South Ndebele -> Ndebele */
 692   {"nsk",       {HB_TAG('N','A','S',' ')}},     /* Naskapi */
 693   {"nso",       {HB_TAG('N','S','O',' ')}},     /* Pedi -> Sotho, Northern */
 694   {"nv",        {HB_TAG('N','A','V',' '),       /* Navajo */
 695                  HB_TAG('A','T','H',' ')}},     /* Navajo -> Athapaskan */
 696   {"ny",        {HB_TAG('C','H','I',' ')}},     /* Chichewa (Chewa, Nyanja) */
 697   {"nyd",       {HB_TAG('L','U','H',' ')}},     /* Nyore -> Luyia */
 698   {"nym",       {HB_TAG('N','Y','M',' ')}},     /* Nyamwezi */
 699   {"nyn",       {HB_TAG('N','K','L',' ')}},     /* Nyankole */
 700   {"nza",       {HB_TAG('N','Z','A',' ')}},     /* Tigon Mbembe -> Mbembe Tigon */
 701   {"oc",        {HB_TAG('O','C','I',' ')}},     /* Occitan (post 1500) */
 702   {"oj",        {HB_TAG('O','J','B',' ')}},     /* Ojibwa [macrolanguage] -> Ojibway */
 703   {"ojb",       {HB_TAG('O','J','B',' ')}},     /* Northwestern Ojibwa -> Ojibway */
 704   {"ojc",       {HB_TAG('O','J','B',' ')}},     /* Central Ojibwa -> Ojibway */
 705   {"ojg",       {HB_TAG('O','J','B',' ')}},     /* Eastern Ojibwa -> Ojibway */
 706   {"ojs",       {HB_TAG('O','C','R',' ')}},     /* Severn Ojibwa -> Oji-Cree */
 707   {"ojw",       {HB_TAG('O','J','B',' ')}},     /* Western Ojibwa -> Ojibway */
 708   {"oki",       {HB_TAG('K','A','L',' ')}},     /* Okiek -> Kalenjin */
 709   {"okm",       {HB_TAG('K','O','H',' ')}},     /* Middle Korean (10th-16th cent.) -> Korean Old Hangul */
 710   {"om",        {HB_TAG('O','R','O',' ')}},     /* Oromo [macrolanguage] */
 711   {"or",        {HB_TAG('O','R','I',' ')}},     /* Odia (formerly Oriya) [macrolanguage] */
 712   {"orc",       {HB_TAG('O','R','O',' ')}},     /* Orma -> Oromo */
 713   {"orn",       {HB_TAG('M','L','Y',' ')}},     /* Orang Kanaq -> Malay */
 714   {"ors",       {HB_TAG('M','L','Y',' ')}},     /* Orang Seletar -> Malay */
 715   {"ory",       {HB_TAG('O','R','I',' ')}},     /* Odia (formerly Oriya) */
 716   {"os",        {HB_TAG('O','S','S',' ')}},     /* Ossetian */
 717   {"otw",       {HB_TAG('O','J','B',' ')}},     /* Ottawa -> Ojibway */
 718   {"pa",        {HB_TAG('P','A','N',' ')}},     /* Punjabi */
 719   {"pag",       {HB_TAG('P','A','G',' ')}},     /* Pangasinan */
 720   {"pam",       {HB_TAG('P','A','M',' ')}},     /* Pampanga -> Pampangan */
 721   {"pap",       {HB_TAG('P','A','P','0')}},     /* Papiamento -> Papiamentu */
 722   {"pau",       {HB_TAG('P','A','U',' ')}},     /* Palauan */
 723   {"pbt",       {HB_TAG('P','A','S',' ')}},     /* Southern Pashto -> Pashto */
 724   {"pbu",       {HB_TAG('P','A','S',' ')}},     /* Northern Pashto -> Pashto */
 725   {"pcc",       {HB_TAG('P','C','C',' ')}},     /* Bouyei */
 726   {"pcd",       {HB_TAG('P','C','D',' ')}},     /* Picard */
 727   {"pce",       {HB_TAG('P','L','G',' ')}},     /* Ruching Palaung -> Palaung */
 728   {"pck",       {HB_TAG('Q','I','N',' ')}},     /* Paite Chin -> Chin */
 729   {"pdc",       {HB_TAG('P','D','C',' ')}},     /* Pennsylvania German */
 730   {"pel",       {HB_TAG('M','L','Y',' ')}},     /* Pekal -> Malay */
 731   {"pes",       {HB_TAG('F','A','R',' ')}},     /* Iranian Persian -> Persian */
 732   {"pga",       {HB_TAG('A','R','A',' ')}},     /* Sudanese Creole Arabic -> Arabic */
 733   {"phk",       {HB_TAG('P','H','K',' ')}},     /* Phake */
 734   {"pi",        {HB_TAG('P','A','L',' ')}},     /* Pali */
 735   {"pih",       {HB_TAG('P','I','H',' ')}},     /* Pitcairn-Norfolk -> Norfolk */
 736   {"pko",       {HB_TAG('K','A','L',' ')}},     /* Pökoot -> Kalenjin */
 737   {"pl",        {HB_TAG('P','L','K',' ')}},     /* Polish */
 738   {"pll",       {HB_TAG('P','L','G',' ')}},     /* Shwe Palaung -> Palaung */
 739   {"plp",       {HB_TAG('P','A','P',' ')}},     /* Palpa */
 740   {"plt",       {HB_TAG('M','L','G',' ')}},     /* Plateau Malagasy -> Malagasy */
 741   {"pms",       {HB_TAG('P','M','S',' ')}},     /* Piemontese */
 742   {"pnb",       {HB_TAG('P','N','B',' ')}},     /* Western Panjabi */
 743   {"poh",       {HB_TAG('P','O','H',' ')}},     /* Poqomchi' -> Pocomchi */
 744   {"pon",       {HB_TAG('P','O','N',' ')}},     /* Pohnpeian */
 745   {"ppa",       {HB_TAG('B','A','G',' ')}},     /* Pao (retired code) -> Baghelkhandi */
 746   {"pro",       {HB_TAG('P','R','O',' ')}},     /* Old Provençal (to 1500) -> Provençal / Old Provençal */
 747   {"prs",       {HB_TAG('D','R','I',' ')}},     /* Dari */
 748   {"ps",        {HB_TAG('P','A','S',' ')}},     /* Pashto [macrolanguage] */
 749   {"pse",       {HB_TAG('M','L','Y',' ')}},     /* Central Malay -> Malay */
 750   {"pst",       {HB_TAG('P','A','S',' ')}},     /* Central Pashto -> Pashto */
 751   {"pt",        {HB_TAG('P','T','G',' ')}},     /* Portuguese */
 752   {"pwo",       {HB_TAG('P','W','O',' ')}},     /* Pwo Western Karen -> Western Pwo Karen */
 753   {"qu",        {HB_TAG('Q','U','Z',' ')}},     /* Quechua [macrolanguage] */
 754   {"qub",       {HB_TAG('Q','W','H',' ')}},     /* Huallaga Huánuco Quechua -> Quechua (Peru) */
 755   {"quc",       {HB_TAG('Q','U','C',' ')}},     /* K’iche’ */
 756   {"qud",       {HB_TAG('Q','V','I',' ')}},     /* Calderón Highland Quichua -> Quechua (Ecuador) */
 757   {"quf",       {HB_TAG('Q','U','Z',' ')}},     /* Lambayeque Quechua -> Quechua */
 758   {"qug",       {HB_TAG('Q','V','I',' ')}},     /* Chimborazo Highland Quichua -> Quechua (Ecuador) */
 759   {"quh",       {HB_TAG('Q','U','H',' ')}},     /* South Bolivian Quechua -> Quechua (Bolivia) */
 760   {"quk",       {HB_TAG('Q','U','Z',' ')}},     /* Chachapoyas Quechua -> Quechua */
 761   {"qul",       {HB_TAG('Q','U','Z',' ')}},     /* North Bolivian Quechua -> Quechua */
 762   {"qup",       {HB_TAG('Q','V','I',' ')}},     /* Southern Pastaza Quechua -> Quechua (Ecuador) */
 763   {"qur",       {HB_TAG('Q','W','H',' ')}},     /* Yanahuanca Pasco Quechua -> Quechua (Peru) */
 764   {"qus",       {HB_TAG('Q','U','H',' ')}},     /* Santiago del Estero Quichua -> Quechua (Bolivia) */
 765   {"quw",       {HB_TAG('Q','V','I',' ')}},     /* Tena Lowland Quichua -> Quechua (Ecuador) */
 766   {"qux",       {HB_TAG('Q','W','H',' ')}},     /* Yauyos Quechua -> Quechua (Peru) */
 767   {"quy",       {HB_TAG('Q','U','Z',' ')}},     /* Ayacucho Quechua -> Quechua */
 768   {"quz",       {HB_TAG('Q','U','Z',' ')}},     /* Cusco Quechua -> Quechua */
 769   {"qva",       {HB_TAG('Q','W','H',' ')}},     /* Ambo-Pasco Quechua -> Quechua (Peru) */
 770   {"qvc",       {HB_TAG('Q','U','Z',' ')}},     /* Cajamarca Quechua -> Quechua */
 771   {"qve",       {HB_TAG('Q','U','Z',' ')}},     /* Eastern Apurímac Quechua -> Quechua */
 772   {"qvh",       {HB_TAG('Q','W','H',' ')}},     /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua (Peru) */
 773   {"qvi",       {HB_TAG('Q','V','I',' ')}},     /* Imbabura Highland Quichua -> Quechua (Ecuador) */
 774   {"qvj",       {HB_TAG('Q','V','I',' ')}},     /* Loja Highland Quichua -> Quechua (Ecuador) */
 775   {"qvl",       {HB_TAG('Q','W','H',' ')}},     /* Cajatambo North Lima Quechua -> Quechua (Peru) */
 776   {"qvm",       {HB_TAG('Q','W','H',' ')}},     /* Margos-Yarowilca-Lauricocha Quechua -> Quechua (Peru) */
 777   {"qvn",       {HB_TAG('Q','W','H',' ')}},     /* North Junín Quechua -> Quechua (Peru) */
 778   {"qvo",       {HB_TAG('Q','V','I',' ')}},     /* Napo Lowland Quechua -> Quechua (Ecuador) */
 779   {"qvp",       {HB_TAG('Q','W','H',' ')}},     /* Pacaraos Quechua -> Quechua (Peru) */
 780   {"qvs",       {HB_TAG('Q','U','Z',' ')}},     /* San Martín Quechua -> Quechua */
 781   {"qvw",       {HB_TAG('Q','W','H',' ')}},     /* Huaylla Wanca Quechua -> Quechua (Peru) */
 782   {"qvz",       {HB_TAG('Q','V','I',' ')}},     /* Northern Pastaza Quichua -> Quechua (Ecuador) */
 783   {"qwa",       {HB_TAG('Q','W','H',' ')}},     /* Corongo Ancash Quechua -> Quechua (Peru) */
 784   {"qwc",       {HB_TAG('Q','U','Z',' ')}},     /* Classical Quechua -> Quechua */
 785   {"qwh",       {HB_TAG('Q','W','H',' ')}},     /* Huaylas Ancash Quechua -> Quechua (Peru) */
 786   {"qws",       {HB_TAG('Q','W','H',' ')}},     /* Sihuas Ancash Quechua -> Quechua (Peru) */
 787   {"qxa",       {HB_TAG('Q','W','H',' ')}},     /* Chiquián Ancash Quechua -> Quechua (Peru) */
 788   {"qxc",       {HB_TAG('Q','W','H',' ')}},     /* Chincha Quechua -> Quechua (Peru) */
 789   {"qxh",       {HB_TAG('Q','W','H',' ')}},     /* Panao Huánuco Quechua -> Quechua (Peru) */
 790   {"qxl",       {HB_TAG('Q','V','I',' ')}},     /* Salasaca Highland Quichua -> Quechua (Ecuador) */
 791   {"qxn",       {HB_TAG('Q','W','H',' ')}},     /* Northern Conchucos Ancash Quechua -> Quechua (Peru) */
 792   {"qxo",       {HB_TAG('Q','W','H',' ')}},     /* Southern Conchucos Ancash Quechua -> Quechua (Peru) */
 793   {"qxp",       {HB_TAG('Q','U','Z',' ')}},     /* Puno Quechua -> Quechua */
 794   {"qxr",       {HB_TAG('Q','V','I',' ')}},     /* Cañar Highland Quichua -> Quechua (Ecuador) */
 795   {"qxt",       {HB_TAG('Q','W','H',' ')}},     /* Santa Ana de Tusi Pasco Quechua -> Quechua (Peru) */
 796   {"qxu",       {HB_TAG('Q','U','Z',' ')}},     /* Arequipa-La Unión Quechua -> Quechua */
 797   {"qxw",       {HB_TAG('Q','W','H',' ')}},     /* Jauja Wanca Quechua -> Quechua (Peru) */
 798   {"rag",       {HB_TAG('L','U','H',' ')}},     /* Logooli -> Luyia */
 799   {"raj",       {HB_TAG('R','A','J',' ')}},     /* Rajasthani [macrolanguage] */
 800   {"rar",       {HB_TAG('R','A','R',' ')}},     /* Rarotongan */
 801   {"rbb",       {HB_TAG('P','L','G',' ')}},     /* Rumai Palaung -> Palaung */
 802   {"rbl",       {HB_TAG('B','I','K',' ')}},     /* Miraya Bikol -> Bikol */
 803   {"rej",       {HB_TAG('R','E','J',' ')}},     /* Rejang */
 804   {"ria",       {HB_TAG('R','I','A',' ')}},     /* Riang (India) */
 805   {"rif",       {HB_TAG('R','I','F',' ')}},     /* Tarifit */
 806   {"rit",       {HB_TAG('R','I','T',' ')}},     /* Ritarungo */
 807   {"rki",       {HB_TAG('A','R','K',' ')}},     /* Rakhine */
 808   {"rkw",       {HB_TAG('R','K','W',' ')}},     /* Arakwal */
 809   {"rm",        {HB_TAG('R','M','S',' ')}},     /* Romansh */
 810   {"rmc",       {HB_TAG('R','O','Y',' ')}},     /* Carpathian Romani -> Romany */
 811   {"rmf",       {HB_TAG('R','O','Y',' ')}},     /* Kalo Finnish Romani -> Romany */
 812   {"rml",       {HB_TAG('R','O','Y',' ')}},     /* Baltic Romani -> Romany */
 813   {"rmn",       {HB_TAG('R','O','Y',' ')}},     /* Balkan Romani -> Romany */
 814   {"rmo",       {HB_TAG('R','O','Y',' ')}},     /* Sinte Romani -> Romany */
 815   {"rmw",       {HB_TAG('R','O','Y',' ')}},     /* Welsh Romani -> Romany */
 816   {"rmy",       {HB_TAG('R','M','Y',' ')}},     /* Vlax Romani */
 817   {"rmz",       {HB_TAG('A','R','K',' ')}},     /* Marma -> Rakhine */
 818   {"rn",        {HB_TAG('R','U','N',' ')}},     /* Rundi */
 819   {"rnl",       {HB_TAG('H','A','L',' ')}},     /* Ranglong -> Halam (Falam Chin) */
 820   {"ro",        {HB_TAG('R','O','M',' ')}},     /* Romanian */
 821   {"rom",       {HB_TAG('R','O','Y',' ')}},     /* Romany [macrolanguage] */
 822   {"rtm",       {HB_TAG('R','T','M',' ')}},     /* Rotuman */
 823   {"ru",        {HB_TAG('R','U','S',' ')}},     /* Russian */
 824   {"rue",       {HB_TAG('R','S','Y',' ')}},     /* Rusyn */
 825   {"rup",       {HB_TAG('R','U','P',' ')}},     /* Aromanian */
 826   {"rw",        {HB_TAG('R','U','A',' ')}},     /* Kinyarwanda */
 827   {"rwr",       {HB_TAG('M','A','W',' ')}},     /* Marwari (India) */
 828   {"sa",        {HB_TAG('S','A','N',' ')}},     /* Sanskrit */
 829   {"sah",       {HB_TAG('Y','A','K',' ')}},     /* Yakut -> Sakha */
 830   {"sam",       {HB_TAG('P','A','A',' ')}},     /* Samaritan Aramaic -> Palestinian Aramaic */
 831   {"sas",       {HB_TAG('S','A','S',' ')}},     /* Sasak */
 832   {"sat",       {HB_TAG('S','A','T',' ')}},     /* Santali */
 833   {"sc",        {HB_TAG('S','R','D',' ')}},     /* Sardinian [macrolanguage] */
 834   {"sck",       {HB_TAG('S','A','D',' ')}},     /* Sadri */
 835   {"scn",       {HB_TAG('S','C','N',' ')}},     /* Sicilian */
 836   {"sco",       {HB_TAG('S','C','O',' ')}},     /* Scots */
 837   {"scs",       {HB_TAG('S','C','S',' '),       /* North Slavey */
 838                  HB_TAG('S','L','A',' '),       /* North Slavey -> Slavey */
 839                  HB_TAG('A','T','H',' ')}},     /* North Slavey -> Athapaskan */
 840   {"sd",        {HB_TAG('S','N','D',' ')}},     /* Sindhi */
 841   {"sdc",       {HB_TAG('S','R','D',' ')}},     /* Sassarese Sardinian -> Sardinian */
 842   {"sdh",       {HB_TAG('K','U','R',' ')}},     /* Southern Kurdish -> Kurdish */
 843   {"sdn",       {HB_TAG('S','R','D',' ')}},     /* Gallurese Sardinian -> Sardinian */
 844   {"se",        {HB_TAG('N','S','M',' ')}},     /* Northern Sami */
 845   {"seh",       {HB_TAG('S','N','A',' ')}},     /* Sena */
 846   {"sek",       {HB_TAG('A','T','H',' ')}},     /* Sekani -> Athapaskan */
 847   {"sel",       {HB_TAG('S','E','L',' ')}},     /* Selkup */
 848   {"sez",       {HB_TAG('Q','I','N',' ')}},     /* Senthang Chin -> Chin */
 849   {"sfm",       {HB_TAG('H','M','N',' ')}},     /* Small Flowery Miao -> Hmong */
 850   {"sg",        {HB_TAG('S','G','O',' ')}},     /* Sango */
 851   {"sga",       {HB_TAG('S','G','A',' ')}},     /* Old Irish (to 900) */
 852   {"sgc",       {HB_TAG('K','A','L',' ')}},     /* Kipsigis -> Kalenjin */
 853   {"sgs",       {HB_TAG('S','G','S',' ')}},     /* Samogitian */
 854   {"sgw",       {HB_TAG('C','H','G',' '),       /* Sebat Bet Gurage -> Chaha Gurage */
 855                  HB_TAG('S','G','W',' ')}},     /* Sebat Bet Gurage -> Chaha Gurage (SIL fonts) */
 856   {"shi",       {HB_TAG('S','H','I',' ')}},     /* Tachelhit */
 857   {"shn",       {HB_TAG('S','H','N',' ')}},     /* Shan */
 858   {"shu",       {HB_TAG('A','R','A',' ')}},     /* Chadian Arabic -> Arabic */
 859   {"si",        {HB_TAG('S','N','H',' ')}},     /* Sinhala (Sinhalese) */
 860   {"sid",       {HB_TAG('S','I','D',' ')}},     /* Sidamo */
 861   {"sjd",       {HB_TAG('K','S','M',' ')}},     /* Kildin Sami */
 862   {"sjo",       {HB_TAG('S','I','B',' ')}},     /* Xibe -> Sibe */
 863   {"sk",        {HB_TAG('S','K','Y',' ')}},     /* Slovak */
 864   {"skg",       {HB_TAG('M','L','G',' ')}},     /* Sakalava Malagasy -> Malagasy */
 865   {"skr",       {HB_TAG('S','R','K',' ')}},     /* Saraiki */
 866   {"sl",        {HB_TAG('S','L','V',' ')}},     /* Slovenian */
 867   {"sm",        {HB_TAG('S','M','O',' ')}},     /* Samoan */
 868   {"sma",       {HB_TAG('S','S','M',' ')}},     /* Southern Sami */
 869   {"smj",       {HB_TAG('L','S','M',' ')}},     /* Lule Sami */
 870   {"smn",       {HB_TAG('I','S','M',' ')}},     /* Inari Sami */
 871   {"sms",       {HB_TAG('S','K','S',' ')}},     /* Skolt Sami */
 872   {"sn",        {HB_TAG('S','N','A','0')}},     /* Shona */
 873   {"snk",       {HB_TAG('S','N','K',' ')}},     /* Soninke */
 874   {"so",        {HB_TAG('S','M','L',' ')}},     /* Somali */
 875   {"sop",       {HB_TAG('S','O','P',' ')}},     /* Songe */
 876   {"spv",       {HB_TAG('O','R','I',' ')}},     /* Sambalpuri -> Odia (formerly Oriya) */
 877   {"spy",       {HB_TAG('K','A','L',' ')}},     /* Sabaot -> Kalenjin */
 878   {"sq",        {HB_TAG('S','Q','I',' ')}},     /* Albanian [macrolanguage] */
 879   {"sr",        {HB_TAG('S','R','B',' ')}},     /* Serbian */
 880   {"src",       {HB_TAG('S','R','D',' ')}},     /* Logudorese Sardinian -> Sardinian */
 881   {"sro",       {HB_TAG('S','R','D',' ')}},     /* Campidanese Sardinian -> Sardinian */
 882   {"srr",       {HB_TAG('S','R','R',' ')}},     /* Serer */
 883   {"srs",       {HB_TAG('A','T','H',' ')}},     /* Sarsi -> Athapaskan */
 884   {"ss",        {HB_TAG('S','W','Z',' ')}},     /* Swati */
 885   {"ssh",       {HB_TAG('A','R','A',' ')}},     /* Shihhi Arabic -> Arabic */
 886   {"st",        {HB_TAG('S','O','T',' ')}},     /* Southern Sotho -> Sotho, Southern */
 887   {"stq",       {HB_TAG('S','T','Q',' ')}},     /* Saterfriesisch -> Saterland Frisian */
 888   {"stv",       {HB_TAG('S','I','G',' ')}},     /* Silt'e -> Silte Gurage */
 889   {"su",        {HB_TAG('S','U','N',' ')}},     /* Sundanese */
 890   {"suk",       {HB_TAG('S','U','K',' ')}},     /* Sukuma */
 891   {"suq",       {HB_TAG('S','U','R',' ')}},     /* Suri */
 892   {"sv",        {HB_TAG('S','V','E',' ')}},     /* Swedish */
 893   {"sva",       {HB_TAG('S','V','A',' ')}},     /* Svan */
 894   {"sw",        {HB_TAG('S','W','K',' ')}},     /* Swahili [macrolanguage] */
 895   {"swb",       {HB_TAG('C','M','R',' ')}},     /* Maore Comorian -> Comorian */
 896   {"swc",       {HB_TAG('S','W','K',' ')}},     /* Congo Swahili -> Swahili */
 897   {"swh",       {HB_TAG('S','W','K',' ')}},     /* Swahili */
 898   {"swv",       {HB_TAG('M','A','W',' ')}},     /* Shekhawati -> Marwari */
 899   {"sxu",       {HB_TAG('S','X','U',' ')}},     /* Upper Saxon */
 900   {"syc",       {HB_TAG('S','Y','R',' ')}},     /* Classical Syriac -> Syriac */
 901   {"syl",       {HB_TAG('S','Y','L',' ')}},     /* Sylheti */
 902   {"syr",       {HB_TAG('S','Y','R',' ')}},     /* Syriac [macrolanguage] */
 903   {"szl",       {HB_TAG('S','Z','L',' ')}},     /* Silesian */
 904   {"ta",        {HB_TAG('T','A','M',' ')}},     /* Tamil */
 905   {"taa",       {HB_TAG('A','T','H',' ')}},     /* Lower Tanana -> Athapaskan */
 906   {"tab",       {HB_TAG('T','A','B',' ')}},     /* Tabassaran -> Tabasaran */
 907   {"taq",       {HB_TAG('T','M','H',' ')}},     /* Tamasheq -> Tamashek */
 908   {"tau",       {HB_TAG('A','T','H',' ')}},     /* Upper Tanana -> Athapaskan */
 909   {"tcb",       {HB_TAG('A','T','H',' ')}},     /* Tanacross -> Athapaskan */
 910   {"tce",       {HB_TAG('A','T','H',' ')}},     /* Southern Tutchone -> Athapaskan */
 911   {"tcp",       {HB_TAG('Q','I','N',' ')}},     /* Tawr Chin -> Chin */
 912   {"tcy",       {HB_TAG('T','U','L',' ')}},     /* Tulu -> Tumbuka */
 913   {"tcz",       {HB_TAG('Q','I','N',' ')}},     /* Thado Chin -> Chin */
 914   {"tdd",       {HB_TAG('T','D','D',' ')}},     /* Tai Nüa -> Dehong Dai */
 915   {"tdx",       {HB_TAG('M','L','G',' ')}},     /* Tandroy-Mahafaly Malagasy -> Malagasy */
 916   {"te",        {HB_TAG('T','E','L',' ')}},     /* Telugu */
 917   {"tec",       {HB_TAG('K','A','L',' ')}},     /* Terik -> Kalenjin */
 918   {"tem",       {HB_TAG('T','M','N',' ')}},     /* Timne -> Temne */
 919   {"tet",       {HB_TAG('T','E','T',' ')}},     /* Tetum */
 920   {"tfn",       {HB_TAG('A','T','H',' ')}},     /* Tanaina -> Athapaskan */
 921   {"tg",        {HB_TAG('T','A','J',' ')}},     /* Tajik -> Tajiki */
 922   {"tgj",       {HB_TAG('N','I','S',' ')}},     /* Tagin -> Nisi */
 923   {"tgx",       {HB_TAG('A','T','H',' ')}},     /* Tagish -> Athapaskan */
 924   {"th",        {HB_TAG('T','H','A',' ')}},     /* Thai */
 925   {"tht",       {HB_TAG('A','T','H',' ')}},     /* Tahltan -> Athapaskan */
 926   {"thv",       {HB_TAG('T','M','H',' ')}},     /* Tahaggart Tamahaq -> Tamashek */
 927   {"thz",       {HB_TAG('T','M','H',' ')}},     /* Tayart Tamajeq -> Tamashek */
 928   {"ti",        {HB_TAG('T','G','Y',' ')}},     /* Tigrinya */
 929   {"tig",       {HB_TAG('T','G','R',' ')}},     /* Tigre */
 930   {"tiv",       {HB_TAG('T','I','V',' ')}},     /* Tiv */
 931   {"tk",        {HB_TAG('T','K','M',' ')}},     /* Turkmen */
 932   {"tkg",       {HB_TAG('M','L','G',' ')}},     /* Tesaka Malagasy -> Malagasy */
 933   {"tl",        {HB_TAG('T','G','L',' ')}},     /* Tagalog */
 934   {"tmh",       {HB_TAG('T','M','H',' ')}},     /* Tamashek [macrolanguage] */
 935   {"tmw",       {HB_TAG('M','L','Y',' ')}},     /* Temuan -> Malay */
 936   {"tn",        {HB_TAG('T','N','A',' ')}},     /* Tswana */
 937   {"tnf",       {HB_TAG('D','R','I',' ')}},     /* Tangshewi (retired code) -> Dari */
 938   {"to",        {HB_TAG('T','G','N',' ')}},     /* Tonga (Tonga Islands) -> Tongan */
 939   {"tod",       {HB_TAG('T','O','D','0')}},     /* Toma */
 940   {"toi",       {HB_TAG('T','N','G',' ')}},     /* Tonga (Zambia) */
 941   {"tol",       {HB_TAG('A','T','H',' ')}},     /* Tolowa -> Athapaskan */
 942   {"tpi",       {HB_TAG('T','P','I',' ')}},     /* Tok Pisin */
 943   {"tr",        {HB_TAG('T','R','K',' ')}},     /* Turkish */
 944   {"tru",       {HB_TAG('T','U','A',' '),       /* Turoyo -> Turoyo Aramaic */
 945                  HB_TAG('S','Y','R',' ')}},     /* Turoyo -> Syriac */
 946   {"ts",        {HB_TAG('T','S','G',' ')}},     /* Tsonga */
 947   {"tsj",       {HB_TAG('T','S','J',' ')}},     /* Tshangla */
 948   {"tt",        {HB_TAG('T','A','T',' ')}},     /* Tatar */
 949   {"ttm",       {HB_TAG('A','T','H',' ')}},     /* Northern Tutchone -> Athapaskan */
 950   {"ttq",       {HB_TAG('T','M','H',' ')}},     /* Tawallammat Tamajaq -> Tamashek */
 951   {"tum",       {HB_TAG('T','U','M',' ')}},     /* Tumbuka -> Tulu */
 952   {"tuu",       {HB_TAG('A','T','H',' ')}},     /* Tututni -> Athapaskan */
 953   {"tuy",       {HB_TAG('K','A','L',' ')}},     /* Tugen -> Kalenjin */
 954   {"tvl",       {HB_TAG('T','V','L',' ')}},     /* Tuvalu */
 955   {"tw",        {HB_TAG('T','W','I',' '),       /* Twi */
 956                  HB_TAG('A','K','A',' ')}},     /* Twi -> Akan */
 957   {"txc",       {HB_TAG('A','T','H',' ')}},     /* Tsetsaut -> Athapaskan */
 958   {"txy",       {HB_TAG('M','L','G',' ')}},     /* Tanosy Malagasy -> Malagasy */
 959   {"ty",        {HB_TAG('T','H','T',' ')}},     /* Tahitian */
 960   {"tyv",       {HB_TAG('T','U','V',' ')}},     /* Tuvinian -> Tuvin */
 961   {"tyz",       {HB_TAG('T','Y','Z',' ')}},     /* Tày */
 962   {"tzm",       {HB_TAG('T','Z','M',' ')}},     /* Central Atlas Tamazight -> Tamazight */
 963   {"tzo",       {HB_TAG('T','Z','O',' ')}},     /* Tzotzil */
 964   {"ubl",       {HB_TAG('B','I','K',' ')}},     /* Buhi'non Bikol -> Bikol */
 965   {"udm",       {HB_TAG('U','D','M',' ')}},     /* Udmurt */
 966   {"ug",        {HB_TAG('U','Y','G',' ')}},     /* Uyghur */
 967   {"uk",        {HB_TAG('U','K','R',' ')}},     /* Ukrainian */
 968   {"umb",       {HB_TAG('U','M','B',' ')}},     /* Umbundu */
 969   {"unr",       {HB_TAG('M','U','N',' ')}},     /* Mundari */
 970   {"ur",        {HB_TAG('U','R','D',' ')}},     /* Urdu */
 971   {"urk",       {HB_TAG('M','L','Y',' ')}},     /* Urak Lawoi' -> Malay */
 972   {"uz",        {HB_TAG('U','Z','B',' ')}},     /* Uzbek [macrolanguage] */
 973   {"uzn",       {HB_TAG('U','Z','B',' ')}},     /* Northern Uzbek -> Uzbek */
 974   {"uzs",       {HB_TAG('U','Z','B',' ')}},     /* Southern Uzbek -> Uzbek */
 975   {"ve",        {HB_TAG('V','E','N',' ')}},     /* Venda */
 976   {"vec",       {HB_TAG('V','E','C',' ')}},     /* Venetian */
 977   {"vi",        {HB_TAG('V','I','T',' ')}},     /* Vietnamese */
 978   {"vkk",       {HB_TAG('M','L','Y',' ')}},     /* Kaur -> Malay */
 979   {"vkt",       {HB_TAG('M','L','Y',' ')}},     /* Tenggarong Kutai Malay -> Malay */
 980   {"vls",       {HB_TAG('F','L','E',' ')}},     /* Vlaams -> Dutch (Flemish) */
 981   {"vmw",       {HB_TAG('M','A','K',' ')}},     /* Makhuwa */
 982   {"vo",        {HB_TAG('V','O','L',' ')}},     /* Volapük */
 983   {"vro",       {HB_TAG('V','R','O',' ')}},     /* Võro */
 984   {"wa",        {HB_TAG('W','L','N',' ')}},     /* Walloon */
 985   {"war",       {HB_TAG('W','A','R',' ')}},     /* Waray (Philippines) -> Waray-Waray */
 986   {"wbm",       {HB_TAG('W','A',' ',' ')}},     /* Wa */
 987   {"wbr",       {HB_TAG('W','A','G',' ')}},     /* Wagdi */
 988   {"wlc",       {HB_TAG('C','M','R',' ')}},     /* Mwali Comorian -> Comorian */
 989   {"wle",       {HB_TAG('S','I','G',' ')}},     /* Wolane -> Silte Gurage */
 990   {"wlk",       {HB_TAG('A','T','H',' ')}},     /* Wailaki -> Athapaskan */
 991   {"wni",       {HB_TAG('C','M','R',' ')}},     /* Ndzwani Comorian -> Comorian */
 992   {"wo",        {HB_TAG('W','L','F',' ')}},     /* Wolof */
 993   {"wry",       {HB_TAG('M','A','W',' ')}},     /* Merwari -> Marwari */
 994   {"wsg",       {HB_TAG('G','O','N',' ')}},     /* Adilabad Gondi -> Gondi */
 995   {"wtm",       {HB_TAG('W','T','M',' ')}},     /* Mewati */
 996   {"wuu",       {HB_TAG('Z','H','S',' ')}},     /* Wu Chinese -> Chinese Simplified */
 997   {"xal",       {HB_TAG('K','L','M',' '),       /* Kalmyk */
 998                  HB_TAG('T','O','D',' ')}},     /* Kalmyk -> Todo */
 999   {"xan",       {HB_TAG('S','E','K',' ')}},     /* Xamtanga -> Sekota */
1000   {"xh",        {HB_TAG('X','H','S',' ')}},     /* Xhosa */
1001   {"xjb",       {HB_TAG('X','J','B',' ')}},     /* Minjungbal -> Minjangbal */
1002   {"xkf",       {HB_TAG('X','K','F',' ')}},     /* Khengkha */
1003   {"xmm",       {HB_TAG('M','L','Y',' ')}},     /* Manado Malay -> Malay */
1004   {"xmv",       {HB_TAG('M','L','G',' ')}},     /* Antankarana Malagasy -> Malagasy */
1005   {"xmw",       {HB_TAG('M','L','G',' ')}},     /* Tsimihety Malagasy -> Malagasy */
1006   {"xnr",       {HB_TAG('D','G','R',' ')}},     /* Kangri -> Dogri */
1007   {"xog",       {HB_TAG('X','O','G',' ')}},     /* Soga */
1008   {"xpe",       {HB_TAG('X','P','E',' ')}},     /* Liberia Kpelle -> Kpelle (Liberia) */
1009   {"xsl",       {HB_TAG('S','S','L',' '),       /* South Slavey */
1010                  HB_TAG('S','L','A',' '),       /* South Slavey -> Slavey */
1011                  HB_TAG('A','T','H',' ')}},     /* South Slavey -> Athapaskan */
1012   {"xst",       {HB_TAG('S','I','G',' ')}},     /* Silt'e (retired code) -> Silte Gurage */
1013   {"xwo",       {HB_TAG('T','O','D',' ')}},     /* Written Oirat -> Todo */
1014   {"yao",       {HB_TAG('Y','A','O',' ')}},     /* Yao */
1015   {"yap",       {HB_TAG('Y','A','P',' ')}},     /* Yapese */
1016   {"ybd",       {HB_TAG('A','R','K',' ')}},     /* Yangbye (retired code) -> Rakhine */
1017   {"ydd",       {HB_TAG('J','I','I',' ')}},     /* Eastern Yiddish -> Yiddish */
1018   {"yi",        {HB_TAG('J','I','I',' ')}},     /* Yiddish [macrolanguage] */
1019   {"yih",       {HB_TAG('J','I','I',' ')}},     /* Western Yiddish -> Yiddish */
1020   {"yo",        {HB_TAG('Y','B','A',' ')}},     /* Yoruba */
1021   {"yos",       {HB_TAG('Q','I','N',' ')}},     /* Yos (retired code) -> Chin */
1022   {"yrk",       {HB_TAG('T','N','E',' '),       /* Nenets -> Tundra Nenets */
1023                  HB_TAG('F','N','E',' ')}},     /* Nenets -> Forest Nenets */
1024   {"yue",       {HB_TAG('Z','H','H',' ')}},     /* Yue Chinese -> Chinese, Hong Kong SAR */
1025   {"za",        {HB_TAG('Z','H','A',' ')}},     /* Zhuang [macrolanguage] */
1026   {"zch",       {HB_TAG('Z','H','A',' ')}},     /* Central Hongshuihe Zhuang -> Zhuang */
1027   {"zdj",       {HB_TAG('C','M','R',' ')}},     /* Ngazidja Comorian -> Comorian */
1028   {"zea",       {HB_TAG('Z','E','A',' ')}},     /* Zeeuws -> Zealandic */
1029   {"zeh",       {HB_TAG('Z','H','A',' ')}},     /* Eastern Hongshuihe Zhuang -> Zhuang */
1030   {"zgb",       {HB_TAG('Z','H','A',' ')}},     /* Guibei Zhuang -> Zhuang */
1031   {"zgh",       {HB_TAG('Z','G','H',' ')}},     /* Standard Moroccan Tamazight */
1032   {"zgm",       {HB_TAG('Z','H','A',' ')}},     /* Minz Zhuang -> Zhuang */
1033   {"zgn",       {HB_TAG('Z','H','A',' ')}},     /* Guibian Zhuang -> Zhuang */
1034   {"zh",        {HB_TAG('Z','H','S',' ')}},     /* Chinese [macrolanguage] -> Chinese Simplified */
1035   {"zhd",       {HB_TAG('Z','H','A',' ')}},     /* Dai Zhuang -> Zhuang */
1036   {"zhn",       {HB_TAG('Z','H','A',' ')}},     /* Nong Zhuang -> Zhuang */
1037   {"zlj",       {HB_TAG('Z','H','A',' ')}},     /* Liujiang Zhuang -> Zhuang */
1038   {"zlm",       {HB_TAG('M','L','Y',' ')}},     /* Malay */
1039   {"zln",       {HB_TAG('Z','H','A',' ')}},     /* Lianshan Zhuang -> Zhuang */
1040   {"zlq",       {HB_TAG('Z','H','A',' ')}},     /* Liuqian Zhuang -> Zhuang */
1041   {"zmi",       {HB_TAG('M','L','Y',' ')}},     /* Negeri Sembilan Malay -> Malay */
1042   {"zne",       {HB_TAG('Z','N','D',' ')}},     /* Zande */
1043   {"zom",       {HB_TAG('Q','I','N',' ')}},     /* Zou -> Chin */
1044   {"zqe",       {HB_TAG('Z','H','A',' ')}},     /* Qiubei Zhuang -> Zhuang */
1045   {"zsm",       {HB_TAG('M','L','Y',' ')}},     /* Standard Malay -> Malay */
1046   {"zu",        {HB_TAG('Z','U','L',' ')}},     /* Zulu */
1047   {"zum",       {HB_TAG('L','R','C',' ')}},     /* Kumzari -> Luri */
1048   {"zyb",       {HB_TAG('Z','H','A',' ')}},     /* Yongbei Zhuang -> Zhuang */
1049   {"zyg",       {HB_TAG('Z','H','A',' ')}},     /* Yang Zhuang -> Zhuang */
1050   {"zyj",       {HB_TAG('Z','H','A',' ')}},     /* Youjiang Zhuang -> Zhuang */
1051   {"zyn",       {HB_TAG('Z','H','A',' ')}},     /* Yongnan Zhuang -> Zhuang */
1052   {"zza",       {HB_TAG('Z','Z','A',' ')}},     /* Zazaki [macrolanguage] */
1053   {"zzj",       {HB_TAG('Z','H','A',' ')}},     /* Zuojiang Zhuang -> Zhuang */
1054 };
1055 
1056 static_assert (HB_OT_MAX_TAGS_PER_LANGUAGE == 3u, "");
1057 
1058 /**
1059  * hb_ot_tags_from_complex_language:
1060  * @lang_str: a BCP 47 language tag to convert.
1061  * @limit: a pointer to the end of the substring of @lang_str to consider for
1062  * conversion.
1063  * @count: maximum number of language tags to retrieve (IN) and actual number of
1064  * language tags retrieved (OUT). If no tags are retrieved, it is not modified.
1065  * @tags: array of size at least @language_count to store the language tag
1066  * results
1067  *
1068  * Converts a multi-subtag BCP 47 language tag to language tags.
1069  *
1070  * Return value: Whether any language systems were retrieved.
1071  **/
1072 static bool
1073 hb_ot_tags_from_complex_language (const char   *lang_str,
1074                                   const char   *limit,
1075                                   unsigned int *count /* IN/OUT */,
1076                                   hb_tag_t     *tags /* OUT */)
1077 {
1078   if (subtag_matches (lang_str, limit, "-fonnapa"))
1079   {
1080     /* Undetermined; North American Phonetic Alphabet */
1081     tags[0] = HB_TAG('A','P','P','H');  /* Phonetic transcription—Americanist conventions */
1082     *count = 1;
1083     return true;
1084   }
1085   if (subtag_matches (lang_str, limit, "-polyton"))
1086   {
1087     /* Modern Greek (1453-); Polytonic Greek */
1088     tags[0] = HB_TAG('P','G','R',' ');  /* Polytonic Greek */
1089     *count = 1;
1090     return true;
1091   }
1092   if (subtag_matches (lang_str, limit, "-provenc"))
1093   {
1094     /* Occitan (post 1500); Provençal */
1095     tags[0] = HB_TAG('P','R','O',' ');  /* Provençal / Old Provençal */
1096     *count = 1;
1097     return true;
1098   }
1099   if (subtag_matches (lang_str, limit, "-fonipa"))
1100   {
1101     /* Undetermined; International Phonetic Alphabet */
1102     tags[0] = HB_TAG('I','P','P','H');  /* Phonetic transcription—IPA conventions */
1103     *count = 1;
1104     return true;
1105   }
1106   if (subtag_matches (lang_str, limit, "-geok"))
1107   {
1108     /* Undetermined; Khutsuri (Asomtavruli and Nuskhuri) */
1109     tags[0] = HB_TAG('K','G','E',' ');  /* Khutsuri Georgian */
1110     *count = 1;
1111     return true;
1112   }
1113   if (subtag_matches (lang_str, limit, "-syre"))
1114   {
1115     /* Undetermined; Syriac (Estrangelo variant) */
1116     tags[0] = HB_TAG('S','Y','R','E');  /* Syriac, Estrangela script-variant (equivalent to ISO 15924 'Syre') */
1117     *count = 1;
1118     return true;
1119   }
1120   if (subtag_matches (lang_str, limit, "-syrj"))
1121   {
1122     /* Undetermined; Syriac (Western variant) */
1123     tags[0] = HB_TAG('S','Y','R','J');  /* Syriac, Western script-variant (equivalent to ISO 15924 'Syrj') */
1124     *count = 1;
1125     return true;
1126   }
1127   if (subtag_matches (lang_str, limit, "-syrn"))
1128   {
1129     /* Undetermined; Syriac (Eastern variant) */
1130     tags[0] = HB_TAG('S','Y','R','N');  /* Syriac, Eastern script-variant (equivalent to ISO 15924 'Syrn') */
1131     *count = 1;
1132     return true;
1133   }
1134   switch (lang_str[0])
1135   {
1136   case 'a':
1137     if (0 == strcmp (&lang_str[1], "rt-lojban"))
1138     {
1139       /* Lojban */
1140       tags[0] = HB_TAG('J','B','O',' ');  /* Lojban */
1141       *count = 1;
1142       return true;
1143     }
1144     break;
1145   case 'c':
1146     if (lang_matches (&lang_str[1], "do-hant-hk"))
1147     {
1148       /* Min Dong Chinese */
1149       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1150       *count = 1;
1151       return true;
1152     }
1153     if (lang_matches (&lang_str[1], "do-hant-mo"))
1154     {
1155       /* Min Dong Chinese */
1156       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1157       *count = 1;
1158       return true;
1159     }
1160     if (lang_matches (&lang_str[1], "jy-hant-hk"))
1161     {
1162       /* Jinyu Chinese */
1163       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1164       *count = 1;
1165       return true;
1166     }
1167     if (lang_matches (&lang_str[1], "jy-hant-mo"))
1168     {
1169       /* Jinyu Chinese */
1170       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1171       *count = 1;
1172       return true;
1173     }
1174     if (lang_matches (&lang_str[1], "mn-hant-hk"))
1175     {
1176       /* Mandarin Chinese */
1177       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1178       *count = 1;
1179       return true;
1180     }
1181     if (lang_matches (&lang_str[1], "mn-hant-mo"))
1182     {
1183       /* Mandarin Chinese */
1184       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1185       *count = 1;
1186       return true;
1187     }
1188     if (lang_matches (&lang_str[1], "px-hant-hk"))
1189     {
1190       /* Pu-Xian Chinese */
1191       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1192       *count = 1;
1193       return true;
1194     }
1195     if (lang_matches (&lang_str[1], "px-hant-mo"))
1196     {
1197       /* Pu-Xian Chinese */
1198       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1199       *count = 1;
1200       return true;
1201     }
1202     if (lang_matches (&lang_str[1], "zh-hant-hk"))
1203     {
1204       /* Huizhou Chinese */
1205       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1206       *count = 1;
1207       return true;
1208     }
1209     if (lang_matches (&lang_str[1], "zh-hant-mo"))
1210     {
1211       /* Huizhou Chinese */
1212       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1213       *count = 1;
1214       return true;
1215     }
1216     if (lang_matches (&lang_str[1], "zo-hant-hk"))
1217     {
1218       /* Min Zhong Chinese */
1219       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1220       *count = 1;
1221       return true;
1222     }
1223     if (lang_matches (&lang_str[1], "zo-hant-mo"))
1224     {
1225       /* Min Zhong Chinese */
1226       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1227       *count = 1;
1228       return true;
1229     }
1230     if (lang_matches (&lang_str[1], "do-hans"))
1231     {
1232       /* Min Dong Chinese */
1233       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1234       *count = 1;
1235       return true;
1236     }
1237     if (lang_matches (&lang_str[1], "do-hant"))
1238     {
1239       /* Min Dong Chinese */
1240       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1241       *count = 1;
1242       return true;
1243     }
1244     if (lang_matches (&lang_str[1], "jy-hans"))
1245     {
1246       /* Jinyu Chinese */
1247       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1248       *count = 1;
1249       return true;
1250     }
1251     if (lang_matches (&lang_str[1], "jy-hant"))
1252     {
1253       /* Jinyu Chinese */
1254       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1255       *count = 1;
1256       return true;
1257     }
1258     if (lang_matches (&lang_str[1], "mn-hans"))
1259     {
1260       /* Mandarin Chinese */
1261       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1262       *count = 1;
1263       return true;
1264     }
1265     if (lang_matches (&lang_str[1], "mn-hant"))
1266     {
1267       /* Mandarin Chinese */
1268       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1269       *count = 1;
1270       return true;
1271     }
1272     if (lang_matches (&lang_str[1], "px-hans"))
1273     {
1274       /* Pu-Xian Chinese */
1275       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1276       *count = 1;
1277       return true;
1278     }
1279     if (lang_matches (&lang_str[1], "px-hant"))
1280     {
1281       /* Pu-Xian Chinese */
1282       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1283       *count = 1;
1284       return true;
1285     }
1286     if (lang_matches (&lang_str[1], "zh-hans"))
1287     {
1288       /* Huizhou Chinese */
1289       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1290       *count = 1;
1291       return true;
1292     }
1293     if (lang_matches (&lang_str[1], "zh-hant"))
1294     {
1295       /* Huizhou Chinese */
1296       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1297       *count = 1;
1298       return true;
1299     }
1300     if (lang_matches (&lang_str[1], "zo-hans"))
1301     {
1302       /* Min Zhong Chinese */
1303       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1304       *count = 1;
1305       return true;
1306     }
1307     if (lang_matches (&lang_str[1], "zo-hant"))
1308     {
1309       /* Min Zhong Chinese */
1310       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1311       *count = 1;
1312       return true;
1313     }
1314     if (0 == strncmp (&lang_str[1], "do-", 3)
1315         && subtag_matches (lang_str, limit, "-hk"))
1316     {
1317       /* Min Dong Chinese; Hong Kong */
1318       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1319       *count = 1;
1320       return true;
1321     }
1322     if (0 == strncmp (&lang_str[1], "do-", 3)
1323         && subtag_matches (lang_str, limit, "-mo"))
1324     {
1325       /* Min Dong Chinese; Macao */
1326       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1327       *count = 1;
1328       return true;
1329     }
1330     if (0 == strncmp (&lang_str[1], "do-", 3)
1331         && subtag_matches (lang_str, limit, "-tw"))
1332     {
1333       /* Min Dong Chinese; Taiwan, Province of China */
1334       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1335       *count = 1;
1336       return true;
1337     }
1338     if (0 == strncmp (&lang_str[1], "jy-", 3)
1339         && subtag_matches (lang_str, limit, "-hk"))
1340     {
1341       /* Jinyu Chinese; Hong Kong */
1342       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1343       *count = 1;
1344       return true;
1345     }
1346     if (0 == strncmp (&lang_str[1], "jy-", 3)
1347         && subtag_matches (lang_str, limit, "-mo"))
1348     {
1349       /* Jinyu Chinese; Macao */
1350       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1351       *count = 1;
1352       return true;
1353     }
1354     if (0 == strncmp (&lang_str[1], "jy-", 3)
1355         && subtag_matches (lang_str, limit, "-tw"))
1356     {
1357       /* Jinyu Chinese; Taiwan, Province of China */
1358       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1359       *count = 1;
1360       return true;
1361     }
1362     if (0 == strncmp (&lang_str[1], "mn-", 3)
1363         && subtag_matches (lang_str, limit, "-hk"))
1364     {
1365       /* Mandarin Chinese; Hong Kong */
1366       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1367       *count = 1;
1368       return true;
1369     }
1370     if (0 == strncmp (&lang_str[1], "mn-", 3)
1371         && subtag_matches (lang_str, limit, "-mo"))
1372     {
1373       /* Mandarin Chinese; Macao */
1374       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1375       *count = 1;
1376       return true;
1377     }
1378     if (0 == strncmp (&lang_str[1], "mn-", 3)
1379         && subtag_matches (lang_str, limit, "-tw"))
1380     {
1381       /* Mandarin Chinese; Taiwan, Province of China */
1382       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1383       *count = 1;
1384       return true;
1385     }
1386     if (0 == strncmp (&lang_str[1], "px-", 3)
1387         && subtag_matches (lang_str, limit, "-hk"))
1388     {
1389       /* Pu-Xian Chinese; Hong Kong */
1390       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1391       *count = 1;
1392       return true;
1393     }
1394     if (0 == strncmp (&lang_str[1], "px-", 3)
1395         && subtag_matches (lang_str, limit, "-mo"))
1396     {
1397       /* Pu-Xian Chinese; Macao */
1398       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1399       *count = 1;
1400       return true;
1401     }
1402     if (0 == strncmp (&lang_str[1], "px-", 3)
1403         && subtag_matches (lang_str, limit, "-tw"))
1404     {
1405       /* Pu-Xian Chinese; Taiwan, Province of China */
1406       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1407       *count = 1;
1408       return true;
1409     }
1410     if (0 == strncmp (&lang_str[1], "zh-", 3)
1411         && subtag_matches (lang_str, limit, "-hk"))
1412     {
1413       /* Huizhou Chinese; Hong Kong */
1414       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1415       *count = 1;
1416       return true;
1417     }
1418     if (0 == strncmp (&lang_str[1], "zh-", 3)
1419         && subtag_matches (lang_str, limit, "-mo"))
1420     {
1421       /* Huizhou Chinese; Macao */
1422       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1423       *count = 1;
1424       return true;
1425     }
1426     if (0 == strncmp (&lang_str[1], "zh-", 3)
1427         && subtag_matches (lang_str, limit, "-tw"))
1428     {
1429       /* Huizhou Chinese; Taiwan, Province of China */
1430       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1431       *count = 1;
1432       return true;
1433     }
1434     if (0 == strncmp (&lang_str[1], "zo-", 3)
1435         && subtag_matches (lang_str, limit, "-hk"))
1436     {
1437       /* Min Zhong Chinese; Hong Kong */
1438       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1439       *count = 1;
1440       return true;
1441     }
1442     if (0 == strncmp (&lang_str[1], "zo-", 3)
1443         && subtag_matches (lang_str, limit, "-mo"))
1444     {
1445       /* Min Zhong Chinese; Macao */
1446       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1447       *count = 1;
1448       return true;
1449     }
1450     if (0 == strncmp (&lang_str[1], "zo-", 3)
1451         && subtag_matches (lang_str, limit, "-tw"))
1452     {
1453       /* Min Zhong Chinese; Taiwan, Province of China */
1454       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1455       *count = 1;
1456       return true;
1457     }
1458     break;
1459   case 'g':
1460     if (lang_matches (&lang_str[1], "an-hant-hk"))
1461     {
1462       /* Gan Chinese */
1463       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1464       *count = 1;
1465       return true;
1466     }
1467     if (lang_matches (&lang_str[1], "an-hant-mo"))
1468     {
1469       /* Gan Chinese */
1470       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1471       *count = 1;
1472       return true;
1473     }
1474     if (lang_matches (&lang_str[1], "an-hans"))
1475     {
1476       /* Gan Chinese */
1477       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1478       *count = 1;
1479       return true;
1480     }
1481     if (lang_matches (&lang_str[1], "an-hant"))
1482     {
1483       /* Gan Chinese */
1484       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1485       *count = 1;
1486       return true;
1487     }
1488     if (lang_matches (&lang_str[1], "a-latg"))
1489     {
1490       /* Irish */
1491       tags[0] = HB_TAG('I','R','T',' ');  /* Irish Traditional */
1492       *count = 1;
1493       return true;
1494     }
1495     if (0 == strncmp (&lang_str[1], "an-", 3)
1496         && subtag_matches (lang_str, limit, "-hk"))
1497     {
1498       /* Gan Chinese; Hong Kong */
1499       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1500       *count = 1;
1501       return true;
1502     }
1503     if (0 == strncmp (&lang_str[1], "an-", 3)
1504         && subtag_matches (lang_str, limit, "-mo"))
1505     {
1506       /* Gan Chinese; Macao */
1507       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1508       *count = 1;
1509       return true;
1510     }
1511     if (0 == strncmp (&lang_str[1], "an-", 3)
1512         && subtag_matches (lang_str, limit, "-tw"))
1513     {
1514       /* Gan Chinese; Taiwan, Province of China */
1515       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1516       *count = 1;
1517       return true;
1518     }
1519     break;
1520   case 'h':
1521     if (lang_matches (&lang_str[1], "ak-hant-hk"))
1522     {
1523       /* Hakka Chinese */
1524       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1525       *count = 1;
1526       return true;
1527     }
1528     if (lang_matches (&lang_str[1], "ak-hant-mo"))
1529     {
1530       /* Hakka Chinese */
1531       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1532       *count = 1;
1533       return true;
1534     }
1535     if (lang_matches (&lang_str[1], "sn-hant-hk"))
1536     {
1537       /* Xiang Chinese */
1538       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1539       *count = 1;
1540       return true;
1541     }
1542     if (lang_matches (&lang_str[1], "sn-hant-mo"))
1543     {
1544       /* Xiang Chinese */
1545       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1546       *count = 1;
1547       return true;
1548     }
1549     if (lang_matches (&lang_str[1], "ak-hans"))
1550     {
1551       /* Hakka Chinese */
1552       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1553       *count = 1;
1554       return true;
1555     }
1556     if (lang_matches (&lang_str[1], "ak-hant"))
1557     {
1558       /* Hakka Chinese */
1559       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1560       *count = 1;
1561       return true;
1562     }
1563     if (lang_matches (&lang_str[1], "sn-hans"))
1564     {
1565       /* Xiang Chinese */
1566       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1567       *count = 1;
1568       return true;
1569     }
1570     if (lang_matches (&lang_str[1], "sn-hant"))
1571     {
1572       /* Xiang Chinese */
1573       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1574       *count = 1;
1575       return true;
1576     }
1577     if (0 == strncmp (&lang_str[1], "ak-", 3)
1578         && subtag_matches (lang_str, limit, "-hk"))
1579     {
1580       /* Hakka Chinese; Hong Kong */
1581       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1582       *count = 1;
1583       return true;
1584     }
1585     if (0 == strncmp (&lang_str[1], "ak-", 3)
1586         && subtag_matches (lang_str, limit, "-mo"))
1587     {
1588       /* Hakka Chinese; Macao */
1589       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1590       *count = 1;
1591       return true;
1592     }
1593     if (0 == strncmp (&lang_str[1], "ak-", 3)
1594         && subtag_matches (lang_str, limit, "-tw"))
1595     {
1596       /* Hakka Chinese; Taiwan, Province of China */
1597       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1598       *count = 1;
1599       return true;
1600     }
1601     if (0 == strncmp (&lang_str[1], "sn-", 3)
1602         && subtag_matches (lang_str, limit, "-hk"))
1603     {
1604       /* Xiang Chinese; Hong Kong */
1605       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1606       *count = 1;
1607       return true;
1608     }
1609     if (0 == strncmp (&lang_str[1], "sn-", 3)
1610         && subtag_matches (lang_str, limit, "-mo"))
1611     {
1612       /* Xiang Chinese; Macao */
1613       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1614       *count = 1;
1615       return true;
1616     }
1617     if (0 == strncmp (&lang_str[1], "sn-", 3)
1618         && subtag_matches (lang_str, limit, "-tw"))
1619     {
1620       /* Xiang Chinese; Taiwan, Province of China */
1621       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1622       *count = 1;
1623       return true;
1624     }
1625     break;
1626   case 'i':
1627     if (0 == strcmp (&lang_str[1], "-navajo"))
1628     {
1629       /* Navajo */
1630       unsigned int i;
1631       hb_tag_t possible_tags[] = {
1632         HB_TAG('N','A','V',' '),  /* Navajo */
1633         HB_TAG('A','T','H',' '),  /* Athapaskan */
1634       };
1635       for (i = 0; i < 2 && i < *count; i++)
1636         tags[i] = possible_tags[i];
1637       *count = i;
1638       return true;
1639     }
1640     if (0 == strcmp (&lang_str[1], "-hak"))
1641     {
1642       /* Hakka */
1643       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1644       *count = 1;
1645       return true;
1646     }
1647     if (0 == strcmp (&lang_str[1], "-lux"))
1648     {
1649       /* Luxembourgish */
1650       tags[0] = HB_TAG('L','T','Z',' ');  /* Luxembourgish */
1651       *count = 1;
1652       return true;
1653     }
1654     break;
1655   case 'l':
1656     if (lang_matches (&lang_str[1], "zh-hans"))
1657     {
1658       /* Literary Chinese */
1659       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1660       *count = 1;
1661       return true;
1662     }
1663     break;
1664   case 'm':
1665     if (lang_matches (&lang_str[1], "np-hant-hk"))
1666     {
1667       /* Min Bei Chinese */
1668       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1669       *count = 1;
1670       return true;
1671     }
1672     if (lang_matches (&lang_str[1], "np-hant-mo"))
1673     {
1674       /* Min Bei Chinese */
1675       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1676       *count = 1;
1677       return true;
1678     }
1679     if (lang_matches (&lang_str[1], "np-hans"))
1680     {
1681       /* Min Bei Chinese */
1682       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1683       *count = 1;
1684       return true;
1685     }
1686     if (lang_matches (&lang_str[1], "np-hant"))
1687     {
1688       /* Min Bei Chinese */
1689       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1690       *count = 1;
1691       return true;
1692     }
1693     if (0 == strncmp (&lang_str[1], "np-", 3)
1694         && subtag_matches (lang_str, limit, "-hk"))
1695     {
1696       /* Min Bei Chinese; Hong Kong */
1697       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1698       *count = 1;
1699       return true;
1700     }
1701     if (0 == strncmp (&lang_str[1], "np-", 3)
1702         && subtag_matches (lang_str, limit, "-mo"))
1703     {
1704       /* Min Bei Chinese; Macao */
1705       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1706       *count = 1;
1707       return true;
1708     }
1709     if (0 == strncmp (&lang_str[1], "np-", 3)
1710         && subtag_matches (lang_str, limit, "-tw"))
1711     {
1712       /* Min Bei Chinese; Taiwan, Province of China */
1713       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1714       *count = 1;
1715       return true;
1716     }
1717     break;
1718   case 'n':
1719     if (lang_matches (&lang_str[1], "an-hant-hk"))
1720     {
1721       /* Min Nan Chinese */
1722       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1723       *count = 1;
1724       return true;
1725     }
1726     if (lang_matches (&lang_str[1], "an-hant-mo"))
1727     {
1728       /* Min Nan Chinese */
1729       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1730       *count = 1;
1731       return true;
1732     }
1733     if (lang_matches (&lang_str[1], "an-hans"))
1734     {
1735       /* Min Nan Chinese */
1736       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1737       *count = 1;
1738       return true;
1739     }
1740     if (lang_matches (&lang_str[1], "an-hant"))
1741     {
1742       /* Min Nan Chinese */
1743       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1744       *count = 1;
1745       return true;
1746     }
1747     if (0 == strncmp (&lang_str[1], "an-", 3)
1748         && subtag_matches (lang_str, limit, "-hk"))
1749     {
1750       /* Min Nan Chinese; Hong Kong */
1751       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1752       *count = 1;
1753       return true;
1754     }
1755     if (0 == strncmp (&lang_str[1], "an-", 3)
1756         && subtag_matches (lang_str, limit, "-mo"))
1757     {
1758       /* Min Nan Chinese; Macao */
1759       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1760       *count = 1;
1761       return true;
1762     }
1763     if (0 == strncmp (&lang_str[1], "an-", 3)
1764         && subtag_matches (lang_str, limit, "-tw"))
1765     {
1766       /* Min Nan Chinese; Taiwan, Province of China */
1767       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1768       *count = 1;
1769       return true;
1770     }
1771     if (0 == strcmp (&lang_str[1], "o-bok"))
1772     {
1773       /* Norwegian Bokmal */
1774       tags[0] = HB_TAG('N','O','R',' ');  /* Norwegian */
1775       *count = 1;
1776       return true;
1777     }
1778     if (0 == strcmp (&lang_str[1], "o-nyn"))
1779     {
1780       /* Norwegian Nynorsk */
1781       tags[0] = HB_TAG('N','Y','N',' ');  /* Norwegian Nynorsk (Nynorsk, Norwegian) */
1782       *count = 1;
1783       return true;
1784     }
1785     break;
1786   case 'r':
1787     if (0 == strncmp (&lang_str[1], "o-", 2)
1788         && subtag_matches (lang_str, limit, "-md"))
1789     {
1790       /* Romanian; Moldova */
1791       tags[0] = HB_TAG('M','O','L',' ');  /* Moldavian */
1792       *count = 1;
1793       return true;
1794     }
1795     break;
1796   case 'w':
1797     if (lang_matches (&lang_str[1], "uu-hant-hk"))
1798     {
1799       /* Wu Chinese */
1800       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1801       *count = 1;
1802       return true;
1803     }
1804     if (lang_matches (&lang_str[1], "uu-hant-mo"))
1805     {
1806       /* Wu Chinese */
1807       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1808       *count = 1;
1809       return true;
1810     }
1811     if (lang_matches (&lang_str[1], "uu-hans"))
1812     {
1813       /* Wu Chinese */
1814       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1815       *count = 1;
1816       return true;
1817     }
1818     if (lang_matches (&lang_str[1], "uu-hant"))
1819     {
1820       /* Wu Chinese */
1821       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1822       *count = 1;
1823       return true;
1824     }
1825     if (0 == strncmp (&lang_str[1], "uu-", 3)
1826         && subtag_matches (lang_str, limit, "-hk"))
1827     {
1828       /* Wu Chinese; Hong Kong */
1829       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1830       *count = 1;
1831       return true;
1832     }
1833     if (0 == strncmp (&lang_str[1], "uu-", 3)
1834         && subtag_matches (lang_str, limit, "-mo"))
1835     {
1836       /* Wu Chinese; Macao */
1837       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1838       *count = 1;
1839       return true;
1840     }
1841     if (0 == strncmp (&lang_str[1], "uu-", 3)
1842         && subtag_matches (lang_str, limit, "-tw"))
1843     {
1844       /* Wu Chinese; Taiwan, Province of China */
1845       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1846       *count = 1;
1847       return true;
1848     }
1849     break;
1850   case 'y':
1851     if (lang_matches (&lang_str[1], "ue-hans"))
1852     {
1853       /* Yue Chinese */
1854       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1855       *count = 1;
1856       return true;
1857     }
1858     break;
1859   case 'z':
1860     if (lang_matches (&lang_str[1], "h-hant-hk"))
1861     {
1862       /* Chinese */
1863       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1864       *count = 1;
1865       return true;
1866     }
1867     if (lang_matches (&lang_str[1], "h-hant-mo"))
1868     {
1869       /* Chinese */
1870       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1871       *count = 1;
1872       return true;
1873     }
1874     if (0 == strcmp (&lang_str[1], "h-min-nan"))
1875     {
1876       /* Minnan, Hokkien, Amoy, Taiwanese, Southern Min, Southern Fujian, Hoklo, Southern Fukien, Ho-lo */
1877       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1878       *count = 1;
1879       return true;
1880     }
1881     if (lang_matches (&lang_str[1], "h-hans"))
1882     {
1883       /* Chinese */
1884       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1885       *count = 1;
1886       return true;
1887     }
1888     if (lang_matches (&lang_str[1], "h-hant"))
1889     {
1890       /* Chinese */
1891       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1892       *count = 1;
1893       return true;
1894     }
1895     if (0 == strcmp (&lang_str[1], "h-min"))
1896     {
1897       /* Min, Fuzhou, Hokkien, Amoy, or Taiwanese */
1898       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese Simplified */
1899       *count = 1;
1900       return true;
1901     }
1902     if (0 == strncmp (&lang_str[1], "h-", 2)
1903         && subtag_matches (lang_str, limit, "-hk"))
1904     {
1905       /* Chinese; Hong Kong */
1906       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1907       *count = 1;
1908       return true;
1909     }
1910     if (0 == strncmp (&lang_str[1], "h-", 2)
1911         && subtag_matches (lang_str, limit, "-mo"))
1912     {
1913       /* Chinese; Macao */
1914       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Hong Kong SAR */
1915       *count = 1;
1916       return true;
1917     }
1918     if (0 == strncmp (&lang_str[1], "h-", 2)
1919         && subtag_matches (lang_str, limit, "-tw"))
1920     {
1921       /* Chinese; Taiwan, Province of China */
1922       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese Traditional */
1923       *count = 1;
1924       return true;
1925     }
1926     break;
1927   }
1928   return false;
1929 }
1930 
1931 /**
1932  * hb_ot_ambiguous_tag_to_language
1933  * @tag: A language tag.
1934  *
1935  * Converts @tag to a BCP 47 language tag if it is ambiguous (it corresponds to
1936  * many language tags) and the best tag is not the alphabetically first, or if
1937  * the best tag consists of multiple subtags.
1938  *
1939  * Return value: The #hb_language_t corresponding to the BCP 47 language tag,
1940  * or #HB_LANGUAGE_INVALID if @tag is not ambiguous.
1941  **/
1942 static hb_language_t
1943 hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
1944 {
1945   switch (tag)
1946   {
1947   case HB_TAG('A','P','P','H'):  /* Phonetic transcription—Americanist conventions */
1948     return hb_language_from_string ("und-fonnapa", -1);  /* Undetermined; North American Phonetic Alphabet */
1949   case HB_TAG('A','R','A',' '):  /* Arabic */
1950     return hb_language_from_string ("ar", -1);  /* Arabic */
1951   case HB_TAG('A','R','K',' '):  /* Rakhine */
1952     return hb_language_from_string ("rki", -1);  /* Rakhine */
1953   case HB_TAG('A','T','H',' '):  /* Athapaskan */
1954     return hb_language_from_string ("ath", -1);  /* Athapascan */
1955   case HB_TAG('B','I','K',' '):  /* Bikol */
1956     return hb_language_from_string ("bik", -1);  /* Bikol */
1957   case HB_TAG('C','P','P',' '):  /* Creoles */
1958     return hb_language_from_string ("crp", -1);  /* Creoles and pidgins */
1959   case HB_TAG('C','R','R',' '):  /* Carrier */
1960     return hb_language_from_string ("crx", -1);  /* Carrier */
1961   case HB_TAG('D','N','K',' '):  /* Dinka */
1962     return hb_language_from_string ("din", -1);  /* Dinka */
1963   case HB_TAG('D','R','I',' '):  /* Dari */
1964     return hb_language_from_string ("prs", -1);  /* Dari */
1965   case HB_TAG('D','U','J',' '):  /* Dhuwal */
1966     return hb_language_from_string ("dwu", -1);  /* Dhuwal */
1967   case HB_TAG('D','Z','N',' '):  /* Dzongkha */
1968     return hb_language_from_string ("dz", -1);  /* Dzongkha */
1969   case HB_TAG('E','T','I',' '):  /* Estonian */
1970     return hb_language_from_string ("et", -1);  /* Estonian */
1971   case HB_TAG('G','O','N',' '):  /* Gondi */
1972     return hb_language_from_string ("gon", -1);  /* Gondi */
1973   case HB_TAG('H','M','N',' '):  /* Hmong */
1974     return hb_language_from_string ("hmn", -1);  /* Hmong */
1975   case HB_TAG('I','J','O',' '):  /* Ijo */
1976     return hb_language_from_string ("ijo", -1);  /* Ijo */
1977   case HB_TAG('I','N','U',' '):  /* Inuktitut */
1978     return hb_language_from_string ("iu", -1);  /* Inuktitut */
1979   case HB_TAG('I','P','K',' '):  /* Inupiat */
1980     return hb_language_from_string ("ik", -1);  /* Inupiaq */
1981   case HB_TAG('I','P','P','H'):  /* Phonetic transcription—IPA conventions */
1982     return hb_language_from_string ("und-fonipa", -1);  /* Undetermined; International Phonetic Alphabet */
1983   case HB_TAG('I','R','T',' '):  /* Irish Traditional */
1984     return hb_language_from_string ("ga-Latg", -1);  /* Irish; Latin (Gaelic variant) */
1985   case HB_TAG('J','I','I',' '):  /* Yiddish */
1986     return hb_language_from_string ("yi", -1);  /* Yiddish */
1987   case HB_TAG('K','A','L',' '):  /* Kalenjin */
1988     return hb_language_from_string ("kln", -1);  /* Kalenjin */
1989   case HB_TAG('K','G','E',' '):  /* Khutsuri Georgian */
1990     return hb_language_from_string ("und-Geok", -1);  /* Undetermined; Khutsuri (Asomtavruli and Nuskhuri) */
1991   case HB_TAG('K','N','R',' '):  /* Kanuri */
1992     return hb_language_from_string ("kr", -1);  /* Kanuri */
1993   case HB_TAG('K','O','K',' '):  /* Konkani */
1994     return hb_language_from_string ("kok", -1);  /* Konkani */
1995   case HB_TAG('K','U','R',' '):  /* Kurdish */
1996     return hb_language_from_string ("ku", -1);  /* Kurdish */
1997   case HB_TAG('L','U','H',' '):  /* Luyia */
1998     return hb_language_from_string ("luy", -1);  /* Luyia */
1999   case HB_TAG('L','V','I',' '):  /* Latvian */
2000     return hb_language_from_string ("lv", -1);  /* Latvian */
2001   case HB_TAG('M','A','W',' '):  /* Marwari */
2002     return hb_language_from_string ("mwr", -1);  /* Marwari */
2003   case HB_TAG('M','L','G',' '):  /* Malagasy */
2004     return hb_language_from_string ("mg", -1);  /* Malagasy */
2005   case HB_TAG('M','L','Y',' '):  /* Malay */
2006     return hb_language_from_string ("ms", -1);  /* Malay */
2007   case HB_TAG('M','N','G',' '):  /* Mongolian */
2008     return hb_language_from_string ("mn", -1);  /* Mongolian */
2009   case HB_TAG('M','O','L',' '):  /* Moldavian */
2010     return hb_language_from_string ("ro-MD", -1);  /* Romanian; Moldova */
2011   case HB_TAG('N','E','P',' '):  /* Nepali */
2012     return hb_language_from_string ("ne", -1);  /* Nepali */
2013   case HB_TAG('N','I','S',' '):  /* Nisi */
2014     return hb_language_from_string ("njz", -1);  /* Nyishi */
2015   case HB_TAG('N','O','R',' '):  /* Norwegian */
2016     return hb_language_from_string ("no", -1);  /* Norwegian */
2017   case HB_TAG('O','J','B',' '):  /* Ojibway */
2018     return hb_language_from_string ("oj", -1);  /* Ojibwa */
2019   case HB_TAG('O','R','O',' '):  /* Oromo */
2020     return hb_language_from_string ("om", -1);  /* Oromo */
2021   case HB_TAG('P','A','S',' '):  /* Pashto */
2022     return hb_language_from_string ("ps", -1);  /* Pashto */
2023   case HB_TAG('P','G','R',' '):  /* Polytonic Greek */
2024     return hb_language_from_string ("el-polyton", -1);  /* Modern Greek (1453-); Polytonic Greek */
2025   case HB_TAG('P','R','O',' '):  /* Provençal / Old Provençal */
2026     return hb_language_from_string ("pro", -1);  /* Old Provençal (to 1500) */
2027   case HB_TAG('Q','U','H',' '):  /* Quechua (Bolivia) */
2028     return hb_language_from_string ("quh", -1);  /* South Bolivian Quechua */
2029   case HB_TAG('Q','V','I',' '):  /* Quechua (Ecuador) */
2030     return hb_language_from_string ("qvi", -1);  /* Imbabura Highland Quichua */
2031   case HB_TAG('Q','W','H',' '):  /* Quechua (Peru) */
2032     return hb_language_from_string ("qwh", -1);  /* Huaylas Ancash Quechua */
2033   case HB_TAG('R','A','J',' '):  /* Rajasthani */
2034     return hb_language_from_string ("raj", -1);  /* Rajasthani */
2035   case HB_TAG('R','O','Y',' '):  /* Romany */
2036     return hb_language_from_string ("rom", -1);  /* Romany */
2037   case HB_TAG('S','Q','I',' '):  /* Albanian */
2038     return hb_language_from_string ("sq", -1);  /* Albanian */
2039   case HB_TAG('S','Y','R',' '):  /* Syriac */
2040     return hb_language_from_string ("syr", -1);  /* Syriac */
2041   case HB_TAG('S','Y','R','E'):  /* Syriac, Estrangela script-variant (equivalent to ISO 15924 'Syre') */
2042     return hb_language_from_string ("und-Syre", -1);  /* Undetermined; Syriac (Estrangelo variant) */
2043   case HB_TAG('S','Y','R','J'):  /* Syriac, Western script-variant (equivalent to ISO 15924 'Syrj') */
2044     return hb_language_from_string ("und-Syrj", -1);  /* Undetermined; Syriac (Western variant) */
2045   case HB_TAG('S','Y','R','N'):  /* Syriac, Eastern script-variant (equivalent to ISO 15924 'Syrn') */
2046     return hb_language_from_string ("und-Syrn", -1);  /* Undetermined; Syriac (Eastern variant) */
2047   case HB_TAG('T','M','H',' '):  /* Tamashek */
2048     return hb_language_from_string ("tmh", -1);  /* Tamashek */
2049   case HB_TAG('T','N','E',' '):  /* Tundra Nenets */
2050     return hb_language_from_string ("yrk", -1);  /* Nenets */
2051   case HB_TAG('Z','H','H',' '):  /* Chinese, Hong Kong SAR */
2052     return hb_language_from_string ("zh-HK", -1);  /* Chinese; Hong Kong */
2053   case HB_TAG('Z','H','S',' '):  /* Chinese Simplified */
2054     return hb_language_from_string ("zh-Hans", -1);  /* Chinese; Han (Simplified variant) */
2055   case HB_TAG('Z','H','T',' '):  /* Chinese Traditional */
2056     return hb_language_from_string ("zh-Hant", -1);  /* Chinese; Han (Traditional variant) */
2057   default:
2058     return HB_LANGUAGE_INVALID;
2059   }
2060 }
2061 
2062 #endif /* HB_OT_TAG_TABLE_HH */
2063 
2064 /* == End of generated table == */