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