1 /* == Start of generated table == */
3 * The following table is generated by running:
5 * ./gen-tag-table.py languagetags language-subtag-registry
7 * on files with these headers:
9 * <meta name="updated_at" content="2022-01-28 10:00 PM" />
10 * File-Date: 2021-12-29
13 #ifndef HB_OT_TAG_TABLE_HH
14 #define HB_OT_TAG_TABLE_HH
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 */
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
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
1629 * Converts a multi-subtag BCP 47 language tag to language tags.
1631 * Return value: Whether any language systems were retrieved.
1634 hb_ot_tags_from_complex_language (const char *lang_str,
1636 unsigned int *count /* IN/OUT */,
1637 hb_tag_t *tags /* OUT */)
1639 if (subtag_matches (lang_str, limit, "-fonnapa"))
1641 /* Undetermined; North American Phonetic Alphabet */
1642 tags[0] = HB_TAG('A','P','P','H'); /* Phonetic transcription—Americanist conventions */
1646 if (subtag_matches (lang_str, limit, "-polyton"))
1648 /* Modern Greek (1453-); Polytonic Greek */
1649 tags[0] = HB_TAG('P','G','R',' '); /* Polytonic Greek */
1653 if (subtag_matches (lang_str, limit, "-arevmda"))
1655 /* Armenian; Western Armenian (retired code) */
1656 tags[0] = HB_TAG('H','Y','E',' '); /* Armenian */
1660 if (subtag_matches (lang_str, limit, "-provenc"))
1662 /* Occitan (post 1500); Provençal */
1663 tags[0] = HB_TAG('P','R','O',' '); /* Provençal / Old Provençal */
1667 if (subtag_matches (lang_str, limit, "-fonipa"))
1669 /* Undetermined; International Phonetic Alphabet */
1670 tags[0] = HB_TAG('I','P','P','H'); /* Phonetic transcription—IPA conventions */
1674 if (subtag_matches (lang_str, limit, "-geok"))
1676 /* Undetermined; Khutsuri (Asomtavruli and Nuskhuri) */
1677 tags[0] = HB_TAG('K','G','E',' '); /* Khutsuri Georgian */
1681 if (subtag_matches (lang_str, limit, "-syre"))
1683 /* Undetermined; Syriac (Estrangelo variant) */
1684 tags[0] = HB_TAG('S','Y','R','E'); /* Syriac, Estrangela script-variant (equivalent to ISO 15924 'Syre') */
1688 if (subtag_matches (lang_str, limit, "-syrj"))
1690 /* Undetermined; Syriac (Western variant) */
1691 tags[0] = HB_TAG('S','Y','R','J'); /* Syriac, Western script-variant (equivalent to ISO 15924 'Syrj') */
1695 if (subtag_matches (lang_str, limit, "-syrn"))
1697 /* Undetermined; Syriac (Eastern variant) */
1698 tags[0] = HB_TAG('S','Y','R','N'); /* Syriac, Eastern script-variant (equivalent to ISO 15924 'Syrn') */
1702 switch (lang_str[0])
1705 if (0 == strcmp (&lang_str[1], "rt-lojban"))
1707 /* Lojban (retired code) */
1708 tags[0] = HB_TAG('J','B','O',' '); /* Lojban */
1714 if (lang_matches (&lang_str[1], "do-hant-hk"))
1716 /* Min Dong Chinese; Han (Traditional variant); Hong Kong */
1717 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1721 if (lang_matches (&lang_str[1], "do-hant-mo"))
1723 /* Min Dong Chinese; Han (Traditional variant); Macao */
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 */
1729 for (i = 0; i < 2 && i < *count; i++)
1730 tags[i] = possible_tags[i];
1734 if (lang_matches (&lang_str[1], "jy-hant-hk"))
1736 /* Jinyu Chinese; Han (Traditional variant); Hong Kong */
1737 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1741 if (lang_matches (&lang_str[1], "jy-hant-mo"))
1743 /* Jinyu Chinese; Han (Traditional variant); Macao */
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 */
1749 for (i = 0; i < 2 && i < *count; i++)
1750 tags[i] = possible_tags[i];
1754 if (lang_matches (&lang_str[1], "mn-hant-hk"))
1756 /* Mandarin Chinese; Han (Traditional variant); Hong Kong */
1757 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1761 if (lang_matches (&lang_str[1], "mn-hant-mo"))
1763 /* Mandarin Chinese; Han (Traditional variant); Macao */
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 */
1769 for (i = 0; i < 2 && i < *count; i++)
1770 tags[i] = possible_tags[i];
1774 if (lang_matches (&lang_str[1], "np-hant-hk"))
1776 /* Northern Ping Chinese; Han (Traditional variant); Hong Kong */
1777 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1781 if (lang_matches (&lang_str[1], "np-hant-mo"))
1783 /* Northern Ping Chinese; Han (Traditional variant); Macao */
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 */
1789 for (i = 0; i < 2 && i < *count; i++)
1790 tags[i] = possible_tags[i];
1794 if (lang_matches (&lang_str[1], "px-hant-hk"))
1796 /* Pu-Xian Chinese; Han (Traditional variant); Hong Kong */
1797 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1801 if (lang_matches (&lang_str[1], "px-hant-mo"))
1803 /* Pu-Xian Chinese; Han (Traditional variant); Macao */
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 */
1809 for (i = 0; i < 2 && i < *count; i++)
1810 tags[i] = possible_tags[i];
1814 if (lang_matches (&lang_str[1], "sp-hant-hk"))
1816 /* Southern Ping Chinese; Han (Traditional variant); Hong Kong */
1817 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1821 if (lang_matches (&lang_str[1], "sp-hant-mo"))
1823 /* Southern Ping Chinese; Han (Traditional variant); Macao */
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 */
1829 for (i = 0; i < 2 && i < *count; i++)
1830 tags[i] = possible_tags[i];
1834 if (lang_matches (&lang_str[1], "zh-hant-hk"))
1836 /* Huizhou Chinese; Han (Traditional variant); Hong Kong */
1837 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1841 if (lang_matches (&lang_str[1], "zh-hant-mo"))
1843 /* Huizhou Chinese; Han (Traditional variant); Macao */
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 */
1849 for (i = 0; i < 2 && i < *count; i++)
1850 tags[i] = possible_tags[i];
1854 if (lang_matches (&lang_str[1], "zo-hant-hk"))
1856 /* Min Zhong Chinese; Han (Traditional variant); Hong Kong */
1857 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1861 if (lang_matches (&lang_str[1], "zo-hant-mo"))
1863 /* Min Zhong Chinese; Han (Traditional variant); Macao */
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 */
1869 for (i = 0; i < 2 && i < *count; i++)
1870 tags[i] = possible_tags[i];
1874 if (lang_matches (&lang_str[1], "do-hans"))
1876 /* Min Dong Chinese; Han (Simplified variant) */
1877 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1881 if (lang_matches (&lang_str[1], "do-hant"))
1883 /* Min Dong Chinese; Han (Traditional variant) */
1884 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1888 if (lang_matches (&lang_str[1], "jy-hans"))
1890 /* Jinyu Chinese; Han (Simplified variant) */
1891 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1895 if (lang_matches (&lang_str[1], "jy-hant"))
1897 /* Jinyu Chinese; Han (Traditional variant) */
1898 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1902 if (lang_matches (&lang_str[1], "mn-hans"))
1904 /* Mandarin Chinese; Han (Simplified variant) */
1905 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1909 if (lang_matches (&lang_str[1], "mn-hant"))
1911 /* Mandarin Chinese; Han (Traditional variant) */
1912 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1916 if (lang_matches (&lang_str[1], "np-hans"))
1918 /* Northern Ping Chinese; Han (Simplified variant) */
1919 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1923 if (lang_matches (&lang_str[1], "np-hant"))
1925 /* Northern Ping Chinese; Han (Traditional variant) */
1926 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1930 if (lang_matches (&lang_str[1], "px-hans"))
1932 /* Pu-Xian Chinese; Han (Simplified variant) */
1933 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1937 if (lang_matches (&lang_str[1], "px-hant"))
1939 /* Pu-Xian Chinese; Han (Traditional variant) */
1940 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1944 if (lang_matches (&lang_str[1], "sp-hans"))
1946 /* Southern Ping Chinese; Han (Simplified variant) */
1947 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1951 if (lang_matches (&lang_str[1], "sp-hant"))
1953 /* Southern Ping Chinese; Han (Traditional variant) */
1954 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1958 if (lang_matches (&lang_str[1], "zh-hans"))
1960 /* Huizhou Chinese; Han (Simplified variant) */
1961 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1965 if (lang_matches (&lang_str[1], "zh-hant"))
1967 /* Huizhou Chinese; Han (Traditional variant) */
1968 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1972 if (lang_matches (&lang_str[1], "zo-hans"))
1974 /* Min Zhong Chinese; Han (Simplified variant) */
1975 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1979 if (lang_matches (&lang_str[1], "zo-hant"))
1981 /* Min Zhong Chinese; Han (Traditional variant) */
1982 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1986 if (0 == strncmp (&lang_str[1], "do-", 3)
1987 && subtag_matches (lang_str, limit, "-hk"))
1989 /* Min Dong Chinese; Hong Kong */
1990 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1994 if (0 == strncmp (&lang_str[1], "do-", 3)
1995 && subtag_matches (lang_str, limit, "-mo"))
1997 /* Min Dong Chinese; Macao */
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 */
2003 for (i = 0; i < 2 && i < *count; i++)
2004 tags[i] = possible_tags[i];
2008 if (0 == strncmp (&lang_str[1], "do-", 3)
2009 && subtag_matches (lang_str, limit, "-tw"))
2011 /* Min Dong Chinese; Taiwan, Province of China */
2012 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2016 if (0 == strncmp (&lang_str[1], "jy-", 3)
2017 && subtag_matches (lang_str, limit, "-hk"))
2019 /* Jinyu Chinese; Hong Kong */
2020 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2024 if (0 == strncmp (&lang_str[1], "jy-", 3)
2025 && subtag_matches (lang_str, limit, "-mo"))
2027 /* Jinyu Chinese; Macao */
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 */
2033 for (i = 0; i < 2 && i < *count; i++)
2034 tags[i] = possible_tags[i];
2038 if (0 == strncmp (&lang_str[1], "jy-", 3)
2039 && subtag_matches (lang_str, limit, "-tw"))
2041 /* Jinyu Chinese; Taiwan, Province of China */
2042 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2046 if (0 == strncmp (&lang_str[1], "mn-", 3)
2047 && subtag_matches (lang_str, limit, "-hk"))
2049 /* Mandarin Chinese; Hong Kong */
2050 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2054 if (0 == strncmp (&lang_str[1], "mn-", 3)
2055 && subtag_matches (lang_str, limit, "-mo"))
2057 /* Mandarin Chinese; Macao */
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 */
2063 for (i = 0; i < 2 && i < *count; i++)
2064 tags[i] = possible_tags[i];
2068 if (0 == strncmp (&lang_str[1], "mn-", 3)
2069 && subtag_matches (lang_str, limit, "-tw"))
2071 /* Mandarin Chinese; Taiwan, Province of China */
2072 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2076 if (0 == strncmp (&lang_str[1], "np-", 3)
2077 && subtag_matches (lang_str, limit, "-hk"))
2079 /* Northern Ping Chinese; Hong Kong */
2080 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2084 if (0 == strncmp (&lang_str[1], "np-", 3)
2085 && subtag_matches (lang_str, limit, "-mo"))
2087 /* Northern Ping Chinese; Macao */
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 */
2093 for (i = 0; i < 2 && i < *count; i++)
2094 tags[i] = possible_tags[i];
2098 if (0 == strncmp (&lang_str[1], "np-", 3)
2099 && subtag_matches (lang_str, limit, "-tw"))
2101 /* Northern Ping Chinese; Taiwan, Province of China */
2102 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2106 if (0 == strncmp (&lang_str[1], "px-", 3)
2107 && subtag_matches (lang_str, limit, "-hk"))
2109 /* Pu-Xian Chinese; Hong Kong */
2110 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2114 if (0 == strncmp (&lang_str[1], "px-", 3)
2115 && subtag_matches (lang_str, limit, "-mo"))
2117 /* Pu-Xian Chinese; Macao */
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 */
2123 for (i = 0; i < 2 && i < *count; i++)
2124 tags[i] = possible_tags[i];
2128 if (0 == strncmp (&lang_str[1], "px-", 3)
2129 && subtag_matches (lang_str, limit, "-tw"))
2131 /* Pu-Xian Chinese; Taiwan, Province of China */
2132 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2136 if (0 == strncmp (&lang_str[1], "sp-", 3)
2137 && subtag_matches (lang_str, limit, "-hk"))
2139 /* Southern Ping Chinese; Hong Kong */
2140 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2144 if (0 == strncmp (&lang_str[1], "sp-", 3)
2145 && subtag_matches (lang_str, limit, "-mo"))
2147 /* Southern Ping Chinese; Macao */
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 */
2153 for (i = 0; i < 2 && i < *count; i++)
2154 tags[i] = possible_tags[i];
2158 if (0 == strncmp (&lang_str[1], "sp-", 3)
2159 && subtag_matches (lang_str, limit, "-tw"))
2161 /* Southern Ping Chinese; Taiwan, Province of China */
2162 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2166 if (0 == strncmp (&lang_str[1], "zh-", 3)
2167 && subtag_matches (lang_str, limit, "-hk"))
2169 /* Huizhou Chinese; Hong Kong */
2170 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2174 if (0 == strncmp (&lang_str[1], "zh-", 3)
2175 && subtag_matches (lang_str, limit, "-mo"))
2177 /* Huizhou Chinese; Macao */
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 */
2183 for (i = 0; i < 2 && i < *count; i++)
2184 tags[i] = possible_tags[i];
2188 if (0 == strncmp (&lang_str[1], "zh-", 3)
2189 && subtag_matches (lang_str, limit, "-tw"))
2191 /* Huizhou Chinese; Taiwan, Province of China */
2192 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2196 if (0 == strncmp (&lang_str[1], "zo-", 3)
2197 && subtag_matches (lang_str, limit, "-hk"))
2199 /* Min Zhong Chinese; Hong Kong */
2200 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2204 if (0 == strncmp (&lang_str[1], "zo-", 3)
2205 && subtag_matches (lang_str, limit, "-mo"))
2207 /* Min Zhong Chinese; Macao */
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 */
2213 for (i = 0; i < 2 && i < *count; i++)
2214 tags[i] = possible_tags[i];
2218 if (0 == strncmp (&lang_str[1], "zo-", 3)
2219 && subtag_matches (lang_str, limit, "-tw"))
2221 /* Min Zhong Chinese; Taiwan, Province of China */
2222 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2228 if (lang_matches (&lang_str[1], "an-hant-hk"))
2230 /* Gan Chinese; Han (Traditional variant); Hong Kong */
2231 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2235 if (lang_matches (&lang_str[1], "an-hant-mo"))
2237 /* Gan Chinese; Han (Traditional variant); Macao */
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 */
2243 for (i = 0; i < 2 && i < *count; i++)
2244 tags[i] = possible_tags[i];
2248 if (lang_matches (&lang_str[1], "an-hans"))
2250 /* Gan Chinese; Han (Simplified variant) */
2251 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2255 if (lang_matches (&lang_str[1], "an-hant"))
2257 /* Gan Chinese; Han (Traditional variant) */
2258 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2262 if (lang_matches (&lang_str[1], "a-latg"))
2264 /* Irish; Latin (Gaelic variant) */
2265 tags[0] = HB_TAG('I','R','T',' '); /* Irish Traditional */
2269 if (0 == strncmp (&lang_str[1], "an-", 3)
2270 && subtag_matches (lang_str, limit, "-hk"))
2272 /* Gan Chinese; Hong Kong */
2273 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2277 if (0 == strncmp (&lang_str[1], "an-", 3)
2278 && subtag_matches (lang_str, limit, "-mo"))
2280 /* Gan Chinese; Macao */
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 */
2286 for (i = 0; i < 2 && i < *count; i++)
2287 tags[i] = possible_tags[i];
2291 if (0 == strncmp (&lang_str[1], "an-", 3)
2292 && subtag_matches (lang_str, limit, "-tw"))
2294 /* Gan Chinese; Taiwan, Province of China */
2295 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2301 if (lang_matches (&lang_str[1], "ak-hant-hk"))
2303 /* Hakka Chinese; Han (Traditional variant); Hong Kong */
2304 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2308 if (lang_matches (&lang_str[1], "ak-hant-mo"))
2310 /* Hakka Chinese; Han (Traditional variant); Macao */
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 */
2316 for (i = 0; i < 2 && i < *count; i++)
2317 tags[i] = possible_tags[i];
2321 if (lang_matches (&lang_str[1], "sn-hant-hk"))
2323 /* Xiang Chinese; Han (Traditional variant); Hong Kong */
2324 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2328 if (lang_matches (&lang_str[1], "sn-hant-mo"))
2330 /* Xiang Chinese; Han (Traditional variant); Macao */
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 */
2336 for (i = 0; i < 2 && i < *count; i++)
2337 tags[i] = possible_tags[i];
2341 if (lang_matches (&lang_str[1], "ak-hans"))
2343 /* Hakka Chinese; Han (Simplified variant) */
2344 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2348 if (lang_matches (&lang_str[1], "ak-hant"))
2350 /* Hakka Chinese; Han (Traditional variant) */
2351 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2355 if (lang_matches (&lang_str[1], "sn-hans"))
2357 /* Xiang Chinese; Han (Simplified variant) */
2358 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2362 if (lang_matches (&lang_str[1], "sn-hant"))
2364 /* Xiang Chinese; Han (Traditional variant) */
2365 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2369 if (0 == strncmp (&lang_str[1], "ak-", 3)
2370 && subtag_matches (lang_str, limit, "-hk"))
2372 /* Hakka Chinese; Hong Kong */
2373 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2377 if (0 == strncmp (&lang_str[1], "ak-", 3)
2378 && subtag_matches (lang_str, limit, "-mo"))
2380 /* Hakka Chinese; Macao */
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 */
2386 for (i = 0; i < 2 && i < *count; i++)
2387 tags[i] = possible_tags[i];
2391 if (0 == strncmp (&lang_str[1], "ak-", 3)
2392 && subtag_matches (lang_str, limit, "-tw"))
2394 /* Hakka Chinese; Taiwan, Province of China */
2395 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2399 if (0 == strncmp (&lang_str[1], "sn-", 3)
2400 && subtag_matches (lang_str, limit, "-hk"))
2402 /* Xiang Chinese; Hong Kong */
2403 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2407 if (0 == strncmp (&lang_str[1], "sn-", 3)
2408 && subtag_matches (lang_str, limit, "-mo"))
2410 /* Xiang Chinese; Macao */
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 */
2416 for (i = 0; i < 2 && i < *count; i++)
2417 tags[i] = possible_tags[i];
2421 if (0 == strncmp (&lang_str[1], "sn-", 3)
2422 && subtag_matches (lang_str, limit, "-tw"))
2424 /* Xiang Chinese; Taiwan, Province of China */
2425 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2431 if (0 == strcmp (&lang_str[1], "-navajo"))
2433 /* Navajo (retired code) */
2435 hb_tag_t possible_tags[] = {
2436 HB_TAG('N','A','V',' '), /* Navajo */
2437 HB_TAG('A','T','H',' '), /* Athapaskan */
2439 for (i = 0; i < 2 && i < *count; i++)
2440 tags[i] = possible_tags[i];
2444 if (0 == strcmp (&lang_str[1], "-hak"))
2446 /* Hakka (retired code) */
2447 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2451 if (0 == strcmp (&lang_str[1], "-lux"))
2453 /* Luxembourgish (retired code) */
2454 tags[0] = HB_TAG('L','T','Z',' '); /* Luxembourgish */
2460 if (lang_matches (&lang_str[1], "zh-hans"))
2462 /* Literary Chinese; Han (Simplified variant) */
2463 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2469 if (lang_matches (&lang_str[1], "np-hant-hk"))
2471 /* Min Bei Chinese; Han (Traditional variant); Hong Kong */
2472 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2476 if (lang_matches (&lang_str[1], "np-hant-mo"))
2478 /* Min Bei Chinese; Han (Traditional variant); Macao */
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 */
2484 for (i = 0; i < 2 && i < *count; i++)
2485 tags[i] = possible_tags[i];
2489 if (lang_matches (&lang_str[1], "np-hans"))
2491 /* Min Bei Chinese; Han (Simplified variant) */
2492 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2496 if (lang_matches (&lang_str[1], "np-hant"))
2498 /* Min Bei Chinese; Han (Traditional variant) */
2499 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2503 if (0 == strncmp (&lang_str[1], "np-", 3)
2504 && subtag_matches (lang_str, limit, "-hk"))
2506 /* Min Bei Chinese; Hong Kong */
2507 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2511 if (0 == strncmp (&lang_str[1], "np-", 3)
2512 && subtag_matches (lang_str, limit, "-mo"))
2514 /* Min Bei Chinese; Macao */
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 */
2520 for (i = 0; i < 2 && i < *count; i++)
2521 tags[i] = possible_tags[i];
2525 if (0 == strncmp (&lang_str[1], "np-", 3)
2526 && subtag_matches (lang_str, limit, "-tw"))
2528 /* Min Bei Chinese; Taiwan, Province of China */
2529 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2533 if (0 == strncmp (&lang_str[1], "nw-", 3)
2534 && subtag_matches (lang_str, limit, "-th"))
2537 tags[0] = HB_TAG('M','O','N','T'); /* Thailand Mon */
2543 if (lang_matches (&lang_str[1], "an-hant-hk"))
2545 /* Min Nan Chinese; Han (Traditional variant); Hong Kong */
2546 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2550 if (lang_matches (&lang_str[1], "an-hant-mo"))
2552 /* Min Nan Chinese; Han (Traditional variant); Macao */
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 */
2558 for (i = 0; i < 2 && i < *count; i++)
2559 tags[i] = possible_tags[i];
2563 if (lang_matches (&lang_str[1], "an-hans"))
2565 /* Min Nan Chinese; Han (Simplified variant) */
2566 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2570 if (lang_matches (&lang_str[1], "an-hant"))
2572 /* Min Nan Chinese; Han (Traditional variant) */
2573 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2577 if (0 == strncmp (&lang_str[1], "an-", 3)
2578 && subtag_matches (lang_str, limit, "-hk"))
2580 /* Min Nan Chinese; Hong Kong */
2581 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2585 if (0 == strncmp (&lang_str[1], "an-", 3)
2586 && subtag_matches (lang_str, limit, "-mo"))
2588 /* Min Nan Chinese; Macao */
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 */
2594 for (i = 0; i < 2 && i < *count; i++)
2595 tags[i] = possible_tags[i];
2599 if (0 == strncmp (&lang_str[1], "an-", 3)
2600 && subtag_matches (lang_str, limit, "-tw"))
2602 /* Min Nan Chinese; Taiwan, Province of China */
2603 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2607 if (0 == strcmp (&lang_str[1], "o-bok"))
2609 /* Norwegian Bokmal (retired code) */
2610 tags[0] = HB_TAG('N','O','R',' '); /* Norwegian */
2614 if (0 == strcmp (&lang_str[1], "o-nyn"))
2616 /* Norwegian Nynorsk (retired code) */
2617 tags[0] = HB_TAG('N','Y','N',' '); /* Norwegian Nynorsk (Nynorsk, Norwegian) */
2623 if (0 == strncmp (&lang_str[1], "o-", 2)
2624 && subtag_matches (lang_str, limit, "-md"))
2626 /* Romanian; Moldova */
2628 hb_tag_t possible_tags[] = {
2629 HB_TAG('M','O','L',' '), /* Moldavian */
2630 HB_TAG('R','O','M',' '), /* Romanian */
2632 for (i = 0; i < 2 && i < *count; i++)
2633 tags[i] = possible_tags[i];
2639 if (lang_matches (&lang_str[1], "uu-hant-hk"))
2641 /* Wu Chinese; Han (Traditional variant); Hong Kong */
2642 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2646 if (lang_matches (&lang_str[1], "uu-hant-mo"))
2648 /* Wu Chinese; Han (Traditional variant); Macao */
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 */
2654 for (i = 0; i < 2 && i < *count; i++)
2655 tags[i] = possible_tags[i];
2659 if (lang_matches (&lang_str[1], "uu-hans"))
2661 /* Wu Chinese; Han (Simplified variant) */
2662 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2666 if (lang_matches (&lang_str[1], "uu-hant"))
2668 /* Wu Chinese; Han (Traditional variant) */
2669 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2673 if (0 == strncmp (&lang_str[1], "uu-", 3)
2674 && subtag_matches (lang_str, limit, "-hk"))
2676 /* Wu Chinese; Hong Kong */
2677 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2681 if (0 == strncmp (&lang_str[1], "uu-", 3)
2682 && subtag_matches (lang_str, limit, "-mo"))
2684 /* Wu Chinese; Macao */
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 */
2690 for (i = 0; i < 2 && i < *count; i++)
2691 tags[i] = possible_tags[i];
2695 if (0 == strncmp (&lang_str[1], "uu-", 3)
2696 && subtag_matches (lang_str, limit, "-tw"))
2698 /* Wu Chinese; Taiwan, Province of China */
2699 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2705 if (lang_matches (&lang_str[1], "ue-hans"))
2707 /* Yue Chinese; Han (Simplified variant) */
2708 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2714 if (lang_matches (&lang_str[1], "h-hant-hk"))
2716 /* Chinese [macrolanguage]; Han (Traditional variant); Hong Kong */
2717 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2721 if (lang_matches (&lang_str[1], "h-hant-mo"))
2723 /* Chinese [macrolanguage]; Han (Traditional variant); Macao */
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 */
2729 for (i = 0; i < 2 && i < *count; i++)
2730 tags[i] = possible_tags[i];
2734 if (0 == strcmp (&lang_str[1], "h-min-nan"))
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 */
2741 if (lang_matches (&lang_str[1], "h-hans"))
2743 /* Chinese [macrolanguage]; Han (Simplified variant) */
2744 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2748 if (lang_matches (&lang_str[1], "h-hant"))
2750 /* Chinese [macrolanguage]; Han (Traditional variant) */
2751 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2755 if (0 == strcmp (&lang_str[1], "h-min"))
2757 /* Min, Fuzhou, Hokkien, Amoy, or Taiwanese (retired code) */
2758 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2762 if (0 == strncmp (&lang_str[1], "h-", 2)
2763 && subtag_matches (lang_str, limit, "-hk"))
2765 /* Chinese [macrolanguage]; Hong Kong */
2766 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2770 if (0 == strncmp (&lang_str[1], "h-", 2)
2771 && subtag_matches (lang_str, limit, "-mo"))
2773 /* Chinese [macrolanguage]; Macao */
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 */
2779 for (i = 0; i < 2 && i < *count; i++)
2780 tags[i] = possible_tags[i];
2784 if (0 == strncmp (&lang_str[1], "h-", 2)
2785 && subtag_matches (lang_str, limit, "-tw"))
2787 /* Chinese [macrolanguage]; Taiwan, Province of China */
2788 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2798 * hb_ot_ambiguous_tag_to_language
2799 * @tag: A language tag.
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
2806 * Return value: The #hb_language_t corresponding to the BCP 47 language tag,
2807 * or #HB_LANGUAGE_INVALID if @tag is not ambiguous.
2809 static hb_language_t
2810 hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
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] */
2973 return HB_LANGUAGE_INVALID;
2977 #endif /* HB_OT_TAG_TABLE_HH */
2979 /* == End of generated table == */