61d2814e9322b92ee2dc332454a54f4d3e14c165
[platform/upstream/harfbuzz.git] / src / hb-ot-tag-table.hh
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="2022-01-28 10:00 PM" />
10  * File-Date: 2021-12-29
11  */
12
13 #ifndef HB_OT_TAG_TABLE_HH
14 #define HB_OT_TAG_TABLE_HH
15
16 static const LangTag ot_languages[] = {
17   {"aa",        HB_TAG('A','F','R',' ')},       /* Afar */
18   {"aae",       HB_TAG('S','Q','I',' ')},       /* Arbëreshë Albanian -> Albanian */
19   {"aao",       HB_TAG('A','R','A',' ')},       /* Algerian Saharan Arabic -> Arabic */
20   {"aat",       HB_TAG('S','Q','I',' ')},       /* Arvanitika Albanian -> Albanian */
21   {"ab",        HB_TAG('A','B','K',' ')},       /* Abkhazian */
22   {"aba",       HB_TAG_NONE            },       /* Abé != Abaza */
23   {"abh",       HB_TAG('A','R','A',' ')},       /* Tajiki Arabic -> Arabic */
24   {"abq",       HB_TAG('A','B','A',' ')},       /* Abaza */
25   {"abs",       HB_TAG('C','P','P',' ')},       /* Ambonese Malay -> Creoles */
26   {"abv",       HB_TAG('A','R','A',' ')},       /* Baharna Arabic -> Arabic */
27   {"acf",       HB_TAG('F','A','N',' ')},       /* Saint Lucian Creole French -> French Antillean */
28   {"acf",       HB_TAG('C','P','P',' ')},       /* Saint Lucian Creole French -> Creoles */
29 /*{"ach",       HB_TAG('A','C','H',' ')},*/     /* Acoli -> Acholi */
30   {"acm",       HB_TAG('A','R','A',' ')},       /* Mesopotamian Arabic -> Arabic */
31   {"acq",       HB_TAG('A','R','A',' ')},       /* Ta'izzi-Adeni Arabic -> Arabic */
32   {"acr",       HB_TAG('A','C','R',' ')},       /* Achi */
33   {"acr",       HB_TAG('M','Y','N',' ')},       /* Achi -> Mayan */
34   {"acw",       HB_TAG('A','R','A',' ')},       /* Hijazi Arabic -> Arabic */
35   {"acx",       HB_TAG('A','R','A',' ')},       /* Omani Arabic -> Arabic */
36   {"acy",       HB_TAG('A','R','A',' ')},       /* Cypriot Arabic -> Arabic */
37   {"ada",       HB_TAG('D','N','G',' ')},       /* Adangme -> Dangme */
38   {"adf",       HB_TAG('A','R','A',' ')},       /* Dhofari Arabic -> Arabic */
39   {"adp",       HB_TAG('D','Z','N',' ')},       /* Adap (retired code) -> Dzongkha */
40 /*{"ady",       HB_TAG('A','D','Y',' ')},*/     /* Adyghe */
41   {"aeb",       HB_TAG('A','R','A',' ')},       /* Tunisian Arabic -> Arabic */
42   {"aec",       HB_TAG('A','R','A',' ')},       /* Saidi Arabic -> Arabic */
43   {"af",        HB_TAG('A','F','K',' ')},       /* Afrikaans */
44   {"afb",       HB_TAG('A','R','A',' ')},       /* Gulf Arabic -> Arabic */
45   {"afk",       HB_TAG_NONE            },       /* Nanubae != Afrikaans */
46   {"afs",       HB_TAG('C','P','P',' ')},       /* Afro-Seminole Creole -> Creoles */
47   {"agu",       HB_TAG('M','Y','N',' ')},       /* Aguacateco -> Mayan */
48   {"agw",       HB_TAG_NONE            },       /* Kahua != Agaw */
49   {"ahg",       HB_TAG('A','G','W',' ')},       /* Qimant -> Agaw */
50   {"aht",       HB_TAG('A','T','H',' ')},       /* Ahtena -> Athapaskan */
51   {"aig",       HB_TAG('C','P','P',' ')},       /* Antigua and Barbuda Creole English -> Creoles */
52   {"aii",       HB_TAG('S','W','A',' ')},       /* Assyrian Neo-Aramaic -> Swadaya Aramaic */
53   {"aii",       HB_TAG('S','Y','R',' ')},       /* Assyrian Neo-Aramaic -> Syriac */
54 /*{"aio",       HB_TAG('A','I','O',' ')},*/     /* Aiton */
55   {"aiw",       HB_TAG('A','R','I',' ')},       /* Aari */
56   {"ajp",       HB_TAG('A','R','A',' ')},       /* South Levantine Arabic -> Arabic */
57   {"ak",        HB_TAG('A','K','A',' ')},       /* Akan [macrolanguage] */
58   {"akb",       HB_TAG('A','K','B',' ')},       /* Batak Angkola */
59   {"akb",       HB_TAG('B','T','K',' ')},       /* Batak Angkola -> Batak */
60   {"aln",       HB_TAG('S','Q','I',' ')},       /* Gheg Albanian -> Albanian */
61   {"als",       HB_TAG('S','Q','I',' ')},       /* Tosk Albanian -> Albanian */
62 /*{"alt",       HB_TAG('A','L','T',' ')},*/     /* Southern Altai -> Altai */
63   {"am",        HB_TAG('A','M','H',' ')},       /* Amharic */
64   {"amf",       HB_TAG('H','B','N',' ')},       /* Hamer-Banna -> Hammer-Banna */
65   {"amw",       HB_TAG('S','Y','R',' ')},       /* Western Neo-Aramaic -> Syriac */
66   {"an",        HB_TAG('A','R','G',' ')},       /* Aragonese */
67 /*{"ang",       HB_TAG('A','N','G',' ')},*/     /* Old English (ca. 450-1100) -> Anglo-Saxon */
68   {"aoa",       HB_TAG('C','P','P',' ')},       /* Angolar -> Creoles */
69   {"apa",       HB_TAG('A','T','H',' ')},       /* Apache [collection] -> Athapaskan */
70   {"apc",       HB_TAG('A','R','A',' ')},       /* North Levantine Arabic -> Arabic */
71   {"apd",       HB_TAG('A','R','A',' ')},       /* Sudanese Arabic -> Arabic */
72   {"apj",       HB_TAG('A','T','H',' ')},       /* Jicarilla Apache -> Athapaskan */
73   {"apk",       HB_TAG('A','T','H',' ')},       /* Kiowa Apache -> Athapaskan */
74   {"apl",       HB_TAG('A','T','H',' ')},       /* Lipan Apache -> Athapaskan */
75   {"apm",       HB_TAG('A','T','H',' ')},       /* Mescalero-Chiricahua Apache -> Athapaskan */
76   {"apw",       HB_TAG('A','T','H',' ')},       /* Western Apache -> Athapaskan */
77   {"ar",        HB_TAG('A','R','A',' ')},       /* Arabic [macrolanguage] */
78   {"arb",       HB_TAG('A','R','A',' ')},       /* Standard Arabic -> Arabic */
79   {"ari",       HB_TAG_NONE            },       /* Arikara != Aari */
80   {"ark",       HB_TAG_NONE            },       /* Arikapú != Rakhine */
81   {"arn",       HB_TAG('M','A','P',' ')},       /* Mapudungun */
82   {"arq",       HB_TAG('A','R','A',' ')},       /* Algerian Arabic -> Arabic */
83   {"ars",       HB_TAG('A','R','A',' ')},       /* Najdi Arabic -> Arabic */
84   {"ary",       HB_TAG('M','O','R',' ')},       /* Moroccan Arabic -> Moroccan */
85   {"ary",       HB_TAG('A','R','A',' ')},       /* Moroccan Arabic -> Arabic */
86   {"arz",       HB_TAG('A','R','A',' ')},       /* Egyptian Arabic -> Arabic */
87   {"as",        HB_TAG('A','S','M',' ')},       /* Assamese */
88 /*{"ast",       HB_TAG('A','S','T',' ')},*/     /* Asturian */
89 /*{"ath",       HB_TAG('A','T','H',' ')},*/     /* Athapascan [collection] -> Athapaskan */
90   {"atj",       HB_TAG('R','C','R',' ')},       /* Atikamekw -> R-Cree */
91   {"atv",       HB_TAG('A','L','T',' ')},       /* Northern Altai -> Altai */
92   {"auj",       HB_TAG('B','B','R',' ')},       /* Awjilah -> Berber */
93   {"auz",       HB_TAG('A','R','A',' ')},       /* Uzbeki Arabic -> Arabic */
94   {"av",        HB_TAG('A','V','R',' ')},       /* Avaric -> Avar */
95   {"avl",       HB_TAG('A','R','A',' ')},       /* Eastern Egyptian Bedawi Arabic -> Arabic */
96 /*{"avn",       HB_TAG('A','V','N',' ')},*/     /* Avatime */
97 /*{"awa",       HB_TAG('A','W','A',' ')},*/     /* Awadhi */
98   {"ay",        HB_TAG('A','Y','M',' ')},       /* Aymara [macrolanguage] */
99   {"ayc",       HB_TAG('A','Y','M',' ')},       /* Southern Aymara -> Aymara */
100   {"ayh",       HB_TAG('A','R','A',' ')},       /* Hadrami Arabic -> Arabic */
101   {"ayl",       HB_TAG('A','R','A',' ')},       /* Libyan Arabic -> Arabic */
102   {"ayn",       HB_TAG('A','R','A',' ')},       /* Sanaani Arabic -> Arabic */
103   {"ayp",       HB_TAG('A','R','A',' ')},       /* North Mesopotamian Arabic -> Arabic */
104   {"ayr",       HB_TAG('A','Y','M',' ')},       /* Central Aymara -> Aymara */
105   {"az",        HB_TAG('A','Z','E',' ')},       /* Azerbaijani [macrolanguage] */
106   {"azb",       HB_TAG('A','Z','B',' ')},       /* South Azerbaijani -> Torki */
107   {"azb",       HB_TAG('A','Z','E',' ')},       /* South Azerbaijani -> Azerbaijani */
108   {"azd",       HB_TAG('N','A','H',' ')},       /* Eastern Durango Nahuatl -> Nahuatl */
109   {"azj",       HB_TAG('A','Z','E',' ')},       /* North Azerbaijani -> Azerbaijani */
110   {"azn",       HB_TAG('N','A','H',' ')},       /* Western Durango Nahuatl -> Nahuatl */
111   {"azz",       HB_TAG('N','A','H',' ')},       /* Highland Puebla Nahuatl -> Nahuatl */
112   {"ba",        HB_TAG('B','S','H',' ')},       /* Bashkir */
113   {"bad",       HB_TAG('B','A','D','0')},       /* Banda [collection] */
114   {"bag",       HB_TAG_NONE            },       /* Tuki != Baghelkhandi */
115   {"bah",       HB_TAG('C','P','P',' ')},       /* Bahamas Creole English -> Creoles */
116   {"bai",       HB_TAG('B','M','L',' ')},       /* Bamileke [collection] */
117   {"bal",       HB_TAG('B','L','I',' ')},       /* Baluchi [macrolanguage] */
118 /*{"ban",       HB_TAG('B','A','N',' ')},*/     /* Balinese */
119 /*{"bar",       HB_TAG('B','A','R',' ')},*/     /* Bavarian */
120   {"bau",       HB_TAG_NONE            },       /* Bada (Nigeria) != Baulé */
121   {"bbc",       HB_TAG('B','B','C',' ')},       /* Batak Toba */
122   {"bbc",       HB_TAG('B','T','K',' ')},       /* Batak Toba -> Batak */
123   {"bbj",       HB_TAG('B','M','L',' ')},       /* Ghomálá' -> Bamileke */
124   {"bbp",       HB_TAG('B','A','D','0')},       /* West Central Banda -> Banda */
125   {"bbr",       HB_TAG_NONE            },       /* Girawa != Berber */
126   {"bbz",       HB_TAG('A','R','A',' ')},       /* Babalia Creole Arabic (retired code) -> Arabic */
127   {"bcc",       HB_TAG('B','L','I',' ')},       /* Southern Balochi -> Baluchi */
128   {"bch",       HB_TAG_NONE            },       /* Bariai != Bench */
129   {"bci",       HB_TAG('B','A','U',' ')},       /* Baoulé -> Baulé */
130   {"bcl",       HB_TAG('B','I','K',' ')},       /* Central Bikol -> Bikol */
131   {"bcq",       HB_TAG('B','C','H',' ')},       /* Bench */
132   {"bcr",       HB_TAG('A','T','H',' ')},       /* Babine -> Athapaskan */
133 /*{"bdy",       HB_TAG('B','D','Y',' ')},*/     /* Bandjalang */
134   {"be",        HB_TAG('B','E','L',' ')},       /* Belarusian -> Belarussian */
135   {"bea",       HB_TAG('A','T','H',' ')},       /* Beaver -> Athapaskan */
136   {"beb",       HB_TAG('B','T','I',' ')},       /* Bebele -> Beti */
137 /*{"bem",       HB_TAG('B','E','M',' ')},*/     /* Bemba (Zambia) */
138   {"ber",       HB_TAG('B','B','R',' ')},       /* Berber [collection] */
139   {"bew",       HB_TAG('C','P','P',' ')},       /* Betawi -> Creoles */
140   {"bfl",       HB_TAG('B','A','D','0')},       /* Banda-Ndélé -> Banda */
141   {"bfq",       HB_TAG('B','A','D',' ')},       /* Badaga */
142   {"bft",       HB_TAG('B','L','T',' ')},       /* Balti */
143   {"bfu",       HB_TAG('L','A','H',' ')},       /* Gahri -> Lahuli */
144   {"bfy",       HB_TAG('B','A','G',' ')},       /* Bagheli -> Baghelkhandi */
145   {"bg",        HB_TAG('B','G','R',' ')},       /* Bulgarian */
146 /*{"bgc",       HB_TAG('B','G','C',' ')},*/     /* Haryanvi */
147   {"bgn",       HB_TAG('B','L','I',' ')},       /* Western Balochi -> Baluchi */
148   {"bgp",       HB_TAG('B','L','I',' ')},       /* Eastern Balochi -> Baluchi */
149   {"bgq",       HB_TAG('B','G','Q',' ')},       /* Bagri */
150   {"bgq",       HB_TAG('R','A','J',' ')},       /* Bagri -> Rajasthani */
151   {"bgr",       HB_TAG('Q','I','N',' ')},       /* Bawm Chin -> Chin */
152   {"bhb",       HB_TAG('B','H','I',' ')},       /* Bhili */
153 /*{"bhi",       HB_TAG('B','H','I',' ')},*/     /* Bhilali -> Bhili */
154   {"bhk",       HB_TAG('B','I','K',' ')},       /* Albay Bicolano (retired code) -> Bikol */
155 /*{"bho",       HB_TAG('B','H','O',' ')},*/     /* Bhojpuri */
156   {"bhr",       HB_TAG('M','L','G',' ')},       /* Bara Malagasy -> Malagasy */
157   {"bi",        HB_TAG('B','I','S',' ')},       /* Bislama */
158   {"bi",        HB_TAG('C','P','P',' ')},       /* Bislama -> Creoles */
159 /*{"bik",       HB_TAG('B','I','K',' ')},*/     /* Bikol [macrolanguage] */
160   {"bil",       HB_TAG_NONE            },       /* Bile != Bilen */
161   {"bin",       HB_TAG('E','D','O',' ')},       /* Edo */
162   {"biu",       HB_TAG('Q','I','N',' ')},       /* Biete -> Chin */
163 /*{"bjj",       HB_TAG('B','J','J',' ')},*/     /* Kanauji */
164   {"bjn",       HB_TAG('M','L','Y',' ')},       /* Banjar -> Malay */
165   {"bjo",       HB_TAG('B','A','D','0')},       /* Mid-Southern Banda -> Banda */
166   {"bjq",       HB_TAG('M','L','G',' ')},       /* Southern Betsimisaraka Malagasy (retired code) -> Malagasy */
167   {"bjs",       HB_TAG('C','P','P',' ')},       /* Bajan -> Creoles */
168   {"bjt",       HB_TAG('B','L','N',' ')},       /* Balanta-Ganja -> Balante */
169   {"bkf",       HB_TAG_NONE            },       /* Beeke != Blackfoot */
170   {"bko",       HB_TAG('B','M','L',' ')},       /* Kwa' -> Bamileke */
171   {"bla",       HB_TAG('B','K','F',' ')},       /* Siksika -> Blackfoot */
172   {"ble",       HB_TAG('B','L','N',' ')},       /* Balanta-Kentohe -> Balante */
173   {"blg",       HB_TAG('I','B','A',' ')},       /* Balau (retired code) -> Iban */
174   {"bli",       HB_TAG_NONE            },       /* Bolia != Baluchi */
175   {"blk",       HB_TAG('B','L','K',' ')},       /* Pa’o Karen */
176   {"blk",       HB_TAG('K','R','N',' ')},       /* Pa'o Karen -> Karen */
177   {"bln",       HB_TAG('B','I','K',' ')},       /* Southern Catanduanes Bikol -> Bikol */
178   {"blt",       HB_TAG_NONE            },       /* Tai Dam != Balti */
179   {"bm",        HB_TAG('B','M','B',' ')},       /* Bambara (Bamanankan) */
180   {"bmb",       HB_TAG_NONE            },       /* Bembe != Bambara (Bamanankan) */
181   {"bml",       HB_TAG_NONE            },       /* Bomboli != Bamileke */
182   {"bmm",       HB_TAG('M','L','G',' ')},       /* Northern Betsimisaraka Malagasy -> Malagasy */
183   {"bn",        HB_TAG('B','E','N',' ')},       /* Bengali */
184   {"bo",        HB_TAG('T','I','B',' ')},       /* Tibetan */
185   {"bpd",       HB_TAG('B','A','D','0')},       /* Banda-Banda -> Banda */
186   {"bpl",       HB_TAG('C','P','P',' ')},       /* Broome Pearling Lugger Pidgin -> Creoles */
187   {"bpq",       HB_TAG('C','P','P',' ')},       /* Banda Malay -> Creoles */
188 /*{"bpy",       HB_TAG('B','P','Y',' ')},*/     /* Bishnupriya -> Bishnupriya Manipuri */
189   {"bqi",       HB_TAG('L','R','C',' ')},       /* Bakhtiari -> Luri */
190   {"bqk",       HB_TAG('B','A','D','0')},       /* Banda-Mbrès -> Banda */
191   {"br",        HB_TAG('B','R','E',' ')},       /* Breton */
192   {"bra",       HB_TAG('B','R','I',' ')},       /* Braj -> Braj Bhasha */
193   {"brc",       HB_TAG('C','P','P',' ')},       /* Berbice Creole Dutch -> Creoles */
194 /*{"brh",       HB_TAG('B','R','H',' ')},*/     /* Brahui */
195   {"bri",       HB_TAG_NONE            },       /* Mokpwe != Braj Bhasha */
196   {"brm",       HB_TAG_NONE            },       /* Barambu != Burmese */
197 /*{"brx",       HB_TAG('B','R','X',' ')},*/     /* Bodo (India) */
198   {"bs",        HB_TAG('B','O','S',' ')},       /* Bosnian */
199   {"bsh",       HB_TAG_NONE            },       /* Kati != Bashkir */
200 /*{"bsk",       HB_TAG('B','S','K',' ')},*/     /* Burushaski */
201   {"btb",       HB_TAG('B','T','I',' ')},       /* Beti (Cameroon) (retired code) */
202   {"btd",       HB_TAG('B','T','D',' ')},       /* Batak Dairi (Pakpak) */
203   {"btd",       HB_TAG('B','T','K',' ')},       /* Batak Dairi -> Batak */
204   {"bti",       HB_TAG_NONE            },       /* Burate != Beti */
205   {"btj",       HB_TAG('M','L','Y',' ')},       /* Bacanese Malay -> Malay */
206 /*{"btk",       HB_TAG('B','T','K',' ')},*/     /* Batak [collection] */
207   {"btm",       HB_TAG('B','T','M',' ')},       /* Batak Mandailing */
208   {"btm",       HB_TAG('B','T','K',' ')},       /* Batak Mandailing -> Batak */
209   {"bto",       HB_TAG('B','I','K',' ')},       /* Rinconada Bikol -> Bikol */
210   {"bts",       HB_TAG('B','T','S',' ')},       /* Batak Simalungun */
211   {"bts",       HB_TAG('B','T','K',' ')},       /* Batak Simalungun -> Batak */
212   {"btx",       HB_TAG('B','T','X',' ')},       /* Batak Karo */
213   {"btx",       HB_TAG('B','T','K',' ')},       /* Batak Karo -> Batak */
214   {"btz",       HB_TAG('B','T','Z',' ')},       /* Batak Alas-Kluet */
215   {"btz",       HB_TAG('B','T','K',' ')},       /* Batak Alas-Kluet -> Batak */
216 /*{"bug",       HB_TAG('B','U','G',' ')},*/     /* Buginese -> Bugis */
217   {"bum",       HB_TAG('B','T','I',' ')},       /* Bulu (Cameroon) -> Beti */
218   {"bve",       HB_TAG('M','L','Y',' ')},       /* Berau Malay -> Malay */
219   {"bvu",       HB_TAG('M','L','Y',' ')},       /* Bukit Malay -> Malay */
220   {"bwe",       HB_TAG('K','R','N',' ')},       /* Bwe Karen -> Karen */
221   {"bxk",       HB_TAG('L','U','H',' ')},       /* Bukusu -> Luyia */
222   {"bxo",       HB_TAG('C','P','P',' ')},       /* Barikanchi -> Creoles */
223   {"bxp",       HB_TAG('B','T','I',' ')},       /* Bebil -> Beti */
224   {"bxr",       HB_TAG('R','B','U',' ')},       /* Russia Buriat -> Russian Buriat */
225   {"byn",       HB_TAG('B','I','L',' ')},       /* Bilin -> Bilen */
226   {"byv",       HB_TAG('B','Y','V',' ')},       /* Medumba */
227   {"byv",       HB_TAG('B','M','L',' ')},       /* Medumba -> Bamileke */
228   {"bzc",       HB_TAG('M','L','G',' ')},       /* Southern Betsimisaraka Malagasy -> Malagasy */
229   {"bzj",       HB_TAG('C','P','P',' ')},       /* Belize Kriol English -> Creoles */
230   {"bzk",       HB_TAG('C','P','P',' ')},       /* Nicaragua Creole English -> Creoles */
231   {"ca",        HB_TAG('C','A','T',' ')},       /* Catalan */
232   {"caa",       HB_TAG('M','Y','N',' ')},       /* Chortí -> Mayan */
233   {"cac",       HB_TAG('M','Y','N',' ')},       /* Chuj -> Mayan */
234   {"caf",       HB_TAG('C','R','R',' ')},       /* Southern Carrier -> Carrier */
235   {"caf",       HB_TAG('A','T','H',' ')},       /* Southern Carrier -> Athapaskan */
236   {"cak",       HB_TAG('C','A','K',' ')},       /* Kaqchikel */
237   {"cak",       HB_TAG('M','Y','N',' ')},       /* Kaqchikel -> Mayan */
238   {"cbk",       HB_TAG('C','B','K',' ')},       /* Chavacano -> Zamboanga Chavacano */
239   {"cbk",       HB_TAG('C','P','P',' ')},       /* Chavacano -> Creoles */
240   {"cbl",       HB_TAG('Q','I','N',' ')},       /* Bualkhaw Chin -> Chin */
241   {"ccl",       HB_TAG('C','P','P',' ')},       /* Cutchi-Swahili -> Creoles */
242   {"ccm",       HB_TAG('C','P','P',' ')},       /* Malaccan Creole Malay -> Creoles */
243   {"cco",       HB_TAG('C','C','H','N')},       /* Comaltepec Chinantec -> Chinantec */
244   {"ccq",       HB_TAG('A','R','K',' ')},       /* Chaungtha (retired code) -> Rakhine */
245   {"cdo",       HB_TAG('Z','H','S',' ')},       /* Min Dong Chinese -> Chinese, Simplified */
246   {"ce",        HB_TAG('C','H','E',' ')},       /* Chechen */
247 /*{"ceb",       HB_TAG('C','E','B',' ')},*/     /* Cebuano */
248   {"cek",       HB_TAG('Q','I','N',' ')},       /* Eastern Khumi Chin -> Chin */
249   {"cey",       HB_TAG('Q','I','N',' ')},       /* Ekai Chin -> Chin */
250   {"cfm",       HB_TAG('H','A','L',' ')},       /* Halam (Falam Chin) */
251   {"cfm",       HB_TAG('Q','I','N',' ')},       /* Falam Chin -> Chin */
252 /*{"cgg",       HB_TAG('C','G','G',' ')},*/     /* Chiga */
253   {"ch",        HB_TAG('C','H','A',' ')},       /* Chamorro */
254   {"chf",       HB_TAG('M','Y','N',' ')},       /* Tabasco Chontal -> Mayan */
255   {"chg",       HB_TAG_NONE            },       /* Chagatai != Chaha Gurage */
256   {"chh",       HB_TAG_NONE            },       /* Chinook != Chattisgarhi */
257   {"chj",       HB_TAG('C','C','H','N')},       /* Ojitlán Chinantec -> Chinantec */
258   {"chk",       HB_TAG('C','H','K','0')},       /* Chuukese */
259   {"chm",       HB_TAG('H','M','A',' ')},       /* Mari (Russia) [macrolanguage] -> High Mari */
260   {"chm",       HB_TAG('L','M','A',' ')},       /* Mari (Russia) [macrolanguage] -> Low Mari */
261   {"chn",       HB_TAG('C','P','P',' ')},       /* Chinook jargon -> Creoles */
262 /*{"cho",       HB_TAG('C','H','O',' ')},*/     /* Choctaw */
263   {"chp",       HB_TAG('C','H','P',' ')},       /* Chipewyan */
264   {"chp",       HB_TAG('S','A','Y',' ')},       /* Chipewyan -> Sayisi */
265   {"chp",       HB_TAG('A','T','H',' ')},       /* Chipewyan -> Athapaskan */
266   {"chq",       HB_TAG('C','C','H','N')},       /* Quiotepec Chinantec -> Chinantec */
267 /*{"chr",       HB_TAG('C','H','R',' ')},*/     /* Cherokee */
268 /*{"chy",       HB_TAG('C','H','Y',' ')},*/     /* Cheyenne */
269   {"chz",       HB_TAG('C','C','H','N')},       /* Ozumacín Chinantec -> Chinantec */
270   {"ciw",       HB_TAG('O','J','B',' ')},       /* Chippewa -> Ojibway */
271 /*{"cja",       HB_TAG('C','J','A',' ')},*/     /* Western Cham */
272 /*{"cjm",       HB_TAG('C','J','M',' ')},*/     /* Eastern Cham */
273   {"cjy",       HB_TAG('Z','H','S',' ')},       /* Jinyu Chinese -> Chinese, Simplified */
274   {"cka",       HB_TAG('Q','I','N',' ')},       /* Khumi Awa Chin (retired code) -> Chin */
275   {"ckb",       HB_TAG('K','U','R',' ')},       /* Central Kurdish -> Kurdish */
276   {"ckn",       HB_TAG('Q','I','N',' ')},       /* Kaang Chin -> Chin */
277   {"cks",       HB_TAG('C','P','P',' ')},       /* Tayo -> Creoles */
278   {"ckt",       HB_TAG('C','H','K',' ')},       /* Chukot -> Chukchi */
279   {"ckz",       HB_TAG('M','Y','N',' ')},       /* Cakchiquel-Quiché Mixed Language -> Mayan */
280   {"clc",       HB_TAG('A','T','H',' ')},       /* Chilcotin -> Athapaskan */
281   {"cld",       HB_TAG('S','Y','R',' ')},       /* Chaldean Neo-Aramaic -> Syriac */
282   {"cle",       HB_TAG('C','C','H','N')},       /* Lealao Chinantec -> Chinantec */
283   {"clj",       HB_TAG('Q','I','N',' ')},       /* Laitu Chin -> Chin */
284   {"clt",       HB_TAG('Q','I','N',' ')},       /* Lautu Chin -> Chin */
285   {"cmn",       HB_TAG('Z','H','S',' ')},       /* Mandarin Chinese -> Chinese, Simplified */
286   {"cmr",       HB_TAG('Q','I','N',' ')},       /* Mro-Khimi Chin -> Chin */
287   {"cnb",       HB_TAG('Q','I','N',' ')},       /* Chinbon Chin -> Chin */
288   {"cnh",       HB_TAG('Q','I','N',' ')},       /* Hakha Chin -> Chin */
289   {"cnk",       HB_TAG('Q','I','N',' ')},       /* Khumi Chin -> Chin */
290   {"cnl",       HB_TAG('C','C','H','N')},       /* Lalana Chinantec -> Chinantec */
291   {"cnp",       HB_TAG('Z','H','S',' ')},       /* Northern Ping Chinese -> Chinese, Simplified */
292   {"cnr",       HB_TAG('S','R','B',' ')},       /* Montenegrin -> Serbian */
293   {"cnt",       HB_TAG('C','C','H','N')},       /* Tepetotutla Chinantec -> Chinantec */
294   {"cnu",       HB_TAG('B','B','R',' ')},       /* Chenoua -> Berber */
295   {"cnw",       HB_TAG('Q','I','N',' ')},       /* Ngawn Chin -> Chin */
296   {"co",        HB_TAG('C','O','S',' ')},       /* Corsican */
297   {"coa",       HB_TAG('M','L','Y',' ')},       /* Cocos Islands Malay -> Malay */
298   {"cob",       HB_TAG('M','Y','N',' ')},       /* Chicomuceltec -> Mayan */
299 /*{"cop",       HB_TAG('C','O','P',' ')},*/     /* Coptic */
300   {"coq",       HB_TAG('A','T','H',' ')},       /* Coquille -> Athapaskan */
301   {"cpa",       HB_TAG('C','C','H','N')},       /* Palantla Chinantec -> Chinantec */
302   {"cpe",       HB_TAG('C','P','P',' ')},       /* English-based creoles and pidgins [collection] -> Creoles */
303   {"cpf",       HB_TAG('C','P','P',' ')},       /* French-based creoles and pidgins [collection] -> Creoles */
304   {"cpi",       HB_TAG('C','P','P',' ')},       /* Chinese Pidgin English -> Creoles */
305 /*{"cpp",       HB_TAG('C','P','P',' ')},*/     /* Portuguese-based creoles and pidgins [collection] -> Creoles */
306   {"cpx",       HB_TAG('Z','H','S',' ')},       /* Pu-Xian Chinese -> Chinese, Simplified */
307   {"cqd",       HB_TAG('H','M','N',' ')},       /* Chuanqiandian Cluster Miao -> Hmong */
308   {"cqu",       HB_TAG('Q','U','H',' ')},       /* Chilean Quechua (retired code) -> Quechua (Bolivia) */
309   {"cqu",       HB_TAG('Q','U','Z',' ')},       /* Chilean Quechua (retired code) -> Quechua */
310   {"cr",        HB_TAG('C','R','E',' ')},       /* Cree [macrolanguage] */
311   {"crh",       HB_TAG('C','R','T',' ')},       /* Crimean Tatar */
312   {"cri",       HB_TAG('C','P','P',' ')},       /* Sãotomense -> Creoles */
313   {"crj",       HB_TAG('E','C','R',' ')},       /* Southern East Cree -> Eastern Cree */
314   {"crj",       HB_TAG('Y','C','R',' ')},       /* Southern East Cree -> Y-Cree */
315   {"crj",       HB_TAG('C','R','E',' ')},       /* Southern East Cree -> Cree */
316   {"crk",       HB_TAG('W','C','R',' ')},       /* Plains Cree -> West-Cree */
317   {"crk",       HB_TAG('Y','C','R',' ')},       /* Plains Cree -> Y-Cree */
318   {"crk",       HB_TAG('C','R','E',' ')},       /* Plains Cree -> Cree */
319   {"crl",       HB_TAG('E','C','R',' ')},       /* Northern East Cree -> Eastern Cree */
320   {"crl",       HB_TAG('Y','C','R',' ')},       /* Northern East Cree -> Y-Cree */
321   {"crl",       HB_TAG('C','R','E',' ')},       /* Northern East Cree -> Cree */
322   {"crm",       HB_TAG('M','C','R',' ')},       /* Moose Cree */
323   {"crm",       HB_TAG('L','C','R',' ')},       /* Moose Cree -> L-Cree */
324   {"crm",       HB_TAG('C','R','E',' ')},       /* Moose Cree -> Cree */
325   {"crp",       HB_TAG('C','P','P',' ')},       /* Creoles and pidgins [collection] -> Creoles */
326   {"crr",       HB_TAG_NONE            },       /* Carolina Algonquian != Carrier */
327   {"crs",       HB_TAG('C','P','P',' ')},       /* Seselwa Creole French -> Creoles */
328   {"crt",       HB_TAG_NONE            },       /* Iyojwa'ja Chorote != Crimean Tatar */
329   {"crx",       HB_TAG('C','R','R',' ')},       /* Carrier */
330   {"crx",       HB_TAG('A','T','H',' ')},       /* Carrier -> Athapaskan */
331   {"cs",        HB_TAG('C','S','Y',' ')},       /* Czech */
332   {"csa",       HB_TAG('C','C','H','N')},       /* Chiltepec Chinantec -> Chinantec */
333 /*{"csb",       HB_TAG('C','S','B',' ')},*/     /* Kashubian */
334   {"csh",       HB_TAG('Q','I','N',' ')},       /* Asho Chin -> Chin */
335   {"csj",       HB_TAG('Q','I','N',' ')},       /* Songlai Chin -> Chin */
336   {"csl",       HB_TAG_NONE            },       /* Chinese Sign Language != Church Slavonic */
337   {"cso",       HB_TAG('C','C','H','N')},       /* Sochiapam Chinantec -> Chinantec */
338   {"csp",       HB_TAG('Z','H','S',' ')},       /* Southern Ping Chinese -> Chinese, Simplified */
339   {"csv",       HB_TAG('Q','I','N',' ')},       /* Sumtu Chin -> Chin */
340   {"csw",       HB_TAG('N','C','R',' ')},       /* Swampy Cree -> N-Cree */
341   {"csw",       HB_TAG('N','H','C',' ')},       /* Swampy Cree -> Norway House Cree */
342   {"csw",       HB_TAG('C','R','E',' ')},       /* Swampy Cree -> Cree */
343   {"csy",       HB_TAG('Q','I','N',' ')},       /* Siyin Chin -> Chin */
344   {"ctc",       HB_TAG('A','T','H',' ')},       /* Chetco -> Athapaskan */
345   {"ctd",       HB_TAG('Q','I','N',' ')},       /* Tedim Chin -> Chin */
346   {"cte",       HB_TAG('C','C','H','N')},       /* Tepinapa Chinantec -> Chinantec */
347 /*{"ctg",       HB_TAG('C','T','G',' ')},*/     /* Chittagonian */
348   {"cth",       HB_TAG('Q','I','N',' ')},       /* Thaiphum Chin -> Chin */
349   {"ctl",       HB_TAG('C','C','H','N')},       /* Tlacoatzintepec Chinantec -> Chinantec */
350   {"cts",       HB_TAG('B','I','K',' ')},       /* Northern Catanduanes Bikol -> Bikol */
351 /*{"ctt",       HB_TAG('C','T','T',' ')},*/     /* Wayanad Chetti */
352   {"ctu",       HB_TAG('M','Y','N',' ')},       /* Chol -> Mayan */
353   {"cu",        HB_TAG('C','S','L',' ')},       /* Church Slavonic */
354   {"cuc",       HB_TAG('C','C','H','N')},       /* Usila Chinantec -> Chinantec */
355 /*{"cuk",       HB_TAG('C','U','K',' ')},*/     /* San Blas Kuna */
356   {"cv",        HB_TAG('C','H','U',' ')},       /* Chuvash */
357   {"cvn",       HB_TAG('C','C','H','N')},       /* Valle Nacional Chinantec -> Chinantec */
358   {"cwd",       HB_TAG('D','C','R',' ')},       /* Woods Cree */
359   {"cwd",       HB_TAG('T','C','R',' ')},       /* Woods Cree -> TH-Cree */
360   {"cwd",       HB_TAG('C','R','E',' ')},       /* Woods Cree -> Cree */
361   {"cy",        HB_TAG('W','E','L',' ')},       /* Welsh */
362   {"czh",       HB_TAG('Z','H','S',' ')},       /* Huizhou Chinese -> Chinese, Simplified */
363   {"czo",       HB_TAG('Z','H','S',' ')},       /* Min Zhong Chinese -> Chinese, Simplified */
364   {"czt",       HB_TAG('Q','I','N',' ')},       /* Zotung Chin -> Chin */
365   {"da",        HB_TAG('D','A','N',' ')},       /* Danish */
366 /*{"dag",       HB_TAG('D','A','G',' ')},*/     /* Dagbani */
367   {"dao",       HB_TAG('Q','I','N',' ')},       /* Daai Chin -> Chin */
368   {"dap",       HB_TAG('N','I','S',' ')},       /* Nisi (India) (retired code) */
369 /*{"dar",       HB_TAG('D','A','R',' ')},*/     /* Dargwa */
370 /*{"dax",       HB_TAG('D','A','X',' ')},*/     /* Dayi */
371   {"dcr",       HB_TAG('C','P','P',' ')},       /* Negerhollands -> Creoles */
372   {"de",        HB_TAG('D','E','U',' ')},       /* German */
373   {"den",       HB_TAG('S','L','A',' ')},       /* Slave (Athapascan) [macrolanguage] -> Slavey */
374   {"den",       HB_TAG('A','T','H',' ')},       /* Slave (Athapascan) [macrolanguage] -> Athapaskan */
375   {"dep",       HB_TAG('C','P','P',' ')},       /* Pidgin Delaware -> Creoles */
376   {"dgo",       HB_TAG('D','G','O',' ')},       /* Dogri (individual language) */
377   {"dgo",       HB_TAG('D','G','R',' ')},       /* Dogri (macrolanguage) */
378   {"dgr",       HB_TAG('A','T','H',' ')},       /* Dogrib -> Athapaskan */
379   {"dhd",       HB_TAG('M','A','W',' ')},       /* Dhundari -> Marwari */
380 /*{"dhg",       HB_TAG('D','H','G',' ')},*/     /* Dhangu */
381   {"dhv",       HB_TAG_NONE            },       /* Dehu != Divehi (Dhivehi, Maldivian) (deprecated) */
382   {"dib",       HB_TAG('D','N','K',' ')},       /* South Central Dinka -> Dinka */
383   {"dik",       HB_TAG('D','N','K',' ')},       /* Southwestern Dinka -> Dinka */
384   {"din",       HB_TAG('D','N','K',' ')},       /* Dinka [macrolanguage] */
385   {"dip",       HB_TAG('D','N','K',' ')},       /* Northeastern Dinka -> Dinka */
386   {"diq",       HB_TAG('D','I','Q',' ')},       /* Dimli */
387   {"diq",       HB_TAG('Z','Z','A',' ')},       /* Dimli -> Zazaki */
388   {"diw",       HB_TAG('D','N','K',' ')},       /* Northwestern Dinka -> Dinka */
389   {"dje",       HB_TAG('D','J','R',' ')},       /* Zarma */
390   {"djk",       HB_TAG('C','P','P',' ')},       /* Eastern Maroon Creole -> Creoles */
391   {"djr",       HB_TAG('D','J','R','0')},       /* Djambarrpuyngu */
392   {"dks",       HB_TAG('D','N','K',' ')},       /* Southeastern Dinka -> Dinka */
393   {"dng",       HB_TAG('D','U','N',' ')},       /* Dungan */
394 /*{"dnj",       HB_TAG('D','N','J',' ')},*/     /* Dan */
395   {"dnk",       HB_TAG_NONE            },       /* Dengka != Dinka */
396   {"doi",       HB_TAG('D','G','R',' ')},       /* Dogri (macrolanguage) [macrolanguage] */
397   {"drh",       HB_TAG('M','N','G',' ')},       /* Darkhat (retired code) -> Mongolian */
398   {"dri",       HB_TAG_NONE            },       /* C'Lela != Dari */
399   {"drw",       HB_TAG('D','R','I',' ')},       /* Darwazi (retired code) -> Dari */
400   {"drw",       HB_TAG('F','A','R',' ')},       /* Darwazi (retired code) -> Persian */
401   {"dsb",       HB_TAG('L','S','B',' ')},       /* Lower Sorbian */
402   {"dty",       HB_TAG('N','E','P',' ')},       /* Dotyali -> Nepali */
403 /*{"duj",       HB_TAG('D','U','J',' ')},*/     /* Dhuwal (retired code) */
404   {"dun",       HB_TAG_NONE            },       /* Dusun Deyah != Dungan */
405   {"dup",       HB_TAG('M','L','Y',' ')},       /* Duano -> Malay */
406   {"dv",        HB_TAG('D','I','V',' ')},       /* Divehi (Dhivehi, Maldivian) */
407   {"dv",        HB_TAG('D','H','V',' ')},       /* Divehi (Dhivehi, Maldivian) (deprecated) */
408   {"dwk",       HB_TAG('K','U','I',' ')},       /* Dawik Kui -> Kui */
409   {"dwu",       HB_TAG('D','U','J',' ')},       /* Dhuwal */
410   {"dwy",       HB_TAG('D','U','J',' ')},       /* Dhuwaya -> Dhuwal */
411   {"dyu",       HB_TAG('J','U','L',' ')},       /* Dyula -> Jula */
412   {"dz",        HB_TAG('D','Z','N',' ')},       /* Dzongkha */
413   {"dzn",       HB_TAG_NONE            },       /* Dzando != Dzongkha */
414   {"ecr",       HB_TAG_NONE            },       /* Eteocretan != Eastern Cree */
415   {"ee",        HB_TAG('E','W','E',' ')},       /* Ewe */
416 /*{"efi",       HB_TAG('E','F','I',' ')},*/     /* Efik */
417   {"ekk",       HB_TAG('E','T','I',' ')},       /* Standard Estonian -> Estonian */
418   {"eky",       HB_TAG('K','R','N',' ')},       /* Eastern Kayah -> Karen */
419   {"el",        HB_TAG('E','L','L',' ')},       /* Modern Greek (1453-) -> Greek */
420   {"emk",       HB_TAG('E','M','K',' ')},       /* Eastern Maninkakan */
421   {"emk",       HB_TAG('M','N','K',' ')},       /* Eastern Maninkakan -> Maninka */
422   {"emy",       HB_TAG('M','Y','N',' ')},       /* Epigraphic Mayan -> Mayan */
423   {"en",        HB_TAG('E','N','G',' ')},       /* English */
424   {"enb",       HB_TAG('K','A','L',' ')},       /* Markweeta -> Kalenjin */
425   {"enf",       HB_TAG('F','N','E',' ')},       /* Forest Enets */
426   {"enh",       HB_TAG('T','N','E',' ')},       /* Tundra Enets */
427   {"eo",        HB_TAG('N','T','O',' ')},       /* Esperanto */
428   {"es",        HB_TAG('E','S','P',' ')},       /* Spanish */
429   {"esg",       HB_TAG('G','O','N',' ')},       /* Aheri Gondi -> Gondi */
430   {"esi",       HB_TAG('I','P','K',' ')},       /* North Alaskan Inupiatun -> Inupiat */
431   {"esk",       HB_TAG('I','P','K',' ')},       /* Northwest Alaska Inupiatun -> Inupiat */
432 /*{"esu",       HB_TAG('E','S','U',' ')},*/     /* Central Yupik */
433   {"et",        HB_TAG('E','T','I',' ')},       /* Estonian [macrolanguage] */
434   {"eto",       HB_TAG('B','T','I',' ')},       /* Eton (Cameroon) -> Beti */
435   {"eu",        HB_TAG('E','U','Q',' ')},       /* Basque */
436   {"euq",       HB_TAG_NONE            },       /* Basque [collection] != Basque */
437   {"eve",       HB_TAG('E','V','N',' ')},       /* Even */
438   {"evn",       HB_TAG('E','V','K',' ')},       /* Evenki */
439   {"ewo",       HB_TAG('B','T','I',' ')},       /* Ewondo -> Beti */
440   {"eyo",       HB_TAG('K','A','L',' ')},       /* Keiyo -> Kalenjin */
441   {"fa",        HB_TAG('F','A','R',' ')},       /* Persian [macrolanguage] */
442   {"fab",       HB_TAG('C','P','P',' ')},       /* Fa d'Ambu -> Creoles */
443   {"fan",       HB_TAG('F','A','N','0')},       /* Fang (Equatorial Guinea) */
444   {"fan",       HB_TAG('B','T','I',' ')},       /* Fang (Equatorial Guinea) -> Beti */
445   {"far",       HB_TAG_NONE            },       /* Fataleka != Persian */
446   {"fat",       HB_TAG('F','A','T',' ')},       /* Fanti */
447   {"fat",       HB_TAG('A','K','A',' ')},       /* Fanti -> Akan */
448   {"fbl",       HB_TAG('B','I','K',' ')},       /* West Albay Bikol -> Bikol */
449   {"ff",        HB_TAG('F','U','L',' ')},       /* Fulah [macrolanguage] */
450   {"ffm",       HB_TAG('F','U','L',' ')},       /* Maasina Fulfulde -> Fulah */
451   {"fi",        HB_TAG('F','I','N',' ')},       /* Finnish */
452   {"fil",       HB_TAG('P','I','L',' ')},       /* Filipino */
453   {"fj",        HB_TAG('F','J','I',' ')},       /* Fijian */
454   {"flm",       HB_TAG('H','A','L',' ')},       /* Halam (Falam Chin) (retired code) */
455   {"flm",       HB_TAG('Q','I','N',' ')},       /* Falam Chin (retired code) -> Chin */
456   {"fmp",       HB_TAG('F','M','P',' ')},       /* Fe’fe’ */
457   {"fmp",       HB_TAG('B','M','L',' ')},       /* Fe'fe' -> Bamileke */
458   {"fng",       HB_TAG('C','P','P',' ')},       /* Fanagalo -> Creoles */
459   {"fo",        HB_TAG('F','O','S',' ')},       /* Faroese */
460 /*{"fon",       HB_TAG('F','O','N',' ')},*/     /* Fon */
461   {"fos",       HB_TAG_NONE            },       /* Siraya != Faroese */
462   {"fpe",       HB_TAG('C','P','P',' ')},       /* Fernando Po Creole English -> Creoles */
463   {"fr",        HB_TAG('F','R','A',' ')},       /* French */
464 /*{"frc",       HB_TAG('F','R','C',' ')},*/     /* Cajun French */
465 /*{"frp",       HB_TAG('F','R','P',' ')},*/     /* Arpitan */
466   {"fub",       HB_TAG('F','U','L',' ')},       /* Adamawa Fulfulde -> Fulah */
467   {"fuc",       HB_TAG('F','U','L',' ')},       /* Pulaar -> Fulah */
468   {"fue",       HB_TAG('F','U','L',' ')},       /* Borgu Fulfulde -> Fulah */
469   {"fuf",       HB_TAG('F','T','A',' ')},       /* Pular -> Futa */
470   {"fuf",       HB_TAG('F','U','L',' ')},       /* Pular -> Fulah */
471   {"fuh",       HB_TAG('F','U','L',' ')},       /* Western Niger Fulfulde -> Fulah */
472   {"fui",       HB_TAG('F','U','L',' ')},       /* Bagirmi Fulfulde -> Fulah */
473   {"fuq",       HB_TAG('F','U','L',' ')},       /* Central-Eastern Niger Fulfulde -> Fulah */
474   {"fur",       HB_TAG('F','R','L',' ')},       /* Friulian */
475   {"fuv",       HB_TAG('F','U','V',' ')},       /* Nigerian Fulfulde */
476   {"fuv",       HB_TAG('F','U','L',' ')},       /* Nigerian Fulfulde -> Fulah */
477   {"fy",        HB_TAG('F','R','I',' ')},       /* Western Frisian -> Frisian */
478   {"ga",        HB_TAG('I','R','I',' ')},       /* Irish */
479   {"gaa",       HB_TAG('G','A','D',' ')},       /* Ga */
480   {"gac",       HB_TAG('C','P','P',' ')},       /* Mixed Great Andamanese -> Creoles */
481   {"gad",       HB_TAG_NONE            },       /* Gaddang != Ga */
482   {"gae",       HB_TAG_NONE            },       /* Guarequena != Scottish Gaelic (Gaelic) */
483 /*{"gag",       HB_TAG('G','A','G',' ')},*/     /* Gagauz */
484   {"gal",       HB_TAG_NONE            },       /* Galolen != Galician */
485   {"gan",       HB_TAG('Z','H','S',' ')},       /* Gan Chinese -> Chinese, Simplified */
486   {"gar",       HB_TAG_NONE            },       /* Galeya != Garshuni */
487   {"gaw",       HB_TAG_NONE            },       /* Nobonob != Garhwali */
488   {"gax",       HB_TAG('O','R','O',' ')},       /* Borana-Arsi-Guji Oromo -> Oromo */
489   {"gaz",       HB_TAG('O','R','O',' ')},       /* West Central Oromo -> Oromo */
490   {"gbm",       HB_TAG('G','A','W',' ')},       /* Garhwali */
491   {"gce",       HB_TAG('A','T','H',' ')},       /* Galice -> Athapaskan */
492   {"gcf",       HB_TAG('C','P','P',' ')},       /* Guadeloupean Creole French -> Creoles */
493   {"gcl",       HB_TAG('C','P','P',' ')},       /* Grenadian Creole English -> Creoles */
494   {"gcr",       HB_TAG('C','P','P',' ')},       /* Guianese Creole French -> Creoles */
495   {"gd",        HB_TAG('G','A','E',' ')},       /* Scottish Gaelic (Gaelic) */
496   {"gda",       HB_TAG('R','A','J',' ')},       /* Gade Lohar -> Rajasthani */
497 /*{"gez",       HB_TAG('G','E','Z',' ')},*/     /* Geez */
498   {"ggo",       HB_TAG('G','O','N',' ')},       /* Southern Gondi (retired code) -> Gondi */
499   {"gha",       HB_TAG('B','B','R',' ')},       /* Ghadamès -> Berber */
500   {"ghk",       HB_TAG('K','R','N',' ')},       /* Geko Karen -> Karen */
501   {"gho",       HB_TAG('B','B','R',' ')},       /* Ghomara -> Berber */
502   {"gib",       HB_TAG('C','P','P',' ')},       /* Gibanawa -> Creoles */
503 /*{"gih",       HB_TAG('G','I','H',' ')},*/     /* Githabul */
504   {"gil",       HB_TAG('G','I','L','0')},       /* Kiribati (Gilbertese) */
505   {"gju",       HB_TAG('R','A','J',' ')},       /* Gujari -> Rajasthani */
506   {"gkp",       HB_TAG('G','K','P',' ')},       /* Guinea Kpelle -> Kpelle (Guinea) */
507   {"gkp",       HB_TAG('K','P','L',' ')},       /* Guinea Kpelle -> Kpelle */
508   {"gl",        HB_TAG('G','A','L',' ')},       /* Galician */
509   {"gld",       HB_TAG('N','A','N',' ')},       /* Nanai */
510 /*{"glk",       HB_TAG('G','L','K',' ')},*/     /* Gilaki */
511   {"gmz",       HB_TAG_NONE            },       /* Mgbolizhia != Gumuz */
512   {"gn",        HB_TAG('G','U','A',' ')},       /* Guarani [macrolanguage] */
513   {"gnb",       HB_TAG('Q','I','N',' ')},       /* Gangte -> Chin */
514 /*{"gnn",       HB_TAG('G','N','N',' ')},*/     /* Gumatj */
515   {"gno",       HB_TAG('G','O','N',' ')},       /* Northern Gondi -> Gondi */
516   {"gnw",       HB_TAG('G','U','A',' ')},       /* Western Bolivian Guaraní -> Guarani */
517 /*{"gog",       HB_TAG('G','O','G',' ')},*/     /* Gogo */
518   {"gom",       HB_TAG('K','O','K',' ')},       /* Goan Konkani -> Konkani */
519 /*{"gon",       HB_TAG('G','O','N',' ')},*/     /* Gondi [macrolanguage] */
520   {"goq",       HB_TAG('C','P','P',' ')},       /* Gorap -> Creoles */
521   {"gox",       HB_TAG('B','A','D','0')},       /* Gobu -> Banda */
522   {"gpe",       HB_TAG('C','P','P',' ')},       /* Ghanaian Pidgin English -> Creoles */
523   {"gro",       HB_TAG_NONE            },       /* Groma != Garo */
524   {"grr",       HB_TAG('B','B','R',' ')},       /* Taznatit -> Berber */
525   {"grt",       HB_TAG('G','R','O',' ')},       /* Garo */
526   {"gru",       HB_TAG('S','O','G',' ')},       /* Kistane -> Sodo Gurage */
527   {"gsw",       HB_TAG('A','L','S',' ')},       /* Alsatian */
528   {"gu",        HB_TAG('G','U','J',' ')},       /* Gujarati */
529   {"gua",       HB_TAG_NONE            },       /* Shiki != Guarani */
530 /*{"guc",       HB_TAG('G','U','C',' ')},*/     /* Wayuu */
531 /*{"guf",       HB_TAG('G','U','F',' ')},*/     /* Gupapuyngu */
532   {"gug",       HB_TAG('G','U','A',' ')},       /* Paraguayan Guaraní -> Guarani */
533   {"gui",       HB_TAG('G','U','A',' ')},       /* Eastern Bolivian Guaraní -> Guarani */
534   {"guk",       HB_TAG('G','M','Z',' ')},       /* Gumuz */
535   {"gul",       HB_TAG('C','P','P',' ')},       /* Sea Island Creole English -> Creoles */
536   {"gun",       HB_TAG('G','U','A',' ')},       /* Mbyá Guaraní -> Guarani */
537 /*{"guz",       HB_TAG('G','U','Z',' ')},*/     /* Gusii */
538   {"gv",        HB_TAG('M','N','X',' ')},       /* Manx */
539   {"gwi",       HB_TAG('A','T','H',' ')},       /* Gwichʼin -> Athapaskan */
540   {"gyn",       HB_TAG('C','P','P',' ')},       /* Guyanese Creole English -> Creoles */
541   {"ha",        HB_TAG('H','A','U',' ')},       /* Hausa */
542   {"haa",       HB_TAG('A','T','H',' ')},       /* Han -> Athapaskan */
543   {"hae",       HB_TAG('O','R','O',' ')},       /* Eastern Oromo -> Oromo */
544   {"hai",       HB_TAG('H','A','I','0')},       /* Haida [macrolanguage] */
545   {"hak",       HB_TAG('Z','H','S',' ')},       /* Hakka Chinese -> Chinese, Simplified */
546   {"hal",       HB_TAG_NONE            },       /* Halang != Halam (Falam Chin) */
547   {"har",       HB_TAG('H','R','I',' ')},       /* Harari */
548 /*{"haw",       HB_TAG('H','A','W',' ')},*/     /* Hawaiian */
549   {"hax",       HB_TAG('H','A','I','0')},       /* Southern Haida -> Haida */
550 /*{"hay",       HB_TAG('H','A','Y',' ')},*/     /* Haya */
551 /*{"haz",       HB_TAG('H','A','Z',' ')},*/     /* Hazaragi */
552   {"hbn",       HB_TAG_NONE            },       /* Heiban != Hammer-Banna */
553   {"hca",       HB_TAG('C','P','P',' ')},       /* Andaman Creole Hindi -> Creoles */
554   {"hdn",       HB_TAG('H','A','I','0')},       /* Northern Haida -> Haida */
555   {"he",        HB_TAG('I','W','R',' ')},       /* Hebrew */
556   {"hea",       HB_TAG('H','M','N',' ')},       /* Northern Qiandong Miao -> Hmong */
557 /*{"hei",       HB_TAG('H','E','I',' ')},*/     /* Heiltsuk */
558   {"hi",        HB_TAG('H','I','N',' ')},       /* Hindi */
559 /*{"hil",       HB_TAG('H','I','L',' ')},*/     /* Hiligaynon */
560   {"hji",       HB_TAG('M','L','Y',' ')},       /* Haji -> Malay */
561   {"hlt",       HB_TAG('Q','I','N',' ')},       /* Matu Chin -> Chin */
562   {"hma",       HB_TAG('H','M','N',' ')},       /* Southern Mashan Hmong -> Hmong */
563   {"hmc",       HB_TAG('H','M','N',' ')},       /* Central Huishui Hmong -> Hmong */
564   {"hmd",       HB_TAG('H','M','D',' ')},       /* Large Flowery Miao -> A-Hmao */
565   {"hmd",       HB_TAG('H','M','N',' ')},       /* Large Flowery Miao -> Hmong */
566   {"hme",       HB_TAG('H','M','N',' ')},       /* Eastern Huishui Hmong -> Hmong */
567   {"hmg",       HB_TAG('H','M','N',' ')},       /* Southwestern Guiyang Hmong -> Hmong */
568   {"hmh",       HB_TAG('H','M','N',' ')},       /* Southwestern Huishui Hmong -> Hmong */
569   {"hmi",       HB_TAG('H','M','N',' ')},       /* Northern Huishui Hmong -> Hmong */
570   {"hmj",       HB_TAG('H','M','N',' ')},       /* Ge -> Hmong */
571   {"hml",       HB_TAG('H','M','N',' ')},       /* Luopohe Hmong -> Hmong */
572   {"hmm",       HB_TAG('H','M','N',' ')},       /* Central Mashan Hmong -> Hmong */
573 /*{"hmn",       HB_TAG('H','M','N',' ')},*/     /* Hmong [macrolanguage] */
574   {"hmp",       HB_TAG('H','M','N',' ')},       /* Northern Mashan Hmong -> Hmong */
575   {"hmq",       HB_TAG('H','M','N',' ')},       /* Eastern Qiandong Miao -> Hmong */
576   {"hmr",       HB_TAG('Q','I','N',' ')},       /* Hmar -> Chin */
577   {"hms",       HB_TAG('H','M','N',' ')},       /* Southern Qiandong Miao -> Hmong */
578   {"hmw",       HB_TAG('H','M','N',' ')},       /* Western Mashan Hmong -> Hmong */
579   {"hmy",       HB_TAG('H','M','N',' ')},       /* Southern Guiyang Hmong -> Hmong */
580   {"hmz",       HB_TAG('H','M','Z',' ')},       /* Hmong Shua -> Hmong Shuat */
581   {"hmz",       HB_TAG('H','M','N',' ')},       /* Hmong Shua -> Hmong */
582 /*{"hnd",       HB_TAG('H','N','D',' ')},*/     /* Southern Hindko -> Hindko */
583   {"hne",       HB_TAG('C','H','H',' ')},       /* Chhattisgarhi -> Chattisgarhi */
584   {"hnj",       HB_TAG('H','M','N',' ')},       /* Hmong Njua -> Hmong */
585   {"hno",       HB_TAG('H','N','D',' ')},       /* Northern Hindko -> Hindko */
586   {"ho",        HB_TAG('H','M','O',' ')},       /* Hiri Motu */
587   {"ho",        HB_TAG('C','P','P',' ')},       /* Hiri Motu -> Creoles */
588   {"hoc",       HB_TAG('H','O',' ',' ')},       /* Ho */
589   {"hoi",       HB_TAG('A','T','H',' ')},       /* Holikachuk -> Athapaskan */
590   {"hoj",       HB_TAG('H','A','R',' ')},       /* Hadothi -> Harauti */
591   {"hoj",       HB_TAG('R','A','J',' ')},       /* Hadothi -> Rajasthani */
592   {"hr",        HB_TAG('H','R','V',' ')},       /* Croatian */
593   {"hra",       HB_TAG('Q','I','N',' ')},       /* Hrangkhol -> Chin */
594   {"hrm",       HB_TAG('H','M','N',' ')},       /* Horned Miao -> Hmong */
595   {"hsb",       HB_TAG('U','S','B',' ')},       /* Upper Sorbian */
596   {"hsn",       HB_TAG('Z','H','S',' ')},       /* Xiang Chinese -> Chinese, Simplified */
597   {"ht",        HB_TAG('H','A','I',' ')},       /* Haitian (Haitian Creole) */
598   {"ht",        HB_TAG('C','P','P',' ')},       /* Haitian -> Creoles */
599   {"hu",        HB_TAG('H','U','N',' ')},       /* Hungarian */
600   {"huj",       HB_TAG('H','M','N',' ')},       /* Northern Guiyang Hmong -> Hmong */
601   {"hup",       HB_TAG('A','T','H',' ')},       /* Hupa -> Athapaskan */
602   {"hus",       HB_TAG('M','Y','N',' ')},       /* Huastec -> Mayan */
603   {"hwc",       HB_TAG('C','P','P',' ')},       /* Hawai'i Creole English -> Creoles */
604   {"hy",        HB_TAG('H','Y','E','0')},       /* Armenian -> Armenian East */
605   {"hy",        HB_TAG('H','Y','E',' ')},       /* Armenian */
606   {"hyw",       HB_TAG('H','Y','E',' ')},       /* Western Armenian -> Armenian */
607   {"hz",        HB_TAG('H','E','R',' ')},       /* Herero */
608   {"ia",        HB_TAG('I','N','A',' ')},       /* Interlingua (International Auxiliary Language Association) */
609 /*{"iba",       HB_TAG('I','B','A',' ')},*/     /* Iban */
610 /*{"ibb",       HB_TAG('I','B','B',' ')},*/     /* Ibibio */
611   {"iby",       HB_TAG('I','J','O',' ')},       /* Ibani -> Ijo */
612   {"icr",       HB_TAG('C','P','P',' ')},       /* Islander Creole English -> Creoles */
613   {"id",        HB_TAG('I','N','D',' ')},       /* Indonesian */
614   {"id",        HB_TAG('M','L','Y',' ')},       /* Indonesian -> Malay */
615   {"ida",       HB_TAG('L','U','H',' ')},       /* Idakho-Isukha-Tiriki -> Luyia */
616   {"idb",       HB_TAG('C','P','P',' ')},       /* Indo-Portuguese -> Creoles */
617   {"ie",        HB_TAG('I','L','E',' ')},       /* Interlingue */
618   {"ig",        HB_TAG('I','B','O',' ')},       /* Igbo */
619   {"igb",       HB_TAG('E','B','I',' ')},       /* Ebira */
620   {"ihb",       HB_TAG('C','P','P',' ')},       /* Iha Based Pidgin -> Creoles */
621   {"ii",        HB_TAG('Y','I','M',' ')},       /* Sichuan Yi -> Yi Modern */
622   {"ijc",       HB_TAG('I','J','O',' ')},       /* Izon -> Ijo */
623   {"ije",       HB_TAG('I','J','O',' ')},       /* Biseni -> Ijo */
624   {"ijn",       HB_TAG('I','J','O',' ')},       /* Kalabari -> Ijo */
625 /*{"ijo",       HB_TAG('I','J','O',' ')},*/     /* Ijo [collection] */
626   {"ijs",       HB_TAG('I','J','O',' ')},       /* Southeast Ijo -> Ijo */
627   {"ik",        HB_TAG('I','P','K',' ')},       /* Inupiaq [macrolanguage] -> Inupiat */
628   {"ike",       HB_TAG('I','N','U',' ')},       /* Eastern Canadian Inuktitut -> Inuktitut */
629   {"ike",       HB_TAG('I','N','U','K')},       /* Eastern Canadian Inuktitut -> Nunavik Inuktitut */
630   {"ikt",       HB_TAG('I','N','U',' ')},       /* Inuinnaqtun -> Inuktitut */
631 /*{"ilo",       HB_TAG('I','L','O',' ')},*/     /* Iloko -> Ilokano */
632   {"in",        HB_TAG('I','N','D',' ')},       /* Indonesian (retired code) */
633   {"in",        HB_TAG('M','L','Y',' ')},       /* Indonesian (retired code) -> Malay */
634   {"ing",       HB_TAG('A','T','H',' ')},       /* Degexit'an -> Athapaskan */
635   {"inh",       HB_TAG('I','N','G',' ')},       /* Ingush */
636   {"io",        HB_TAG('I','D','O',' ')},       /* Ido */
637   {"iri",       HB_TAG_NONE            },       /* Rigwe != Irish */
638 /*{"iru",       HB_TAG('I','R','U',' ')},*/     /* Irula */
639   {"is",        HB_TAG('I','S','L',' ')},       /* Icelandic */
640   {"ism",       HB_TAG_NONE            },       /* Masimasi != Inari Sami */
641   {"it",        HB_TAG('I','T','A',' ')},       /* Italian */
642   {"itz",       HB_TAG('M','Y','N',' ')},       /* Itzá -> Mayan */
643   {"iu",        HB_TAG('I','N','U',' ')},       /* Inuktitut [macrolanguage] */
644   {"iu",        HB_TAG('I','N','U','K')},       /* Inuktitut [macrolanguage] -> Nunavik Inuktitut */
645   {"iw",        HB_TAG('I','W','R',' ')},       /* Hebrew (retired code) */
646   {"ixl",       HB_TAG('M','Y','N',' ')},       /* Ixil -> Mayan */
647   {"ja",        HB_TAG('J','A','N',' ')},       /* Japanese */
648   {"jac",       HB_TAG('M','Y','N',' ')},       /* Popti' -> Mayan */
649   {"jak",       HB_TAG('M','L','Y',' ')},       /* Jakun -> Malay */
650   {"jam",       HB_TAG('J','A','M',' ')},       /* Jamaican Creole English -> Jamaican Creole */
651   {"jam",       HB_TAG('C','P','P',' ')},       /* Jamaican Creole English -> Creoles */
652   {"jan",       HB_TAG_NONE            },       /* Jandai != Japanese */
653   {"jax",       HB_TAG('M','L','Y',' ')},       /* Jambi Malay -> Malay */
654   {"jbe",       HB_TAG('B','B','R',' ')},       /* Judeo-Berber -> Berber */
655   {"jbn",       HB_TAG('B','B','R',' ')},       /* Nafusi -> Berber */
656 /*{"jbo",       HB_TAG('J','B','O',' ')},*/     /* Lojban */
657 /*{"jct",       HB_TAG('J','C','T',' ')},*/     /* Krymchak */
658   {"jgo",       HB_TAG('B','M','L',' ')},       /* Ngomba -> Bamileke */
659   {"ji",        HB_TAG('J','I','I',' ')},       /* Yiddish (retired code) */
660   {"jii",       HB_TAG_NONE            },       /* Jiiddu != Yiddish */
661   {"jkm",       HB_TAG('K','R','N',' ')},       /* Mobwa Karen -> Karen */
662   {"jkp",       HB_TAG('K','R','N',' ')},       /* Paku Karen -> Karen */
663   {"jud",       HB_TAG_NONE            },       /* Worodougou != Ladino */
664   {"jul",       HB_TAG_NONE            },       /* Jirel != Jula */
665   {"jv",        HB_TAG('J','A','V',' ')},       /* Javanese */
666   {"jvd",       HB_TAG('C','P','P',' ')},       /* Javindo -> Creoles */
667   {"jw",        HB_TAG('J','A','V',' ')},       /* Javanese (retired code) */
668   {"ka",        HB_TAG('K','A','T',' ')},       /* Georgian */
669   {"kaa",       HB_TAG('K','R','K',' ')},       /* Karakalpak */
670   {"kab",       HB_TAG('K','A','B','0')},       /* Kabyle */
671   {"kab",       HB_TAG('B','B','R',' ')},       /* Kabyle -> Berber */
672   {"kac",       HB_TAG_NONE            },       /* Kachin != Kachchi */
673   {"kam",       HB_TAG('K','M','B',' ')},       /* Kamba (Kenya) */
674   {"kar",       HB_TAG('K','R','N',' ')},       /* Karen [collection] */
675 /*{"kaw",       HB_TAG('K','A','W',' ')},*/     /* Kawi (Old Javanese) */
676   {"kbd",       HB_TAG('K','A','B',' ')},       /* Kabardian */
677   {"kby",       HB_TAG('K','N','R',' ')},       /* Manga Kanuri -> Kanuri */
678   {"kca",       HB_TAG('K','H','K',' ')},       /* Khanty -> Khanty-Kazim */
679   {"kca",       HB_TAG('K','H','S',' ')},       /* Khanty -> Khanty-Shurishkar */
680   {"kca",       HB_TAG('K','H','V',' ')},       /* Khanty -> Khanty-Vakhi */
681   {"kcn",       HB_TAG('C','P','P',' ')},       /* Nubi -> Creoles */
682 /*{"kde",       HB_TAG('K','D','E',' ')},*/     /* Makonde */
683   {"kdr",       HB_TAG('K','R','M',' ')},       /* Karaim */
684   {"kdt",       HB_TAG('K','U','Y',' ')},       /* Kuy */
685   {"kea",       HB_TAG('K','E','A',' ')},       /* Kabuverdianu (Crioulo) */
686   {"kea",       HB_TAG('C','P','P',' ')},       /* Kabuverdianu -> Creoles */
687   {"keb",       HB_TAG_NONE            },       /* Kélé != Kebena */
688   {"kek",       HB_TAG('K','E','K',' ')},       /* Kekchi */
689   {"kek",       HB_TAG('M','Y','N',' ')},       /* Kekchí -> Mayan */
690   {"kex",       HB_TAG('K','K','N',' ')},       /* Kukna -> Kokni */
691   {"kfa",       HB_TAG('K','O','D',' ')},       /* Kodava -> Kodagu */
692   {"kfr",       HB_TAG('K','A','C',' ')},       /* Kachhi -> Kachchi */
693   {"kfx",       HB_TAG('K','U','L',' ')},       /* Kullu Pahari -> Kulvi */
694   {"kfy",       HB_TAG('K','M','N',' ')},       /* Kumaoni */
695   {"kg",        HB_TAG('K','O','N','0')},       /* Kongo [macrolanguage] */
696   {"kge",       HB_TAG_NONE            },       /* Komering != Khutsuri Georgian */
697   {"kha",       HB_TAG('K','S','I',' ')},       /* Khasi */
698   {"khb",       HB_TAG('X','B','D',' ')},       /* Lü */
699   {"khk",       HB_TAG('M','N','G',' ')},       /* Halh Mongolian -> Mongolian */
700   {"khn",       HB_TAG_NONE            },       /* Khandesi != Khamti Shan (Microsoft fonts) */
701   {"khs",       HB_TAG_NONE            },       /* Kasua != Khanty-Shurishkar */
702   {"kht",       HB_TAG('K','H','T',' ')},       /* Khamti -> Khamti Shan */
703   {"kht",       HB_TAG('K','H','N',' ')},       /* Khamti -> Khamti Shan (Microsoft fonts) */
704   {"khv",       HB_TAG_NONE            },       /* Khvarshi != Khanty-Vakhi */
705 /*{"khw",       HB_TAG('K','H','W',' ')},*/     /* Khowar */
706   {"ki",        HB_TAG('K','I','K',' ')},       /* Kikuyu (Gikuyu) */
707   {"kis",       HB_TAG_NONE            },       /* Kis != Kisii */
708   {"kiu",       HB_TAG('K','I','U',' ')},       /* Kirmanjki */
709   {"kiu",       HB_TAG('Z','Z','A',' ')},       /* Kirmanjki -> Zazaki */
710   {"kj",        HB_TAG('K','U','A',' ')},       /* Kuanyama */
711   {"kjb",       HB_TAG('M','Y','N',' ')},       /* Q'anjob'al -> Mayan */
712 /*{"kjd",       HB_TAG('K','J','D',' ')},*/     /* Southern Kiwai */
713   {"kjh",       HB_TAG('K','H','A',' ')},       /* Khakas -> Khakass */
714   {"kjp",       HB_TAG('K','J','P',' ')},       /* Pwo Eastern Karen -> Eastern Pwo Karen */
715   {"kjp",       HB_TAG('K','R','N',' ')},       /* Pwo Eastern Karen -> Karen */
716   {"kjt",       HB_TAG('K','R','N',' ')},       /* Phrae Pwo Karen -> Karen */
717 /*{"kjz",       HB_TAG('K','J','Z',' ')},*/     /* Bumthangkha */
718   {"kk",        HB_TAG('K','A','Z',' ')},       /* Kazakh */
719   {"kkn",       HB_TAG_NONE            },       /* Kon Keu != Kokni */
720   {"kkz",       HB_TAG('A','T','H',' ')},       /* Kaska -> Athapaskan */
721   {"kl",        HB_TAG('G','R','N',' ')},       /* Greenlandic */
722   {"klm",       HB_TAG_NONE            },       /* Migum != Kalmyk */
723   {"kln",       HB_TAG('K','A','L',' ')},       /* Kalenjin [macrolanguage] */
724   {"km",        HB_TAG('K','H','M',' ')},       /* Khmer */
725   {"kmb",       HB_TAG('M','B','N',' ')},       /* Kimbundu -> Mbundu */
726   {"kmn",       HB_TAG_NONE            },       /* Awtuw != Kumaoni */
727   {"kmo",       HB_TAG_NONE            },       /* Kwoma != Komo */
728   {"kmr",       HB_TAG('K','U','R',' ')},       /* Northern Kurdish -> Kurdish */
729   {"kms",       HB_TAG_NONE            },       /* Kamasau != Komso */
730   {"kmv",       HB_TAG('C','P','P',' ')},       /* Karipúna Creole French -> Creoles */
731   {"kmw",       HB_TAG('K','M','O',' ')},       /* Komo (Democratic Republic of Congo) */
732 /*{"kmz",       HB_TAG('K','M','Z',' ')},*/     /* Khorasani Turkish -> Khorasani Turkic */
733   {"kn",        HB_TAG('K','A','N',' ')},       /* Kannada */
734   {"knc",       HB_TAG('K','N','R',' ')},       /* Central Kanuri -> Kanuri */
735   {"kng",       HB_TAG('K','O','N','0')},       /* Koongo -> Kongo */
736   {"knj",       HB_TAG('M','Y','N',' ')},       /* Western Kanjobal -> Mayan */
737   {"knn",       HB_TAG('K','O','K',' ')},       /* Konkani */
738   {"knr",       HB_TAG_NONE            },       /* Kaningra != Kanuri */
739   {"ko",        HB_TAG('K','O','R',' ')},       /* Korean */
740   {"ko",        HB_TAG('K','O','H',' ')},       /* Korean -> Korean Old Hangul */
741   {"kod",       HB_TAG_NONE            },       /* Kodi != Kodagu */
742   {"koh",       HB_TAG_NONE            },       /* Koyo != Korean Old Hangul */
743   {"koi",       HB_TAG('K','O','P',' ')},       /* Komi-Permyak */
744   {"koi",       HB_TAG('K','O','M',' ')},       /* Komi-Permyak -> Komi */
745 /*{"kok",       HB_TAG('K','O','K',' ')},*/     /* Konkani [macrolanguage] */
746   {"kop",       HB_TAG_NONE            },       /* Waube != Komi-Permyak */
747 /*{"kos",       HB_TAG('K','O','S',' ')},*/     /* Kosraean */
748   {"koy",       HB_TAG('A','T','H',' ')},       /* Koyukon -> Athapaskan */
749   {"koz",       HB_TAG_NONE            },       /* Korak != Komi-Zyrian */
750   {"kpe",       HB_TAG('K','P','L',' ')},       /* Kpelle [macrolanguage] */
751   {"kpl",       HB_TAG_NONE            },       /* Kpala != Kpelle */
752   {"kpp",       HB_TAG('K','R','N',' ')},       /* Paku Karen (retired code) -> Karen */
753   {"kpv",       HB_TAG('K','O','Z',' ')},       /* Komi-Zyrian */
754   {"kpv",       HB_TAG('K','O','M',' ')},       /* Komi-Zyrian -> Komi */
755   {"kpy",       HB_TAG('K','Y','K',' ')},       /* Koryak */
756   {"kqs",       HB_TAG('K','I','S',' ')},       /* Northern Kissi -> Kisii */
757   {"kqy",       HB_TAG('K','R','T',' ')},       /* Koorete */
758   {"kr",        HB_TAG('K','N','R',' ')},       /* Kanuri [macrolanguage] */
759   {"krc",       HB_TAG('K','A','R',' ')},       /* Karachay-Balkar -> Karachay */
760   {"krc",       HB_TAG('B','A','L',' ')},       /* Karachay-Balkar -> Balkar */
761   {"kri",       HB_TAG('K','R','I',' ')},       /* Krio */
762   {"kri",       HB_TAG('C','P','P',' ')},       /* Krio -> Creoles */
763   {"krk",       HB_TAG_NONE            },       /* Kerek != Karakalpak */
764 /*{"krl",       HB_TAG('K','R','L',' ')},*/     /* Karelian */
765   {"krm",       HB_TAG_NONE            },       /* Krim (retired code) != Karaim */
766   {"krn",       HB_TAG_NONE            },       /* Sapo != Karen */
767   {"krt",       HB_TAG('K','N','R',' ')},       /* Tumari Kanuri -> Kanuri */
768   {"kru",       HB_TAG('K','U','U',' ')},       /* Kurukh */
769   {"ks",        HB_TAG('K','S','H',' ')},       /* Kashmiri */
770   {"ksh",       HB_TAG('K','S','H','0')},       /* Kölsch -> Ripuarian */
771   {"ksi",       HB_TAG_NONE            },       /* Krisa != Khasi */
772   {"ksm",       HB_TAG_NONE            },       /* Kumba != Kildin Sami */
773   {"kss",       HB_TAG('K','I','S',' ')},       /* Southern Kisi -> Kisii */
774   {"ksw",       HB_TAG('K','S','W',' ')},       /* S’gaw Karen */
775   {"ksw",       HB_TAG('K','R','N',' ')},       /* S'gaw Karen -> Karen */
776   {"ktb",       HB_TAG('K','E','B',' ')},       /* Kambaata -> Kebena */
777   {"ktu",       HB_TAG('K','O','N',' ')},       /* Kituba (Democratic Republic of Congo) -> Kikongo */
778   {"ktw",       HB_TAG('A','T','H',' ')},       /* Kato -> Athapaskan */
779   {"ku",        HB_TAG('K','U','R',' ')},       /* Kurdish [macrolanguage] */
780   {"kui",       HB_TAG_NONE            },       /* Kuikúro-Kalapálo != Kui */
781   {"kul",       HB_TAG_NONE            },       /* Kulere != Kulvi */
782 /*{"kum",       HB_TAG('K','U','M',' ')},*/     /* Kumyk */
783   {"kuu",       HB_TAG('A','T','H',' ')},       /* Upper Kuskokwim -> Athapaskan */
784   {"kuw",       HB_TAG('B','A','D','0')},       /* Kpagua -> Banda */
785   {"kuy",       HB_TAG_NONE            },       /* Kuuku-Ya'u != Kuy */
786   {"kv",        HB_TAG('K','O','M',' ')},       /* Komi [macrolanguage] */
787   {"kvb",       HB_TAG('M','L','Y',' ')},       /* Kubu -> Malay */
788   {"kvl",       HB_TAG('K','R','N',' ')},       /* Kayaw -> Karen */
789   {"kvq",       HB_TAG('K','R','N',' ')},       /* Geba Karen -> Karen */
790   {"kvr",       HB_TAG('M','L','Y',' ')},       /* Kerinci -> Malay */
791   {"kvt",       HB_TAG('K','R','N',' ')},       /* Lahta Karen -> Karen */
792   {"kvu",       HB_TAG('K','R','N',' ')},       /* Yinbaw Karen -> Karen */
793   {"kvy",       HB_TAG('K','R','N',' ')},       /* Yintale Karen -> Karen */
794   {"kw",        HB_TAG('C','O','R',' ')},       /* Cornish */
795 /*{"kwk",       HB_TAG('K','W','K',' ')},*/     /* Kwakiutl -> Kwakʼwala */
796   {"kww",       HB_TAG('C','P','P',' ')},       /* Kwinti -> Creoles */
797   {"kwy",       HB_TAG('K','O','N','0')},       /* San Salvador Kongo -> Kongo */
798   {"kxc",       HB_TAG('K','M','S',' ')},       /* Konso -> Komso */
799   {"kxd",       HB_TAG('M','L','Y',' ')},       /* Brunei -> Malay */
800   {"kxf",       HB_TAG('K','R','N',' ')},       /* Manumanaw Karen -> Karen */
801   {"kxk",       HB_TAG('K','R','N',' ')},       /* Zayein Karen -> Karen */
802   {"kxl",       HB_TAG('K','U','U',' ')},       /* Nepali Kurux (retired code) -> Kurukh */
803   {"kxu",       HB_TAG('K','U','I',' ')},       /* Kui (India) (retired code) */
804   {"ky",        HB_TAG('K','I','R',' ')},       /* Kirghiz (Kyrgyz) */
805   {"kyk",       HB_TAG_NONE            },       /* Kamayo != Koryak */
806   {"kyu",       HB_TAG('K','Y','U',' ')},       /* Western Kayah */
807   {"kyu",       HB_TAG('K','R','N',' ')},       /* Western Kayah -> Karen */
808   {"la",        HB_TAG('L','A','T',' ')},       /* Latin */
809   {"lac",       HB_TAG('M','Y','N',' ')},       /* Lacandon -> Mayan */
810   {"lad",       HB_TAG('J','U','D',' ')},       /* Ladino */
811   {"lah",       HB_TAG_NONE            },       /* Lahnda [macrolanguage] != Lahuli */
812   {"lak",       HB_TAG_NONE            },       /* Laka (Nigeria) != Lak */
813   {"lam",       HB_TAG_NONE            },       /* Lamba != Lambani */
814   {"laz",       HB_TAG_NONE            },       /* Aribwatsa != Laz */
815   {"lb",        HB_TAG('L','T','Z',' ')},       /* Luxembourgish */
816   {"lbe",       HB_TAG('L','A','K',' ')},       /* Lak */
817   {"lbj",       HB_TAG('L','D','K',' ')},       /* Ladakhi */
818   {"lbl",       HB_TAG('B','I','K',' ')},       /* Libon Bikol -> Bikol */
819   {"lce",       HB_TAG('M','L','Y',' ')},       /* Loncong -> Malay */
820   {"lcf",       HB_TAG('M','L','Y',' ')},       /* Lubu -> Malay */
821   {"ldi",       HB_TAG('K','O','N','0')},       /* Laari -> Kongo */
822   {"ldk",       HB_TAG_NONE            },       /* Leelau != Ladakhi */
823 /*{"lef",       HB_TAG('L','E','F',' ')},*/     /* Lelemi */
824 /*{"lez",       HB_TAG('L','E','Z',' ')},*/     /* Lezghian -> Lezgi */
825   {"lg",        HB_TAG('L','U','G',' ')},       /* Ganda */
826   {"li",        HB_TAG('L','I','M',' ')},       /* Limburgish */
827   {"lif",       HB_TAG('L','M','B',' ')},       /* Limbu */
828 /*{"lij",       HB_TAG('L','I','J',' ')},*/     /* Ligurian */
829   {"lir",       HB_TAG('C','P','P',' ')},       /* Liberian English -> Creoles */
830 /*{"lis",       HB_TAG('L','I','S',' ')},*/     /* Lisu */
831   {"liw",       HB_TAG('M','L','Y',' ')},       /* Col -> Malay */
832   {"liy",       HB_TAG('B','A','D','0')},       /* Banda-Bambari -> Banda */
833 /*{"ljp",       HB_TAG('L','J','P',' ')},*/     /* Lampung Api -> Lampung */
834   {"lkb",       HB_TAG('L','U','H',' ')},       /* Kabras -> Luyia */
835 /*{"lki",       HB_TAG('L','K','I',' ')},*/     /* Laki */
836   {"lko",       HB_TAG('L','U','H',' ')},       /* Khayo -> Luyia */
837   {"lks",       HB_TAG('L','U','H',' ')},       /* Kisa -> Luyia */
838   {"lld",       HB_TAG('L','A','D',' ')},       /* Ladin */
839   {"lma",       HB_TAG_NONE            },       /* East Limba != Low Mari */
840   {"lmb",       HB_TAG_NONE            },       /* Merei != Limbu */
841   {"lmn",       HB_TAG('L','A','M',' ')},       /* Lambadi -> Lambani */
842 /*{"lmo",       HB_TAG('L','M','O',' ')},*/     /* Lombard */
843   {"lmw",       HB_TAG_NONE            },       /* Lake Miwok != Lomwe */
844   {"ln",        HB_TAG('L','I','N',' ')},       /* Lingala */
845   {"lna",       HB_TAG('B','A','D','0')},       /* Langbashe -> Banda */
846   {"lnl",       HB_TAG('B','A','D','0')},       /* South Central Banda -> Banda */
847   {"lo",        HB_TAG('L','A','O',' ')},       /* Lao */
848 /*{"lom",       HB_TAG('L','O','M',' ')},*/     /* Loma (Liberia) */
849   {"lou",       HB_TAG('C','P','P',' ')},       /* Louisiana Creole -> Creoles */
850 /*{"lpo",       HB_TAG('L','P','O',' ')},*/     /* Lipo */
851 /*{"lrc",       HB_TAG('L','R','C',' ')},*/     /* Northern Luri -> Luri */
852   {"lri",       HB_TAG('L','U','H',' ')},       /* Marachi -> Luyia */
853   {"lrm",       HB_TAG('L','U','H',' ')},       /* Marama -> Luyia */
854   {"lrt",       HB_TAG('C','P','P',' ')},       /* Larantuka Malay -> Creoles */
855   {"lsb",       HB_TAG_NONE            },       /* Burundian Sign Language != Lower Sorbian */
856   {"lsm",       HB_TAG('L','U','H',' ')},       /* Saamia -> Luyia */
857   {"lt",        HB_TAG('L','T','H',' ')},       /* Lithuanian */
858   {"ltg",       HB_TAG('L','V','I',' ')},       /* Latgalian -> Latvian */
859   {"lth",       HB_TAG_NONE            },       /* Thur != Lithuanian */
860   {"lto",       HB_TAG('L','U','H',' ')},       /* Tsotso -> Luyia */
861   {"lts",       HB_TAG('L','U','H',' ')},       /* Tachoni -> Luyia */
862   {"lu",        HB_TAG('L','U','B',' ')},       /* Luba-Katanga */
863 /*{"lua",       HB_TAG('L','U','A',' ')},*/     /* Luba-Lulua */
864 /*{"luo",       HB_TAG('L','U','O',' ')},*/     /* Luo (Kenya and Tanzania) */
865   {"lus",       HB_TAG('M','I','Z',' ')},       /* Lushai -> Mizo */
866   {"lus",       HB_TAG('Q','I','N',' ')},       /* Lushai -> Chin */
867   {"luy",       HB_TAG('L','U','H',' ')},       /* Luyia [macrolanguage] */
868   {"luz",       HB_TAG('L','R','C',' ')},       /* Southern Luri -> Luri */
869   {"lv",        HB_TAG('L','V','I',' ')},       /* Latvian [macrolanguage] */
870   {"lvi",       HB_TAG_NONE            },       /* Lavi != Latvian */
871   {"lvs",       HB_TAG('L','V','I',' ')},       /* Standard Latvian -> Latvian */
872   {"lwg",       HB_TAG('L','U','H',' ')},       /* Wanga -> Luyia */
873   {"lzh",       HB_TAG('Z','H','T',' ')},       /* Literary Chinese -> Chinese, Traditional */
874   {"lzz",       HB_TAG('L','A','Z',' ')},       /* Laz */
875 /*{"mad",       HB_TAG('M','A','D',' ')},*/     /* Madurese -> Madura */
876 /*{"mag",       HB_TAG('M','A','G',' ')},*/     /* Magahi */
877   {"mai",       HB_TAG('M','T','H',' ')},       /* Maithili */
878   {"maj",       HB_TAG_NONE            },       /* Jalapa De Díaz Mazatec != Majang */
879   {"mak",       HB_TAG('M','K','R',' ')},       /* Makasar */
880   {"mam",       HB_TAG('M','A','M',' ')},       /* Mam */
881   {"mam",       HB_TAG('M','Y','N',' ')},       /* Mam -> Mayan */
882   {"man",       HB_TAG('M','N','K',' ')},       /* Mandingo [macrolanguage] -> Maninka */
883   {"map",       HB_TAG_NONE            },       /* Austronesian [collection] != Mapudungun */
884   {"maw",       HB_TAG_NONE            },       /* Mampruli != Marwari */
885   {"max",       HB_TAG('M','L','Y',' ')},       /* North Moluccan Malay -> Malay */
886   {"max",       HB_TAG('C','P','P',' ')},       /* North Moluccan Malay -> Creoles */
887   {"mbf",       HB_TAG('C','P','P',' ')},       /* Baba Malay -> Creoles */
888   {"mbn",       HB_TAG_NONE            },       /* Macaguán != Mbundu */
889 /*{"mbo",       HB_TAG('M','B','O',' ')},*/     /* Mbo (Cameroon) */
890   {"mch",       HB_TAG_NONE            },       /* Maquiritari != Manchu */
891   {"mcm",       HB_TAG('C','P','P',' ')},       /* Malaccan Creole Portuguese -> Creoles */
892   {"mcr",       HB_TAG_NONE            },       /* Menya != Moose Cree */
893   {"mct",       HB_TAG('B','T','I',' ')},       /* Mengisa -> Beti */
894   {"mde",       HB_TAG_NONE            },       /* Maba (Chad) != Mende */
895   {"mdf",       HB_TAG('M','O','K',' ')},       /* Moksha */
896 /*{"mdr",       HB_TAG('M','D','R',' ')},*/     /* Mandar */
897   {"mdy",       HB_TAG('M','L','E',' ')},       /* Male (Ethiopia) */
898   {"men",       HB_TAG('M','D','E',' ')},       /* Mende (Sierra Leone) */
899   {"meo",       HB_TAG('M','L','Y',' ')},       /* Kedah Malay -> Malay */
900 /*{"mer",       HB_TAG('M','E','R',' ')},*/     /* Meru */
901   {"mfa",       HB_TAG('M','F','A',' ')},       /* Pattani Malay */
902   {"mfa",       HB_TAG('M','L','Y',' ')},       /* Pattani Malay -> Malay */
903   {"mfb",       HB_TAG('M','L','Y',' ')},       /* Bangka -> Malay */
904   {"mfe",       HB_TAG('M','F','E',' ')},       /* Morisyen */
905   {"mfe",       HB_TAG('C','P','P',' ')},       /* Morisyen -> Creoles */
906   {"mfp",       HB_TAG('C','P','P',' ')},       /* Makassar Malay -> Creoles */
907   {"mg",        HB_TAG('M','L','G',' ')},       /* Malagasy [macrolanguage] */
908   {"mh",        HB_TAG('M','A','H',' ')},       /* Marshallese */
909   {"mhc",       HB_TAG('M','Y','N',' ')},       /* Mocho -> Mayan */
910   {"mhr",       HB_TAG('L','M','A',' ')},       /* Eastern Mari -> Low Mari */
911   {"mhv",       HB_TAG('A','R','K',' ')},       /* Arakanese (retired code) -> Rakhine */
912   {"mi",        HB_TAG('M','R','I',' ')},       /* Maori */
913   {"min",       HB_TAG('M','I','N',' ')},       /* Minangkabau */
914   {"min",       HB_TAG('M','L','Y',' ')},       /* Minangkabau -> Malay */
915   {"miz",       HB_TAG_NONE            },       /* Coatzospan Mixtec != Mizo */
916   {"mk",        HB_TAG('M','K','D',' ')},       /* Macedonian */
917   {"mkn",       HB_TAG('C','P','P',' ')},       /* Kupang Malay -> Creoles */
918   {"mkr",       HB_TAG_NONE            },       /* Malas != Makasar */
919   {"mku",       HB_TAG('M','N','K',' ')},       /* Konyanka Maninka -> Maninka */
920 /*{"mkw",       HB_TAG('M','K','W',' ')},*/     /* Kituba (Congo) */
921   {"ml",        HB_TAG('M','A','L',' ')},       /* Malayalam -> Malayalam Traditional */
922   {"ml",        HB_TAG('M','L','R',' ')},       /* Malayalam -> Malayalam Reformed */
923   {"mle",       HB_TAG_NONE            },       /* Manambu != Male */
924   {"mln",       HB_TAG_NONE            },       /* Malango != Malinke */
925   {"mlq",       HB_TAG('M','L','N',' ')},       /* Western Maninkakan -> Malinke */
926   {"mlq",       HB_TAG('M','N','K',' ')},       /* Western Maninkakan -> Maninka */
927   {"mlr",       HB_TAG_NONE            },       /* Vame != Malayalam Reformed */
928   {"mmr",       HB_TAG('H','M','N',' ')},       /* Western Xiangxi Miao -> Hmong */
929   {"mn",        HB_TAG('M','N','G',' ')},       /* Mongolian [macrolanguage] */
930   {"mnc",       HB_TAG('M','C','H',' ')},       /* Manchu */
931   {"mnd",       HB_TAG_NONE            },       /* Mondé != Mandinka */
932   {"mng",       HB_TAG_NONE            },       /* Eastern Mnong != Mongolian */
933   {"mnh",       HB_TAG('B','A','D','0')},       /* Mono (Democratic Republic of Congo) -> Banda */
934 /*{"mni",       HB_TAG('M','N','I',' ')},*/     /* Manipuri */
935   {"mnk",       HB_TAG('M','N','D',' ')},       /* Mandinka */
936   {"mnk",       HB_TAG('M','N','K',' ')},       /* Mandinka -> Maninka */
937   {"mnp",       HB_TAG('Z','H','S',' ')},       /* Min Bei Chinese -> Chinese, Simplified */
938   {"mns",       HB_TAG('M','A','N',' ')},       /* Mansi */
939   {"mnw",       HB_TAG('M','O','N',' ')},       /* Mon */
940   {"mnw",       HB_TAG('M','O','N','T')},       /* Mon -> Thailand Mon */
941   {"mnx",       HB_TAG_NONE            },       /* Manikion != Manx */
942   {"mo",        HB_TAG('M','O','L',' ')},       /* Moldavian (retired code) */
943   {"mo",        HB_TAG('R','O','M',' ')},       /* Moldavian (retired code) -> Romanian */
944   {"mod",       HB_TAG('C','P','P',' ')},       /* Mobilian -> Creoles */
945 /*{"moh",       HB_TAG('M','O','H',' ')},*/     /* Mohawk */
946   {"mok",       HB_TAG_NONE            },       /* Morori != Moksha */
947   {"mop",       HB_TAG('M','Y','N',' ')},       /* Mopán Maya -> Mayan */
948   {"mor",       HB_TAG_NONE            },       /* Moro != Moroccan */
949 /*{"mos",       HB_TAG('M','O','S',' ')},*/     /* Mossi */
950   {"mpe",       HB_TAG('M','A','J',' ')},       /* Majang */
951   {"mqg",       HB_TAG('M','L','Y',' ')},       /* Kota Bangun Kutai Malay -> Malay */
952   {"mr",        HB_TAG('M','A','R',' ')},       /* Marathi */
953   {"mrh",       HB_TAG('Q','I','N',' ')},       /* Mara Chin -> Chin */
954   {"mrj",       HB_TAG('H','M','A',' ')},       /* Western Mari -> High Mari */
955   {"ms",        HB_TAG('M','L','Y',' ')},       /* Malay [macrolanguage] */
956   {"msc",       HB_TAG('M','N','K',' ')},       /* Sankaran Maninka -> Maninka */
957   {"msh",       HB_TAG('M','L','G',' ')},       /* Masikoro Malagasy -> Malagasy */
958   {"msi",       HB_TAG('M','L','Y',' ')},       /* Sabah Malay -> Malay */
959   {"msi",       HB_TAG('C','P','P',' ')},       /* Sabah Malay -> Creoles */
960   {"mt",        HB_TAG('M','T','S',' ')},       /* Maltese */
961   {"mth",       HB_TAG_NONE            },       /* Munggui != Maithili */
962   {"mtr",       HB_TAG('M','A','W',' ')},       /* Mewari -> Marwari */
963   {"mts",       HB_TAG_NONE            },       /* Yora != Maltese */
964   {"mud",       HB_TAG('C','P','P',' ')},       /* Mednyj Aleut -> Creoles */
965   {"mui",       HB_TAG('M','L','Y',' ')},       /* Musi -> Malay */
966   {"mun",       HB_TAG_NONE            },       /* Munda [collection] != Mundari */
967   {"mup",       HB_TAG('R','A','J',' ')},       /* Malvi -> Rajasthani */
968   {"muq",       HB_TAG('H','M','N',' ')},       /* Eastern Xiangxi Miao -> Hmong */
969 /*{"mus",       HB_TAG('M','U','S',' ')},*/     /* Creek -> Muscogee */
970   {"mvb",       HB_TAG('A','T','H',' ')},       /* Mattole -> Athapaskan */
971   {"mve",       HB_TAG('M','A','W',' ')},       /* Marwari (Pakistan) */
972   {"mvf",       HB_TAG('M','N','G',' ')},       /* Peripheral Mongolian -> Mongolian */
973   {"mwk",       HB_TAG('M','N','K',' ')},       /* Kita Maninkakan -> Maninka */
974 /*{"mwl",       HB_TAG('M','W','L',' ')},*/     /* Mirandese */
975   {"mwq",       HB_TAG('Q','I','N',' ')},       /* Mün Chin -> Chin */
976   {"mwr",       HB_TAG('M','A','W',' ')},       /* Marwari [macrolanguage] */
977   {"mww",       HB_TAG('M','W','W',' ')},       /* Hmong Daw */
978   {"mww",       HB_TAG('H','M','N',' ')},       /* Hmong Daw -> Hmong */
979   {"my",        HB_TAG('B','R','M',' ')},       /* Burmese */
980   {"mym",       HB_TAG('M','E','N',' ')},       /* Me’en */
981 /*{"myn",       HB_TAG('M','Y','N',' ')},*/     /* Mayan [collection] */
982   {"myq",       HB_TAG('M','N','K',' ')},       /* Forest Maninka (retired code) -> Maninka */
983   {"myv",       HB_TAG('E','R','Z',' ')},       /* Erzya */
984   {"mzb",       HB_TAG('B','B','R',' ')},       /* Tumzabt -> Berber */
985 /*{"mzn",       HB_TAG('M','Z','N',' ')},*/     /* Mazanderani */
986   {"mzs",       HB_TAG('C','P','P',' ')},       /* Macanese -> Creoles */
987   {"na",        HB_TAG('N','A','U',' ')},       /* Nauru -> Nauruan */
988   {"nag",       HB_TAG('N','A','G',' ')},       /* Naga Pidgin -> Naga-Assamese */
989   {"nag",       HB_TAG('C','P','P',' ')},       /* Naga Pidgin -> Creoles */
990 /*{"nah",       HB_TAG('N','A','H',' ')},*/     /* Nahuatl [collection] */
991   {"nan",       HB_TAG('Z','H','S',' ')},       /* Min Nan Chinese -> Chinese, Simplified */
992 /*{"nap",       HB_TAG('N','A','P',' ')},*/     /* Neapolitan */
993   {"nas",       HB_TAG_NONE            },       /* Naasioi != Naskapi */
994   {"naz",       HB_TAG('N','A','H',' ')},       /* Coatepec Nahuatl -> Nahuatl */
995   {"nb",        HB_TAG('N','O','R',' ')},       /* Norwegian Bokmål -> Norwegian */
996   {"nch",       HB_TAG('N','A','H',' ')},       /* Central Huasteca Nahuatl -> Nahuatl */
997   {"nci",       HB_TAG('N','A','H',' ')},       /* Classical Nahuatl -> Nahuatl */
998   {"ncj",       HB_TAG('N','A','H',' ')},       /* Northern Puebla Nahuatl -> Nahuatl */
999   {"ncl",       HB_TAG('N','A','H',' ')},       /* Michoacán Nahuatl -> Nahuatl */
1000   {"ncr",       HB_TAG_NONE            },       /* Ncane != N-Cree */
1001   {"ncx",       HB_TAG('N','A','H',' ')},       /* Central Puebla Nahuatl -> Nahuatl */
1002   {"nd",        HB_TAG('N','D','B',' ')},       /* North Ndebele -> Ndebele */
1003   {"ndb",       HB_TAG_NONE            },       /* Kenswei Nsei != Ndebele */
1004 /*{"ndc",       HB_TAG('N','D','C',' ')},*/     /* Ndau */
1005   {"ndg",       HB_TAG_NONE            },       /* Ndengereko != Ndonga */
1006 /*{"nds",       HB_TAG('N','D','S',' ')},*/     /* Low Saxon */
1007   {"ne",        HB_TAG('N','E','P',' ')},       /* Nepali [macrolanguage] */
1008   {"nef",       HB_TAG('C','P','P',' ')},       /* Nefamese -> Creoles */
1009 /*{"new",       HB_TAG('N','E','W',' ')},*/     /* Newari */
1010   {"ng",        HB_TAG('N','D','G',' ')},       /* Ndonga */
1011 /*{"nga",       HB_TAG('N','G','A',' ')},*/     /* Ngbaka */
1012   {"ngl",       HB_TAG('L','M','W',' ')},       /* Lomwe */
1013   {"ngm",       HB_TAG('C','P','P',' ')},       /* Ngatik Men's Creole -> Creoles */
1014   {"ngo",       HB_TAG('S','X','T',' ')},       /* Ngoni (retired code) -> Sutu */
1015   {"ngr",       HB_TAG_NONE            },       /* Engdewu != Nagari */
1016   {"ngu",       HB_TAG('N','A','H',' ')},       /* Guerrero Nahuatl -> Nahuatl */
1017   {"nhc",       HB_TAG('N','A','H',' ')},       /* Tabasco Nahuatl -> Nahuatl */
1018   {"nhd",       HB_TAG('G','U','A',' ')},       /* Chiripá -> Guarani */
1019   {"nhe",       HB_TAG('N','A','H',' ')},       /* Eastern Huasteca Nahuatl -> Nahuatl */
1020   {"nhg",       HB_TAG('N','A','H',' ')},       /* Tetelcingo Nahuatl -> Nahuatl */
1021   {"nhi",       HB_TAG('N','A','H',' ')},       /* Zacatlán-Ahuacatlán-Tepetzintla Nahuatl -> Nahuatl */
1022   {"nhk",       HB_TAG('N','A','H',' ')},       /* Isthmus-Cosoleacaque Nahuatl -> Nahuatl */
1023   {"nhm",       HB_TAG('N','A','H',' ')},       /* Morelos Nahuatl -> Nahuatl */
1024   {"nhn",       HB_TAG('N','A','H',' ')},       /* Central Nahuatl -> Nahuatl */
1025   {"nhp",       HB_TAG('N','A','H',' ')},       /* Isthmus-Pajapan Nahuatl -> Nahuatl */
1026   {"nhq",       HB_TAG('N','A','H',' ')},       /* Huaxcaleca Nahuatl -> Nahuatl */
1027   {"nht",       HB_TAG('N','A','H',' ')},       /* Ometepec Nahuatl -> Nahuatl */
1028   {"nhv",       HB_TAG('N','A','H',' ')},       /* Temascaltepec Nahuatl -> Nahuatl */
1029   {"nhw",       HB_TAG('N','A','H',' ')},       /* Western Huasteca Nahuatl -> Nahuatl */
1030   {"nhx",       HB_TAG('N','A','H',' ')},       /* Isthmus-Mecayapan Nahuatl -> Nahuatl */
1031   {"nhy",       HB_TAG('N','A','H',' ')},       /* Northern Oaxaca Nahuatl -> Nahuatl */
1032   {"nhz",       HB_TAG('N','A','H',' ')},       /* Santa María La Alta Nahuatl -> Nahuatl */
1033   {"niq",       HB_TAG('K','A','L',' ')},       /* Nandi -> Kalenjin */
1034   {"nis",       HB_TAG_NONE            },       /* Nimi != Nisi */
1035 /*{"niu",       HB_TAG('N','I','U',' ')},*/     /* Niuean */
1036   {"niv",       HB_TAG('G','I','L',' ')},       /* Gilyak */
1037   {"njt",       HB_TAG('C','P','P',' ')},       /* Ndyuka-Trio Pidgin -> Creoles */
1038   {"njz",       HB_TAG('N','I','S',' ')},       /* Nyishi -> Nisi */
1039   {"nko",       HB_TAG_NONE            },       /* Nkonya != N’Ko */
1040   {"nkx",       HB_TAG('I','J','O',' ')},       /* Nkoroo -> Ijo */
1041   {"nl",        HB_TAG('N','L','D',' ')},       /* Dutch */
1042   {"nla",       HB_TAG('B','M','L',' ')},       /* Ngombale -> Bamileke */
1043   {"nle",       HB_TAG('L','U','H',' ')},       /* East Nyala -> Luyia */
1044   {"nln",       HB_TAG('N','A','H',' ')},       /* Durango Nahuatl (retired code) -> Nahuatl */
1045   {"nlv",       HB_TAG('N','A','H',' ')},       /* Orizaba Nahuatl -> Nahuatl */
1046   {"nn",        HB_TAG('N','Y','N',' ')},       /* Norwegian Nynorsk (Nynorsk, Norwegian) */
1047   {"nnh",       HB_TAG('B','M','L',' ')},       /* Ngiemboon -> Bamileke */
1048   {"nnz",       HB_TAG('B','M','L',' ')},       /* Nda'nda' -> Bamileke */
1049   {"no",        HB_TAG('N','O','R',' ')},       /* Norwegian [macrolanguage] */
1050   {"nod",       HB_TAG('N','T','A',' ')},       /* Northern Thai -> Northern Tai */
1051 /*{"noe",       HB_TAG('N','O','E',' ')},*/     /* Nimadi */
1052 /*{"nog",       HB_TAG('N','O','G',' ')},*/     /* Nogai */
1053 /*{"nov",       HB_TAG('N','O','V',' ')},*/     /* Novial */
1054   {"npi",       HB_TAG('N','E','P',' ')},       /* Nepali */
1055   {"npl",       HB_TAG('N','A','H',' ')},       /* Southeastern Puebla Nahuatl -> Nahuatl */
1056   {"nqo",       HB_TAG('N','K','O',' ')},       /* N’Ko */
1057   {"nr",        HB_TAG('N','D','B',' ')},       /* South Ndebele -> Ndebele */
1058   {"nsk",       HB_TAG('N','A','S',' ')},       /* Naskapi */
1059   {"nsm",       HB_TAG_NONE            },       /* Sumi Naga != Northern Sami */
1060 /*{"nso",       HB_TAG('N','S','O',' ')},*/     /* Northern Sotho */
1061   {"nsu",       HB_TAG('N','A','H',' ')},       /* Sierra Negra Nahuatl -> Nahuatl */
1062   {"nto",       HB_TAG_NONE            },       /* Ntomba != Esperanto */
1063   {"nue",       HB_TAG('B','A','D','0')},       /* Ngundu -> Banda */
1064   {"nuu",       HB_TAG('B','A','D','0')},       /* Ngbundu -> Banda */
1065   {"nuz",       HB_TAG('N','A','H',' ')},       /* Tlamacazapa Nahuatl -> Nahuatl */
1066   {"nv",        HB_TAG('N','A','V',' ')},       /* Navajo */
1067   {"nv",        HB_TAG('A','T','H',' ')},       /* Navajo -> Athapaskan */
1068   {"nwe",       HB_TAG('B','M','L',' ')},       /* Ngwe -> Bamileke */
1069   {"ny",        HB_TAG('C','H','I',' ')},       /* Chichewa (Chewa, Nyanja) */
1070   {"nyd",       HB_TAG('L','U','H',' ')},       /* Nyore -> Luyia */
1071 /*{"nym",       HB_TAG('N','Y','M',' ')},*/     /* Nyamwezi */
1072   {"nyn",       HB_TAG('N','K','L',' ')},       /* Nyankole */
1073 /*{"nza",       HB_TAG('N','Z','A',' ')},*/     /* Tigon Mbembe -> Mbembe Tigon */
1074   {"oc",        HB_TAG('O','C','I',' ')},       /* Occitan (post 1500) */
1075   {"oj",        HB_TAG('O','J','B',' ')},       /* Ojibwa [macrolanguage] -> Ojibway */
1076 /*{"ojb",       HB_TAG('O','J','B',' ')},*/     /* Northwestern Ojibwa -> Ojibway */
1077   {"ojc",       HB_TAG('O','J','B',' ')},       /* Central Ojibwa -> Ojibway */
1078   {"ojg",       HB_TAG('O','J','B',' ')},       /* Eastern Ojibwa -> Ojibway */
1079   {"ojs",       HB_TAG('O','C','R',' ')},       /* Severn Ojibwa -> Oji-Cree */
1080   {"ojs",       HB_TAG('O','J','B',' ')},       /* Severn Ojibwa -> Ojibway */
1081   {"ojw",       HB_TAG('O','J','B',' ')},       /* Western Ojibwa -> Ojibway */
1082   {"okd",       HB_TAG('I','J','O',' ')},       /* Okodia -> Ijo */
1083   {"oki",       HB_TAG('K','A','L',' ')},       /* Okiek -> Kalenjin */
1084   {"okm",       HB_TAG('K','O','H',' ')},       /* Middle Korean (10th-16th cent.) -> Korean Old Hangul */
1085   {"okr",       HB_TAG('I','J','O',' ')},       /* Kirike -> Ijo */
1086   {"om",        HB_TAG('O','R','O',' ')},       /* Oromo [macrolanguage] */
1087   {"onx",       HB_TAG('C','P','P',' ')},       /* Onin Based Pidgin -> Creoles */
1088   {"oor",       HB_TAG('C','P','P',' ')},       /* Oorlams -> Creoles */
1089   {"or",        HB_TAG('O','R','I',' ')},       /* Odia (formerly Oriya) [macrolanguage] */
1090   {"orc",       HB_TAG('O','R','O',' ')},       /* Orma -> Oromo */
1091   {"orn",       HB_TAG('M','L','Y',' ')},       /* Orang Kanaq -> Malay */
1092   {"oro",       HB_TAG_NONE            },       /* Orokolo != Oromo */
1093   {"orr",       HB_TAG('I','J','O',' ')},       /* Oruma -> Ijo */
1094   {"ors",       HB_TAG('M','L','Y',' ')},       /* Orang Seletar -> Malay */
1095   {"ory",       HB_TAG('O','R','I',' ')},       /* Odia (formerly Oriya) */
1096   {"os",        HB_TAG('O','S','S',' ')},       /* Ossetian */
1097   {"otw",       HB_TAG('O','J','B',' ')},       /* Ottawa -> Ojibway */
1098   {"oua",       HB_TAG('B','B','R',' ')},       /* Tagargrent -> Berber */
1099   {"pa",        HB_TAG('P','A','N',' ')},       /* Punjabi */
1100   {"paa",       HB_TAG_NONE            },       /* Papuan [collection] != Palestinian Aramaic */
1101 /*{"pag",       HB_TAG('P','A','G',' ')},*/     /* Pangasinan */
1102   {"pal",       HB_TAG_NONE            },       /* Pahlavi != Pali */
1103 /*{"pam",       HB_TAG('P','A','M',' ')},*/     /* Pampanga -> Pampangan */
1104   {"pap",       HB_TAG('P','A','P','0')},       /* Papiamento -> Papiamentu */
1105   {"pap",       HB_TAG('C','P','P',' ')},       /* Papiamento -> Creoles */
1106   {"pas",       HB_TAG_NONE            },       /* Papasena != Pashto */
1107 /*{"pau",       HB_TAG('P','A','U',' ')},*/     /* Palauan */
1108   {"pbt",       HB_TAG('P','A','S',' ')},       /* Southern Pashto -> Pashto */
1109   {"pbu",       HB_TAG('P','A','S',' ')},       /* Northern Pashto -> Pashto */
1110 /*{"pcc",       HB_TAG('P','C','C',' ')},*/     /* Bouyei */
1111 /*{"pcd",       HB_TAG('P','C','D',' ')},*/     /* Picard */
1112   {"pce",       HB_TAG('P','L','G',' ')},       /* Ruching Palaung -> Palaung */
1113   {"pck",       HB_TAG('Q','I','N',' ')},       /* Paite Chin -> Chin */
1114   {"pcm",       HB_TAG('C','P','P',' ')},       /* Nigerian Pidgin -> Creoles */
1115 /*{"pdc",       HB_TAG('P','D','C',' ')},*/     /* Pennsylvania German */
1116   {"pdu",       HB_TAG('K','R','N',' ')},       /* Kayan -> Karen */
1117   {"pea",       HB_TAG('C','P','P',' ')},       /* Peranakan Indonesian -> Creoles */
1118   {"pel",       HB_TAG('M','L','Y',' ')},       /* Pekal -> Malay */
1119   {"pes",       HB_TAG('F','A','R',' ')},       /* Iranian Persian -> Persian */
1120   {"pey",       HB_TAG('C','P','P',' ')},       /* Petjo -> Creoles */
1121   {"pga",       HB_TAG('A','R','A',' ')},       /* Sudanese Creole Arabic -> Arabic */
1122   {"pga",       HB_TAG('C','P','P',' ')},       /* Sudanese Creole Arabic -> Creoles */
1123 /*{"phk",       HB_TAG('P','H','K',' ')},*/     /* Phake */
1124   {"pi",        HB_TAG('P','A','L',' ')},       /* Pali */
1125   {"pih",       HB_TAG('P','I','H',' ')},       /* Pitcairn-Norfolk -> Norfolk */
1126   {"pih",       HB_TAG('C','P','P',' ')},       /* Pitcairn-Norfolk -> Creoles */
1127   {"pil",       HB_TAG_NONE            },       /* Yom != Filipino */
1128   {"pis",       HB_TAG('C','P','P',' ')},       /* Pijin -> Creoles */
1129   {"pkh",       HB_TAG('Q','I','N',' ')},       /* Pankhu -> Chin */
1130   {"pko",       HB_TAG('K','A','L',' ')},       /* Pökoot -> Kalenjin */
1131   {"pl",        HB_TAG('P','L','K',' ')},       /* Polish */
1132   {"plg",       HB_TAG_NONE            },       /* Pilagá != Palaung */
1133   {"plk",       HB_TAG_NONE            },       /* Kohistani Shina != Polish */
1134   {"pll",       HB_TAG('P','L','G',' ')},       /* Shwe Palaung -> Palaung */
1135   {"pln",       HB_TAG('C','P','P',' ')},       /* Palenquero -> Creoles */
1136   {"plp",       HB_TAG('P','A','P',' ')},       /* Palpa (retired code) */
1137   {"plt",       HB_TAG('M','L','G',' ')},       /* Plateau Malagasy -> Malagasy */
1138   {"pml",       HB_TAG('C','P','P',' ')},       /* Lingua Franca -> Creoles */
1139 /*{"pms",       HB_TAG('P','M','S',' ')},*/     /* Piemontese */
1140   {"pmy",       HB_TAG('C','P','P',' ')},       /* Papuan Malay -> Creoles */
1141 /*{"pnb",       HB_TAG('P','N','B',' ')},*/     /* Western Panjabi */
1142   {"poc",       HB_TAG('M','Y','N',' ')},       /* Poqomam -> Mayan */
1143   {"poh",       HB_TAG('P','O','H',' ')},       /* Poqomchi' -> Pocomchi */
1144   {"poh",       HB_TAG('M','Y','N',' ')},       /* Poqomchi' -> Mayan */
1145 /*{"pon",       HB_TAG('P','O','N',' ')},*/     /* Pohnpeian */
1146   {"pov",       HB_TAG('C','P','P',' ')},       /* Upper Guinea Crioulo -> Creoles */
1147   {"ppa",       HB_TAG('B','A','G',' ')},       /* Pao (retired code) -> Baghelkhandi */
1148   {"pre",       HB_TAG('C','P','P',' ')},       /* Principense -> Creoles */
1149 /*{"pro",       HB_TAG('P','R','O',' ')},*/     /* Old Provençal (to 1500) -> Provençal / Old Provençal */
1150   {"prs",       HB_TAG('D','R','I',' ')},       /* Dari */
1151   {"prs",       HB_TAG('F','A','R',' ')},       /* Dari -> Persian */
1152   {"ps",        HB_TAG('P','A','S',' ')},       /* Pashto [macrolanguage] */
1153   {"pse",       HB_TAG('M','L','Y',' ')},       /* Central Malay -> Malay */
1154   {"pst",       HB_TAG('P','A','S',' ')},       /* Central Pashto -> Pashto */
1155   {"pt",        HB_TAG('P','T','G',' ')},       /* Portuguese */
1156   {"pub",       HB_TAG('Q','I','N',' ')},       /* Purum -> Chin */
1157   {"puz",       HB_TAG('Q','I','N',' ')},       /* Purum Naga (retired code) -> Chin */
1158   {"pwo",       HB_TAG('P','W','O',' ')},       /* Pwo Western Karen -> Western Pwo Karen */
1159   {"pwo",       HB_TAG('K','R','N',' ')},       /* Pwo Western Karen -> Karen */
1160   {"pww",       HB_TAG('K','R','N',' ')},       /* Pwo Northern Karen -> Karen */
1161   {"qu",        HB_TAG('Q','U','Z',' ')},       /* Quechua [macrolanguage] */
1162   {"qub",       HB_TAG('Q','W','H',' ')},       /* Huallaga Huánuco Quechua -> Quechua (Peru) */
1163   {"qub",       HB_TAG('Q','U','Z',' ')},       /* Huallaga Huánuco Quechua -> Quechua */
1164   {"quc",       HB_TAG('Q','U','C',' ')},       /* K’iche’ */
1165   {"quc",       HB_TAG('M','Y','N',' ')},       /* K'iche' -> Mayan */
1166   {"qud",       HB_TAG('Q','V','I',' ')},       /* Calderón Highland Quichua -> Quechua (Ecuador) */
1167   {"qud",       HB_TAG('Q','U','Z',' ')},       /* Calderón Highland Quichua -> Quechua */
1168   {"quf",       HB_TAG('Q','U','Z',' ')},       /* Lambayeque Quechua -> Quechua */
1169   {"qug",       HB_TAG('Q','V','I',' ')},       /* Chimborazo Highland Quichua -> Quechua (Ecuador) */
1170   {"qug",       HB_TAG('Q','U','Z',' ')},       /* Chimborazo Highland Quichua -> Quechua */
1171   {"quh",       HB_TAG('Q','U','H',' ')},       /* South Bolivian Quechua -> Quechua (Bolivia) */
1172   {"quh",       HB_TAG('Q','U','Z',' ')},       /* South Bolivian Quechua -> Quechua */
1173   {"quk",       HB_TAG('Q','U','Z',' ')},       /* Chachapoyas Quechua -> Quechua */
1174   {"qul",       HB_TAG('Q','U','H',' ')},       /* North Bolivian Quechua -> Quechua (Bolivia) */
1175   {"qul",       HB_TAG('Q','U','Z',' ')},       /* North Bolivian Quechua -> Quechua */
1176   {"qum",       HB_TAG('M','Y','N',' ')},       /* Sipacapense -> Mayan */
1177   {"qup",       HB_TAG('Q','V','I',' ')},       /* Southern Pastaza Quechua -> Quechua (Ecuador) */
1178   {"qup",       HB_TAG('Q','U','Z',' ')},       /* Southern Pastaza Quechua -> Quechua */
1179   {"qur",       HB_TAG('Q','W','H',' ')},       /* Yanahuanca Pasco Quechua -> Quechua (Peru) */
1180   {"qur",       HB_TAG('Q','U','Z',' ')},       /* Yanahuanca Pasco Quechua -> Quechua */
1181   {"qus",       HB_TAG('Q','U','H',' ')},       /* Santiago del Estero Quichua -> Quechua (Bolivia) */
1182   {"qus",       HB_TAG('Q','U','Z',' ')},       /* Santiago del Estero Quichua -> Quechua */
1183   {"quv",       HB_TAG('M','Y','N',' ')},       /* Sacapulteco -> Mayan */
1184   {"quw",       HB_TAG('Q','V','I',' ')},       /* Tena Lowland Quichua -> Quechua (Ecuador) */
1185   {"quw",       HB_TAG('Q','U','Z',' ')},       /* Tena Lowland Quichua -> Quechua */
1186   {"qux",       HB_TAG('Q','W','H',' ')},       /* Yauyos Quechua -> Quechua (Peru) */
1187   {"qux",       HB_TAG('Q','U','Z',' ')},       /* Yauyos Quechua -> Quechua */
1188   {"quy",       HB_TAG('Q','U','Z',' ')},       /* Ayacucho Quechua -> Quechua */
1189 /*{"quz",       HB_TAG('Q','U','Z',' ')},*/     /* Cusco Quechua -> Quechua */
1190   {"qva",       HB_TAG('Q','W','H',' ')},       /* Ambo-Pasco Quechua -> Quechua (Peru) */
1191   {"qva",       HB_TAG('Q','U','Z',' ')},       /* Ambo-Pasco Quechua -> Quechua */
1192   {"qvc",       HB_TAG('Q','U','Z',' ')},       /* Cajamarca Quechua -> Quechua */
1193   {"qve",       HB_TAG('Q','U','Z',' ')},       /* Eastern Apurímac Quechua -> Quechua */
1194   {"qvh",       HB_TAG('Q','W','H',' ')},       /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua (Peru) */
1195   {"qvh",       HB_TAG('Q','U','Z',' ')},       /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua */
1196   {"qvi",       HB_TAG('Q','V','I',' ')},       /* Imbabura Highland Quichua -> Quechua (Ecuador) */
1197   {"qvi",       HB_TAG('Q','U','Z',' ')},       /* Imbabura Highland Quichua -> Quechua */
1198   {"qvj",       HB_TAG('Q','V','I',' ')},       /* Loja Highland Quichua -> Quechua (Ecuador) */
1199   {"qvj",       HB_TAG('Q','U','Z',' ')},       /* Loja Highland Quichua -> Quechua */
1200   {"qvl",       HB_TAG('Q','W','H',' ')},       /* Cajatambo North Lima Quechua -> Quechua (Peru) */
1201   {"qvl",       HB_TAG('Q','U','Z',' ')},       /* Cajatambo North Lima Quechua -> Quechua */
1202   {"qvm",       HB_TAG('Q','W','H',' ')},       /* Margos-Yarowilca-Lauricocha Quechua -> Quechua (Peru) */
1203   {"qvm",       HB_TAG('Q','U','Z',' ')},       /* Margos-Yarowilca-Lauricocha Quechua -> Quechua */
1204   {"qvn",       HB_TAG('Q','W','H',' ')},       /* North Junín Quechua -> Quechua (Peru) */
1205   {"qvn",       HB_TAG('Q','U','Z',' ')},       /* North Junín Quechua -> Quechua */
1206   {"qvo",       HB_TAG('Q','V','I',' ')},       /* Napo Lowland Quechua -> Quechua (Ecuador) */
1207   {"qvo",       HB_TAG('Q','U','Z',' ')},       /* Napo Lowland Quechua -> Quechua */
1208   {"qvp",       HB_TAG('Q','W','H',' ')},       /* Pacaraos Quechua -> Quechua (Peru) */
1209   {"qvp",       HB_TAG('Q','U','Z',' ')},       /* Pacaraos Quechua -> Quechua */
1210   {"qvs",       HB_TAG('Q','U','Z',' ')},       /* San Martín Quechua -> Quechua */
1211   {"qvw",       HB_TAG('Q','W','H',' ')},       /* Huaylla Wanca Quechua -> Quechua (Peru) */
1212   {"qvw",       HB_TAG('Q','U','Z',' ')},       /* Huaylla Wanca Quechua -> Quechua */
1213   {"qvz",       HB_TAG('Q','V','I',' ')},       /* Northern Pastaza Quichua -> Quechua (Ecuador) */
1214   {"qvz",       HB_TAG('Q','U','Z',' ')},       /* Northern Pastaza Quichua -> Quechua */
1215   {"qwa",       HB_TAG('Q','W','H',' ')},       /* Corongo Ancash Quechua -> Quechua (Peru) */
1216   {"qwa",       HB_TAG('Q','U','Z',' ')},       /* Corongo Ancash Quechua -> Quechua */
1217   {"qwc",       HB_TAG('Q','U','Z',' ')},       /* Classical Quechua -> Quechua */
1218   {"qwh",       HB_TAG('Q','W','H',' ')},       /* Huaylas Ancash Quechua -> Quechua (Peru) */
1219   {"qwh",       HB_TAG('Q','U','Z',' ')},       /* Huaylas Ancash Quechua -> Quechua */
1220   {"qws",       HB_TAG('Q','W','H',' ')},       /* Sihuas Ancash Quechua -> Quechua (Peru) */
1221   {"qws",       HB_TAG('Q','U','Z',' ')},       /* Sihuas Ancash Quechua -> Quechua */
1222   {"qwt",       HB_TAG('A','T','H',' ')},       /* Kwalhioqua-Tlatskanai -> Athapaskan */
1223   {"qxa",       HB_TAG('Q','W','H',' ')},       /* Chiquián Ancash Quechua -> Quechua (Peru) */
1224   {"qxa",       HB_TAG('Q','U','Z',' ')},       /* Chiquián Ancash Quechua -> Quechua */
1225   {"qxc",       HB_TAG('Q','W','H',' ')},       /* Chincha Quechua -> Quechua (Peru) */
1226   {"qxc",       HB_TAG('Q','U','Z',' ')},       /* Chincha Quechua -> Quechua */
1227   {"qxh",       HB_TAG('Q','W','H',' ')},       /* Panao Huánuco Quechua -> Quechua (Peru) */
1228   {"qxh",       HB_TAG('Q','U','Z',' ')},       /* Panao Huánuco Quechua -> Quechua */
1229   {"qxl",       HB_TAG('Q','V','I',' ')},       /* Salasaca Highland Quichua -> Quechua (Ecuador) */
1230   {"qxl",       HB_TAG('Q','U','Z',' ')},       /* Salasaca Highland Quichua -> Quechua */
1231   {"qxn",       HB_TAG('Q','W','H',' ')},       /* Northern Conchucos Ancash Quechua -> Quechua (Peru) */
1232   {"qxn",       HB_TAG('Q','U','Z',' ')},       /* Northern Conchucos Ancash Quechua -> Quechua */
1233   {"qxo",       HB_TAG('Q','W','H',' ')},       /* Southern Conchucos Ancash Quechua -> Quechua (Peru) */
1234   {"qxo",       HB_TAG('Q','U','Z',' ')},       /* Southern Conchucos Ancash Quechua -> Quechua */
1235   {"qxp",       HB_TAG('Q','U','Z',' ')},       /* Puno Quechua -> Quechua */
1236   {"qxr",       HB_TAG('Q','V','I',' ')},       /* Cañar Highland Quichua -> Quechua (Ecuador) */
1237   {"qxr",       HB_TAG('Q','U','Z',' ')},       /* Cañar Highland Quichua -> Quechua */
1238   {"qxt",       HB_TAG('Q','W','H',' ')},       /* Santa Ana de Tusi Pasco Quechua -> Quechua (Peru) */
1239   {"qxt",       HB_TAG('Q','U','Z',' ')},       /* Santa Ana de Tusi Pasco Quechua -> Quechua */
1240   {"qxu",       HB_TAG('Q','U','Z',' ')},       /* Arequipa-La Unión Quechua -> Quechua */
1241   {"qxw",       HB_TAG('Q','W','H',' ')},       /* Jauja Wanca Quechua -> Quechua (Peru) */
1242   {"qxw",       HB_TAG('Q','U','Z',' ')},       /* Jauja Wanca Quechua -> Quechua */
1243   {"rag",       HB_TAG('L','U','H',' ')},       /* Logooli -> Luyia */
1244 /*{"raj",       HB_TAG('R','A','J',' ')},*/     /* Rajasthani [macrolanguage] */
1245   {"ral",       HB_TAG('Q','I','N',' ')},       /* Ralte -> Chin */
1246 /*{"rar",       HB_TAG('R','A','R',' ')},*/     /* Rarotongan */
1247   {"rbb",       HB_TAG('P','L','G',' ')},       /* Rumai Palaung -> Palaung */
1248   {"rbl",       HB_TAG('B','I','K',' ')},       /* Miraya Bikol -> Bikol */
1249   {"rcf",       HB_TAG('C','P','P',' ')},       /* Réunion Creole French -> Creoles */
1250 /*{"rej",       HB_TAG('R','E','J',' ')},*/     /* Rejang */
1251 /*{"rhg",       HB_TAG('R','H','G',' ')},*/     /* Rohingya */
1252 /*{"ria",       HB_TAG('R','I','A',' ')},*/     /* Riang (India) */
1253   {"rif",       HB_TAG('R','I','F',' ')},       /* Tarifit */
1254   {"rif",       HB_TAG('B','B','R',' ')},       /* Tarifit -> Berber */
1255 /*{"rit",       HB_TAG('R','I','T',' ')},*/     /* Ritharrngu -> Ritarungo */
1256   {"rki",       HB_TAG('A','R','K',' ')},       /* Rakhine */
1257 /*{"rkw",       HB_TAG('R','K','W',' ')},*/     /* Arakwal */
1258   {"rm",        HB_TAG('R','M','S',' ')},       /* Romansh */
1259   {"rmc",       HB_TAG('R','O','Y',' ')},       /* Carpathian Romani -> Romany */
1260   {"rmf",       HB_TAG('R','O','Y',' ')},       /* Kalo Finnish Romani -> Romany */
1261   {"rml",       HB_TAG('R','O','Y',' ')},       /* Baltic Romani -> Romany */
1262   {"rmn",       HB_TAG('R','O','Y',' ')},       /* Balkan Romani -> Romany */
1263   {"rmo",       HB_TAG('R','O','Y',' ')},       /* Sinte Romani -> Romany */
1264   {"rms",       HB_TAG_NONE            },       /* Romanian Sign Language != Romansh */
1265   {"rmw",       HB_TAG('R','O','Y',' ')},       /* Welsh Romani -> Romany */
1266   {"rmy",       HB_TAG('R','M','Y',' ')},       /* Vlax Romani */
1267   {"rmy",       HB_TAG('R','O','Y',' ')},       /* Vlax Romani -> Romany */
1268   {"rmz",       HB_TAG('A','R','K',' ')},       /* Marma -> Rakhine */
1269   {"rn",        HB_TAG('R','U','N',' ')},       /* Rundi */
1270   {"ro",        HB_TAG('R','O','M',' ')},       /* Romanian */
1271   {"rom",       HB_TAG('R','O','Y',' ')},       /* Romany [macrolanguage] */
1272   {"rop",       HB_TAG('C','P','P',' ')},       /* Kriol -> Creoles */
1273   {"rtc",       HB_TAG('Q','I','N',' ')},       /* Rungtu Chin -> Chin */
1274 /*{"rtm",       HB_TAG('R','T','M',' ')},*/     /* Rotuman */
1275   {"ru",        HB_TAG('R','U','S',' ')},       /* Russian */
1276   {"rue",       HB_TAG('R','S','Y',' ')},       /* Rusyn */
1277 /*{"rup",       HB_TAG('R','U','P',' ')},*/     /* Aromanian */
1278   {"rw",        HB_TAG('R','U','A',' ')},       /* Kinyarwanda */
1279   {"rwr",       HB_TAG('M','A','W',' ')},       /* Marwari (India) */
1280   {"sa",        HB_TAG('S','A','N',' ')},       /* Sanskrit */
1281   {"sad",       HB_TAG_NONE            },       /* Sandawe != Sadri */
1282   {"sah",       HB_TAG('Y','A','K',' ')},       /* Yakut -> Sakha */
1283   {"sam",       HB_TAG('P','A','A',' ')},       /* Samaritan Aramaic -> Palestinian Aramaic */
1284 /*{"sas",       HB_TAG('S','A','S',' ')},*/     /* Sasak */
1285 /*{"sat",       HB_TAG('S','A','T',' ')},*/     /* Santali */
1286   {"say",       HB_TAG_NONE            },       /* Saya != Sayisi */
1287   {"sc",        HB_TAG('S','R','D',' ')},       /* Sardinian [macrolanguage] */
1288   {"scf",       HB_TAG('C','P','P',' ')},       /* San Miguel Creole French -> Creoles */
1289   {"sch",       HB_TAG('Q','I','N',' ')},       /* Sakachep -> Chin */
1290   {"sci",       HB_TAG('C','P','P',' ')},       /* Sri Lankan Creole Malay -> Creoles */
1291   {"sck",       HB_TAG('S','A','D',' ')},       /* Sadri */
1292 /*{"scn",       HB_TAG('S','C','N',' ')},*/     /* Sicilian */
1293 /*{"sco",       HB_TAG('S','C','O',' ')},*/     /* Scots */
1294   {"scs",       HB_TAG('S','C','S',' ')},       /* North Slavey */
1295   {"scs",       HB_TAG('S','L','A',' ')},       /* North Slavey -> Slavey */
1296   {"scs",       HB_TAG('A','T','H',' ')},       /* North Slavey -> Athapaskan */
1297   {"sd",        HB_TAG('S','N','D',' ')},       /* Sindhi */
1298   {"sdc",       HB_TAG('S','R','D',' ')},       /* Sassarese Sardinian -> Sardinian */
1299   {"sdh",       HB_TAG('K','U','R',' ')},       /* Southern Kurdish -> Kurdish */
1300   {"sdn",       HB_TAG('S','R','D',' ')},       /* Gallurese Sardinian -> Sardinian */
1301   {"sds",       HB_TAG('B','B','R',' ')},       /* Sened -> Berber */
1302   {"se",        HB_TAG('N','S','M',' ')},       /* Northern Sami */
1303   {"seh",       HB_TAG('S','N','A',' ')},       /* Sena */
1304   {"sek",       HB_TAG('A','T','H',' ')},       /* Sekani -> Athapaskan */
1305 /*{"sel",       HB_TAG('S','E','L',' ')},*/     /* Selkup */
1306   {"sez",       HB_TAG('Q','I','N',' ')},       /* Senthang Chin -> Chin */
1307   {"sfm",       HB_TAG('S','F','M',' ')},       /* Small Flowery Miao */
1308   {"sfm",       HB_TAG('H','M','N',' ')},       /* Small Flowery Miao -> Hmong */
1309   {"sg",        HB_TAG('S','G','O',' ')},       /* Sango */
1310 /*{"sga",       HB_TAG('S','G','A',' ')},*/     /* Old Irish (to 900) */
1311   {"sgc",       HB_TAG('K','A','L',' ')},       /* Kipsigis -> Kalenjin */
1312   {"sgo",       HB_TAG_NONE            },       /* Songa (retired code) != Sango */
1313 /*{"sgs",       HB_TAG('S','G','S',' ')},*/     /* Samogitian */
1314   {"sgw",       HB_TAG('C','H','G',' ')},       /* Sebat Bet Gurage -> Chaha Gurage */
1315   {"sh",        HB_TAG('B','O','S',' ')},       /* Serbo-Croatian [macrolanguage] -> Bosnian */
1316   {"sh",        HB_TAG('H','R','V',' ')},       /* Serbo-Croatian [macrolanguage] -> Croatian */
1317   {"sh",        HB_TAG('S','R','B',' ')},       /* Serbo-Croatian [macrolanguage] -> Serbian */
1318   {"shi",       HB_TAG('S','H','I',' ')},       /* Tachelhit */
1319   {"shi",       HB_TAG('B','B','R',' ')},       /* Tachelhit -> Berber */
1320   {"shl",       HB_TAG('Q','I','N',' ')},       /* Shendu -> Chin */
1321 /*{"shn",       HB_TAG('S','H','N',' ')},*/     /* Shan */
1322   {"shu",       HB_TAG('A','R','A',' ')},       /* Chadian Arabic -> Arabic */
1323   {"shy",       HB_TAG('B','B','R',' ')},       /* Tachawit -> Berber */
1324   {"si",        HB_TAG('S','N','H',' ')},       /* Sinhala (Sinhalese) */
1325   {"sib",       HB_TAG_NONE            },       /* Sebop != Sibe */
1326 /*{"sid",       HB_TAG('S','I','D',' ')},*/     /* Sidamo */
1327   {"sig",       HB_TAG_NONE            },       /* Paasaal != Silte Gurage */
1328   {"siz",       HB_TAG('B','B','R',' ')},       /* Siwi -> Berber */
1329   {"sjd",       HB_TAG('K','S','M',' ')},       /* Kildin Sami */
1330   {"sjo",       HB_TAG('S','I','B',' ')},       /* Xibe -> Sibe */
1331   {"sjs",       HB_TAG('B','B','R',' ')},       /* Senhaja De Srair -> Berber */
1332   {"sk",        HB_TAG('S','K','Y',' ')},       /* Slovak */
1333   {"skg",       HB_TAG('M','L','G',' ')},       /* Sakalava Malagasy -> Malagasy */
1334   {"skr",       HB_TAG('S','R','K',' ')},       /* Saraiki */
1335   {"sks",       HB_TAG_NONE            },       /* Maia != Skolt Sami */
1336   {"skw",       HB_TAG('C','P','P',' ')},       /* Skepi Creole Dutch -> Creoles */
1337   {"sky",       HB_TAG_NONE            },       /* Sikaiana != Slovak */
1338   {"sl",        HB_TAG('S','L','V',' ')},       /* Slovenian */
1339   {"sla",       HB_TAG_NONE            },       /* Slavic [collection] != Slavey */
1340   {"sm",        HB_TAG('S','M','O',' ')},       /* Samoan */
1341   {"sma",       HB_TAG('S','S','M',' ')},       /* Southern Sami */
1342   {"smj",       HB_TAG('L','S','M',' ')},       /* Lule Sami */
1343   {"sml",       HB_TAG_NONE            },       /* Central Sama != Somali */
1344   {"smn",       HB_TAG('I','S','M',' ')},       /* Inari Sami */
1345   {"sms",       HB_TAG('S','K','S',' ')},       /* Skolt Sami */
1346   {"smt",       HB_TAG('Q','I','N',' ')},       /* Simte -> Chin */
1347   {"sn",        HB_TAG('S','N','A','0')},       /* Shona */
1348   {"snh",       HB_TAG_NONE            },       /* Shinabo (retired code) != Sinhala (Sinhalese) */
1349 /*{"snk",       HB_TAG('S','N','K',' ')},*/     /* Soninke */
1350   {"so",        HB_TAG('S','M','L',' ')},       /* Somali */
1351   {"sog",       HB_TAG_NONE            },       /* Sogdian != Sodo Gurage */
1352 /*{"sop",       HB_TAG('S','O','P',' ')},*/     /* Songe */
1353   {"spv",       HB_TAG('O','R','I',' ')},       /* Sambalpuri -> Odia (formerly Oriya) */
1354   {"spy",       HB_TAG('K','A','L',' ')},       /* Sabaot -> Kalenjin */
1355   {"sq",        HB_TAG('S','Q','I',' ')},       /* Albanian [macrolanguage] */
1356   {"sr",        HB_TAG('S','R','B',' ')},       /* Serbian */
1357   {"srb",       HB_TAG_NONE            },       /* Sora != Serbian */
1358   {"src",       HB_TAG('S','R','D',' ')},       /* Logudorese Sardinian -> Sardinian */
1359   {"srk",       HB_TAG_NONE            },       /* Serudung Murut != Saraiki */
1360   {"srm",       HB_TAG('C','P','P',' ')},       /* Saramaccan -> Creoles */
1361   {"srn",       HB_TAG('C','P','P',' ')},       /* Sranan Tongo -> Creoles */
1362   {"sro",       HB_TAG('S','R','D',' ')},       /* Campidanese Sardinian -> Sardinian */
1363 /*{"srr",       HB_TAG('S','R','R',' ')},*/     /* Serer */
1364   {"srs",       HB_TAG('A','T','H',' ')},       /* Sarsi -> Athapaskan */
1365   {"ss",        HB_TAG('S','W','Z',' ')},       /* Swati */
1366   {"ssh",       HB_TAG('A','R','A',' ')},       /* Shihhi Arabic -> Arabic */
1367   {"ssl",       HB_TAG_NONE            },       /* Western Sisaala != South Slavey */
1368   {"ssm",       HB_TAG_NONE            },       /* Semnam != Southern Sami */
1369   {"st",        HB_TAG('S','O','T',' ')},       /* Southern Sotho */
1370   {"sta",       HB_TAG('C','P','P',' ')},       /* Settla -> Creoles */
1371 /*{"stq",       HB_TAG('S','T','Q',' ')},*/     /* Saterfriesisch -> Saterland Frisian */
1372   {"stv",       HB_TAG('S','I','G',' ')},       /* Silt'e -> Silte Gurage */
1373   {"su",        HB_TAG('S','U','N',' ')},       /* Sundanese */
1374 /*{"suk",       HB_TAG('S','U','K',' ')},*/     /* Sukuma */
1375   {"suq",       HB_TAG('S','U','R',' ')},       /* Suri */
1376   {"sur",       HB_TAG_NONE            },       /* Mwaghavul != Suri */
1377   {"sv",        HB_TAG('S','V','E',' ')},       /* Swedish */
1378 /*{"sva",       HB_TAG('S','V','A',' ')},*/     /* Svan */
1379   {"svc",       HB_TAG('C','P','P',' ')},       /* Vincentian Creole English -> Creoles */
1380   {"sve",       HB_TAG_NONE            },       /* Serili != Swedish */
1381   {"sw",        HB_TAG('S','W','K',' ')},       /* Swahili [macrolanguage] */
1382   {"swb",       HB_TAG('C','M','R',' ')},       /* Maore Comorian -> Comorian */
1383   {"swc",       HB_TAG('S','W','K',' ')},       /* Congo Swahili -> Swahili */
1384   {"swh",       HB_TAG('S','W','K',' ')},       /* Swahili */
1385   {"swk",       HB_TAG_NONE            },       /* Malawi Sena != Swahili */
1386   {"swn",       HB_TAG('B','B','R',' ')},       /* Sawknah -> Berber */
1387   {"swv",       HB_TAG('M','A','W',' ')},       /* Shekhawati -> Marwari */
1388 /*{"sxu",       HB_TAG('S','X','U',' ')},*/     /* Upper Saxon */
1389   {"syc",       HB_TAG('S','Y','R',' ')},       /* Classical Syriac -> Syriac */
1390 /*{"syl",       HB_TAG('S','Y','L',' ')},*/     /* Sylheti */
1391 /*{"syr",       HB_TAG('S','Y','R',' ')},*/     /* Syriac [macrolanguage] */
1392 /*{"szl",       HB_TAG('S','Z','L',' ')},*/     /* Silesian */
1393   {"ta",        HB_TAG('T','A','M',' ')},       /* Tamil */
1394   {"taa",       HB_TAG('A','T','H',' ')},       /* Lower Tanana -> Athapaskan */
1395 /*{"tab",       HB_TAG('T','A','B',' ')},*/     /* Tabassaran -> Tabasaran */
1396   {"taj",       HB_TAG_NONE            },       /* Eastern Tamang != Tajiki */
1397   {"taq",       HB_TAG('T','M','H',' ')},       /* Tamasheq -> Tamashek */
1398   {"taq",       HB_TAG('B','B','R',' ')},       /* Tamasheq -> Berber */
1399   {"tas",       HB_TAG('C','P','P',' ')},       /* Tay Boi -> Creoles */
1400   {"tau",       HB_TAG('A','T','H',' ')},       /* Upper Tanana -> Athapaskan */
1401   {"tcb",       HB_TAG('A','T','H',' ')},       /* Tanacross -> Athapaskan */
1402   {"tce",       HB_TAG('A','T','H',' ')},       /* Southern Tutchone -> Athapaskan */
1403   {"tch",       HB_TAG('C','P','P',' ')},       /* Turks And Caicos Creole English -> Creoles */
1404   {"tcp",       HB_TAG('Q','I','N',' ')},       /* Tawr Chin -> Chin */
1405   {"tcs",       HB_TAG('C','P','P',' ')},       /* Torres Strait Creole -> Creoles */
1406   {"tcy",       HB_TAG('T','U','L',' ')},       /* Tulu -> Tumbuka */
1407   {"tcz",       HB_TAG('Q','I','N',' ')},       /* Thado Chin -> Chin */
1408 /*{"tdd",       HB_TAG('T','D','D',' ')},*/     /* Tai Nüa -> Dehong Dai */
1409   {"tdx",       HB_TAG('M','L','G',' ')},       /* Tandroy-Mahafaly Malagasy -> Malagasy */
1410   {"te",        HB_TAG('T','E','L',' ')},       /* Telugu */
1411   {"tec",       HB_TAG('K','A','L',' ')},       /* Terik -> Kalenjin */
1412   {"tem",       HB_TAG('T','M','N',' ')},       /* Timne -> Temne */
1413 /*{"tet",       HB_TAG('T','E','T',' ')},*/     /* Tetum */
1414   {"tez",       HB_TAG('B','B','R',' ')},       /* Tetserret -> Berber */
1415   {"tfn",       HB_TAG('A','T','H',' ')},       /* Tanaina -> Athapaskan */
1416   {"tg",        HB_TAG('T','A','J',' ')},       /* Tajik -> Tajiki */
1417   {"tgh",       HB_TAG('C','P','P',' ')},       /* Tobagonian Creole English -> Creoles */
1418   {"tgj",       HB_TAG('N','I','S',' ')},       /* Tagin -> Nisi */
1419   {"tgn",       HB_TAG_NONE            },       /* Tandaganon != Tongan */
1420   {"tgr",       HB_TAG_NONE            },       /* Tareng != Tigre */
1421   {"tgx",       HB_TAG('A','T','H',' ')},       /* Tagish -> Athapaskan */
1422   {"tgy",       HB_TAG_NONE            },       /* Togoyo != Tigrinya */
1423   {"th",        HB_TAG('T','H','A',' ')},       /* Thai */
1424   {"tht",       HB_TAG('A','T','H',' ')},       /* Tahltan -> Athapaskan */
1425   {"thv",       HB_TAG('T','M','H',' ')},       /* Tahaggart Tamahaq -> Tamashek */
1426   {"thv",       HB_TAG('B','B','R',' ')},       /* Tahaggart Tamahaq -> Berber */
1427   {"thz",       HB_TAG('T','M','H',' ')},       /* Tayart Tamajeq -> Tamashek */
1428   {"thz",       HB_TAG('B','B','R',' ')},       /* Tayart Tamajeq -> Berber */
1429   {"ti",        HB_TAG('T','G','Y',' ')},       /* Tigrinya */
1430   {"tia",       HB_TAG('B','B','R',' ')},       /* Tidikelt Tamazight -> Berber */
1431   {"tig",       HB_TAG('T','G','R',' ')},       /* Tigre */
1432 /*{"tiv",       HB_TAG('T','I','V',' ')},*/     /* Tiv */
1433 /*{"tjl",       HB_TAG('T','J','L',' ')},*/     /* Tai Laing */
1434   {"tjo",       HB_TAG('B','B','R',' ')},       /* Temacine Tamazight -> Berber */
1435   {"tk",        HB_TAG('T','K','M',' ')},       /* Turkmen */
1436   {"tkg",       HB_TAG('M','L','G',' ')},       /* Tesaka Malagasy -> Malagasy */
1437   {"tkm",       HB_TAG_NONE            },       /* Takelma != Turkmen */
1438   {"tl",        HB_TAG('T','G','L',' ')},       /* Tagalog */
1439 /*{"tli",       HB_TAG('T','L','I',' ')},*/     /* Tlingit */
1440   {"tmg",       HB_TAG('C','P','P',' ')},       /* Ternateño -> Creoles */
1441   {"tmh",       HB_TAG('T','M','H',' ')},       /* Tamashek [macrolanguage] */
1442   {"tmh",       HB_TAG('B','B','R',' ')},       /* Tamashek [macrolanguage] -> Berber */
1443   {"tmn",       HB_TAG_NONE            },       /* Taman (Indonesia) != Temne */
1444   {"tmw",       HB_TAG('M','L','Y',' ')},       /* Temuan -> Malay */
1445   {"tn",        HB_TAG('T','N','A',' ')},       /* Tswana */
1446   {"tna",       HB_TAG_NONE            },       /* Tacana != Tswana */
1447   {"tne",       HB_TAG_NONE            },       /* Tinoc Kallahan (retired code) != Tundra Enets */
1448   {"tnf",       HB_TAG('D','R','I',' ')},       /* Tangshewi (retired code) -> Dari */
1449   {"tnf",       HB_TAG('F','A','R',' ')},       /* Tangshewi (retired code) -> Persian */
1450   {"tng",       HB_TAG_NONE            },       /* Tobanga != Tonga */
1451   {"to",        HB_TAG('T','G','N',' ')},       /* Tonga (Tonga Islands) -> Tongan */
1452   {"tod",       HB_TAG('T','O','D','0')},       /* Toma */
1453   {"toi",       HB_TAG('T','N','G',' ')},       /* Tonga (Zambia) */
1454   {"toj",       HB_TAG('M','Y','N',' ')},       /* Tojolabal -> Mayan */
1455   {"tol",       HB_TAG('A','T','H',' ')},       /* Tolowa -> Athapaskan */
1456   {"tor",       HB_TAG('B','A','D','0')},       /* Togbo-Vara Banda -> Banda */
1457   {"tpi",       HB_TAG('T','P','I',' ')},       /* Tok Pisin */
1458   {"tpi",       HB_TAG('C','P','P',' ')},       /* Tok Pisin -> Creoles */
1459   {"tr",        HB_TAG('T','R','K',' ')},       /* Turkish */
1460   {"trf",       HB_TAG('C','P','P',' ')},       /* Trinidadian Creole English -> Creoles */
1461   {"trk",       HB_TAG_NONE            },       /* Turkic [collection] != Turkish */
1462   {"tru",       HB_TAG('T','U','A',' ')},       /* Turoyo -> Turoyo Aramaic */
1463   {"tru",       HB_TAG('S','Y','R',' ')},       /* Turoyo -> Syriac */
1464   {"ts",        HB_TAG('T','S','G',' ')},       /* Tsonga */
1465   {"tsg",       HB_TAG_NONE            },       /* Tausug != Tsonga */
1466 /*{"tsj",       HB_TAG('T','S','J',' ')},*/     /* Tshangla */
1467   {"tt",        HB_TAG('T','A','T',' ')},       /* Tatar */
1468   {"ttc",       HB_TAG('M','Y','N',' ')},       /* Tektiteko -> Mayan */
1469   {"ttm",       HB_TAG('A','T','H',' ')},       /* Northern Tutchone -> Athapaskan */
1470   {"ttq",       HB_TAG('T','M','H',' ')},       /* Tawallammat Tamajaq -> Tamashek */
1471   {"ttq",       HB_TAG('B','B','R',' ')},       /* Tawallammat Tamajaq -> Berber */
1472   {"tua",       HB_TAG_NONE            },       /* Wiarumus != Turoyo Aramaic */
1473   {"tul",       HB_TAG_NONE            },       /* Tula != Tumbuka */
1474 /*{"tum",       HB_TAG('T','U','M',' ')},*/     /* Tumbuka -> Tulu */
1475   {"tuu",       HB_TAG('A','T','H',' ')},       /* Tututni -> Athapaskan */
1476   {"tuv",       HB_TAG_NONE            },       /* Turkana != Tuvin */
1477   {"tuy",       HB_TAG('K','A','L',' ')},       /* Tugen -> Kalenjin */
1478 /*{"tvl",       HB_TAG('T','V','L',' ')},*/     /* Tuvalu */
1479   {"tvy",       HB_TAG('C','P','P',' ')},       /* Timor Pidgin -> Creoles */
1480   {"tw",        HB_TAG('T','W','I',' ')},       /* Twi */
1481   {"tw",        HB_TAG('A','K','A',' ')},       /* Twi -> Akan */
1482   {"txc",       HB_TAG('A','T','H',' ')},       /* Tsetsaut -> Athapaskan */
1483   {"txy",       HB_TAG('M','L','G',' ')},       /* Tanosy Malagasy -> Malagasy */
1484   {"ty",        HB_TAG('T','H','T',' ')},       /* Tahitian */
1485   {"tyv",       HB_TAG('T','U','V',' ')},       /* Tuvinian -> Tuvin */
1486 /*{"tyz",       HB_TAG('T','Y','Z',' ')},*/     /* Tày */
1487   {"tzh",       HB_TAG('M','Y','N',' ')},       /* Tzeltal -> Mayan */
1488   {"tzj",       HB_TAG('M','Y','N',' ')},       /* Tz'utujil -> Mayan */
1489   {"tzm",       HB_TAG('T','Z','M',' ')},       /* Central Atlas Tamazight -> Tamazight */
1490   {"tzm",       HB_TAG('B','B','R',' ')},       /* Central Atlas Tamazight -> Berber */
1491   {"tzo",       HB_TAG('T','Z','O',' ')},       /* Tzotzil */
1492   {"tzo",       HB_TAG('M','Y','N',' ')},       /* Tzotzil -> Mayan */
1493   {"ubl",       HB_TAG('B','I','K',' ')},       /* Buhi'non Bikol -> Bikol */
1494 /*{"udm",       HB_TAG('U','D','M',' ')},*/     /* Udmurt */
1495   {"ug",        HB_TAG('U','Y','G',' ')},       /* Uyghur */
1496   {"uk",        HB_TAG('U','K','R',' ')},       /* Ukrainian */
1497   {"uki",       HB_TAG('K','U','I',' ')},       /* Kui (India) */
1498   {"uln",       HB_TAG('C','P','P',' ')},       /* Unserdeutsch -> Creoles */
1499 /*{"umb",       HB_TAG('U','M','B',' ')},*/     /* Umbundu */
1500   {"unr",       HB_TAG('M','U','N',' ')},       /* Mundari */
1501   {"ur",        HB_TAG('U','R','D',' ')},       /* Urdu */
1502   {"urk",       HB_TAG('M','L','Y',' ')},       /* Urak Lawoi' -> Malay */
1503   {"usp",       HB_TAG('M','Y','N',' ')},       /* Uspanteco -> Mayan */
1504   {"uz",        HB_TAG('U','Z','B',' ')},       /* Uzbek [macrolanguage] */
1505   {"uzn",       HB_TAG('U','Z','B',' ')},       /* Northern Uzbek -> Uzbek */
1506   {"uzs",       HB_TAG('U','Z','B',' ')},       /* Southern Uzbek -> Uzbek */
1507   {"vap",       HB_TAG('Q','I','N',' ')},       /* Vaiphei -> Chin */
1508   {"ve",        HB_TAG('V','E','N',' ')},       /* Venda */
1509 /*{"vec",       HB_TAG('V','E','C',' ')},*/     /* Venetian */
1510   {"vi",        HB_TAG('V','I','T',' ')},       /* Vietnamese */
1511   {"vic",       HB_TAG('C','P','P',' ')},       /* Virgin Islands Creole English -> Creoles */
1512   {"vit",       HB_TAG_NONE            },       /* Viti != Vietnamese */
1513   {"vkk",       HB_TAG('M','L','Y',' ')},       /* Kaur -> Malay */
1514   {"vkp",       HB_TAG('C','P','P',' ')},       /* Korlai Creole Portuguese -> Creoles */
1515   {"vkt",       HB_TAG('M','L','Y',' ')},       /* Tenggarong Kutai Malay -> Malay */
1516   {"vls",       HB_TAG('F','L','E',' ')},       /* Vlaams -> Dutch (Flemish) */
1517   {"vmw",       HB_TAG('M','A','K',' ')},       /* Makhuwa */
1518   {"vo",        HB_TAG('V','O','L',' ')},       /* Volapük */
1519 /*{"vro",       HB_TAG('V','R','O',' ')},*/     /* Võro */
1520   {"wa",        HB_TAG('W','L','N',' ')},       /* Walloon */
1521   {"wag",       HB_TAG_NONE            },       /* Wa'ema != Wagdi */
1522 /*{"war",       HB_TAG('W','A','R',' ')},*/     /* Waray (Philippines) -> Waray-Waray */
1523   {"wbm",       HB_TAG('W','A',' ',' ')},       /* Wa */
1524   {"wbr",       HB_TAG('W','A','G',' ')},       /* Wagdi */
1525   {"wbr",       HB_TAG('R','A','J',' ')},       /* Wagdi -> Rajasthani */
1526 /*{"wci",       HB_TAG('W','C','I',' ')},*/     /* Waci Gbe */
1527   {"wea",       HB_TAG('K','R','N',' ')},       /* Wewaw -> Karen */
1528   {"wes",       HB_TAG('C','P','P',' ')},       /* Cameroon Pidgin -> Creoles */
1529   {"weu",       HB_TAG('Q','I','N',' ')},       /* Rawngtu Chin -> Chin */
1530   {"wlc",       HB_TAG('C','M','R',' ')},       /* Mwali Comorian -> Comorian */
1531   {"wle",       HB_TAG('S','I','G',' ')},       /* Wolane -> Silte Gurage */
1532   {"wlk",       HB_TAG('A','T','H',' ')},       /* Wailaki -> Athapaskan */
1533   {"wni",       HB_TAG('C','M','R',' ')},       /* Ndzwani Comorian -> Comorian */
1534   {"wo",        HB_TAG('W','L','F',' ')},       /* Wolof */
1535   {"wry",       HB_TAG('M','A','W',' ')},       /* Merwari -> Marwari */
1536   {"wsg",       HB_TAG('G','O','N',' ')},       /* Adilabad Gondi -> Gondi */
1537 /*{"wtm",       HB_TAG('W','T','M',' ')},*/     /* Mewati */
1538   {"wuu",       HB_TAG('Z','H','S',' ')},       /* Wu Chinese -> Chinese, Simplified */
1539   {"xal",       HB_TAG('K','L','M',' ')},       /* Kalmyk */
1540   {"xal",       HB_TAG('T','O','D',' ')},       /* Kalmyk -> Todo */
1541   {"xan",       HB_TAG('S','E','K',' ')},       /* Xamtanga -> Sekota */
1542   {"xbd",       HB_TAG_NONE            },       /* Bindal != Lü */
1543   {"xh",        HB_TAG('X','H','S',' ')},       /* Xhosa */
1544 /*{"xjb",       HB_TAG('X','J','B',' ')},*/     /* Minjungbal -> Minjangbal */
1545 /*{"xkf",       HB_TAG('X','K','F',' ')},*/     /* Khengkha */
1546   {"xmg",       HB_TAG('B','M','L',' ')},       /* Mengaka -> Bamileke */
1547   {"xmm",       HB_TAG('M','L','Y',' ')},       /* Manado Malay -> Malay */
1548   {"xmm",       HB_TAG('C','P','P',' ')},       /* Manado Malay -> Creoles */
1549   {"xmv",       HB_TAG('M','L','G',' ')},       /* Antankarana Malagasy -> Malagasy */
1550   {"xmw",       HB_TAG('M','L','G',' ')},       /* Tsimihety Malagasy -> Malagasy */
1551   {"xnj",       HB_TAG('S','X','T',' ')},       /* Ngoni (Tanzania) -> Sutu */
1552   {"xnq",       HB_TAG('S','X','T',' ')},       /* Ngoni (Mozambique) -> Sutu */
1553   {"xnr",       HB_TAG('D','G','R',' ')},       /* Kangri -> Dogri (macrolanguage) */
1554 /*{"xog",       HB_TAG('X','O','G',' ')},*/     /* Soga */
1555   {"xpe",       HB_TAG('X','P','E',' ')},       /* Liberia Kpelle -> Kpelle (Liberia) */
1556   {"xpe",       HB_TAG('K','P','L',' ')},       /* Liberia Kpelle -> Kpelle */
1557   {"xsl",       HB_TAG('S','S','L',' ')},       /* South Slavey */
1558   {"xsl",       HB_TAG('S','L','A',' ')},       /* South Slavey -> Slavey */
1559   {"xsl",       HB_TAG('A','T','H',' ')},       /* South Slavey -> Athapaskan */
1560   {"xst",       HB_TAG('S','I','G',' ')},       /* Silt'e (retired code) -> Silte Gurage */
1561 /*{"xub",       HB_TAG('X','U','B',' ')},*/     /* Betta Kurumba -> Bette Kuruma */
1562 /*{"xuj",       HB_TAG('X','U','J',' ')},*/     /* Jennu Kurumba -> Jennu Kuruma */
1563   {"xup",       HB_TAG('A','T','H',' ')},       /* Upper Umpqua -> Athapaskan */
1564   {"xwo",       HB_TAG('T','O','D',' ')},       /* Written Oirat -> Todo */
1565   {"yaj",       HB_TAG('B','A','D','0')},       /* Banda-Yangere -> Banda */
1566   {"yak",       HB_TAG_NONE            },       /* Yakama != Sakha */
1567 /*{"yao",       HB_TAG('Y','A','O',' ')},*/     /* Yao */
1568 /*{"yap",       HB_TAG('Y','A','P',' ')},*/     /* Yapese */
1569   {"yba",       HB_TAG_NONE            },       /* Yala != Yoruba */
1570   {"ybb",       HB_TAG('B','M','L',' ')},       /* Yemba -> Bamileke */
1571   {"ybd",       HB_TAG('A','R','K',' ')},       /* Yangbye (retired code) -> Rakhine */
1572   {"ydd",       HB_TAG('J','I','I',' ')},       /* Eastern Yiddish -> Yiddish */
1573 /*{"ygp",       HB_TAG('Y','G','P',' ')},*/     /* Gepo */
1574   {"yi",        HB_TAG('J','I','I',' ')},       /* Yiddish [macrolanguage] */
1575   {"yih",       HB_TAG('J','I','I',' ')},       /* Western Yiddish -> Yiddish */
1576   {"yim",       HB_TAG_NONE            },       /* Yimchungru Naga != Yi Modern */
1577 /*{"yna",       HB_TAG('Y','N','A',' ')},*/     /* Aluo */
1578   {"yo",        HB_TAG('Y','B','A',' ')},       /* Yoruba */
1579   {"yos",       HB_TAG('Q','I','N',' ')},       /* Yos (retired code) -> Chin */
1580   {"yua",       HB_TAG('M','Y','N',' ')},       /* Yucateco -> Mayan */
1581   {"yue",       HB_TAG('Z','H','H',' ')},       /* Yue Chinese -> Chinese, Traditional, Hong Kong SAR */
1582 /*{"ywq",       HB_TAG('Y','W','Q',' ')},*/     /* Wuding-Luquan Yi */
1583   {"za",        HB_TAG('Z','H','A',' ')},       /* Zhuang [macrolanguage] */
1584   {"zch",       HB_TAG('Z','H','A',' ')},       /* Central Hongshuihe Zhuang -> Zhuang */
1585   {"zdj",       HB_TAG('C','M','R',' ')},       /* Ngazidja Comorian -> Comorian */
1586 /*{"zea",       HB_TAG('Z','E','A',' ')},*/     /* Zeeuws -> Zealandic */
1587   {"zeh",       HB_TAG('Z','H','A',' ')},       /* Eastern Hongshuihe Zhuang -> Zhuang */
1588   {"zen",       HB_TAG('B','B','R',' ')},       /* Zenaga -> Berber */
1589   {"zgb",       HB_TAG('Z','H','A',' ')},       /* Guibei Zhuang -> Zhuang */
1590   {"zgh",       HB_TAG('Z','G','H',' ')},       /* Standard Moroccan Tamazight */
1591   {"zgh",       HB_TAG('B','B','R',' ')},       /* Standard Moroccan Tamazight -> Berber */
1592   {"zgm",       HB_TAG('Z','H','A',' ')},       /* Minz Zhuang -> Zhuang */
1593   {"zgn",       HB_TAG('Z','H','A',' ')},       /* Guibian Zhuang -> Zhuang */
1594   {"zh",        HB_TAG('Z','H','S',' ')},       /* Chinese, Simplified [macrolanguage] */
1595   {"zhd",       HB_TAG('Z','H','A',' ')},       /* Dai Zhuang -> Zhuang */
1596   {"zhn",       HB_TAG('Z','H','A',' ')},       /* Nong Zhuang -> Zhuang */
1597   {"zlj",       HB_TAG('Z','H','A',' ')},       /* Liujiang Zhuang -> Zhuang */
1598   {"zlm",       HB_TAG('M','L','Y',' ')},       /* Malay */
1599   {"zln",       HB_TAG('Z','H','A',' ')},       /* Lianshan Zhuang -> Zhuang */
1600   {"zlq",       HB_TAG('Z','H','A',' ')},       /* Liuqian Zhuang -> Zhuang */
1601   {"zmi",       HB_TAG('M','L','Y',' ')},       /* Negeri Sembilan Malay -> Malay */
1602   {"zmz",       HB_TAG('B','A','D','0')},       /* Mbandja -> Banda */
1603   {"znd",       HB_TAG_NONE            },       /* Zande [collection] != Zande */
1604   {"zne",       HB_TAG('Z','N','D',' ')},       /* Zande */
1605   {"zom",       HB_TAG('Q','I','N',' ')},       /* Zou -> Chin */
1606   {"zqe",       HB_TAG('Z','H','A',' ')},       /* Qiubei Zhuang -> Zhuang */
1607   {"zsm",       HB_TAG('M','L','Y',' ')},       /* Standard Malay -> Malay */
1608   {"zu",        HB_TAG('Z','U','L',' ')},       /* Zulu */
1609   {"zum",       HB_TAG('L','R','C',' ')},       /* Kumzari -> Luri */
1610   {"zyb",       HB_TAG('Z','H','A',' ')},       /* Yongbei Zhuang -> Zhuang */
1611   {"zyg",       HB_TAG('Z','H','A',' ')},       /* Yang Zhuang -> Zhuang */
1612   {"zyj",       HB_TAG('Z','H','A',' ')},       /* Youjiang Zhuang -> Zhuang */
1613   {"zyn",       HB_TAG('Z','H','A',' ')},       /* Yongnan Zhuang -> Zhuang */
1614   {"zyp",       HB_TAG('Q','I','N',' ')},       /* Zyphe Chin -> Chin */
1615 /*{"zza",       HB_TAG('Z','Z','A',' ')},*/     /* Zazaki [macrolanguage] */
1616   {"zzj",       HB_TAG('Z','H','A',' ')},       /* Zuojiang Zhuang -> Zhuang */
1617 };
1618
1619 /**
1620  * hb_ot_tags_from_complex_language:
1621  * @lang_str: a BCP 47 language tag to convert.
1622  * @limit: a pointer to the end of the substring of @lang_str to consider for
1623  * conversion.
1624  * @count: maximum number of language tags to retrieve (IN) and actual number of
1625  * language tags retrieved (OUT). If no tags are retrieved, it is not modified.
1626  * @tags: array of size at least @language_count to store the language tag
1627  * results
1628  *
1629  * Converts a multi-subtag BCP 47 language tag to language tags.
1630  *
1631  * Return value: Whether any language systems were retrieved.
1632  **/
1633 static bool
1634 hb_ot_tags_from_complex_language (const char   *lang_str,
1635                                   const char   *limit,
1636                                   unsigned int *count /* IN/OUT */,
1637                                   hb_tag_t     *tags /* OUT */)
1638 {
1639   if (subtag_matches (lang_str, limit, "-fonnapa"))
1640   {
1641     /* Undetermined; North American Phonetic Alphabet */
1642     tags[0] = HB_TAG('A','P','P','H');  /* Phonetic transcription—Americanist conventions */
1643     *count = 1;
1644     return true;
1645   }
1646   if (subtag_matches (lang_str, limit, "-polyton"))
1647   {
1648     /* Modern Greek (1453-); Polytonic Greek */
1649     tags[0] = HB_TAG('P','G','R',' ');  /* Polytonic Greek */
1650     *count = 1;
1651     return true;
1652   }
1653   if (subtag_matches (lang_str, limit, "-arevmda"))
1654   {
1655     /* Armenian; Western Armenian (retired code) */
1656     tags[0] = HB_TAG('H','Y','E',' ');  /* Armenian */
1657     *count = 1;
1658     return true;
1659   }
1660   if (subtag_matches (lang_str, limit, "-provenc"))
1661   {
1662     /* Occitan (post 1500); Provençal */
1663     tags[0] = HB_TAG('P','R','O',' ');  /* Provençal / Old Provençal */
1664     *count = 1;
1665     return true;
1666   }
1667   if (subtag_matches (lang_str, limit, "-fonipa"))
1668   {
1669     /* Undetermined; International Phonetic Alphabet */
1670     tags[0] = HB_TAG('I','P','P','H');  /* Phonetic transcription—IPA conventions */
1671     *count = 1;
1672     return true;
1673   }
1674   if (subtag_matches (lang_str, limit, "-geok"))
1675   {
1676     /* Undetermined; Khutsuri (Asomtavruli and Nuskhuri) */
1677     tags[0] = HB_TAG('K','G','E',' ');  /* Khutsuri Georgian */
1678     *count = 1;
1679     return true;
1680   }
1681   if (subtag_matches (lang_str, limit, "-syre"))
1682   {
1683     /* Undetermined; Syriac (Estrangelo variant) */
1684     tags[0] = HB_TAG('S','Y','R','E');  /* Syriac, Estrangela script-variant (equivalent to ISO 15924 'Syre') */
1685     *count = 1;
1686     return true;
1687   }
1688   if (subtag_matches (lang_str, limit, "-syrj"))
1689   {
1690     /* Undetermined; Syriac (Western variant) */
1691     tags[0] = HB_TAG('S','Y','R','J');  /* Syriac, Western script-variant (equivalent to ISO 15924 'Syrj') */
1692     *count = 1;
1693     return true;
1694   }
1695   if (subtag_matches (lang_str, limit, "-syrn"))
1696   {
1697     /* Undetermined; Syriac (Eastern variant) */
1698     tags[0] = HB_TAG('S','Y','R','N');  /* Syriac, Eastern script-variant (equivalent to ISO 15924 'Syrn') */
1699     *count = 1;
1700     return true;
1701   }
1702   switch (lang_str[0])
1703   {
1704   case 'a':
1705     if (0 == strcmp (&lang_str[1], "rt-lojban"))
1706     {
1707       /* Lojban (retired code) */
1708       tags[0] = HB_TAG('J','B','O',' ');  /* Lojban */
1709       *count = 1;
1710       return true;
1711     }
1712     break;
1713   case 'c':
1714     if (lang_matches (&lang_str[1], "do-hant-hk"))
1715     {
1716       /* Min Dong Chinese; Han (Traditional variant); Hong Kong */
1717       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
1718       *count = 1;
1719       return true;
1720     }
1721     if (lang_matches (&lang_str[1], "do-hant-mo"))
1722     {
1723       /* Min Dong Chinese; Han (Traditional variant); Macao */
1724       unsigned int i;
1725       hb_tag_t possible_tags[] = {
1726         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
1727         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
1728       };
1729       for (i = 0; i < 2 && i < *count; i++)
1730         tags[i] = possible_tags[i];
1731       *count = i;
1732       return true;
1733     }
1734     if (lang_matches (&lang_str[1], "jy-hant-hk"))
1735     {
1736       /* Jinyu Chinese; Han (Traditional variant); Hong Kong */
1737       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
1738       *count = 1;
1739       return true;
1740     }
1741     if (lang_matches (&lang_str[1], "jy-hant-mo"))
1742     {
1743       /* Jinyu Chinese; Han (Traditional variant); Macao */
1744       unsigned int i;
1745       hb_tag_t possible_tags[] = {
1746         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
1747         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
1748       };
1749       for (i = 0; i < 2 && i < *count; i++)
1750         tags[i] = possible_tags[i];
1751       *count = i;
1752       return true;
1753     }
1754     if (lang_matches (&lang_str[1], "mn-hant-hk"))
1755     {
1756       /* Mandarin Chinese; Han (Traditional variant); Hong Kong */
1757       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
1758       *count = 1;
1759       return true;
1760     }
1761     if (lang_matches (&lang_str[1], "mn-hant-mo"))
1762     {
1763       /* Mandarin Chinese; Han (Traditional variant); Macao */
1764       unsigned int i;
1765       hb_tag_t possible_tags[] = {
1766         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
1767         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
1768       };
1769       for (i = 0; i < 2 && i < *count; i++)
1770         tags[i] = possible_tags[i];
1771       *count = i;
1772       return true;
1773     }
1774     if (lang_matches (&lang_str[1], "np-hant-hk"))
1775     {
1776       /* Northern Ping Chinese; Han (Traditional variant); Hong Kong */
1777       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
1778       *count = 1;
1779       return true;
1780     }
1781     if (lang_matches (&lang_str[1], "np-hant-mo"))
1782     {
1783       /* Northern Ping Chinese; Han (Traditional variant); Macao */
1784       unsigned int i;
1785       hb_tag_t possible_tags[] = {
1786         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
1787         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
1788       };
1789       for (i = 0; i < 2 && i < *count; i++)
1790         tags[i] = possible_tags[i];
1791       *count = i;
1792       return true;
1793     }
1794     if (lang_matches (&lang_str[1], "px-hant-hk"))
1795     {
1796       /* Pu-Xian Chinese; Han (Traditional variant); Hong Kong */
1797       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
1798       *count = 1;
1799       return true;
1800     }
1801     if (lang_matches (&lang_str[1], "px-hant-mo"))
1802     {
1803       /* Pu-Xian Chinese; Han (Traditional variant); Macao */
1804       unsigned int i;
1805       hb_tag_t possible_tags[] = {
1806         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
1807         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
1808       };
1809       for (i = 0; i < 2 && i < *count; i++)
1810         tags[i] = possible_tags[i];
1811       *count = i;
1812       return true;
1813     }
1814     if (lang_matches (&lang_str[1], "sp-hant-hk"))
1815     {
1816       /* Southern Ping Chinese; Han (Traditional variant); Hong Kong */
1817       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
1818       *count = 1;
1819       return true;
1820     }
1821     if (lang_matches (&lang_str[1], "sp-hant-mo"))
1822     {
1823       /* Southern Ping Chinese; Han (Traditional variant); Macao */
1824       unsigned int i;
1825       hb_tag_t possible_tags[] = {
1826         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
1827         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
1828       };
1829       for (i = 0; i < 2 && i < *count; i++)
1830         tags[i] = possible_tags[i];
1831       *count = i;
1832       return true;
1833     }
1834     if (lang_matches (&lang_str[1], "zh-hant-hk"))
1835     {
1836       /* Huizhou Chinese; Han (Traditional variant); Hong Kong */
1837       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
1838       *count = 1;
1839       return true;
1840     }
1841     if (lang_matches (&lang_str[1], "zh-hant-mo"))
1842     {
1843       /* Huizhou Chinese; Han (Traditional variant); Macao */
1844       unsigned int i;
1845       hb_tag_t possible_tags[] = {
1846         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
1847         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
1848       };
1849       for (i = 0; i < 2 && i < *count; i++)
1850         tags[i] = possible_tags[i];
1851       *count = i;
1852       return true;
1853     }
1854     if (lang_matches (&lang_str[1], "zo-hant-hk"))
1855     {
1856       /* Min Zhong Chinese; Han (Traditional variant); Hong Kong */
1857       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
1858       *count = 1;
1859       return true;
1860     }
1861     if (lang_matches (&lang_str[1], "zo-hant-mo"))
1862     {
1863       /* Min Zhong Chinese; Han (Traditional variant); Macao */
1864       unsigned int i;
1865       hb_tag_t possible_tags[] = {
1866         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
1867         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
1868       };
1869       for (i = 0; i < 2 && i < *count; i++)
1870         tags[i] = possible_tags[i];
1871       *count = i;
1872       return true;
1873     }
1874     if (lang_matches (&lang_str[1], "do-hans"))
1875     {
1876       /* Min Dong Chinese; Han (Simplified variant) */
1877       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
1878       *count = 1;
1879       return true;
1880     }
1881     if (lang_matches (&lang_str[1], "do-hant"))
1882     {
1883       /* Min Dong Chinese; Han (Traditional variant) */
1884       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
1885       *count = 1;
1886       return true;
1887     }
1888     if (lang_matches (&lang_str[1], "jy-hans"))
1889     {
1890       /* Jinyu Chinese; Han (Simplified variant) */
1891       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
1892       *count = 1;
1893       return true;
1894     }
1895     if (lang_matches (&lang_str[1], "jy-hant"))
1896     {
1897       /* Jinyu Chinese; Han (Traditional variant) */
1898       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
1899       *count = 1;
1900       return true;
1901     }
1902     if (lang_matches (&lang_str[1], "mn-hans"))
1903     {
1904       /* Mandarin Chinese; Han (Simplified variant) */
1905       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
1906       *count = 1;
1907       return true;
1908     }
1909     if (lang_matches (&lang_str[1], "mn-hant"))
1910     {
1911       /* Mandarin Chinese; Han (Traditional variant) */
1912       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
1913       *count = 1;
1914       return true;
1915     }
1916     if (lang_matches (&lang_str[1], "np-hans"))
1917     {
1918       /* Northern Ping Chinese; Han (Simplified variant) */
1919       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
1920       *count = 1;
1921       return true;
1922     }
1923     if (lang_matches (&lang_str[1], "np-hant"))
1924     {
1925       /* Northern Ping Chinese; Han (Traditional variant) */
1926       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
1927       *count = 1;
1928       return true;
1929     }
1930     if (lang_matches (&lang_str[1], "px-hans"))
1931     {
1932       /* Pu-Xian Chinese; Han (Simplified variant) */
1933       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
1934       *count = 1;
1935       return true;
1936     }
1937     if (lang_matches (&lang_str[1], "px-hant"))
1938     {
1939       /* Pu-Xian Chinese; Han (Traditional variant) */
1940       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
1941       *count = 1;
1942       return true;
1943     }
1944     if (lang_matches (&lang_str[1], "sp-hans"))
1945     {
1946       /* Southern Ping Chinese; Han (Simplified variant) */
1947       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
1948       *count = 1;
1949       return true;
1950     }
1951     if (lang_matches (&lang_str[1], "sp-hant"))
1952     {
1953       /* Southern Ping Chinese; Han (Traditional variant) */
1954       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
1955       *count = 1;
1956       return true;
1957     }
1958     if (lang_matches (&lang_str[1], "zh-hans"))
1959     {
1960       /* Huizhou Chinese; Han (Simplified variant) */
1961       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
1962       *count = 1;
1963       return true;
1964     }
1965     if (lang_matches (&lang_str[1], "zh-hant"))
1966     {
1967       /* Huizhou Chinese; Han (Traditional variant) */
1968       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
1969       *count = 1;
1970       return true;
1971     }
1972     if (lang_matches (&lang_str[1], "zo-hans"))
1973     {
1974       /* Min Zhong Chinese; Han (Simplified variant) */
1975       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
1976       *count = 1;
1977       return true;
1978     }
1979     if (lang_matches (&lang_str[1], "zo-hant"))
1980     {
1981       /* Min Zhong Chinese; Han (Traditional variant) */
1982       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
1983       *count = 1;
1984       return true;
1985     }
1986     if (0 == strncmp (&lang_str[1], "do-", 3)
1987         && subtag_matches (lang_str, limit, "-hk"))
1988     {
1989       /* Min Dong Chinese; Hong Kong */
1990       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
1991       *count = 1;
1992       return true;
1993     }
1994     if (0 == strncmp (&lang_str[1], "do-", 3)
1995         && subtag_matches (lang_str, limit, "-mo"))
1996     {
1997       /* Min Dong Chinese; Macao */
1998       unsigned int i;
1999       hb_tag_t possible_tags[] = {
2000         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2001         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2002       };
2003       for (i = 0; i < 2 && i < *count; i++)
2004         tags[i] = possible_tags[i];
2005       *count = i;
2006       return true;
2007     }
2008     if (0 == strncmp (&lang_str[1], "do-", 3)
2009         && subtag_matches (lang_str, limit, "-tw"))
2010     {
2011       /* Min Dong Chinese; Taiwan, Province of China */
2012       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2013       *count = 1;
2014       return true;
2015     }
2016     if (0 == strncmp (&lang_str[1], "jy-", 3)
2017         && subtag_matches (lang_str, limit, "-hk"))
2018     {
2019       /* Jinyu Chinese; Hong Kong */
2020       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2021       *count = 1;
2022       return true;
2023     }
2024     if (0 == strncmp (&lang_str[1], "jy-", 3)
2025         && subtag_matches (lang_str, limit, "-mo"))
2026     {
2027       /* Jinyu Chinese; Macao */
2028       unsigned int i;
2029       hb_tag_t possible_tags[] = {
2030         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2031         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2032       };
2033       for (i = 0; i < 2 && i < *count; i++)
2034         tags[i] = possible_tags[i];
2035       *count = i;
2036       return true;
2037     }
2038     if (0 == strncmp (&lang_str[1], "jy-", 3)
2039         && subtag_matches (lang_str, limit, "-tw"))
2040     {
2041       /* Jinyu Chinese; Taiwan, Province of China */
2042       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2043       *count = 1;
2044       return true;
2045     }
2046     if (0 == strncmp (&lang_str[1], "mn-", 3)
2047         && subtag_matches (lang_str, limit, "-hk"))
2048     {
2049       /* Mandarin Chinese; Hong Kong */
2050       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2051       *count = 1;
2052       return true;
2053     }
2054     if (0 == strncmp (&lang_str[1], "mn-", 3)
2055         && subtag_matches (lang_str, limit, "-mo"))
2056     {
2057       /* Mandarin Chinese; Macao */
2058       unsigned int i;
2059       hb_tag_t possible_tags[] = {
2060         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2061         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2062       };
2063       for (i = 0; i < 2 && i < *count; i++)
2064         tags[i] = possible_tags[i];
2065       *count = i;
2066       return true;
2067     }
2068     if (0 == strncmp (&lang_str[1], "mn-", 3)
2069         && subtag_matches (lang_str, limit, "-tw"))
2070     {
2071       /* Mandarin Chinese; Taiwan, Province of China */
2072       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2073       *count = 1;
2074       return true;
2075     }
2076     if (0 == strncmp (&lang_str[1], "np-", 3)
2077         && subtag_matches (lang_str, limit, "-hk"))
2078     {
2079       /* Northern Ping Chinese; Hong Kong */
2080       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2081       *count = 1;
2082       return true;
2083     }
2084     if (0 == strncmp (&lang_str[1], "np-", 3)
2085         && subtag_matches (lang_str, limit, "-mo"))
2086     {
2087       /* Northern Ping Chinese; Macao */
2088       unsigned int i;
2089       hb_tag_t possible_tags[] = {
2090         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2091         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2092       };
2093       for (i = 0; i < 2 && i < *count; i++)
2094         tags[i] = possible_tags[i];
2095       *count = i;
2096       return true;
2097     }
2098     if (0 == strncmp (&lang_str[1], "np-", 3)
2099         && subtag_matches (lang_str, limit, "-tw"))
2100     {
2101       /* Northern Ping Chinese; Taiwan, Province of China */
2102       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2103       *count = 1;
2104       return true;
2105     }
2106     if (0 == strncmp (&lang_str[1], "px-", 3)
2107         && subtag_matches (lang_str, limit, "-hk"))
2108     {
2109       /* Pu-Xian Chinese; Hong Kong */
2110       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2111       *count = 1;
2112       return true;
2113     }
2114     if (0 == strncmp (&lang_str[1], "px-", 3)
2115         && subtag_matches (lang_str, limit, "-mo"))
2116     {
2117       /* Pu-Xian Chinese; Macao */
2118       unsigned int i;
2119       hb_tag_t possible_tags[] = {
2120         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2121         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2122       };
2123       for (i = 0; i < 2 && i < *count; i++)
2124         tags[i] = possible_tags[i];
2125       *count = i;
2126       return true;
2127     }
2128     if (0 == strncmp (&lang_str[1], "px-", 3)
2129         && subtag_matches (lang_str, limit, "-tw"))
2130     {
2131       /* Pu-Xian Chinese; Taiwan, Province of China */
2132       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2133       *count = 1;
2134       return true;
2135     }
2136     if (0 == strncmp (&lang_str[1], "sp-", 3)
2137         && subtag_matches (lang_str, limit, "-hk"))
2138     {
2139       /* Southern Ping Chinese; Hong Kong */
2140       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2141       *count = 1;
2142       return true;
2143     }
2144     if (0 == strncmp (&lang_str[1], "sp-", 3)
2145         && subtag_matches (lang_str, limit, "-mo"))
2146     {
2147       /* Southern Ping Chinese; Macao */
2148       unsigned int i;
2149       hb_tag_t possible_tags[] = {
2150         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2151         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2152       };
2153       for (i = 0; i < 2 && i < *count; i++)
2154         tags[i] = possible_tags[i];
2155       *count = i;
2156       return true;
2157     }
2158     if (0 == strncmp (&lang_str[1], "sp-", 3)
2159         && subtag_matches (lang_str, limit, "-tw"))
2160     {
2161       /* Southern Ping Chinese; Taiwan, Province of China */
2162       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2163       *count = 1;
2164       return true;
2165     }
2166     if (0 == strncmp (&lang_str[1], "zh-", 3)
2167         && subtag_matches (lang_str, limit, "-hk"))
2168     {
2169       /* Huizhou Chinese; Hong Kong */
2170       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2171       *count = 1;
2172       return true;
2173     }
2174     if (0 == strncmp (&lang_str[1], "zh-", 3)
2175         && subtag_matches (lang_str, limit, "-mo"))
2176     {
2177       /* Huizhou Chinese; Macao */
2178       unsigned int i;
2179       hb_tag_t possible_tags[] = {
2180         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2181         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2182       };
2183       for (i = 0; i < 2 && i < *count; i++)
2184         tags[i] = possible_tags[i];
2185       *count = i;
2186       return true;
2187     }
2188     if (0 == strncmp (&lang_str[1], "zh-", 3)
2189         && subtag_matches (lang_str, limit, "-tw"))
2190     {
2191       /* Huizhou Chinese; Taiwan, Province of China */
2192       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2193       *count = 1;
2194       return true;
2195     }
2196     if (0 == strncmp (&lang_str[1], "zo-", 3)
2197         && subtag_matches (lang_str, limit, "-hk"))
2198     {
2199       /* Min Zhong Chinese; Hong Kong */
2200       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2201       *count = 1;
2202       return true;
2203     }
2204     if (0 == strncmp (&lang_str[1], "zo-", 3)
2205         && subtag_matches (lang_str, limit, "-mo"))
2206     {
2207       /* Min Zhong Chinese; Macao */
2208       unsigned int i;
2209       hb_tag_t possible_tags[] = {
2210         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2211         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2212       };
2213       for (i = 0; i < 2 && i < *count; i++)
2214         tags[i] = possible_tags[i];
2215       *count = i;
2216       return true;
2217     }
2218     if (0 == strncmp (&lang_str[1], "zo-", 3)
2219         && subtag_matches (lang_str, limit, "-tw"))
2220     {
2221       /* Min Zhong Chinese; Taiwan, Province of China */
2222       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2223       *count = 1;
2224       return true;
2225     }
2226     break;
2227   case 'g':
2228     if (lang_matches (&lang_str[1], "an-hant-hk"))
2229     {
2230       /* Gan Chinese; Han (Traditional variant); Hong Kong */
2231       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2232       *count = 1;
2233       return true;
2234     }
2235     if (lang_matches (&lang_str[1], "an-hant-mo"))
2236     {
2237       /* Gan Chinese; Han (Traditional variant); Macao */
2238       unsigned int i;
2239       hb_tag_t possible_tags[] = {
2240         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2241         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2242       };
2243       for (i = 0; i < 2 && i < *count; i++)
2244         tags[i] = possible_tags[i];
2245       *count = i;
2246       return true;
2247     }
2248     if (lang_matches (&lang_str[1], "an-hans"))
2249     {
2250       /* Gan Chinese; Han (Simplified variant) */
2251       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2252       *count = 1;
2253       return true;
2254     }
2255     if (lang_matches (&lang_str[1], "an-hant"))
2256     {
2257       /* Gan Chinese; Han (Traditional variant) */
2258       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2259       *count = 1;
2260       return true;
2261     }
2262     if (lang_matches (&lang_str[1], "a-latg"))
2263     {
2264       /* Irish; Latin (Gaelic variant) */
2265       tags[0] = HB_TAG('I','R','T',' ');  /* Irish Traditional */
2266       *count = 1;
2267       return true;
2268     }
2269     if (0 == strncmp (&lang_str[1], "an-", 3)
2270         && subtag_matches (lang_str, limit, "-hk"))
2271     {
2272       /* Gan Chinese; Hong Kong */
2273       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2274       *count = 1;
2275       return true;
2276     }
2277     if (0 == strncmp (&lang_str[1], "an-", 3)
2278         && subtag_matches (lang_str, limit, "-mo"))
2279     {
2280       /* Gan Chinese; Macao */
2281       unsigned int i;
2282       hb_tag_t possible_tags[] = {
2283         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2284         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2285       };
2286       for (i = 0; i < 2 && i < *count; i++)
2287         tags[i] = possible_tags[i];
2288       *count = i;
2289       return true;
2290     }
2291     if (0 == strncmp (&lang_str[1], "an-", 3)
2292         && subtag_matches (lang_str, limit, "-tw"))
2293     {
2294       /* Gan Chinese; Taiwan, Province of China */
2295       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2296       *count = 1;
2297       return true;
2298     }
2299     break;
2300   case 'h':
2301     if (lang_matches (&lang_str[1], "ak-hant-hk"))
2302     {
2303       /* Hakka Chinese; Han (Traditional variant); Hong Kong */
2304       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2305       *count = 1;
2306       return true;
2307     }
2308     if (lang_matches (&lang_str[1], "ak-hant-mo"))
2309     {
2310       /* Hakka Chinese; Han (Traditional variant); Macao */
2311       unsigned int i;
2312       hb_tag_t possible_tags[] = {
2313         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2314         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2315       };
2316       for (i = 0; i < 2 && i < *count; i++)
2317         tags[i] = possible_tags[i];
2318       *count = i;
2319       return true;
2320     }
2321     if (lang_matches (&lang_str[1], "sn-hant-hk"))
2322     {
2323       /* Xiang Chinese; Han (Traditional variant); Hong Kong */
2324       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2325       *count = 1;
2326       return true;
2327     }
2328     if (lang_matches (&lang_str[1], "sn-hant-mo"))
2329     {
2330       /* Xiang Chinese; Han (Traditional variant); Macao */
2331       unsigned int i;
2332       hb_tag_t possible_tags[] = {
2333         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2334         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2335       };
2336       for (i = 0; i < 2 && i < *count; i++)
2337         tags[i] = possible_tags[i];
2338       *count = i;
2339       return true;
2340     }
2341     if (lang_matches (&lang_str[1], "ak-hans"))
2342     {
2343       /* Hakka Chinese; Han (Simplified variant) */
2344       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2345       *count = 1;
2346       return true;
2347     }
2348     if (lang_matches (&lang_str[1], "ak-hant"))
2349     {
2350       /* Hakka Chinese; Han (Traditional variant) */
2351       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2352       *count = 1;
2353       return true;
2354     }
2355     if (lang_matches (&lang_str[1], "sn-hans"))
2356     {
2357       /* Xiang Chinese; Han (Simplified variant) */
2358       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2359       *count = 1;
2360       return true;
2361     }
2362     if (lang_matches (&lang_str[1], "sn-hant"))
2363     {
2364       /* Xiang Chinese; Han (Traditional variant) */
2365       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2366       *count = 1;
2367       return true;
2368     }
2369     if (0 == strncmp (&lang_str[1], "ak-", 3)
2370         && subtag_matches (lang_str, limit, "-hk"))
2371     {
2372       /* Hakka Chinese; Hong Kong */
2373       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2374       *count = 1;
2375       return true;
2376     }
2377     if (0 == strncmp (&lang_str[1], "ak-", 3)
2378         && subtag_matches (lang_str, limit, "-mo"))
2379     {
2380       /* Hakka Chinese; Macao */
2381       unsigned int i;
2382       hb_tag_t possible_tags[] = {
2383         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2384         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2385       };
2386       for (i = 0; i < 2 && i < *count; i++)
2387         tags[i] = possible_tags[i];
2388       *count = i;
2389       return true;
2390     }
2391     if (0 == strncmp (&lang_str[1], "ak-", 3)
2392         && subtag_matches (lang_str, limit, "-tw"))
2393     {
2394       /* Hakka Chinese; Taiwan, Province of China */
2395       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2396       *count = 1;
2397       return true;
2398     }
2399     if (0 == strncmp (&lang_str[1], "sn-", 3)
2400         && subtag_matches (lang_str, limit, "-hk"))
2401     {
2402       /* Xiang Chinese; Hong Kong */
2403       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2404       *count = 1;
2405       return true;
2406     }
2407     if (0 == strncmp (&lang_str[1], "sn-", 3)
2408         && subtag_matches (lang_str, limit, "-mo"))
2409     {
2410       /* Xiang Chinese; Macao */
2411       unsigned int i;
2412       hb_tag_t possible_tags[] = {
2413         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2414         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2415       };
2416       for (i = 0; i < 2 && i < *count; i++)
2417         tags[i] = possible_tags[i];
2418       *count = i;
2419       return true;
2420     }
2421     if (0 == strncmp (&lang_str[1], "sn-", 3)
2422         && subtag_matches (lang_str, limit, "-tw"))
2423     {
2424       /* Xiang Chinese; Taiwan, Province of China */
2425       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2426       *count = 1;
2427       return true;
2428     }
2429     break;
2430   case 'i':
2431     if (0 == strcmp (&lang_str[1], "-navajo"))
2432     {
2433       /* Navajo (retired code) */
2434       unsigned int i;
2435       hb_tag_t possible_tags[] = {
2436         HB_TAG('N','A','V',' '),  /* Navajo */
2437         HB_TAG('A','T','H',' '),  /* Athapaskan */
2438       };
2439       for (i = 0; i < 2 && i < *count; i++)
2440         tags[i] = possible_tags[i];
2441       *count = i;
2442       return true;
2443     }
2444     if (0 == strcmp (&lang_str[1], "-hak"))
2445     {
2446       /* Hakka (retired code) */
2447       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2448       *count = 1;
2449       return true;
2450     }
2451     if (0 == strcmp (&lang_str[1], "-lux"))
2452     {
2453       /* Luxembourgish (retired code) */
2454       tags[0] = HB_TAG('L','T','Z',' ');  /* Luxembourgish */
2455       *count = 1;
2456       return true;
2457     }
2458     break;
2459   case 'l':
2460     if (lang_matches (&lang_str[1], "zh-hans"))
2461     {
2462       /* Literary Chinese; Han (Simplified variant) */
2463       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2464       *count = 1;
2465       return true;
2466     }
2467     break;
2468   case 'm':
2469     if (lang_matches (&lang_str[1], "np-hant-hk"))
2470     {
2471       /* Min Bei Chinese; Han (Traditional variant); Hong Kong */
2472       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2473       *count = 1;
2474       return true;
2475     }
2476     if (lang_matches (&lang_str[1], "np-hant-mo"))
2477     {
2478       /* Min Bei Chinese; Han (Traditional variant); Macao */
2479       unsigned int i;
2480       hb_tag_t possible_tags[] = {
2481         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2482         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2483       };
2484       for (i = 0; i < 2 && i < *count; i++)
2485         tags[i] = possible_tags[i];
2486       *count = i;
2487       return true;
2488     }
2489     if (lang_matches (&lang_str[1], "np-hans"))
2490     {
2491       /* Min Bei Chinese; Han (Simplified variant) */
2492       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2493       *count = 1;
2494       return true;
2495     }
2496     if (lang_matches (&lang_str[1], "np-hant"))
2497     {
2498       /* Min Bei Chinese; Han (Traditional variant) */
2499       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2500       *count = 1;
2501       return true;
2502     }
2503     if (0 == strncmp (&lang_str[1], "np-", 3)
2504         && subtag_matches (lang_str, limit, "-hk"))
2505     {
2506       /* Min Bei Chinese; Hong Kong */
2507       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2508       *count = 1;
2509       return true;
2510     }
2511     if (0 == strncmp (&lang_str[1], "np-", 3)
2512         && subtag_matches (lang_str, limit, "-mo"))
2513     {
2514       /* Min Bei Chinese; Macao */
2515       unsigned int i;
2516       hb_tag_t possible_tags[] = {
2517         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2518         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2519       };
2520       for (i = 0; i < 2 && i < *count; i++)
2521         tags[i] = possible_tags[i];
2522       *count = i;
2523       return true;
2524     }
2525     if (0 == strncmp (&lang_str[1], "np-", 3)
2526         && subtag_matches (lang_str, limit, "-tw"))
2527     {
2528       /* Min Bei Chinese; Taiwan, Province of China */
2529       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2530       *count = 1;
2531       return true;
2532     }
2533     if (0 == strncmp (&lang_str[1], "nw-", 3)
2534         && subtag_matches (lang_str, limit, "-th"))
2535     {
2536       /* Mon; Thailand */
2537       tags[0] = HB_TAG('M','O','N','T');  /* Thailand Mon */
2538       *count = 1;
2539       return true;
2540     }
2541     break;
2542   case 'n':
2543     if (lang_matches (&lang_str[1], "an-hant-hk"))
2544     {
2545       /* Min Nan Chinese; Han (Traditional variant); Hong Kong */
2546       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2547       *count = 1;
2548       return true;
2549     }
2550     if (lang_matches (&lang_str[1], "an-hant-mo"))
2551     {
2552       /* Min Nan Chinese; Han (Traditional variant); Macao */
2553       unsigned int i;
2554       hb_tag_t possible_tags[] = {
2555         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2556         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2557       };
2558       for (i = 0; i < 2 && i < *count; i++)
2559         tags[i] = possible_tags[i];
2560       *count = i;
2561       return true;
2562     }
2563     if (lang_matches (&lang_str[1], "an-hans"))
2564     {
2565       /* Min Nan Chinese; Han (Simplified variant) */
2566       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2567       *count = 1;
2568       return true;
2569     }
2570     if (lang_matches (&lang_str[1], "an-hant"))
2571     {
2572       /* Min Nan Chinese; Han (Traditional variant) */
2573       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2574       *count = 1;
2575       return true;
2576     }
2577     if (0 == strncmp (&lang_str[1], "an-", 3)
2578         && subtag_matches (lang_str, limit, "-hk"))
2579     {
2580       /* Min Nan Chinese; Hong Kong */
2581       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2582       *count = 1;
2583       return true;
2584     }
2585     if (0 == strncmp (&lang_str[1], "an-", 3)
2586         && subtag_matches (lang_str, limit, "-mo"))
2587     {
2588       /* Min Nan Chinese; Macao */
2589       unsigned int i;
2590       hb_tag_t possible_tags[] = {
2591         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2592         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2593       };
2594       for (i = 0; i < 2 && i < *count; i++)
2595         tags[i] = possible_tags[i];
2596       *count = i;
2597       return true;
2598     }
2599     if (0 == strncmp (&lang_str[1], "an-", 3)
2600         && subtag_matches (lang_str, limit, "-tw"))
2601     {
2602       /* Min Nan Chinese; Taiwan, Province of China */
2603       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2604       *count = 1;
2605       return true;
2606     }
2607     if (0 == strcmp (&lang_str[1], "o-bok"))
2608     {
2609       /* Norwegian Bokmal (retired code) */
2610       tags[0] = HB_TAG('N','O','R',' ');  /* Norwegian */
2611       *count = 1;
2612       return true;
2613     }
2614     if (0 == strcmp (&lang_str[1], "o-nyn"))
2615     {
2616       /* Norwegian Nynorsk (retired code) */
2617       tags[0] = HB_TAG('N','Y','N',' ');  /* Norwegian Nynorsk (Nynorsk, Norwegian) */
2618       *count = 1;
2619       return true;
2620     }
2621     break;
2622   case 'r':
2623     if (0 == strncmp (&lang_str[1], "o-", 2)
2624         && subtag_matches (lang_str, limit, "-md"))
2625     {
2626       /* Romanian; Moldova */
2627       unsigned int i;
2628       hb_tag_t possible_tags[] = {
2629         HB_TAG('M','O','L',' '),  /* Moldavian */
2630         HB_TAG('R','O','M',' '),  /* Romanian */
2631       };
2632       for (i = 0; i < 2 && i < *count; i++)
2633         tags[i] = possible_tags[i];
2634       *count = i;
2635       return true;
2636     }
2637     break;
2638   case 'w':
2639     if (lang_matches (&lang_str[1], "uu-hant-hk"))
2640     {
2641       /* Wu Chinese; Han (Traditional variant); Hong Kong */
2642       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2643       *count = 1;
2644       return true;
2645     }
2646     if (lang_matches (&lang_str[1], "uu-hant-mo"))
2647     {
2648       /* Wu Chinese; Han (Traditional variant); Macao */
2649       unsigned int i;
2650       hb_tag_t possible_tags[] = {
2651         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2652         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2653       };
2654       for (i = 0; i < 2 && i < *count; i++)
2655         tags[i] = possible_tags[i];
2656       *count = i;
2657       return true;
2658     }
2659     if (lang_matches (&lang_str[1], "uu-hans"))
2660     {
2661       /* Wu Chinese; Han (Simplified variant) */
2662       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2663       *count = 1;
2664       return true;
2665     }
2666     if (lang_matches (&lang_str[1], "uu-hant"))
2667     {
2668       /* Wu Chinese; Han (Traditional variant) */
2669       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2670       *count = 1;
2671       return true;
2672     }
2673     if (0 == strncmp (&lang_str[1], "uu-", 3)
2674         && subtag_matches (lang_str, limit, "-hk"))
2675     {
2676       /* Wu Chinese; Hong Kong */
2677       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2678       *count = 1;
2679       return true;
2680     }
2681     if (0 == strncmp (&lang_str[1], "uu-", 3)
2682         && subtag_matches (lang_str, limit, "-mo"))
2683     {
2684       /* Wu Chinese; Macao */
2685       unsigned int i;
2686       hb_tag_t possible_tags[] = {
2687         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2688         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2689       };
2690       for (i = 0; i < 2 && i < *count; i++)
2691         tags[i] = possible_tags[i];
2692       *count = i;
2693       return true;
2694     }
2695     if (0 == strncmp (&lang_str[1], "uu-", 3)
2696         && subtag_matches (lang_str, limit, "-tw"))
2697     {
2698       /* Wu Chinese; Taiwan, Province of China */
2699       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2700       *count = 1;
2701       return true;
2702     }
2703     break;
2704   case 'y':
2705     if (lang_matches (&lang_str[1], "ue-hans"))
2706     {
2707       /* Yue Chinese; Han (Simplified variant) */
2708       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2709       *count = 1;
2710       return true;
2711     }
2712     break;
2713   case 'z':
2714     if (lang_matches (&lang_str[1], "h-hant-hk"))
2715     {
2716       /* Chinese [macrolanguage]; Han (Traditional variant); Hong Kong */
2717       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2718       *count = 1;
2719       return true;
2720     }
2721     if (lang_matches (&lang_str[1], "h-hant-mo"))
2722     {
2723       /* Chinese [macrolanguage]; Han (Traditional variant); Macao */
2724       unsigned int i;
2725       hb_tag_t possible_tags[] = {
2726         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2727         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2728       };
2729       for (i = 0; i < 2 && i < *count; i++)
2730         tags[i] = possible_tags[i];
2731       *count = i;
2732       return true;
2733     }
2734     if (0 == strcmp (&lang_str[1], "h-min-nan"))
2735     {
2736       /* Minnan, Hokkien, Amoy, Taiwanese, Southern Min, Southern Fujian, Hoklo, Southern Fukien, Ho-lo (retired code) */
2737       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2738       *count = 1;
2739       return true;
2740     }
2741     if (lang_matches (&lang_str[1], "h-hans"))
2742     {
2743       /* Chinese [macrolanguage]; Han (Simplified variant) */
2744       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2745       *count = 1;
2746       return true;
2747     }
2748     if (lang_matches (&lang_str[1], "h-hant"))
2749     {
2750       /* Chinese [macrolanguage]; Han (Traditional variant) */
2751       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2752       *count = 1;
2753       return true;
2754     }
2755     if (0 == strcmp (&lang_str[1], "h-min"))
2756     {
2757       /* Min, Fuzhou, Hokkien, Amoy, or Taiwanese (retired code) */
2758       tags[0] = HB_TAG('Z','H','S',' ');  /* Chinese, Simplified */
2759       *count = 1;
2760       return true;
2761     }
2762     if (0 == strncmp (&lang_str[1], "h-", 2)
2763         && subtag_matches (lang_str, limit, "-hk"))
2764     {
2765       /* Chinese [macrolanguage]; Hong Kong */
2766       tags[0] = HB_TAG('Z','H','H',' ');  /* Chinese, Traditional, Hong Kong SAR */
2767       *count = 1;
2768       return true;
2769     }
2770     if (0 == strncmp (&lang_str[1], "h-", 2)
2771         && subtag_matches (lang_str, limit, "-mo"))
2772     {
2773       /* Chinese [macrolanguage]; Macao */
2774       unsigned int i;
2775       hb_tag_t possible_tags[] = {
2776         HB_TAG('Z','H','T','M'),  /* Chinese, Traditional, Macao SAR */
2777         HB_TAG('Z','H','H',' '),  /* Chinese, Traditional, Hong Kong SAR */
2778       };
2779       for (i = 0; i < 2 && i < *count; i++)
2780         tags[i] = possible_tags[i];
2781       *count = i;
2782       return true;
2783     }
2784     if (0 == strncmp (&lang_str[1], "h-", 2)
2785         && subtag_matches (lang_str, limit, "-tw"))
2786     {
2787       /* Chinese [macrolanguage]; Taiwan, Province of China */
2788       tags[0] = HB_TAG('Z','H','T',' ');  /* Chinese, Traditional */
2789       *count = 1;
2790       return true;
2791     }
2792     break;
2793   }
2794   return false;
2795 }
2796
2797 /**
2798  * hb_ot_ambiguous_tag_to_language
2799  * @tag: A language tag.
2800  *
2801  * Converts @tag to a BCP 47 language tag if it is ambiguous (it corresponds to
2802  * many language tags) and the best tag is not the alphabetically first, or if
2803  * the best tag consists of multiple subtags, or if the best tag does not appear
2804  * in #ot_languages.
2805  *
2806  * Return value: The #hb_language_t corresponding to the BCP 47 language tag,
2807  * or #HB_LANGUAGE_INVALID if @tag is not ambiguous.
2808  **/
2809 static hb_language_t
2810 hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
2811 {
2812   switch (tag)
2813   {
2814   case HB_TAG('A','L','T',' '):  /* Altai */
2815     return hb_language_from_string ("alt", -1);  /* Southern Altai */
2816   case HB_TAG('A','P','P','H'):  /* Phonetic transcription—Americanist conventions */
2817     return hb_language_from_string ("und-fonnapa", -1);  /* Undetermined; North American Phonetic Alphabet */
2818   case HB_TAG('A','R','A',' '):  /* Arabic */
2819     return hb_language_from_string ("ar", -1);  /* Arabic [macrolanguage] */
2820   case HB_TAG('A','R','K',' '):  /* Rakhine */
2821     return hb_language_from_string ("rki", -1);  /* Rakhine */
2822   case HB_TAG('A','T','H',' '):  /* Athapaskan */
2823     return hb_language_from_string ("ath", -1);  /* Athapascan [collection] */
2824   case HB_TAG('B','B','R',' '):  /* Berber */
2825     return hb_language_from_string ("ber", -1);  /* Berber [collection] */
2826   case HB_TAG('B','I','K',' '):  /* Bikol */
2827     return hb_language_from_string ("bik", -1);  /* Bikol [macrolanguage] */
2828   case HB_TAG('B','T','K',' '):  /* Batak */
2829     return hb_language_from_string ("btk", -1);  /* Batak [collection] */
2830   case HB_TAG('C','P','P',' '):  /* Creoles */
2831     return hb_language_from_string ("crp", -1);  /* Creoles and pidgins [collection] */
2832   case HB_TAG('C','R','R',' '):  /* Carrier */
2833     return hb_language_from_string ("crx", -1);  /* Carrier */
2834   case HB_TAG('D','G','R',' '):  /* Dogri (macrolanguage) */
2835     return hb_language_from_string ("doi", -1);  /* Dogri [macrolanguage] */
2836   case HB_TAG('D','N','K',' '):  /* Dinka */
2837     return hb_language_from_string ("din", -1);  /* Dinka [macrolanguage] */
2838   case HB_TAG('D','R','I',' '):  /* Dari */
2839     return hb_language_from_string ("prs", -1);  /* Dari */
2840   case HB_TAG('D','Z','N',' '):  /* Dzongkha */
2841     return hb_language_from_string ("dz", -1);  /* Dzongkha */
2842   case HB_TAG('E','T','I',' '):  /* Estonian */
2843     return hb_language_from_string ("et", -1);  /* Estonian [macrolanguage] */
2844   case HB_TAG('F','A','R',' '):  /* Persian */
2845     return hb_language_from_string ("fa", -1);  /* Persian [macrolanguage] */
2846   case HB_TAG('G','O','N',' '):  /* Gondi */
2847     return hb_language_from_string ("gon", -1);  /* Gondi [macrolanguage] */
2848   case HB_TAG('H','M','A',' '):  /* High Mari */
2849     return hb_language_from_string ("mrj", -1);  /* Western Mari */
2850   case HB_TAG('H','M','N',' '):  /* Hmong */
2851     return hb_language_from_string ("hmn", -1);  /* Hmong [macrolanguage] */
2852   case HB_TAG('H','N','D',' '):  /* Hindko */
2853     return hb_language_from_string ("hnd", -1);  /* Southern Hindko */
2854   case HB_TAG('H','Y','E',' '):  /* Armenian */
2855     return hb_language_from_string ("hyw", -1);  /* Western Armenian */
2856   case HB_TAG('I','B','A',' '):  /* Iban */
2857     return hb_language_from_string ("iba", -1);  /* Iban */
2858   case HB_TAG('I','J','O',' '):  /* Ijo */
2859     return hb_language_from_string ("ijo", -1);  /* Ijo [collection] */
2860   case HB_TAG('I','N','U',' '):  /* Inuktitut */
2861     return hb_language_from_string ("iu", -1);  /* Inuktitut [macrolanguage] */
2862   case HB_TAG('I','P','K',' '):  /* Inupiat */
2863     return hb_language_from_string ("ik", -1);  /* Inupiaq [macrolanguage] */
2864   case HB_TAG('I','P','P','H'):  /* Phonetic transcription—IPA conventions */
2865     return hb_language_from_string ("und-fonipa", -1);  /* Undetermined; International Phonetic Alphabet */
2866   case HB_TAG('I','R','T',' '):  /* Irish Traditional */
2867     return hb_language_from_string ("ga-Latg", -1);  /* Irish; Latin (Gaelic variant) */
2868   case HB_TAG('J','I','I',' '):  /* Yiddish */
2869     return hb_language_from_string ("yi", -1);  /* Yiddish [macrolanguage] */
2870   case HB_TAG('K','A','L',' '):  /* Kalenjin */
2871     return hb_language_from_string ("kln", -1);  /* Kalenjin [macrolanguage] */
2872   case HB_TAG('K','G','E',' '):  /* Khutsuri Georgian */
2873     return hb_language_from_string ("und-Geok", -1);  /* Undetermined; Khutsuri (Asomtavruli and Nuskhuri) */
2874   case HB_TAG('K','N','R',' '):  /* Kanuri */
2875     return hb_language_from_string ("kr", -1);  /* Kanuri [macrolanguage] */
2876   case HB_TAG('K','O','H',' '):  /* Korean Old Hangul */
2877     return hb_language_from_string ("okm", -1);  /* Middle Korean (10th-16th cent.) */
2878   case HB_TAG('K','O','K',' '):  /* Konkani */
2879     return hb_language_from_string ("kok", -1);  /* Konkani [macrolanguage] */
2880   case HB_TAG('K','O','M',' '):  /* Komi */
2881     return hb_language_from_string ("kv", -1);  /* Komi [macrolanguage] */
2882   case HB_TAG('K','P','L',' '):  /* Kpelle */
2883     return hb_language_from_string ("kpe", -1);  /* Kpelle [macrolanguage] */
2884   case HB_TAG('K','R','N',' '):  /* Karen */
2885     return hb_language_from_string ("kar", -1);  /* Karen [collection] */
2886   case HB_TAG('K','U','I',' '):  /* Kui */
2887     return hb_language_from_string ("uki", -1);  /* Kui (India) */
2888   case HB_TAG('K','U','R',' '):  /* Kurdish */
2889     return hb_language_from_string ("ku", -1);  /* Kurdish [macrolanguage] */
2890   case HB_TAG('L','M','A',' '):  /* Low Mari */
2891     return hb_language_from_string ("mhr", -1);  /* Eastern Mari */
2892   case HB_TAG('L','U','H',' '):  /* Luyia */
2893     return hb_language_from_string ("luy", -1);  /* Luyia [macrolanguage] */
2894   case HB_TAG('L','V','I',' '):  /* Latvian */
2895     return hb_language_from_string ("lv", -1);  /* Latvian [macrolanguage] */
2896   case HB_TAG('M','A','W',' '):  /* Marwari */
2897     return hb_language_from_string ("mwr", -1);  /* Marwari [macrolanguage] */
2898   case HB_TAG('M','L','G',' '):  /* Malagasy */
2899     return hb_language_from_string ("mg", -1);  /* Malagasy [macrolanguage] */
2900   case HB_TAG('M','L','Y',' '):  /* Malay */
2901     return hb_language_from_string ("ms", -1);  /* Malay [macrolanguage] */
2902   case HB_TAG('M','N','G',' '):  /* Mongolian */
2903     return hb_language_from_string ("mn", -1);  /* Mongolian [macrolanguage] */
2904   case HB_TAG('M','N','K',' '):  /* Maninka */
2905     return hb_language_from_string ("man", -1);  /* Mandingo [macrolanguage] */
2906   case HB_TAG('M','O','L',' '):  /* Moldavian */
2907     return hb_language_from_string ("ro-MD", -1);  /* Romanian; Moldova */
2908   case HB_TAG('M','O','N','T'):  /* Thailand Mon */
2909     return hb_language_from_string ("mnw-TH", -1);  /* Mon; Thailand */
2910   case HB_TAG('M','Y','N',' '):  /* Mayan */
2911     return hb_language_from_string ("myn", -1);  /* Mayan [collection] */
2912   case HB_TAG('N','A','H',' '):  /* Nahuatl */
2913     return hb_language_from_string ("nah", -1);  /* Nahuatl [collection] */
2914   case HB_TAG('N','E','P',' '):  /* Nepali */
2915     return hb_language_from_string ("ne", -1);  /* Nepali [macrolanguage] */
2916   case HB_TAG('N','I','S',' '):  /* Nisi */
2917     return hb_language_from_string ("njz", -1);  /* Nyishi */
2918   case HB_TAG('N','O','R',' '):  /* Norwegian */
2919     return hb_language_from_string ("no", -1);  /* Norwegian [macrolanguage] */
2920   case HB_TAG('O','J','B',' '):  /* Ojibway */
2921     return hb_language_from_string ("oj", -1);  /* Ojibwa [macrolanguage] */
2922   case HB_TAG('O','R','O',' '):  /* Oromo */
2923     return hb_language_from_string ("om", -1);  /* Oromo [macrolanguage] */
2924   case HB_TAG('P','A','S',' '):  /* Pashto */
2925     return hb_language_from_string ("ps", -1);  /* Pashto [macrolanguage] */
2926   case HB_TAG('P','G','R',' '):  /* Polytonic Greek */
2927     return hb_language_from_string ("el-polyton", -1);  /* Modern Greek (1453-); Polytonic Greek */
2928   case HB_TAG('P','R','O',' '):  /* Provençal / Old Provençal */
2929     return hb_language_from_string ("pro", -1);  /* Old Provençal (to 1500) */
2930   case HB_TAG('Q','U','H',' '):  /* Quechua (Bolivia) */
2931     return hb_language_from_string ("quh", -1);  /* South Bolivian Quechua */
2932   case HB_TAG('Q','U','Z',' '):  /* Quechua */
2933     return hb_language_from_string ("qu", -1);  /* Quechua [macrolanguage] */
2934   case HB_TAG('Q','V','I',' '):  /* Quechua (Ecuador) */
2935     return hb_language_from_string ("qvi", -1);  /* Imbabura Highland Quichua */
2936   case HB_TAG('Q','W','H',' '):  /* Quechua (Peru) */
2937     return hb_language_from_string ("qwh", -1);  /* Huaylas Ancash Quechua */
2938   case HB_TAG('R','A','J',' '):  /* Rajasthani */
2939     return hb_language_from_string ("raj", -1);  /* Rajasthani [macrolanguage] */
2940   case HB_TAG('R','O','M',' '):  /* Romanian */
2941     return hb_language_from_string ("ro", -1);  /* Romanian */
2942   case HB_TAG('R','O','Y',' '):  /* Romany */
2943     return hb_language_from_string ("rom", -1);  /* Romany [macrolanguage] */
2944   case HB_TAG('S','Q','I',' '):  /* Albanian */
2945     return hb_language_from_string ("sq", -1);  /* Albanian [macrolanguage] */
2946   case HB_TAG('S','R','B',' '):  /* Serbian */
2947     return hb_language_from_string ("sr", -1);  /* Serbian */
2948   case HB_TAG('S','X','T',' '):  /* Sutu */
2949     return hb_language_from_string ("xnj", -1);  /* Ngoni (Tanzania) */
2950   case HB_TAG('S','Y','R',' '):  /* Syriac */
2951     return hb_language_from_string ("syr", -1);  /* Syriac [macrolanguage] */
2952   case HB_TAG('S','Y','R','E'):  /* Syriac, Estrangela script-variant (equivalent to ISO 15924 'Syre') */
2953     return hb_language_from_string ("und-Syre", -1);  /* Undetermined; Syriac (Estrangelo variant) */
2954   case HB_TAG('S','Y','R','J'):  /* Syriac, Western script-variant (equivalent to ISO 15924 'Syrj') */
2955     return hb_language_from_string ("und-Syrj", -1);  /* Undetermined; Syriac (Western variant) */
2956   case HB_TAG('S','Y','R','N'):  /* Syriac, Eastern script-variant (equivalent to ISO 15924 'Syrn') */
2957     return hb_language_from_string ("und-Syrn", -1);  /* Undetermined; Syriac (Eastern variant) */
2958   case HB_TAG('T','M','H',' '):  /* Tamashek */
2959     return hb_language_from_string ("tmh", -1);  /* Tamashek [macrolanguage] */
2960   case HB_TAG('T','O','D',' '):  /* Todo */
2961     return hb_language_from_string ("xwo", -1);  /* Written Oirat */
2962   case HB_TAG('Z','H','H',' '):  /* Chinese, Traditional, Hong Kong SAR */
2963     return hb_language_from_string ("zh-HK", -1);  /* Chinese [macrolanguage]; Hong Kong */
2964   case HB_TAG('Z','H','S',' '):  /* Chinese, Simplified */
2965     return hb_language_from_string ("zh-Hans", -1);  /* Chinese [macrolanguage]; Han (Simplified variant) */
2966   case HB_TAG('Z','H','T',' '):  /* Chinese, Traditional */
2967     return hb_language_from_string ("zh-Hant", -1);  /* Chinese [macrolanguage]; Han (Traditional variant) */
2968   case HB_TAG('Z','H','T','M'):  /* Chinese, Traditional, Macao SAR */
2969     return hb_language_from_string ("zh-MO", -1);  /* Chinese [macrolanguage]; Macao */
2970   case HB_TAG('Z','Z','A',' '):  /* Zazaki */
2971     return hb_language_from_string ("zza", -1);  /* Zazaki [macrolanguage] */
2972   default:
2973     return HB_LANGUAGE_INVALID;
2974   }
2975 }
2976
2977 #endif /* HB_OT_TAG_TABLE_HH */
2978
2979 /* == End of generated table == */