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