Home | History | Annotate | Download | only in src
      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',' ')}},	/* Arbresh 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')}},	/* Ojitln 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')}},	/* Ozumacn 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',' ')}},	/* Gwichin -> 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')}},	/* Klsch -> Ripuarian */
    526   {"kss",	{HB_TAG('K','I','S',' ')}},	/* Southern Kisi -> Kisii */
    527   {"ksw",	{HB_TAG('K','S','W',' ')}},	/* Sgaw 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 Bokml -> 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',' ')}},	/* Pkoot -> 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 Provenal (to 1500) -> Provenal / Old Provenal */
    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 Hunuco Quechua -> Quechua (Peru) */
    755   {"quc",	{HB_TAG('Q','U','C',' ')}},	/* Kiche */
    756   {"qud",	{HB_TAG('Q','V','I',' ')}},	/* Caldern 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 Apurmac Quechua -> Quechua */
    772   {"qvh",	{HB_TAG('Q','W','H',' ')}},	/* Huamales-Dos de Mayo Hunuco 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 Junn 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 Martn 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',' ')}},	/* Chiquin Ancash Quechua -> Quechua (Peru) */
    788   {"qxc",	{HB_TAG('Q','W','H',' ')}},	/* Chincha Quechua -> Quechua (Peru) */
    789   {"qxh",	{HB_TAG('Q','W','H',' ')}},	/* Panao Hunuco 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',' ')}},	/* Caar 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 Unin 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 Na -> 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',' ')}},	/* Ty */
    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',' ')}},	/* Volapk */
    983   {"vro",	{HB_TAG('V','R','O',' ')}},	/* Vro */
    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 transcriptionAmericanist 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); Provenal */
   1095     tags[0] = HB_TAG('P','R','O',' ');  /* Provenal / Old Provenal */
   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 transcriptionIPA 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 transcriptionAmericanist 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 transcriptionIPA 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',' '):  /* Provenal / Old Provenal */
   2026     return hb_language_from_string ("pro", -1);  /* Old Provenal (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 == */
   2065