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="2019-05-22 06:05 PM" />
10 * File-Date: 2020-05-12
11 */
12
13#ifndef HB_OT_TAG_TABLE_HH
14#define HB_OT_TAG_TABLE_HH
15
16static 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 {"abh", HB_TAG('A','R','A',' ')}, /* Tajiki Arabic -> Arabic */
23 {"abq", HB_TAG('A','B','A',' ')}, /* Abaza */
24 {"abv", HB_TAG('A','R','A',' ')}, /* Baharna Arabic -> Arabic */
25 {"acf", HB_TAG('F','A','N',' ')}, /* Saint Lucian Creole French -> French Antillean */
26/*{"ach", HB_TAG('A','C','H',' ')},*/ /* Acoli -> Acholi */
27 {"acm", HB_TAG('A','R','A',' ')}, /* Mesopotamian Arabic -> Arabic */
28 {"acq", HB_TAG('A','R','A',' ')}, /* Ta'izzi-Adeni Arabic -> Arabic */
29/*{"acr", HB_TAG('A','C','R',' ')},*/ /* Achi */
30 {"acw", HB_TAG('A','R','A',' ')}, /* Hijazi Arabic -> Arabic */
31 {"acx", HB_TAG('A','R','A',' ')}, /* Omani Arabic -> Arabic */
32 {"acy", HB_TAG('A','R','A',' ')}, /* Cypriot Arabic -> Arabic */
33 {"ada", HB_TAG('D','N','G',' ')}, /* Adangme -> Dangme */
34 {"adf", HB_TAG('A','R','A',' ')}, /* Dhofari Arabic -> Arabic */
35 {"adp", HB_TAG('D','Z','N',' ')}, /* Adap (retired code) -> Dzongkha */
36/*{"ady", HB_TAG('A','D','Y',' ')},*/ /* Adyghe */
37 {"aeb", HB_TAG('A','R','A',' ')}, /* Tunisian Arabic -> Arabic */
38 {"aec", HB_TAG('A','R','A',' ')}, /* Saidi Arabic -> Arabic */
39 {"af", HB_TAG('A','F','K',' ')}, /* Afrikaans */
40 {"afb", HB_TAG('A','R','A',' ')}, /* Gulf Arabic -> Arabic */
41 {"ahg", HB_TAG('A','G','W',' ')}, /* Qimant -> Agaw */
42 {"aht", HB_TAG('A','T','H',' ')}, /* Ahtena -> Athapaskan */
43 {"aii", HB_TAG('S','W','A',' ')}, /* Assyrian Neo-Aramaic -> Swadaya Aramaic */
44 {"aii", HB_TAG('S','Y','R',' ')}, /* Assyrian Neo-Aramaic -> Syriac */
45/*{"aio", HB_TAG('A','I','O',' ')},*/ /* Aiton */
46 {"aiw", HB_TAG('A','R','I',' ')}, /* Aari */
47 {"ajp", HB_TAG('A','R','A',' ')}, /* South Levantine Arabic -> Arabic */
48 {"ak", HB_TAG('A','K','A',' ')}, /* Akan [macrolanguage] */
49 {"ak", HB_TAG('T','W','I',' ')}, /* Akan [macrolanguage] -> Twi */
50 {"aln", HB_TAG('S','Q','I',' ')}, /* Gheg Albanian -> Albanian */
51 {"als", HB_TAG('S','Q','I',' ')}, /* Tosk Albanian -> Albanian */
52/*{"alt", HB_TAG('A','L','T',' ')},*/ /* Southern Altai -> Altai */
53 {"am", HB_TAG('A','M','H',' ')}, /* Amharic */
54 {"amf", HB_TAG('H','B','N',' ')}, /* Hamer-Banna -> Hammer-Banna */
55 {"amw", HB_TAG('S','Y','R',' ')}, /* Western Neo-Aramaic -> Syriac */
56 {"an", HB_TAG('A','R','G',' ')}, /* Aragonese */
57/*{"ang", HB_TAG('A','N','G',' ')},*/ /* Old English (ca. 450-1100) -> Anglo-Saxon */
58 {"apc", HB_TAG('A','R','A',' ')}, /* North Levantine Arabic -> Arabic */
59 {"apd", HB_TAG('A','R','A',' ')}, /* Sudanese Arabic -> Arabic */
60 {"apj", HB_TAG('A','T','H',' ')}, /* Jicarilla Apache -> Athapaskan */
61 {"apk", HB_TAG('A','T','H',' ')}, /* Kiowa Apache -> Athapaskan */
62 {"apl", HB_TAG('A','T','H',' ')}, /* Lipan Apache -> Athapaskan */
63 {"apm", HB_TAG('A','T','H',' ')}, /* Mescalero-Chiricahua Apache -> Athapaskan */
64 {"apw", HB_TAG('A','T','H',' ')}, /* Western Apache -> Athapaskan */
65 {"ar", HB_TAG('A','R','A',' ')}, /* Arabic [macrolanguage] */
66 {"arb", HB_TAG('A','R','A',' ')}, /* Standard Arabic -> Arabic */
67 {"arn", HB_TAG('M','A','P',' ')}, /* Mapudungun */
68 {"arq", HB_TAG('A','R','A',' ')}, /* Algerian Arabic -> Arabic */
69 {"ars", HB_TAG('A','R','A',' ')}, /* Najdi Arabic -> Arabic */
70 {"ary", HB_TAG('M','O','R',' ')}, /* Moroccan Arabic -> Moroccan */
71 {"arz", HB_TAG('A','R','A',' ')}, /* Egyptian Arabic -> Arabic */
72 {"as", HB_TAG('A','S','M',' ')}, /* Assamese */
73/*{"ast", HB_TAG('A','S','T',' ')},*/ /* Asturian */
74/*{"ath", HB_TAG('A','T','H',' ')},*/ /* Athapascan [family] -> Athapaskan */
75 {"atj", HB_TAG('R','C','R',' ')}, /* Atikamekw -> R-Cree */
76 {"atv", HB_TAG('A','L','T',' ')}, /* Northern Altai -> Altai */
77 {"auz", HB_TAG('A','R','A',' ')}, /* Uzbeki Arabic -> Arabic */
78 {"av", HB_TAG('A','V','R',' ')}, /* Avaric -> Avar */
79 {"avl", HB_TAG('A','R','A',' ')}, /* Eastern Egyptian Bedawi Arabic -> Arabic */
80/*{"awa", HB_TAG('A','W','A',' ')},*/ /* Awadhi */
81 {"ay", HB_TAG('A','Y','M',' ')}, /* Aymara [macrolanguage] */
82 {"ayc", HB_TAG('A','Y','M',' ')}, /* Southern Aymara -> Aymara */
83 {"ayh", HB_TAG('A','R','A',' ')}, /* Hadrami Arabic -> Arabic */
84 {"ayl", HB_TAG('A','R','A',' ')}, /* Libyan Arabic -> Arabic */
85 {"ayn", HB_TAG('A','R','A',' ')}, /* Sanaani Arabic -> Arabic */
86 {"ayp", HB_TAG('A','R','A',' ')}, /* North Mesopotamian Arabic -> Arabic */
87 {"ayr", HB_TAG('A','Y','M',' ')}, /* Central Aymara -> Aymara */
88 {"az", HB_TAG('A','Z','E',' ')}, /* Azerbaijani [macrolanguage] */
89/*{"azb", HB_TAG('A','Z','B',' ')},*/ /* South Azerbaijani -> Torki */
90 {"azj", HB_TAG('A','Z','E',' ')}, /* North Azerbaijani -> Azerbaijani */
91 {"ba", HB_TAG('B','S','H',' ')}, /* Bashkir */
92 {"bad", HB_TAG('B','A','D','0')}, /* Banda [family] */
93 {"bai", HB_TAG('B','M','L',' ')}, /* Bamileke [family] */
94 {"bal", HB_TAG('B','L','I',' ')}, /* Baluchi [macrolanguage] */
95/*{"ban", HB_TAG('B','A','N',' ')},*/ /* Balinese */
96/*{"bar", HB_TAG('B','A','R',' ')},*/ /* Bavarian */
97/*{"bbc", HB_TAG('B','B','C',' ')},*/ /* Batak Toba */
98 {"bbz", HB_TAG('A','R','A',' ')}, /* Babalia Creole Arabic (retired code) -> Arabic */
99 {"bcc", HB_TAG('B','L','I',' ')}, /* Southern Balochi -> Baluchi */
100 {"bci", HB_TAG('B','A','U',' ')}, /* Baoulé -> Baulé */
101 {"bcl", HB_TAG('B','I','K',' ')}, /* Central Bikol -> Bikol */
102 {"bcq", HB_TAG('B','C','H',' ')}, /* Bench */
103 {"bcr", HB_TAG('A','T','H',' ')}, /* Babine -> Athapaskan */
104/*{"bdy", HB_TAG('B','D','Y',' ')},*/ /* Bandjalang */
105 {"be", HB_TAG('B','E','L',' ')}, /* Belarusian -> Belarussian */
106 {"bea", HB_TAG('A','T','H',' ')}, /* Beaver -> Athapaskan */
107 {"beb", HB_TAG('B','T','I',' ')}, /* Bebele -> Beti */
108/*{"bem", HB_TAG('B','E','M',' ')},*/ /* Bemba (Zambia) */
109 {"ber", HB_TAG('B','B','R',' ')}, /* Berber [family] */
110 {"bfq", HB_TAG('B','A','D',' ')}, /* Badaga */
111 {"bft", HB_TAG('B','L','T',' ')}, /* Balti */
112 {"bfu", HB_TAG('L','A','H',' ')}, /* Gahri -> Lahuli */
113 {"bfy", HB_TAG('B','A','G',' ')}, /* Bagheli -> Baghelkhandi */
114 {"bg", HB_TAG('B','G','R',' ')}, /* Bulgarian */
115/*{"bgc", HB_TAG('B','G','C',' ')},*/ /* Haryanvi */
116 {"bgn", HB_TAG('B','L','I',' ')}, /* Western Balochi -> Baluchi */
117 {"bgp", HB_TAG('B','L','I',' ')}, /* Eastern Balochi -> Baluchi */
118/*{"bgq", HB_TAG('B','G','Q',' ')},*/ /* Bagri */
119 {"bgr", HB_TAG('Q','I','N',' ')}, /* Bawm Chin -> Chin */
120 {"bhb", HB_TAG('B','H','I',' ')}, /* Bhili */
121/*{"bhi", HB_TAG('B','H','I',' ')},*/ /* Bhilali -> Bhili */
122 {"bhk", HB_TAG('B','I','K',' ')}, /* Albay Bicolano (retired code) -> Bikol */
123/*{"bho", HB_TAG('B','H','O',' ')},*/ /* Bhojpuri */
124 {"bhr", HB_TAG('M','L','G',' ')}, /* Bara Malagasy -> Malagasy */
125 {"bi", HB_TAG('B','I','S',' ')}, /* Bislama */
126/*{"bik", HB_TAG('B','I','K',' ')},*/ /* Bikol [macrolanguage] */
127 {"bin", HB_TAG('E','D','O',' ')}, /* Edo */
128/*{"bjj", HB_TAG('B','J','J',' ')},*/ /* Kanauji */
129 {"bjn", HB_TAG('M','L','Y',' ')}, /* Banjar -> Malay */
130 {"bjq", HB_TAG('M','L','G',' ')}, /* Southern Betsimisaraka Malagasy (retired code) -> Malagasy */
131 {"bjt", HB_TAG('B','L','N',' ')}, /* Balanta-Ganja -> Balante */
132 {"bla", HB_TAG('B','K','F',' ')}, /* Siksika -> Blackfoot */
133 {"ble", HB_TAG('B','L','N',' ')}, /* Balanta-Kentohe -> Balante */
134/*{"blk", HB_TAG('B','L','K',' ')},*/ /* Pa’o Karen */
135 {"bln", HB_TAG('B','I','K',' ')}, /* Southern Catanduanes Bikol -> Bikol */
136 {"bm", HB_TAG('B','M','B',' ')}, /* Bambara (Bamanankan) */
137 {"bmm", HB_TAG('M','L','G',' ')}, /* Northern Betsimisaraka Malagasy -> Malagasy */
138 {"bn", HB_TAG('B','E','N',' ')}, /* Bengali */
139 {"bo", HB_TAG('T','I','B',' ')}, /* Tibetan */
140/*{"bpy", HB_TAG('B','P','Y',' ')},*/ /* Bishnupriya -> Bishnupriya Manipuri */
141 {"bqi", HB_TAG('L','R','C',' ')}, /* Bakhtiari -> Luri */
142 {"br", HB_TAG('B','R','E',' ')}, /* Breton */
143 {"bra", HB_TAG('B','R','I',' ')}, /* Braj -> Braj Bhasha */
144/*{"brh", HB_TAG('B','R','H',' ')},*/ /* Brahui */
145/*{"brx", HB_TAG('B','R','X',' ')},*/ /* Bodo (India) */
146 {"bs", HB_TAG('B','O','S',' ')}, /* Bosnian */
147/*{"bsk", HB_TAG('B','S','K',' ')},*/ /* Burushaski */
148 {"btb", HB_TAG('B','T','I',' ')}, /* Beti (Cameroon) (retired code) */
149 {"btj", HB_TAG('M','L','Y',' ')}, /* Bacanese Malay -> Malay */
150 {"bto", HB_TAG('B','I','K',' ')}, /* Rinconada Bikol -> Bikol */
151/*{"bts", HB_TAG('B','T','S',' ')},*/ /* Batak Simalungun */
152/*{"bug", HB_TAG('B','U','G',' ')},*/ /* Buginese -> Bugis */
153 {"bum", HB_TAG('B','T','I',' ')}, /* Bulu (Cameroon) -> Beti */
154 {"bve", HB_TAG('M','L','Y',' ')}, /* Berau Malay -> Malay */
155 {"bvu", HB_TAG('M','L','Y',' ')}, /* Bukit Malay -> Malay */
156 {"bxk", HB_TAG('L','U','H',' ')}, /* Bukusu -> Luyia */
157 {"bxp", HB_TAG('B','T','I',' ')}, /* Bebil -> Beti */
158 {"bxr", HB_TAG('R','B','U',' ')}, /* Russia Buriat -> Russian Buriat */
159 {"byn", HB_TAG('B','I','L',' ')}, /* Bilin -> Bilen */
160/*{"byv", HB_TAG('B','Y','V',' ')},*/ /* Medumba */
161 {"bzc", HB_TAG('M','L','G',' ')}, /* Southern Betsimisaraka Malagasy -> Malagasy */
162 {"ca", HB_TAG('C','A','T',' ')}, /* Catalan */
163 {"caf", HB_TAG('C','R','R',' ')}, /* Southern Carrier -> Carrier */
164 {"caf", HB_TAG('A','T','H',' ')}, /* Southern Carrier -> Athapaskan */
165/*{"cak", HB_TAG('C','A','K',' ')},*/ /* Kaqchikel */
166/*{"cbk", HB_TAG('C','B','K',' ')},*/ /* Chavacano -> Zamboanga Chavacano */
167 {"cbl", HB_TAG('Q','I','N',' ')}, /* Bualkhaw Chin -> Chin */
168 {"cco", HB_TAG('C','C','H','N')}, /* Comaltepec Chinantec -> Chinantec */
169 {"ccq", HB_TAG('A','R','K',' ')}, /* Chaungtha (retired code) -> Rakhine */
170 {"cdo", HB_TAG('Z','H','S',' ')}, /* Min Dong Chinese -> Chinese Simplified */
171 {"ce", HB_TAG('C','H','E',' ')}, /* Chechen */
172/*{"ceb", HB_TAG('C','E','B',' ')},*/ /* Cebuano */
173 {"cfm", HB_TAG('H','A','L',' ')}, /* Halam (Falam Chin) */
174/*{"cgg", HB_TAG('C','G','G',' ')},*/ /* Chiga */
175 {"ch", HB_TAG('C','H','A',' ')}, /* Chamorro */
176 {"chj", HB_TAG('C','C','H','N')}, /* Ojitlán Chinantec -> Chinantec */
177 {"chk", HB_TAG('C','H','K','0')}, /* Chuukese */
178/*{"cho", HB_TAG('C','H','O',' ')},*/ /* Choctaw */
179 {"chp", HB_TAG('C','H','P',' ')}, /* Chipewyan */
180 {"chp", HB_TAG('S','A','Y',' ')}, /* Chipewyan -> Sayisi */
181 {"chp", HB_TAG('A','T','H',' ')}, /* Chipewyan -> Athapaskan */
182 {"chq", HB_TAG('C','C','H','N')}, /* Quiotepec Chinantec -> Chinantec */
183/*{"chr", HB_TAG('C','H','R',' ')},*/ /* Cherokee */
184/*{"chy", HB_TAG('C','H','Y',' ')},*/ /* Cheyenne */
185 {"chz", HB_TAG('C','C','H','N')}, /* Ozumacín Chinantec -> Chinantec */
186 {"ciw", HB_TAG('O','J','B',' ')}, /* Chippewa -> Ojibway */
187/*{"cja", HB_TAG('C','J','A',' ')},*/ /* Western Cham */
188/*{"cjm", HB_TAG('C','J','M',' ')},*/ /* Eastern Cham */
189 {"cjy", HB_TAG('Z','H','S',' ')}, /* Jinyu Chinese -> Chinese Simplified */
190 {"cka", HB_TAG('Q','I','N',' ')}, /* Khumi Awa Chin (retired code) -> Chin */
191 {"ckb", HB_TAG('K','U','R',' ')}, /* Central Kurdish -> Kurdish */
192 {"ckt", HB_TAG('C','H','K',' ')}, /* Chukot -> Chukchi */
193 {"clc", HB_TAG('A','T','H',' ')}, /* Chilcotin -> Athapaskan */
194 {"cld", HB_TAG('S','Y','R',' ')}, /* Chaldean Neo-Aramaic -> Syriac */
195 {"cle", HB_TAG('C','C','H','N')}, /* Lealao Chinantec -> Chinantec */
196 {"cmn", HB_TAG('Z','H','S',' ')}, /* Mandarin Chinese -> Chinese Simplified */
197 {"cmr", HB_TAG('Q','I','N',' ')}, /* Mro-Khimi Chin -> Chin */
198 {"cnb", HB_TAG('Q','I','N',' ')}, /* Chinbon Chin -> Chin */
199 {"cnh", HB_TAG('Q','I','N',' ')}, /* Hakha Chin -> Chin */
200 {"cnk", HB_TAG('Q','I','N',' ')}, /* Khumi Chin -> Chin */
201 {"cnl", HB_TAG('C','C','H','N')}, /* Lalana Chinantec -> Chinantec */
202 {"cnp", HB_TAG('Z','H','S',' ')}, /* Northern Ping Chinese -> Chinese Simplified */
203 {"cnt", HB_TAG('C','C','H','N')}, /* Tepetotutla Chinantec -> Chinantec */
204 {"cnw", HB_TAG('Q','I','N',' ')}, /* Ngawn Chin -> Chin */
205 {"co", HB_TAG('C','O','S',' ')}, /* Corsican */
206 {"coa", HB_TAG('M','L','Y',' ')}, /* Cocos Islands Malay -> Malay */
207/*{"cop", HB_TAG('C','O','P',' ')},*/ /* Coptic */
208 {"coq", HB_TAG('A','T','H',' ')}, /* Coquille -> Athapaskan */
209 {"cpa", HB_TAG('C','C','H','N')}, /* Palantla Chinantec -> Chinantec */
210 {"cpe", HB_TAG('C','P','P',' ')}, /* English-based creoles and pidgins [family] -> Creoles */
211 {"cpf", HB_TAG('C','P','P',' ')}, /* French-based creoles and pidgins [family] -> Creoles */
212/*{"cpp", HB_TAG('C','P','P',' ')},*/ /* Portuguese-based creoles and pidgins [family] -> Creoles */
213 {"cpx", HB_TAG('Z','H','S',' ')}, /* Pu-Xian Chinese -> Chinese Simplified */
214 {"cqd", HB_TAG('H','M','N',' ')}, /* Chuanqiandian Cluster Miao -> Hmong */
215 {"cqu", HB_TAG('Q','U','H',' ')}, /* Chilean Quechua (retired code) -> Quechua (Bolivia) */
216 {"cr", HB_TAG('C','R','E',' ')}, /* Cree [macrolanguage] */
217 {"cr", HB_TAG('Y','C','R',' ')}, /* Cree [macrolanguage] -> Y-Cree */
218 {"crh", HB_TAG('C','R','T',' ')}, /* Crimean Tatar */
219 {"crj", HB_TAG('E','C','R',' ')}, /* Southern East Cree -> Eastern Cree */
220 {"crk", HB_TAG('W','C','R',' ')}, /* Plains Cree -> West-Cree */
221 {"crl", HB_TAG('E','C','R',' ')}, /* Northern East Cree -> Eastern Cree */
222 {"crm", HB_TAG('M','C','R',' ')}, /* Moose Cree */
223 {"crm", HB_TAG('L','C','R',' ')}, /* Moose Cree -> L-Cree */
224 {"crp", HB_TAG('C','P','P',' ')}, /* Creoles and pidgins [family] -> Creoles */
225 {"crx", HB_TAG('C','R','R',' ')}, /* Carrier */
226 {"crx", HB_TAG('A','T','H',' ')}, /* Carrier -> Athapaskan */
227 {"cs", HB_TAG('C','S','Y',' ')}, /* Czech */
228 {"csa", HB_TAG('C','C','H','N')}, /* Chiltepec Chinantec -> Chinantec */
229/*{"csb", HB_TAG('C','S','B',' ')},*/ /* Kashubian */
230 {"csh", HB_TAG('Q','I','N',' ')}, /* Asho Chin -> Chin */
231 {"cso", HB_TAG('C','C','H','N')}, /* Sochiapam Chinantec -> Chinantec */
232 {"csp", HB_TAG('Z','H','S',' ')}, /* Southern Ping Chinese -> Chinese Simplified */
233 {"csw", HB_TAG('N','C','R',' ')}, /* Swampy Cree -> N-Cree */
234 {"csw", HB_TAG('N','H','C',' ')}, /* Swampy Cree -> Norway House Cree */
235 {"csy", HB_TAG('Q','I','N',' ')}, /* Siyin Chin -> Chin */
236 {"ctc", HB_TAG('A','T','H',' ')}, /* Chetco -> Athapaskan */
237 {"ctd", HB_TAG('Q','I','N',' ')}, /* Tedim Chin -> Chin */
238 {"cte", HB_TAG('C','C','H','N')}, /* Tepinapa Chinantec -> Chinantec */
239/*{"ctg", HB_TAG('C','T','G',' ')},*/ /* Chittagonian */
240 {"ctl", HB_TAG('C','C','H','N')}, /* Tlacoatzintepec Chinantec -> Chinantec */
241 {"cts", HB_TAG('B','I','K',' ')}, /* Northern Catanduanes Bikol -> Bikol */
242 {"cu", HB_TAG('C','S','L',' ')}, /* Church Slavonic */
243 {"cuc", HB_TAG('C','C','H','N')}, /* Usila Chinantec -> Chinantec */
244/*{"cuk", HB_TAG('C','U','K',' ')},*/ /* San Blas Kuna */
245 {"cv", HB_TAG('C','H','U',' ')}, /* Chuvash */
246 {"cvn", HB_TAG('C','C','H','N')}, /* Valle Nacional Chinantec -> Chinantec */
247 {"cwd", HB_TAG('D','C','R',' ')}, /* Woods Cree */
248 {"cwd", HB_TAG('T','C','R',' ')}, /* Woods Cree -> TH-Cree */
249 {"cy", HB_TAG('W','E','L',' ')}, /* Welsh */
250 {"czh", HB_TAG('Z','H','S',' ')}, /* Huizhou Chinese -> Chinese Simplified */
251 {"czo", HB_TAG('Z','H','S',' ')}, /* Min Zhong Chinese -> Chinese Simplified */
252 {"czt", HB_TAG('Q','I','N',' ')}, /* Zotung Chin -> Chin */
253 {"da", HB_TAG('D','A','N',' ')}, /* Danish */
254 {"dao", HB_TAG('Q','I','N',' ')}, /* Daai Chin -> Chin */
255 {"dap", HB_TAG('N','I','S',' ')}, /* Nisi (India) (retired code) */
256/*{"dar", HB_TAG('D','A','R',' ')},*/ /* Dargwa */
257/*{"dax", HB_TAG('D','A','X',' ')},*/ /* Dayi */
258 {"de", HB_TAG('D','E','U',' ')}, /* German */
259 {"den", HB_TAG('S','L','A',' ')}, /* Slave (Athapascan) [macrolanguage] -> Slavey */
260 {"den", HB_TAG('A','T','H',' ')}, /* Slave (Athapascan) [macrolanguage] -> Athapaskan */
261/*{"dgo", HB_TAG('D','G','O',' ')},*/ /* Dogri */
262 {"dgr", HB_TAG('A','T','H',' ')}, /* Dogrib -> Athapaskan */
263 {"dhd", HB_TAG('M','A','W',' ')}, /* Dhundari -> Marwari */
264/*{"dhg", HB_TAG('D','H','G',' ')},*/ /* Dhangu */
265 {"dib", HB_TAG('D','N','K',' ')}, /* South Central Dinka -> Dinka */
266 {"dik", HB_TAG('D','N','K',' ')}, /* Southwestern Dinka -> Dinka */
267 {"din", HB_TAG('D','N','K',' ')}, /* Dinka [macrolanguage] */
268 {"dip", HB_TAG('D','N','K',' ')}, /* Northeastern Dinka -> Dinka */
269/*{"diq", HB_TAG('D','I','Q',' ')},*/ /* Dimli */
270 {"diw", HB_TAG('D','N','K',' ')}, /* Northwestern Dinka -> Dinka */
271 {"dje", HB_TAG('D','J','R',' ')}, /* Zarma */
272 {"djr", HB_TAG('D','J','R','0')}, /* Djambarrpuyngu */
273 {"dks", HB_TAG('D','N','K',' ')}, /* Southeastern Dinka -> Dinka */
274 {"dng", HB_TAG('D','U','N',' ')}, /* Dungan */
275/*{"dnj", HB_TAG('D','N','J',' ')},*/ /* Dan */
276 {"doi", HB_TAG('D','G','R',' ')}, /* Dogri [macrolanguage] */
277 {"drh", HB_TAG('M','N','G',' ')}, /* Darkhat (retired code) -> Mongolian */
278 {"drw", HB_TAG('D','R','I',' ')}, /* Darwazi (retired code) -> Dari */
279 {"dsb", HB_TAG('L','S','B',' ')}, /* Lower Sorbian */
280 {"dty", HB_TAG('N','E','P',' ')}, /* Dotyali -> Nepali */
281/*{"duj", HB_TAG('D','U','J',' ')},*/ /* Dhuwal (retired code) */
282 {"dup", HB_TAG('M','L','Y',' ')}, /* Duano -> Malay */
283 {"dv", HB_TAG('D','I','V',' ')}, /* Divehi (Dhivehi, Maldivian) */
284 {"dv", HB_TAG('D','H','V',' ')}, /* Divehi (Dhivehi, Maldivian) (deprecated) */
285 {"dwk", HB_TAG('K','U','I',' ')}, /* Dawik Kui -> Kui */
286 {"dwu", HB_TAG('D','U','J',' ')}, /* Dhuwal */
287 {"dwy", HB_TAG('D','U','J',' ')}, /* Dhuwaya -> Dhuwal */
288 {"dyu", HB_TAG('J','U','L',' ')}, /* Dyula -> Jula */
289 {"dz", HB_TAG('D','Z','N',' ')}, /* Dzongkha */
290 {"ee", HB_TAG('E','W','E',' ')}, /* Ewe */
291/*{"efi", HB_TAG('E','F','I',' ')},*/ /* Efik */
292 {"ekk", HB_TAG('E','T','I',' ')}, /* Standard Estonian -> Estonian */
293 {"el", HB_TAG('E','L','L',' ')}, /* Modern Greek (1453-) -> Greek */
294 {"emk", HB_TAG('E','M','K',' ')}, /* Eastern Maninkakan */
295 {"emk", HB_TAG('M','N','K',' ')}, /* Eastern Maninkakan -> Maninka */
296 {"en", HB_TAG('E','N','G',' ')}, /* English */
297 {"enb", HB_TAG('K','A','L',' ')}, /* Markweeta -> Kalenjin */
298 {"enf", HB_TAG('F','N','E',' ')}, /* Forest Enets -> Forest Nenets */
299 {"enh", HB_TAG('T','N','E',' ')}, /* Tundra Enets -> Tundra Nenets */
300 {"eo", HB_TAG('N','T','O',' ')}, /* Esperanto */
301 {"es", HB_TAG('E','S','P',' ')}, /* Spanish */
302 {"esg", HB_TAG('G','O','N',' ')}, /* Aheri Gondi -> Gondi */
303 {"esi", HB_TAG('I','P','K',' ')}, /* North Alaskan Inupiatun -> Inupiat */
304 {"esk", HB_TAG('I','P','K',' ')}, /* Northwest Alaska Inupiatun -> Inupiat */
305/*{"esu", HB_TAG('E','S','U',' ')},*/ /* Central Yupik */
306 {"et", HB_TAG('E','T','I',' ')}, /* Estonian [macrolanguage] */
307 {"eto", HB_TAG('B','T','I',' ')}, /* Eton (Cameroon) -> Beti */
308 {"eu", HB_TAG('E','U','Q',' ')}, /* Basque */
309 {"eve", HB_TAG('E','V','N',' ')}, /* Even */
310 {"evn", HB_TAG('E','V','K',' ')}, /* Evenki */
311 {"ewo", HB_TAG('B','T','I',' ')}, /* Ewondo -> Beti */
312 {"eyo", HB_TAG('K','A','L',' ')}, /* Keiyo -> Kalenjin */
313 {"fa", HB_TAG('F','A','R',' ')}, /* Persian [macrolanguage] */
314 {"fan", HB_TAG('F','A','N','0')}, /* Fang (Equatorial Guinea) */
315/*{"fat", HB_TAG('F','A','T',' ')},*/ /* Fanti */
316 {"fbl", HB_TAG('B','I','K',' ')}, /* West Albay Bikol -> Bikol */
317 {"ff", HB_TAG('F','U','L',' ')}, /* Fulah [macrolanguage] */
318 {"ffm", HB_TAG('F','U','L',' ')}, /* Maasina Fulfulde -> Fulah */
319 {"fi", HB_TAG('F','I','N',' ')}, /* Finnish */
320 {"fil", HB_TAG('P','I','L',' ')}, /* Filipino */
321 {"fj", HB_TAG('F','J','I',' ')}, /* Fijian */
322 {"flm", HB_TAG('H','A','L',' ')}, /* Halam (Falam Chin) (retired code) */
323 {"flm", HB_TAG('Q','I','N',' ')}, /* Falam Chin (retired code) -> Chin */
324/*{"fmp", HB_TAG('F','M','P',' ')},*/ /* Fe’fe’ */
325 {"fo", HB_TAG('F','O','S',' ')}, /* Faroese */
326/*{"fon", HB_TAG('F','O','N',' ')},*/ /* Fon */
327 {"fr", HB_TAG('F','R','A',' ')}, /* French */
328/*{"frc", HB_TAG('F','R','C',' ')},*/ /* Cajun French */
329/*{"frp", HB_TAG('F','R','P',' ')},*/ /* Arpitan */
330 {"fub", HB_TAG('F','U','L',' ')}, /* Adamawa Fulfulde -> Fulah */
331 {"fuc", HB_TAG('F','U','L',' ')}, /* Pulaar -> Fulah */
332 {"fue", HB_TAG('F','U','L',' ')}, /* Borgu Fulfulde -> Fulah */
333 {"fuf", HB_TAG('F','T','A',' ')}, /* Pular -> Futa */
334 {"fuh", HB_TAG('F','U','L',' ')}, /* Western Niger Fulfulde -> Fulah */
335 {"fui", HB_TAG('F','U','L',' ')}, /* Bagirmi Fulfulde -> Fulah */
336 {"fuq", HB_TAG('F','U','L',' ')}, /* Central-Eastern Niger Fulfulde -> Fulah */
337 {"fur", HB_TAG('F','R','L',' ')}, /* Friulian */
338/*{"fuv", HB_TAG('F','U','V',' ')},*/ /* Nigerian Fulfulde */
339 {"fy", HB_TAG('F','R','I',' ')}, /* Western Frisian -> Frisian */
340 {"ga", HB_TAG('I','R','I',' ')}, /* Irish */
341 {"gaa", HB_TAG('G','A','D',' ')}, /* Ga */
342/*{"gag", HB_TAG('G','A','G',' ')},*/ /* Gagauz */
343 {"gan", HB_TAG('Z','H','S',' ')}, /* Gan Chinese -> Chinese Simplified */
344 {"gax", HB_TAG('O','R','O',' ')}, /* Borana-Arsi-Guji Oromo -> Oromo */
345 {"gaz", HB_TAG('O','R','O',' ')}, /* West Central Oromo -> Oromo */
346 {"gbm", HB_TAG('G','A','W',' ')}, /* Garhwali */
347 {"gce", HB_TAG('A','T','H',' ')}, /* Galice -> Athapaskan */
348 {"gd", HB_TAG('G','A','E',' ')}, /* Scottish Gaelic (Gaelic) */
349 {"gda", HB_TAG('R','A','J',' ')}, /* Gade Lohar -> Rajasthani */
350/*{"gez", HB_TAG('G','E','Z',' ')},*/ /* Geez */
351 {"ggo", HB_TAG('G','O','N',' ')}, /* Southern Gondi (retired code) -> Gondi */
352/*{"gih", HB_TAG('G','I','H',' ')},*/ /* Githabul */
353 {"gil", HB_TAG('G','I','L','0')}, /* Kiribati (Gilbertese) */
354 {"gju", HB_TAG('R','A','J',' ')}, /* Gujari -> Rajasthani */
355/*{"gkp", HB_TAG('G','K','P',' ')},*/ /* Guinea Kpelle -> Kpelle (Guinea) */
356 {"gl", HB_TAG('G','A','L',' ')}, /* Galician */
357 {"gld", HB_TAG('N','A','N',' ')}, /* Nanai */
358/*{"glk", HB_TAG('G','L','K',' ')},*/ /* Gilaki */
359 {"gn", HB_TAG('G','U','A',' ')}, /* Guarani [macrolanguage] */
360/*{"gnn", HB_TAG('G','N','N',' ')},*/ /* Gumatj */
361 {"gno", HB_TAG('G','O','N',' ')}, /* Northern Gondi -> Gondi */
362 {"gnw", HB_TAG('G','U','A',' ')}, /* Western Bolivian Guaraní -> Guarani */
363/*{"gog", HB_TAG('G','O','G',' ')},*/ /* Gogo */
364 {"gom", HB_TAG('K','O','K',' ')}, /* Goan Konkani -> Konkani */
365/*{"gon", HB_TAG('G','O','N',' ')},*/ /* Gondi [macrolanguage] */
366 {"grt", HB_TAG('G','R','O',' ')}, /* Garo */
367 {"gru", HB_TAG('S','O','G',' ')}, /* Kistane -> Sodo Gurage */
368 {"gsw", HB_TAG('A','L','S',' ')}, /* Alsatian */
369 {"gu", HB_TAG('G','U','J',' ')}, /* Gujarati */
370/*{"guc", HB_TAG('G','U','C',' ')},*/ /* Wayuu */
371/*{"guf", HB_TAG('G','U','F',' ')},*/ /* Gupapuyngu */
372 {"gug", HB_TAG('G','U','A',' ')}, /* Paraguayan Guaraní -> Guarani */
373 {"gui", HB_TAG('G','U','A',' ')}, /* Eastern Bolivian Guaraní -> Guarani */
374 {"guk", HB_TAG('G','M','Z',' ')}, /* Gumuz */
375 {"guk", HB_TAG('G','U','K',' ')}, /* Gumuz (SIL fonts) */
376 {"gun", HB_TAG('G','U','A',' ')}, /* Mbyá Guaraní -> Guarani */
377/*{"guz", HB_TAG('G','U','Z',' ')},*/ /* Gusii */
378 {"gv", HB_TAG('M','N','X',' ')}, /* Manx */
379 {"gwi", HB_TAG('A','T','H',' ')}, /* Gwichʼin -> Athapaskan */
380 {"ha", HB_TAG('H','A','U',' ')}, /* Hausa */
381 {"haa", HB_TAG('A','T','H',' ')}, /* Han -> Athapaskan */
382 {"hae", HB_TAG('O','R','O',' ')}, /* Eastern Oromo -> Oromo */
383 {"hak", HB_TAG('Z','H','S',' ')}, /* Hakka Chinese -> Chinese Simplified */
384 {"har", HB_TAG('H','R','I',' ')}, /* Harari */
385/*{"haw", HB_TAG('H','A','W',' ')},*/ /* Hawaiian */
386/*{"hay", HB_TAG('H','A','Y',' ')},*/ /* Haya */
387/*{"haz", HB_TAG('H','A','Z',' ')},*/ /* Hazaragi */
388 {"he", HB_TAG('I','W','R',' ')}, /* Hebrew */
389 {"hea", HB_TAG('H','M','N',' ')}, /* Northern Qiandong Miao -> Hmong */
390 {"hi", HB_TAG('H','I','N',' ')}, /* Hindi */
391/*{"hil", HB_TAG('H','I','L',' ')},*/ /* Hiligaynon */
392 {"hji", HB_TAG('M','L','Y',' ')}, /* Haji -> Malay */
393 {"hlt", HB_TAG('Q','I','N',' ')}, /* Matu Chin -> Chin */
394 {"hma", HB_TAG('H','M','N',' ')}, /* Southern Mashan Hmong -> Hmong */
395 {"hmc", HB_TAG('H','M','N',' ')}, /* Central Huishui Hmong -> Hmong */
396 {"hmd", HB_TAG('H','M','N',' ')}, /* Large Flowery Miao -> Hmong */
397 {"hme", HB_TAG('H','M','N',' ')}, /* Eastern Huishui Hmong -> Hmong */
398 {"hmg", HB_TAG('H','M','N',' ')}, /* Southwestern Guiyang Hmong -> Hmong */
399 {"hmh", HB_TAG('H','M','N',' ')}, /* Southwestern Huishui Hmong -> Hmong */
400 {"hmi", HB_TAG('H','M','N',' ')}, /* Northern Huishui Hmong -> Hmong */
401 {"hmj", HB_TAG('H','M','N',' ')}, /* Ge -> Hmong */
402 {"hml", HB_TAG('H','M','N',' ')}, /* Luopohe Hmong -> Hmong */
403 {"hmm", HB_TAG('H','M','N',' ')}, /* Central Mashan Hmong -> Hmong */
404/*{"hmn", HB_TAG('H','M','N',' ')},*/ /* Hmong [macrolanguage] */
405 {"hmp", HB_TAG('H','M','N',' ')}, /* Northern Mashan Hmong -> Hmong */
406 {"hmq", HB_TAG('H','M','N',' ')}, /* Eastern Qiandong Miao -> Hmong */
407 {"hms", HB_TAG('H','M','N',' ')}, /* Southern Qiandong Miao -> Hmong */
408 {"hmw", HB_TAG('H','M','N',' ')}, /* Western Mashan Hmong -> Hmong */
409 {"hmy", HB_TAG('H','M','N',' ')}, /* Southern Guiyang Hmong -> Hmong */
410 {"hmz", HB_TAG('H','M','N',' ')}, /* Hmong Shua -> Hmong */
411/*{"hnd", HB_TAG('H','N','D',' ')},*/ /* Southern Hindko -> Hindko */
412 {"hne", HB_TAG('C','H','H',' ')}, /* Chhattisgarhi -> Chattisgarhi */
413 {"hnj", HB_TAG('H','M','N',' ')}, /* Hmong Njua -> Hmong */
414 {"hno", HB_TAG('H','N','D',' ')}, /* Northern Hindko -> Hindko */
415 {"ho", HB_TAG('H','M','O',' ')}, /* Hiri Motu */
416 {"hoc", HB_TAG('H','O',' ',' ')}, /* Ho */
417 {"hoi", HB_TAG('A','T','H',' ')}, /* Holikachuk -> Athapaskan */
418 {"hoj", HB_TAG('H','A','R',' ')}, /* Hadothi -> Harauti */
419 {"hr", HB_TAG('H','R','V',' ')}, /* Croatian */
420 {"hrm", HB_TAG('H','M','N',' ')}, /* Horned Miao -> Hmong */
421 {"hsb", HB_TAG('U','S','B',' ')}, /* Upper Sorbian */
422 {"hsn", HB_TAG('Z','H','S',' ')}, /* Xiang Chinese -> Chinese Simplified */
423 {"ht", HB_TAG('H','A','I',' ')}, /* Haitian (Haitian Creole) */
424 {"hu", HB_TAG('H','U','N',' ')}, /* Hungarian */
425 {"huj", HB_TAG('H','M','N',' ')}, /* Northern Guiyang Hmong -> Hmong */
426 {"hup", HB_TAG('A','T','H',' ')}, /* Hupa -> Athapaskan */
427 {"hy", HB_TAG('H','Y','E','0')}, /* Armenian -> Armenian East */
428 {"hy", HB_TAG('H','Y','E',' ')}, /* Armenian */
429 {"hyw", HB_TAG('H','Y','E',' ')}, /* Western Armenian -> Armenian */
430 {"hz", HB_TAG('H','E','R',' ')}, /* Herero */
431 {"ia", HB_TAG('I','N','A',' ')}, /* Interlingua (International Auxiliary Language Association) */
432/*{"iba", HB_TAG('I','B','A',' ')},*/ /* Iban */
433/*{"ibb", HB_TAG('I','B','B',' ')},*/ /* Ibibio */
434 {"id", HB_TAG('I','N','D',' ')}, /* Indonesian */
435 {"ida", HB_TAG('L','U','H',' ')}, /* Idakho-Isukha-Tiriki -> Luyia */
436 {"ie", HB_TAG('I','L','E',' ')}, /* Interlingue */
437 {"ig", HB_TAG('I','B','O',' ')}, /* Igbo */
438 {"igb", HB_TAG('E','B','I',' ')}, /* Ebira */
439 {"ii", HB_TAG('Y','I','M',' ')}, /* Sichuan Yi -> Yi Modern */
440 {"ijc", HB_TAG('I','J','O',' ')}, /* Izon -> Ijo */
441/*{"ijo", HB_TAG('I','J','O',' ')},*/ /* Ijo [family] */
442 {"ik", HB_TAG('I','P','K',' ')}, /* Inupiaq [macrolanguage] -> Inupiat */
443 {"ike", HB_TAG('I','N','U',' ')}, /* Eastern Canadian Inuktitut -> Inuktitut */
444 {"ikt", HB_TAG('I','N','U',' ')}, /* Inuinnaqtun -> Inuktitut */
445/*{"ilo", HB_TAG('I','L','O',' ')},*/ /* Iloko -> Ilokano */
446 {"in", HB_TAG('I','N','D',' ')}, /* Indonesian (retired code) */
447 {"ing", HB_TAG('A','T','H',' ')}, /* Degexit'an -> Athapaskan */
448 {"inh", HB_TAG('I','N','G',' ')}, /* Ingush */
449 {"io", HB_TAG('I','D','O',' ')}, /* Ido */
450 {"is", HB_TAG('I','S','L',' ')}, /* Icelandic */
451 {"it", HB_TAG('I','T','A',' ')}, /* Italian */
452 {"iu", HB_TAG('I','N','U',' ')}, /* Inuktitut [macrolanguage] */
453 {"iw", HB_TAG('I','W','R',' ')}, /* Hebrew (retired code) */
454 {"ja", HB_TAG('J','A','N',' ')}, /* Japanese */
455 {"jak", HB_TAG('M','L','Y',' ')}, /* Jakun -> Malay */
456/*{"jam", HB_TAG('J','A','M',' ')},*/ /* Jamaican Creole English -> Jamaican Creole */
457 {"jax", HB_TAG('M','L','Y',' ')}, /* Jambi Malay -> Malay */
458/*{"jbo", HB_TAG('J','B','O',' ')},*/ /* Lojban */
459/*{"jct", HB_TAG('J','C','T',' ')},*/ /* Krymchak */
460 {"ji", HB_TAG('J','I','I',' ')}, /* Yiddish (retired code) */
461 {"jv", HB_TAG('J','A','V',' ')}, /* Javanese */
462 {"jw", HB_TAG('J','A','V',' ')}, /* Javanese (retired code) */
463 {"ka", HB_TAG('K','A','T',' ')}, /* Georgian */
464 {"kaa", HB_TAG('K','R','K',' ')}, /* Karakalpak */
465 {"kab", HB_TAG('K','A','B','0')}, /* Kabyle */
466 {"kam", HB_TAG('K','M','B',' ')}, /* Kamba (Kenya) */
467 {"kar", HB_TAG('K','R','N',' ')}, /* Karen [family] */
468 {"kbd", HB_TAG('K','A','B',' ')}, /* Kabardian */
469 {"kby", HB_TAG('K','N','R',' ')}, /* Manga Kanuri -> Kanuri */
470 {"kca", HB_TAG('K','H','K',' ')}, /* Khanty -> Khanty-Kazim */
471 {"kca", HB_TAG('K','H','S',' ')}, /* Khanty -> Khanty-Shurishkar */
472 {"kca", HB_TAG('K','H','V',' ')}, /* Khanty -> Khanty-Vakhi */
473/*{"kde", HB_TAG('K','D','E',' ')},*/ /* Makonde */
474 {"kdr", HB_TAG('K','R','M',' ')}, /* Karaim */
475 {"kdt", HB_TAG('K','U','Y',' ')}, /* Kuy */
476/*{"kea", HB_TAG('K','E','A',' ')},*/ /* Kabuverdianu (Crioulo) */
477/*{"kek", HB_TAG('K','E','K',' ')},*/ /* Kekchi */
478 {"kex", HB_TAG('K','K','N',' ')}, /* Kukna -> Kokni */
479 {"kfa", HB_TAG('K','O','D',' ')}, /* Kodava -> Kodagu */
480 {"kfr", HB_TAG('K','A','C',' ')}, /* Kachhi -> Kachchi */
481 {"kfx", HB_TAG('K','U','L',' ')}, /* Kullu Pahari -> Kulvi */
482 {"kfy", HB_TAG('K','M','N',' ')}, /* Kumaoni */
483 {"kg", HB_TAG('K','O','N','0')}, /* Kongo [macrolanguage] */
484 {"kha", HB_TAG('K','S','I',' ')}, /* Khasi */
485 {"khb", HB_TAG('X','B','D',' ')}, /* Lü */
486 {"khk", HB_TAG('M','N','G',' ')}, /* Halh Mongolian -> Mongolian */
487 {"kht", HB_TAG('K','H','N',' ')}, /* Khamti -> Khamti Shan (Microsoft fonts) */
488 {"kht", HB_TAG('K','H','T',' ')}, /* Khamti -> Khamti Shan (OpenType spec and SIL fonts) */
489/*{"khw", HB_TAG('K','H','W',' ')},*/ /* Khowar */
490 {"ki", HB_TAG('K','I','K',' ')}, /* Kikuyu (Gikuyu) */
491/*{"kiu", HB_TAG('K','I','U',' ')},*/ /* Kirmanjki */
492 {"kj", HB_TAG('K','U','A',' ')}, /* Kuanyama */
493/*{"kjd", HB_TAG('K','J','D',' ')},*/ /* Southern Kiwai */
494 {"kjh", HB_TAG('K','H','A',' ')}, /* Khakas -> Khakass */
495/*{"kjp", HB_TAG('K','J','P',' ')},*/ /* Pwo Eastern Karen -> Eastern Pwo Karen */
496/*{"kjz", HB_TAG('K','J','Z',' ')},*/ /* Bumthangkha */
497 {"kk", HB_TAG('K','A','Z',' ')}, /* Kazakh */
498 {"kkz", HB_TAG('A','T','H',' ')}, /* Kaska -> Athapaskan */
499 {"kl", HB_TAG('G','R','N',' ')}, /* Greenlandic */
500 {"kln", HB_TAG('K','A','L',' ')}, /* Kalenjin [macrolanguage] */
501 {"km", HB_TAG('K','H','M',' ')}, /* Khmer */
502 {"kmb", HB_TAG('M','B','N',' ')}, /* Kimbundu -> Mbundu */
503 {"kmr", HB_TAG('K','U','R',' ')}, /* Northern Kurdish -> Kurdish */
504 {"kmw", HB_TAG('K','M','O',' ')}, /* Komo (Democratic Republic of Congo) */
505/*{"kmz", HB_TAG('K','M','Z',' ')},*/ /* Khorasani Turkish -> Khorasani Turkic */
506 {"kn", HB_TAG('K','A','N',' ')}, /* Kannada */
507 {"knc", HB_TAG('K','N','R',' ')}, /* Central Kanuri -> Kanuri */
508 {"kng", HB_TAG('K','O','N','0')}, /* Koongo -> Kongo */
509 {"knn", HB_TAG('K','O','K',' ')}, /* Konkani */
510 {"ko", HB_TAG('K','O','R',' ')}, /* Korean */
511 {"koi", HB_TAG('K','O','P',' ')}, /* Komi-Permyak */
512/*{"kok", HB_TAG('K','O','K',' ')},*/ /* Konkani [macrolanguage] */
513/*{"kos", HB_TAG('K','O','S',' ')},*/ /* Kosraean */
514 {"koy", HB_TAG('A','T','H',' ')}, /* Koyukon -> Athapaskan */
515 {"kpe", HB_TAG('K','P','L',' ')}, /* Kpelle [macrolanguage] */
516 {"kpv", HB_TAG('K','O','Z',' ')}, /* Komi-Zyrian */
517 {"kpy", HB_TAG('K','Y','K',' ')}, /* Koryak */
518 {"kqs", HB_TAG('K','I','S',' ')}, /* Northern Kissi -> Kisii */
519 {"kqy", HB_TAG('K','R','T',' ')}, /* Koorete */
520 {"kr", HB_TAG('K','N','R',' ')}, /* Kanuri [macrolanguage] */
521 {"krc", HB_TAG('K','A','R',' ')}, /* Karachay-Balkar -> Karachay */
522 {"krc", HB_TAG('B','A','L',' ')}, /* Karachay-Balkar -> Balkar */
523/*{"kri", HB_TAG('K','R','I',' ')},*/ /* Krio */
524/*{"krl", HB_TAG('K','R','L',' ')},*/ /* Karelian */
525 {"krt", HB_TAG('K','N','R',' ')}, /* Tumari Kanuri -> Kanuri */
526 {"kru", HB_TAG('K','U','U',' ')}, /* Kurukh */
527 {"ks", HB_TAG('K','S','H',' ')}, /* Kashmiri */
528 {"ksh", HB_TAG('K','S','H','0')}, /* Kölsch -> Ripuarian */
529 {"kss", HB_TAG('K','I','S',' ')}, /* Southern Kisi -> Kisii */
530/*{"ksw", HB_TAG('K','S','W',' ')},*/ /* S’gaw Karen */
531 {"ktb", HB_TAG('K','E','B',' ')}, /* Kambaata -> Kebena */
532 {"ktu", HB_TAG('K','O','N',' ')}, /* Kituba (Democratic Republic of Congo) -> Kikongo */
533 {"ktw", HB_TAG('A','T','H',' ')}, /* Kato -> Athapaskan */
534 {"ku", HB_TAG('K','U','R',' ')}, /* Kurdish [macrolanguage] */
535/*{"kum", HB_TAG('K','U','M',' ')},*/ /* Kumyk */
536 {"kuu", HB_TAG('A','T','H',' ')}, /* Upper Kuskokwim -> Athapaskan */
537 {"kv", HB_TAG('K','O','M',' ')}, /* Komi [macrolanguage] */
538 {"kvb", HB_TAG('M','L','Y',' ')}, /* Kubu -> Malay */
539 {"kvr", HB_TAG('M','L','Y',' ')}, /* Kerinci -> Malay */
540 {"kw", HB_TAG('C','O','R',' ')}, /* Cornish */
541 {"kwy", HB_TAG('K','O','N','0')}, /* San Salvador Kongo -> Kongo */
542 {"kxc", HB_TAG('K','M','S',' ')}, /* Konso -> Komso */
543 {"kxd", HB_TAG('M','L','Y',' ')}, /* Brunei -> Malay */
544 {"kxl", HB_TAG('K','U','U',' ')}, /* Nepali Kurux (retired code) -> Kurukh */
545 {"kxu", HB_TAG('K','U','I',' ')}, /* Kui (India) (retired code) */
546 {"ky", HB_TAG('K','I','R',' ')}, /* Kirghiz (Kyrgyz) */
547/*{"kyu", HB_TAG('K','Y','U',' ')},*/ /* Western Kayah */
548 {"la", HB_TAG('L','A','T',' ')}, /* Latin */
549 {"lad", HB_TAG('J','U','D',' ')}, /* Ladino */
550 {"lb", HB_TAG('L','T','Z',' ')}, /* Luxembourgish */
551 {"lbe", HB_TAG('L','A','K',' ')}, /* Lak */
552 {"lbj", HB_TAG('L','D','K',' ')}, /* Ladakhi */
553 {"lbl", HB_TAG('B','I','K',' ')}, /* Libon Bikol -> Bikol */
554 {"lce", HB_TAG('M','L','Y',' ')}, /* Loncong -> Malay */
555 {"lcf", HB_TAG('M','L','Y',' ')}, /* Lubu -> Malay */
556 {"ldi", HB_TAG('K','O','N','0')}, /* Laari -> Kongo */
557/*{"lez", HB_TAG('L','E','Z',' ')},*/ /* Lezghian -> Lezgi */
558 {"lg", HB_TAG('L','U','G',' ')}, /* Ganda */
559 {"li", HB_TAG('L','I','M',' ')}, /* Limburgish */
560 {"lif", HB_TAG('L','M','B',' ')}, /* Limbu */
561/*{"lij", HB_TAG('L','I','J',' ')},*/ /* Ligurian */
562/*{"lis", HB_TAG('L','I','S',' ')},*/ /* Lisu */
563 {"liw", HB_TAG('M','L','Y',' ')}, /* Col -> Malay */
564/*{"ljp", HB_TAG('L','J','P',' ')},*/ /* Lampung Api -> Lampung */
565 {"lkb", HB_TAG('L','U','H',' ')}, /* Kabras -> Luyia */
566/*{"lki", HB_TAG('L','K','I',' ')},*/ /* Laki */
567 {"lko", HB_TAG('L','U','H',' ')}, /* Khayo -> Luyia */
568 {"lks", HB_TAG('L','U','H',' ')}, /* Kisa -> Luyia */
569 {"lld", HB_TAG('L','A','D',' ')}, /* Ladin */
570 {"lmn", HB_TAG('L','A','M',' ')}, /* Lambadi -> Lambani */
571/*{"lmo", HB_TAG('L','M','O',' ')},*/ /* Lombard */
572 {"ln", HB_TAG('L','I','N',' ')}, /* Lingala */
573 {"lo", HB_TAG('L','A','O',' ')}, /* Lao */
574/*{"lom", HB_TAG('L','O','M',' ')},*/ /* Loma (Liberia) */
575/*{"lrc", HB_TAG('L','R','C',' ')},*/ /* Northern Luri -> Luri */
576 {"lri", HB_TAG('L','U','H',' ')}, /* Marachi -> Luyia */
577 {"lrm", HB_TAG('L','U','H',' ')}, /* Marama -> Luyia */
578 {"lsm", HB_TAG('L','U','H',' ')}, /* Saamia -> Luyia */
579 {"lt", HB_TAG('L','T','H',' ')}, /* Lithuanian */
580 {"ltg", HB_TAG('L','V','I',' ')}, /* Latgalian -> Latvian */
581 {"lto", HB_TAG('L','U','H',' ')}, /* Tsotso -> Luyia */
582 {"lts", HB_TAG('L','U','H',' ')}, /* Tachoni -> Luyia */
583 {"lu", HB_TAG('L','U','B',' ')}, /* Luba-Katanga */
584/*{"lua", HB_TAG('L','U','A',' ')},*/ /* Luba-Lulua */
585/*{"luo", HB_TAG('L','U','O',' ')},*/ /* Luo (Kenya and Tanzania) */
586 {"lus", HB_TAG('M','I','Z',' ')}, /* Lushai -> Mizo */
587 {"luy", HB_TAG('L','U','H',' ')}, /* Luyia [macrolanguage] */
588 {"luz", HB_TAG('L','R','C',' ')}, /* Southern Luri -> Luri */
589 {"lv", HB_TAG('L','V','I',' ')}, /* Latvian [macrolanguage] */
590 {"lvs", HB_TAG('L','V','I',' ')}, /* Standard Latvian -> Latvian */
591 {"lwg", HB_TAG('L','U','H',' ')}, /* Wanga -> Luyia */
592 {"lzh", HB_TAG('Z','H','T',' ')}, /* Literary Chinese -> Chinese Traditional */
593 {"lzz", HB_TAG('L','A','Z',' ')}, /* Laz */
594/*{"mad", HB_TAG('M','A','D',' ')},*/ /* Madurese -> Madura */
595/*{"mag", HB_TAG('M','A','G',' ')},*/ /* Magahi */
596 {"mai", HB_TAG('M','T','H',' ')}, /* Maithili */
597 {"mak", HB_TAG('M','K','R',' ')}, /* Makasar */
598/*{"mam", HB_TAG('M','A','M',' ')},*/ /* Mam */
599 {"man", HB_TAG('M','N','K',' ')}, /* Mandingo [macrolanguage] -> Maninka */
600 {"max", HB_TAG('M','L','Y',' ')}, /* North Moluccan Malay -> Malay */
601/*{"mbo", HB_TAG('M','B','O',' ')},*/ /* Mbo (Cameroon) */
602 {"mct", HB_TAG('B','T','I',' ')}, /* Mengisa -> Beti */
603 {"mdf", HB_TAG('M','O','K',' ')}, /* Moksha */
604/*{"mdr", HB_TAG('M','D','R',' ')},*/ /* Mandar */
605 {"mdy", HB_TAG('M','L','E',' ')}, /* Male (Ethiopia) */
606 {"men", HB_TAG('M','D','E',' ')}, /* Mende (Sierra Leone) */
607 {"meo", HB_TAG('M','L','Y',' ')}, /* Kedah Malay -> Malay */
608/*{"mer", HB_TAG('M','E','R',' ')},*/ /* Meru */
609/*{"mfa", HB_TAG('M','F','A',' ')},*/ /* Pattani Malay */
610 {"mfb", HB_TAG('M','L','Y',' ')}, /* Bangka -> Malay */
611/*{"mfe", HB_TAG('M','F','E',' ')},*/ /* Morisyen */
612 {"mg", HB_TAG('M','L','G',' ')}, /* Malagasy [macrolanguage] */
613 {"mh", HB_TAG('M','A','H',' ')}, /* Marshallese */
614 {"mhr", HB_TAG('L','M','A',' ')}, /* Eastern Mari -> Low Mari */
615 {"mhv", HB_TAG('A','R','K',' ')}, /* Arakanese (retired code) -> Rakhine */
616 {"mi", HB_TAG('M','R','I',' ')}, /* Maori */
617/*{"min", HB_TAG('M','I','N',' ')},*/ /* Minangkabau */
618 {"mk", HB_TAG('M','K','D',' ')}, /* Macedonian */
619 {"mku", HB_TAG('M','N','K',' ')}, /* Konyanka Maninka -> Maninka */
620/*{"mkw", HB_TAG('M','K','W',' ')},*/ /* Kituba (Congo) */
621 {"ml", HB_TAG('M','A','L',' ')}, /* Malayalam -> Malayalam Traditional */
622 {"ml", HB_TAG('M','L','R',' ')}, /* Malayalam -> Malayalam Reformed */
623 {"mlq", HB_TAG('M','L','N',' ')}, /* Western Maninkakan -> Malinke */
624 {"mlq", HB_TAG('M','N','K',' ')}, /* Western Maninkakan -> Maninka */
625 {"mmr", HB_TAG('H','M','N',' ')}, /* Western Xiangxi Miao -> Hmong */
626 {"mn", HB_TAG('M','N','G',' ')}, /* Mongolian [macrolanguage] */
627 {"mnc", HB_TAG('M','C','H',' ')}, /* Manchu */
628/*{"mni", HB_TAG('M','N','I',' ')},*/ /* Manipuri */
629 {"mnk", HB_TAG('M','N','D',' ')}, /* Mandinka */
630 {"mnk", HB_TAG('M','N','K',' ')}, /* Mandinka -> Maninka */
631 {"mnp", HB_TAG('Z','H','S',' ')}, /* Min Bei Chinese -> Chinese Simplified */
632 {"mns", HB_TAG('M','A','N',' ')}, /* Mansi */
633 {"mnw", HB_TAG('M','O','N',' ')}, /* Mon */
634 {"mo", HB_TAG('M','O','L',' ')}, /* Moldavian (retired code) */
635/*{"moh", HB_TAG('M','O','H',' ')},*/ /* Mohawk */
636/*{"mos", HB_TAG('M','O','S',' ')},*/ /* Mossi */
637 {"mpe", HB_TAG('M','A','J',' ')}, /* Majang */
638 {"mqg", HB_TAG('M','L','Y',' ')}, /* Kota Bangun Kutai Malay -> Malay */
639 {"mr", HB_TAG('M','A','R',' ')}, /* Marathi */
640 {"mrh", HB_TAG('Q','I','N',' ')}, /* Mara Chin -> Chin */
641 {"mrj", HB_TAG('H','M','A',' ')}, /* Western Mari -> High Mari */
642 {"ms", HB_TAG('M','L','Y',' ')}, /* Malay [macrolanguage] */
643 {"msc", HB_TAG('M','N','K',' ')}, /* Sankaran Maninka -> Maninka */
644 {"msh", HB_TAG('M','L','G',' ')}, /* Masikoro Malagasy -> Malagasy */
645 {"msi", HB_TAG('M','L','Y',' ')}, /* Sabah Malay -> Malay */
646 {"mt", HB_TAG('M','T','S',' ')}, /* Maltese */
647 {"mtr", HB_TAG('M','A','W',' ')}, /* Mewari -> Marwari */
648 {"mui", HB_TAG('M','L','Y',' ')}, /* Musi -> Malay */
649 {"mup", HB_TAG('R','A','J',' ')}, /* Malvi -> Rajasthani */
650 {"muq", HB_TAG('H','M','N',' ')}, /* Eastern Xiangxi Miao -> Hmong */
651/*{"mus", HB_TAG('M','U','S',' ')},*/ /* Creek -> Muscogee */
652 {"mvb", HB_TAG('A','T','H',' ')}, /* Mattole -> Athapaskan */
653 {"mve", HB_TAG('M','A','W',' ')}, /* Marwari (Pakistan) */
654 {"mvf", HB_TAG('M','N','G',' ')}, /* Peripheral Mongolian -> Mongolian */
655 {"mwk", HB_TAG('M','N','K',' ')}, /* Kita Maninkakan -> Maninka */
656/*{"mwl", HB_TAG('M','W','L',' ')},*/ /* Mirandese */
657 {"mwr", HB_TAG('M','A','W',' ')}, /* Marwari [macrolanguage] */
658/*{"mww", HB_TAG('M','W','W',' ')},*/ /* Hmong Daw */
659 {"my", HB_TAG('B','R','M',' ')}, /* Burmese */
660 {"mym", HB_TAG('M','E','N',' ')}, /* Me’en */
661/*{"myn", HB_TAG('M','Y','N',' ')},*/ /* Mayan [family] */
662 {"myq", HB_TAG('M','N','K',' ')}, /* Forest Maninka (retired code) -> Maninka */
663 {"myv", HB_TAG('E','R','Z',' ')}, /* Erzya */
664/*{"mzn", HB_TAG('M','Z','N',' ')},*/ /* Mazanderani */
665 {"na", HB_TAG('N','A','U',' ')}, /* Nauru -> Nauruan */
666/*{"nag", HB_TAG('N','A','G',' ')},*/ /* Naga Pidgin -> Naga-Assamese */
667/*{"nah", HB_TAG('N','A','H',' ')},*/ /* Nahuatl [family] */
668 {"nan", HB_TAG('Z','H','S',' ')}, /* Min Nan Chinese -> Chinese Simplified */
669/*{"nap", HB_TAG('N','A','P',' ')},*/ /* Neapolitan */
670 {"nb", HB_TAG('N','O','R',' ')}, /* Norwegian Bokmål -> Norwegian */
671 {"nd", HB_TAG('N','D','B',' ')}, /* North Ndebele -> Ndebele */
672/*{"ndc", HB_TAG('N','D','C',' ')},*/ /* Ndau */
673/*{"nds", HB_TAG('N','D','S',' ')},*/ /* Low Saxon */
674 {"ne", HB_TAG('N','E','P',' ')}, /* Nepali [macrolanguage] */
675/*{"new", HB_TAG('N','E','W',' ')},*/ /* Newari */
676 {"ng", HB_TAG('N','D','G',' ')}, /* Ndonga */
677/*{"nga", HB_TAG('N','G','A',' ')},*/ /* Ngbaka */
678 {"ngl", HB_TAG('L','M','W',' ')}, /* Lomwe */
679 {"ngo", HB_TAG('S','X','T',' ')}, /* Ngoni -> Sutu */
680 {"nhd", HB_TAG('G','U','A',' ')}, /* Chiripá -> Guarani */
681 {"niq", HB_TAG('K','A','L',' ')}, /* Nandi -> Kalenjin */
682/*{"niu", HB_TAG('N','I','U',' ')},*/ /* Niuean */
683 {"niv", HB_TAG('G','I','L',' ')}, /* Gilyak */
684 {"njz", HB_TAG('N','I','S',' ')}, /* Nyishi -> Nisi */
685 {"nl", HB_TAG('N','L','D',' ')}, /* Dutch */
686 {"nle", HB_TAG('L','U','H',' ')}, /* East Nyala -> Luyia */
687 {"nn", HB_TAG('N','Y','N',' ')}, /* Norwegian Nynorsk (Nynorsk, Norwegian) */
688 {"no", HB_TAG('N','O','R',' ')}, /* Norwegian [macrolanguage] */
689 {"nod", HB_TAG('N','T','A',' ')}, /* Northern Thai -> Northern Tai */
690/*{"noe", HB_TAG('N','O','E',' ')},*/ /* Nimadi */
691/*{"nog", HB_TAG('N','O','G',' ')},*/ /* Nogai */
692/*{"nov", HB_TAG('N','O','V',' ')},*/ /* Novial */
693 {"npi", HB_TAG('N','E','P',' ')}, /* Nepali */
694 {"nqo", HB_TAG('N','K','O',' ')}, /* N’Ko */
695 {"nr", HB_TAG('N','D','B',' ')}, /* South Ndebele -> Ndebele */
696 {"nsk", HB_TAG('N','A','S',' ')}, /* Naskapi */
697/*{"nso", HB_TAG('N','S','O',' ')},*/ /* Pedi -> Sotho, Northern */
698 {"nv", HB_TAG('N','A','V',' ')}, /* Navajo */
699 {"nv", HB_TAG('A','T','H',' ')}, /* Navajo -> Athapaskan */
700 {"ny", HB_TAG('C','H','I',' ')}, /* Chichewa (Chewa, Nyanja) */
701 {"nyd", HB_TAG('L','U','H',' ')}, /* Nyore -> Luyia */
702/*{"nym", HB_TAG('N','Y','M',' ')},*/ /* Nyamwezi */
703 {"nyn", HB_TAG('N','K','L',' ')}, /* Nyankole */
704/*{"nza", HB_TAG('N','Z','A',' ')},*/ /* Tigon Mbembe -> Mbembe Tigon */
705 {"oc", HB_TAG('O','C','I',' ')}, /* Occitan (post 1500) */
706 {"oj", HB_TAG('O','J','B',' ')}, /* Ojibwa [macrolanguage] -> Ojibway */
707/*{"ojb", HB_TAG('O','J','B',' ')},*/ /* Northwestern Ojibwa -> Ojibway */
708 {"ojc", HB_TAG('O','J','B',' ')}, /* Central Ojibwa -> Ojibway */
709 {"ojg", HB_TAG('O','J','B',' ')}, /* Eastern Ojibwa -> Ojibway */
710 {"ojs", HB_TAG('O','C','R',' ')}, /* Severn Ojibwa -> Oji-Cree */
711 {"ojw", HB_TAG('O','J','B',' ')}, /* Western Ojibwa -> Ojibway */
712 {"oki", HB_TAG('K','A','L',' ')}, /* Okiek -> Kalenjin */
713 {"okm", HB_TAG('K','O','H',' ')}, /* Middle Korean (10th-16th cent.) -> Korean Old Hangul */
714 {"om", HB_TAG('O','R','O',' ')}, /* Oromo [macrolanguage] */
715 {"or", HB_TAG('O','R','I',' ')}, /* Odia (formerly Oriya) [macrolanguage] */
716 {"orc", HB_TAG('O','R','O',' ')}, /* Orma -> Oromo */
717 {"orn", HB_TAG('M','L','Y',' ')}, /* Orang Kanaq -> Malay */
718 {"ors", HB_TAG('M','L','Y',' ')}, /* Orang Seletar -> Malay */
719 {"ory", HB_TAG('O','R','I',' ')}, /* Odia (formerly Oriya) */
720 {"os", HB_TAG('O','S','S',' ')}, /* Ossetian */
721 {"otw", HB_TAG('O','J','B',' ')}, /* Ottawa -> Ojibway */
722 {"pa", HB_TAG('P','A','N',' ')}, /* Punjabi */
723/*{"pag", HB_TAG('P','A','G',' ')},*/ /* Pangasinan */
724/*{"pam", HB_TAG('P','A','M',' ')},*/ /* Pampanga -> Pampangan */
725 {"pap", HB_TAG('P','A','P','0')}, /* Papiamento -> Papiamentu */
726/*{"pau", HB_TAG('P','A','U',' ')},*/ /* Palauan */
727 {"pbt", HB_TAG('P','A','S',' ')}, /* Southern Pashto -> Pashto */
728 {"pbu", HB_TAG('P','A','S',' ')}, /* Northern Pashto -> Pashto */
729/*{"pcc", HB_TAG('P','C','C',' ')},*/ /* Bouyei */
730/*{"pcd", HB_TAG('P','C','D',' ')},*/ /* Picard */
731 {"pce", HB_TAG('P','L','G',' ')}, /* Ruching Palaung -> Palaung */
732 {"pck", HB_TAG('Q','I','N',' ')}, /* Paite Chin -> Chin */
733/*{"pdc", HB_TAG('P','D','C',' ')},*/ /* Pennsylvania German */
734 {"pel", HB_TAG('M','L','Y',' ')}, /* Pekal -> Malay */
735 {"pes", HB_TAG('F','A','R',' ')}, /* Iranian Persian -> Persian */
736 {"pga", HB_TAG('A','R','A',' ')}, /* Sudanese Creole Arabic -> Arabic */
737/*{"phk", HB_TAG('P','H','K',' ')},*/ /* Phake */
738 {"pi", HB_TAG('P','A','L',' ')}, /* Pali */
739/*{"pih", HB_TAG('P','I','H',' ')},*/ /* Pitcairn-Norfolk -> Norfolk */
740 {"pko", HB_TAG('K','A','L',' ')}, /* Pökoot -> Kalenjin */
741 {"pl", HB_TAG('P','L','K',' ')}, /* Polish */
742 {"pll", HB_TAG('P','L','G',' ')}, /* Shwe Palaung -> Palaung */
743 {"plp", HB_TAG('P','A','P',' ')}, /* Palpa (retired code) */
744 {"plt", HB_TAG('M','L','G',' ')}, /* Plateau Malagasy -> Malagasy */
745/*{"pms", HB_TAG('P','M','S',' ')},*/ /* Piemontese */
746/*{"pnb", HB_TAG('P','N','B',' ')},*/ /* Western Panjabi */
747/*{"poh", HB_TAG('P','O','H',' ')},*/ /* Poqomchi' -> Pocomchi */
748/*{"pon", HB_TAG('P','O','N',' ')},*/ /* Pohnpeian */
749 {"ppa", HB_TAG('B','A','G',' ')}, /* Pao (retired code) -> Baghelkhandi */
750/*{"pro", HB_TAG('P','R','O',' ')},*/ /* Old Provençal (to 1500) -> Provençal / Old Provençal */
751 {"prs", HB_TAG('D','R','I',' ')}, /* Dari */
752 {"ps", HB_TAG('P','A','S',' ')}, /* Pashto [macrolanguage] */
753 {"pse", HB_TAG('M','L','Y',' ')}, /* Central Malay -> Malay */
754 {"pst", HB_TAG('P','A','S',' ')}, /* Central Pashto -> Pashto */
755 {"pt", HB_TAG('P','T','G',' ')}, /* Portuguese */
756/*{"pwo", HB_TAG('P','W','O',' ')},*/ /* Pwo Western Karen -> Western Pwo Karen */
757 {"qu", HB_TAG('Q','U','Z',' ')}, /* Quechua [macrolanguage] */
758 {"qub", HB_TAG('Q','W','H',' ')}, /* Huallaga Huánuco Quechua -> Quechua (Peru) */
759/*{"quc", HB_TAG('Q','U','C',' ')},*/ /* K’iche’ */
760 {"qud", HB_TAG('Q','V','I',' ')}, /* Calderón Highland Quichua -> Quechua (Ecuador) */
761 {"quf", HB_TAG('Q','U','Z',' ')}, /* Lambayeque Quechua -> Quechua */
762 {"qug", HB_TAG('Q','V','I',' ')}, /* Chimborazo Highland Quichua -> Quechua (Ecuador) */
763/*{"quh", HB_TAG('Q','U','H',' ')},*/ /* South Bolivian Quechua -> Quechua (Bolivia) */
764 {"quk", HB_TAG('Q','U','Z',' ')}, /* Chachapoyas Quechua -> Quechua */
765 {"qul", HB_TAG('Q','U','Z',' ')}, /* North Bolivian Quechua -> Quechua */
766 {"qup", HB_TAG('Q','V','I',' ')}, /* Southern Pastaza Quechua -> Quechua (Ecuador) */
767 {"qur", HB_TAG('Q','W','H',' ')}, /* Yanahuanca Pasco Quechua -> Quechua (Peru) */
768 {"qus", HB_TAG('Q','U','H',' ')}, /* Santiago del Estero Quichua -> Quechua (Bolivia) */
769 {"quw", HB_TAG('Q','V','I',' ')}, /* Tena Lowland Quichua -> Quechua (Ecuador) */
770 {"qux", HB_TAG('Q','W','H',' ')}, /* Yauyos Quechua -> Quechua (Peru) */
771 {"quy", HB_TAG('Q','U','Z',' ')}, /* Ayacucho Quechua -> Quechua */
772/*{"quz", HB_TAG('Q','U','Z',' ')},*/ /* Cusco Quechua -> Quechua */
773 {"qva", HB_TAG('Q','W','H',' ')}, /* Ambo-Pasco Quechua -> Quechua (Peru) */
774 {"qvc", HB_TAG('Q','U','Z',' ')}, /* Cajamarca Quechua -> Quechua */
775 {"qve", HB_TAG('Q','U','Z',' ')}, /* Eastern Apurímac Quechua -> Quechua */
776 {"qvh", HB_TAG('Q','W','H',' ')}, /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua (Peru) */
777/*{"qvi", HB_TAG('Q','V','I',' ')},*/ /* Imbabura Highland Quichua -> Quechua (Ecuador) */
778 {"qvj", HB_TAG('Q','V','I',' ')}, /* Loja Highland Quichua -> Quechua (Ecuador) */
779 {"qvl", HB_TAG('Q','W','H',' ')}, /* Cajatambo North Lima Quechua -> Quechua (Peru) */
780 {"qvm", HB_TAG('Q','W','H',' ')}, /* Margos-Yarowilca-Lauricocha Quechua -> Quechua (Peru) */
781 {"qvn", HB_TAG('Q','W','H',' ')}, /* North Junín Quechua -> Quechua (Peru) */
782 {"qvo", HB_TAG('Q','V','I',' ')}, /* Napo Lowland Quechua -> Quechua (Ecuador) */
783 {"qvp", HB_TAG('Q','W','H',' ')}, /* Pacaraos Quechua -> Quechua (Peru) */
784 {"qvs", HB_TAG('Q','U','Z',' ')}, /* San Martín Quechua -> Quechua */
785 {"qvw", HB_TAG('Q','W','H',' ')}, /* Huaylla Wanca Quechua -> Quechua (Peru) */
786 {"qvz", HB_TAG('Q','V','I',' ')}, /* Northern Pastaza Quichua -> Quechua (Ecuador) */
787 {"qwa", HB_TAG('Q','W','H',' ')}, /* Corongo Ancash Quechua -> Quechua (Peru) */
788 {"qwc", HB_TAG('Q','U','Z',' ')}, /* Classical Quechua -> Quechua */
789/*{"qwh", HB_TAG('Q','W','H',' ')},*/ /* Huaylas Ancash Quechua -> Quechua (Peru) */
790 {"qws", HB_TAG('Q','W','H',' ')}, /* Sihuas Ancash Quechua -> Quechua (Peru) */
791 {"qxa", HB_TAG('Q','W','H',' ')}, /* Chiquián Ancash Quechua -> Quechua (Peru) */
792 {"qxc", HB_TAG('Q','W','H',' ')}, /* Chincha Quechua -> Quechua (Peru) */
793 {"qxh", HB_TAG('Q','W','H',' ')}, /* Panao Huánuco Quechua -> Quechua (Peru) */
794 {"qxl", HB_TAG('Q','V','I',' ')}, /* Salasaca Highland Quichua -> Quechua (Ecuador) */
795 {"qxn", HB_TAG('Q','W','H',' ')}, /* Northern Conchucos Ancash Quechua -> Quechua (Peru) */
796 {"qxo", HB_TAG('Q','W','H',' ')}, /* Southern Conchucos Ancash Quechua -> Quechua (Peru) */
797 {"qxp", HB_TAG('Q','U','Z',' ')}, /* Puno Quechua -> Quechua */
798 {"qxr", HB_TAG('Q','V','I',' ')}, /* Cañar Highland Quichua -> Quechua (Ecuador) */
799 {"qxt", HB_TAG('Q','W','H',' ')}, /* Santa Ana de Tusi Pasco Quechua -> Quechua (Peru) */
800 {"qxu", HB_TAG('Q','U','Z',' ')}, /* Arequipa-La Unión Quechua -> Quechua */
801 {"qxw", HB_TAG('Q','W','H',' ')}, /* Jauja Wanca Quechua -> Quechua (Peru) */
802 {"rag", HB_TAG('L','U','H',' ')}, /* Logooli -> Luyia */
803/*{"raj", HB_TAG('R','A','J',' ')},*/ /* Rajasthani [macrolanguage] */
804/*{"rar", HB_TAG('R','A','R',' ')},*/ /* Rarotongan */
805 {"rbb", HB_TAG('P','L','G',' ')}, /* Rumai Palaung -> Palaung */
806 {"rbl", HB_TAG('B','I','K',' ')}, /* Miraya Bikol -> Bikol */
807/*{"rej", HB_TAG('R','E','J',' ')},*/ /* Rejang */
808/*{"ria", HB_TAG('R','I','A',' ')},*/ /* Riang (India) */
809/*{"rif", HB_TAG('R','I','F',' ')},*/ /* Tarifit */
810/*{"rit", HB_TAG('R','I','T',' ')},*/ /* Ritharrngu -> Ritarungo */
811 {"rki", HB_TAG('A','R','K',' ')}, /* Rakhine */
812/*{"rkw", HB_TAG('R','K','W',' ')},*/ /* Arakwal */
813 {"rm", HB_TAG('R','M','S',' ')}, /* Romansh */
814 {"rmc", HB_TAG('R','O','Y',' ')}, /* Carpathian Romani -> Romany */
815 {"rmf", HB_TAG('R','O','Y',' ')}, /* Kalo Finnish Romani -> Romany */
816 {"rml", HB_TAG('R','O','Y',' ')}, /* Baltic Romani -> Romany */
817 {"rmn", HB_TAG('R','O','Y',' ')}, /* Balkan Romani -> Romany */
818 {"rmo", HB_TAG('R','O','Y',' ')}, /* Sinte Romani -> Romany */
819 {"rmw", HB_TAG('R','O','Y',' ')}, /* Welsh Romani -> Romany */
820/*{"rmy", HB_TAG('R','M','Y',' ')},*/ /* Vlax Romani */
821 {"rmz", HB_TAG('A','R','K',' ')}, /* Marma -> Rakhine */
822 {"rn", HB_TAG('R','U','N',' ')}, /* Rundi */
823 {"rnl", HB_TAG('H','A','L',' ')}, /* Ranglong -> Halam (Falam Chin) */
824 {"ro", HB_TAG('R','O','M',' ')}, /* Romanian */
825 {"rom", HB_TAG('R','O','Y',' ')}, /* Romany [macrolanguage] */
826/*{"rtm", HB_TAG('R','T','M',' ')},*/ /* Rotuman */
827 {"ru", HB_TAG('R','U','S',' ')}, /* Russian */
828 {"rue", HB_TAG('R','S','Y',' ')}, /* Rusyn */
829/*{"rup", HB_TAG('R','U','P',' ')},*/ /* Aromanian */
830 {"rw", HB_TAG('R','U','A',' ')}, /* Kinyarwanda */
831 {"rwr", HB_TAG('M','A','W',' ')}, /* Marwari (India) */
832 {"sa", HB_TAG('S','A','N',' ')}, /* Sanskrit */
833 {"sah", HB_TAG('Y','A','K',' ')}, /* Yakut -> Sakha */
834 {"sam", HB_TAG('P','A','A',' ')}, /* Samaritan Aramaic -> Palestinian Aramaic */
835/*{"sas", HB_TAG('S','A','S',' ')},*/ /* Sasak */
836/*{"sat", HB_TAG('S','A','T',' ')},*/ /* Santali */
837 {"sc", HB_TAG('S','R','D',' ')}, /* Sardinian [macrolanguage] */
838 {"sck", HB_TAG('S','A','D',' ')}, /* Sadri */
839/*{"scn", HB_TAG('S','C','N',' ')},*/ /* Sicilian */
840/*{"sco", HB_TAG('S','C','O',' ')},*/ /* Scots */
841 {"scs", HB_TAG('S','C','S',' ')}, /* North Slavey */
842 {"scs", HB_TAG('S','L','A',' ')}, /* North Slavey -> Slavey */
843 {"scs", HB_TAG('A','T','H',' ')}, /* North Slavey -> Athapaskan */
844 {"sd", HB_TAG('S','N','D',' ')}, /* Sindhi */
845 {"sdc", HB_TAG('S','R','D',' ')}, /* Sassarese Sardinian -> Sardinian */
846 {"sdh", HB_TAG('K','U','R',' ')}, /* Southern Kurdish -> Kurdish */
847 {"sdn", HB_TAG('S','R','D',' ')}, /* Gallurese Sardinian -> Sardinian */
848 {"se", HB_TAG('N','S','M',' ')}, /* Northern Sami */
849 {"seh", HB_TAG('S','N','A',' ')}, /* Sena */
850 {"sek", HB_TAG('A','T','H',' ')}, /* Sekani -> Athapaskan */
851/*{"sel", HB_TAG('S','E','L',' ')},*/ /* Selkup */
852 {"sez", HB_TAG('Q','I','N',' ')}, /* Senthang Chin -> Chin */
853 {"sfm", HB_TAG('H','M','N',' ')}, /* Small Flowery Miao -> Hmong */
854 {"sg", HB_TAG('S','G','O',' ')}, /* Sango */
855/*{"sga", HB_TAG('S','G','A',' ')},*/ /* Old Irish (to 900) */
856 {"sgc", HB_TAG('K','A','L',' ')}, /* Kipsigis -> Kalenjin */
857/*{"sgs", HB_TAG('S','G','S',' ')},*/ /* Samogitian */
858 {"sgw", HB_TAG('C','H','G',' ')}, /* Sebat Bet Gurage -> Chaha Gurage */
859 {"sgw", HB_TAG('S','G','W',' ')}, /* Sebat Bet Gurage -> Chaha Gurage (SIL fonts) */
860/*{"shi", HB_TAG('S','H','I',' ')},*/ /* Tachelhit */
861/*{"shn", HB_TAG('S','H','N',' ')},*/ /* Shan */
862 {"shu", HB_TAG('A','R','A',' ')}, /* Chadian Arabic -> Arabic */
863 {"si", HB_TAG('S','N','H',' ')}, /* Sinhala (Sinhalese) */
864/*{"sid", HB_TAG('S','I','D',' ')},*/ /* Sidamo */
865 {"sjd", HB_TAG('K','S','M',' ')}, /* Kildin Sami */
866 {"sjo", HB_TAG('S','I','B',' ')}, /* Xibe -> Sibe */
867 {"sk", HB_TAG('S','K','Y',' ')}, /* Slovak */
868 {"skg", HB_TAG('M','L','G',' ')}, /* Sakalava Malagasy -> Malagasy */
869 {"skr", HB_TAG('S','R','K',' ')}, /* Saraiki */
870 {"sl", HB_TAG('S','L','V',' ')}, /* Slovenian */
871 {"sm", HB_TAG('S','M','O',' ')}, /* Samoan */
872 {"sma", HB_TAG('S','S','M',' ')}, /* Southern Sami */
873 {"smj", HB_TAG('L','S','M',' ')}, /* Lule Sami */
874 {"smn", HB_TAG('I','S','M',' ')}, /* Inari Sami */
875 {"sms", HB_TAG('S','K','S',' ')}, /* Skolt Sami */
876 {"sn", HB_TAG('S','N','A','0')}, /* Shona */
877/*{"snk", HB_TAG('S','N','K',' ')},*/ /* Soninke */
878 {"so", HB_TAG('S','M','L',' ')}, /* Somali */
879/*{"sop", HB_TAG('S','O','P',' ')},*/ /* Songe */
880 {"spv", HB_TAG('O','R','I',' ')}, /* Sambalpuri -> Odia (formerly Oriya) */
881 {"spy", HB_TAG('K','A','L',' ')}, /* Sabaot -> Kalenjin */
882 {"sq", HB_TAG('S','Q','I',' ')}, /* Albanian [macrolanguage] */
883 {"sr", HB_TAG('S','R','B',' ')}, /* Serbian */
884 {"src", HB_TAG('S','R','D',' ')}, /* Logudorese Sardinian -> Sardinian */
885 {"sro", HB_TAG('S','R','D',' ')}, /* Campidanese Sardinian -> Sardinian */
886/*{"srr", HB_TAG('S','R','R',' ')},*/ /* Serer */
887 {"srs", HB_TAG('A','T','H',' ')}, /* Sarsi -> Athapaskan */
888 {"ss", HB_TAG('S','W','Z',' ')}, /* Swati */
889 {"ssh", HB_TAG('A','R','A',' ')}, /* Shihhi Arabic -> Arabic */
890 {"st", HB_TAG('S','O','T',' ')}, /* Southern Sotho -> Sotho, Southern */
891/*{"stq", HB_TAG('S','T','Q',' ')},*/ /* Saterfriesisch -> Saterland Frisian */
892 {"stv", HB_TAG('S','I','G',' ')}, /* Silt'e -> Silte Gurage */
893 {"su", HB_TAG('S','U','N',' ')}, /* Sundanese */
894/*{"suk", HB_TAG('S','U','K',' ')},*/ /* Sukuma */
895 {"suq", HB_TAG('S','U','R',' ')}, /* Suri */
896 {"sv", HB_TAG('S','V','E',' ')}, /* Swedish */
897/*{"sva", HB_TAG('S','V','A',' ')},*/ /* Svan */
898 {"sw", HB_TAG('S','W','K',' ')}, /* Swahili [macrolanguage] */
899 {"swb", HB_TAG('C','M','R',' ')}, /* Maore Comorian -> Comorian */
900 {"swc", HB_TAG('S','W','K',' ')}, /* Congo Swahili -> Swahili */
901 {"swh", HB_TAG('S','W','K',' ')}, /* Swahili */
902 {"swv", HB_TAG('M','A','W',' ')}, /* Shekhawati -> Marwari */
903/*{"sxu", HB_TAG('S','X','U',' ')},*/ /* Upper Saxon */
904 {"syc", HB_TAG('S','Y','R',' ')}, /* Classical Syriac -> Syriac */
905/*{"syl", HB_TAG('S','Y','L',' ')},*/ /* Sylheti */
906/*{"syr", HB_TAG('S','Y','R',' ')},*/ /* Syriac [macrolanguage] */
907/*{"szl", HB_TAG('S','Z','L',' ')},*/ /* Silesian */
908 {"ta", HB_TAG('T','A','M',' ')}, /* Tamil */
909 {"taa", HB_TAG('A','T','H',' ')}, /* Lower Tanana -> Athapaskan */
910/*{"tab", HB_TAG('T','A','B',' ')},*/ /* Tabassaran -> Tabasaran */
911 {"taq", HB_TAG('T','M','H',' ')}, /* Tamasheq -> Tamashek */
912 {"tau", HB_TAG('A','T','H',' ')}, /* Upper Tanana -> Athapaskan */
913 {"tcb", HB_TAG('A','T','H',' ')}, /* Tanacross -> Athapaskan */
914 {"tce", HB_TAG('A','T','H',' ')}, /* Southern Tutchone -> Athapaskan */
915 {"tcp", HB_TAG('Q','I','N',' ')}, /* Tawr Chin -> Chin */
916 {"tcy", HB_TAG('T','U','L',' ')}, /* Tulu -> Tumbuka */
917 {"tcz", HB_TAG('Q','I','N',' ')}, /* Thado Chin -> Chin */
918/*{"tdd", HB_TAG('T','D','D',' ')},*/ /* Tai Nüa -> Dehong Dai */
919 {"tdx", HB_TAG('M','L','G',' ')}, /* Tandroy-Mahafaly Malagasy -> Malagasy */
920 {"te", HB_TAG('T','E','L',' ')}, /* Telugu */
921 {"tec", HB_TAG('K','A','L',' ')}, /* Terik -> Kalenjin */
922 {"tem", HB_TAG('T','M','N',' ')}, /* Timne -> Temne */
923/*{"tet", HB_TAG('T','E','T',' ')},*/ /* Tetum */
924 {"tfn", HB_TAG('A','T','H',' ')}, /* Tanaina -> Athapaskan */
925 {"tg", HB_TAG('T','A','J',' ')}, /* Tajik -> Tajiki */
926 {"tgj", HB_TAG('N','I','S',' ')}, /* Tagin -> Nisi */
927 {"tgx", HB_TAG('A','T','H',' ')}, /* Tagish -> Athapaskan */
928 {"th", HB_TAG('T','H','A',' ')}, /* Thai */
929 {"tht", HB_TAG('A','T','H',' ')}, /* Tahltan -> Athapaskan */
930 {"thv", HB_TAG('T','M','H',' ')}, /* Tahaggart Tamahaq -> Tamashek */
931 {"thz", HB_TAG('T','M','H',' ')}, /* Tayart Tamajeq -> Tamashek */
932 {"ti", HB_TAG('T','G','Y',' ')}, /* Tigrinya */
933 {"tig", HB_TAG('T','G','R',' ')}, /* Tigre */
934/*{"tiv", HB_TAG('T','I','V',' ')},*/ /* Tiv */
935 {"tk", HB_TAG('T','K','M',' ')}, /* Turkmen */
936 {"tkg", HB_TAG('M','L','G',' ')}, /* Tesaka Malagasy -> Malagasy */
937 {"tl", HB_TAG('T','G','L',' ')}, /* Tagalog */
938/*{"tmh", HB_TAG('T','M','H',' ')},*/ /* Tamashek [macrolanguage] */
939 {"tmw", HB_TAG('M','L','Y',' ')}, /* Temuan -> Malay */
940 {"tn", HB_TAG('T','N','A',' ')}, /* Tswana */
941 {"tnf", HB_TAG('D','R','I',' ')}, /* Tangshewi (retired code) -> Dari */
942 {"to", HB_TAG('T','G','N',' ')}, /* Tonga (Tonga Islands) -> Tongan */
943 {"tod", HB_TAG('T','O','D','0')}, /* Toma */
944 {"toi", HB_TAG('T','N','G',' ')}, /* Tonga (Zambia) */
945 {"tol", HB_TAG('A','T','H',' ')}, /* Tolowa -> Athapaskan */
946/*{"tpi", HB_TAG('T','P','I',' ')},*/ /* Tok Pisin */
947 {"tr", HB_TAG('T','R','K',' ')}, /* Turkish */
948 {"tru", HB_TAG('T','U','A',' ')}, /* Turoyo -> Turoyo Aramaic */
949 {"tru", HB_TAG('S','Y','R',' ')}, /* Turoyo -> Syriac */
950 {"ts", HB_TAG('T','S','G',' ')}, /* Tsonga */
951/*{"tsj", HB_TAG('T','S','J',' ')},*/ /* Tshangla */
952 {"tt", HB_TAG('T','A','T',' ')}, /* Tatar */
953 {"ttm", HB_TAG('A','T','H',' ')}, /* Northern Tutchone -> Athapaskan */
954 {"ttq", HB_TAG('T','M','H',' ')}, /* Tawallammat Tamajaq -> Tamashek */
955/*{"tum", HB_TAG('T','U','M',' ')},*/ /* Tumbuka -> Tulu */
956 {"tuu", HB_TAG('A','T','H',' ')}, /* Tututni -> Athapaskan */
957 {"tuy", HB_TAG('K','A','L',' ')}, /* Tugen -> Kalenjin */
958/*{"tvl", HB_TAG('T','V','L',' ')},*/ /* Tuvalu */
959 {"tw", HB_TAG('T','W','I',' ')}, /* Twi */
960 {"tw", HB_TAG('A','K','A',' ')}, /* Twi -> Akan */
961 {"txc", HB_TAG('A','T','H',' ')}, /* Tsetsaut -> Athapaskan */
962 {"txy", HB_TAG('M','L','G',' ')}, /* Tanosy Malagasy -> Malagasy */
963 {"ty", HB_TAG('T','H','T',' ')}, /* Tahitian */
964 {"tyv", HB_TAG('T','U','V',' ')}, /* Tuvinian -> Tuvin */
965/*{"tyz", HB_TAG('T','Y','Z',' ')},*/ /* Tày */
966/*{"tzm", HB_TAG('T','Z','M',' ')},*/ /* Central Atlas Tamazight -> Tamazight */
967/*{"tzo", HB_TAG('T','Z','O',' ')},*/ /* Tzotzil */
968 {"ubl", HB_TAG('B','I','K',' ')}, /* Buhi'non Bikol -> Bikol */
969/*{"udm", HB_TAG('U','D','M',' ')},*/ /* Udmurt */
970 {"ug", HB_TAG('U','Y','G',' ')}, /* Uyghur */
971 {"uk", HB_TAG('U','K','R',' ')}, /* Ukrainian */
972 {"uki", HB_TAG('K','U','I',' ')}, /* Kui (India) */
973/*{"umb", HB_TAG('U','M','B',' ')},*/ /* Umbundu */
974 {"unr", HB_TAG('M','U','N',' ')}, /* Mundari */
975 {"ur", HB_TAG('U','R','D',' ')}, /* Urdu */
976 {"urk", HB_TAG('M','L','Y',' ')}, /* Urak Lawoi' -> Malay */
977 {"uz", HB_TAG('U','Z','B',' ')}, /* Uzbek [macrolanguage] */
978 {"uzn", HB_TAG('U','Z','B',' ')}, /* Northern Uzbek -> Uzbek */
979 {"uzs", HB_TAG('U','Z','B',' ')}, /* Southern Uzbek -> Uzbek */
980 {"ve", HB_TAG('V','E','N',' ')}, /* Venda */
981/*{"vec", HB_TAG('V','E','C',' ')},*/ /* Venetian */
982 {"vi", HB_TAG('V','I','T',' ')}, /* Vietnamese */
983 {"vkk", HB_TAG('M','L','Y',' ')}, /* Kaur -> Malay */
984 {"vkt", HB_TAG('M','L','Y',' ')}, /* Tenggarong Kutai Malay -> Malay */
985 {"vls", HB_TAG('F','L','E',' ')}, /* Vlaams -> Dutch (Flemish) */
986 {"vmw", HB_TAG('M','A','K',' ')}, /* Makhuwa */
987 {"vo", HB_TAG('V','O','L',' ')}, /* Volapük */
988/*{"vro", HB_TAG('V','R','O',' ')},*/ /* Võro */
989 {"wa", HB_TAG('W','L','N',' ')}, /* Walloon */
990/*{"war", HB_TAG('W','A','R',' ')},*/ /* Waray (Philippines) -> Waray-Waray */
991 {"wbm", HB_TAG('W','A',' ',' ')}, /* Wa */
992 {"wbr", HB_TAG('W','A','G',' ')}, /* Wagdi */
993 {"wlc", HB_TAG('C','M','R',' ')}, /* Mwali Comorian -> Comorian */
994 {"wle", HB_TAG('S','I','G',' ')}, /* Wolane -> Silte Gurage */
995 {"wlk", HB_TAG('A','T','H',' ')}, /* Wailaki -> Athapaskan */
996 {"wni", HB_TAG('C','M','R',' ')}, /* Ndzwani Comorian -> Comorian */
997 {"wo", HB_TAG('W','L','F',' ')}, /* Wolof */
998 {"wry", HB_TAG('M','A','W',' ')}, /* Merwari -> Marwari */
999 {"wsg", HB_TAG('G','O','N',' ')}, /* Adilabad Gondi -> Gondi */
1000/*{"wtm", HB_TAG('W','T','M',' ')},*/ /* Mewati */
1001 {"wuu", HB_TAG('Z','H','S',' ')}, /* Wu Chinese -> Chinese Simplified */
1002 {"xal", HB_TAG('K','L','M',' ')}, /* Kalmyk */
1003 {"xal", HB_TAG('T','O','D',' ')}, /* Kalmyk -> Todo */
1004 {"xan", HB_TAG('S','E','K',' ')}, /* Xamtanga -> Sekota */
1005 {"xh", HB_TAG('X','H','S',' ')}, /* Xhosa */
1006/*{"xjb", HB_TAG('X','J','B',' ')},*/ /* Minjungbal -> Minjangbal */
1007/*{"xkf", HB_TAG('X','K','F',' ')},*/ /* Khengkha */
1008 {"xmm", HB_TAG('M','L','Y',' ')}, /* Manado Malay -> Malay */
1009 {"xmv", HB_TAG('M','L','G',' ')}, /* Antankarana Malagasy -> Malagasy */
1010 {"xmw", HB_TAG('M','L','G',' ')}, /* Tsimihety Malagasy -> Malagasy */
1011 {"xnr", HB_TAG('D','G','R',' ')}, /* Kangri -> Dogri */
1012/*{"xog", HB_TAG('X','O','G',' ')},*/ /* Soga */
1013/*{"xpe", HB_TAG('X','P','E',' ')},*/ /* Liberia Kpelle -> Kpelle (Liberia) */
1014 {"xsl", HB_TAG('S','S','L',' ')}, /* South Slavey */
1015 {"xsl", HB_TAG('S','L','A',' ')}, /* South Slavey -> Slavey */
1016 {"xsl", HB_TAG('A','T','H',' ')}, /* South Slavey -> Athapaskan */
1017 {"xst", HB_TAG('S','I','G',' ')}, /* Silt'e (retired code) -> Silte Gurage */
1018 {"xwo", HB_TAG('T','O','D',' ')}, /* Written Oirat -> Todo */
1019/*{"yao", HB_TAG('Y','A','O',' ')},*/ /* Yao */
1020/*{"yap", HB_TAG('Y','A','P',' ')},*/ /* Yapese */
1021 {"ybd", HB_TAG('A','R','K',' ')}, /* Yangbye (retired code) -> Rakhine */
1022 {"ydd", HB_TAG('J','I','I',' ')}, /* Eastern Yiddish -> Yiddish */
1023 {"yi", HB_TAG('J','I','I',' ')}, /* Yiddish [macrolanguage] */
1024 {"yih", HB_TAG('J','I','I',' ')}, /* Western Yiddish -> Yiddish */
1025 {"yo", HB_TAG('Y','B','A',' ')}, /* Yoruba */
1026 {"yos", HB_TAG('Q','I','N',' ')}, /* Yos (retired code) -> Chin */
1027 {"yrk", HB_TAG('T','N','E',' ')}, /* Nenets -> Tundra Nenets */
1028 {"yrk", HB_TAG('F','N','E',' ')}, /* Nenets -> Forest Nenets */
1029 {"yue", HB_TAG('Z','H','H',' ')}, /* Yue Chinese -> Chinese, Hong Kong SAR */
1030 {"za", HB_TAG('Z','H','A',' ')}, /* Zhuang [macrolanguage] */
1031 {"zch", HB_TAG('Z','H','A',' ')}, /* Central Hongshuihe Zhuang -> Zhuang */
1032 {"zdj", HB_TAG('C','M','R',' ')}, /* Ngazidja Comorian -> Comorian */
1033/*{"zea", HB_TAG('Z','E','A',' ')},*/ /* Zeeuws -> Zealandic */
1034 {"zeh", HB_TAG('Z','H','A',' ')}, /* Eastern Hongshuihe Zhuang -> Zhuang */
1035 {"zgb", HB_TAG('Z','H','A',' ')}, /* Guibei Zhuang -> Zhuang */
1036/*{"zgh", HB_TAG('Z','G','H',' ')},*/ /* Standard Moroccan Tamazight */
1037 {"zgm", HB_TAG('Z','H','A',' ')}, /* Minz Zhuang -> Zhuang */
1038 {"zgn", HB_TAG('Z','H','A',' ')}, /* Guibian Zhuang -> Zhuang */
1039 {"zh", HB_TAG('Z','H','S',' ')}, /* Chinese [macrolanguage] -> Chinese Simplified */
1040 {"zhd", HB_TAG('Z','H','A',' ')}, /* Dai Zhuang -> Zhuang */
1041 {"zhn", HB_TAG('Z','H','A',' ')}, /* Nong Zhuang -> Zhuang */
1042 {"zlj", HB_TAG('Z','H','A',' ')}, /* Liujiang Zhuang -> Zhuang */
1043 {"zlm", HB_TAG('M','L','Y',' ')}, /* Malay */
1044 {"zln", HB_TAG('Z','H','A',' ')}, /* Lianshan Zhuang -> Zhuang */
1045 {"zlq", HB_TAG('Z','H','A',' ')}, /* Liuqian Zhuang -> Zhuang */
1046 {"zmi", HB_TAG('M','L','Y',' ')}, /* Negeri Sembilan Malay -> Malay */
1047 {"zne", HB_TAG('Z','N','D',' ')}, /* Zande */
1048 {"zom", HB_TAG('Q','I','N',' ')}, /* Zou -> Chin */
1049 {"zqe", HB_TAG('Z','H','A',' ')}, /* Qiubei Zhuang -> Zhuang */
1050 {"zsm", HB_TAG('M','L','Y',' ')}, /* Standard Malay -> Malay */
1051 {"zu", HB_TAG('Z','U','L',' ')}, /* Zulu */
1052 {"zum", HB_TAG('L','R','C',' ')}, /* Kumzari -> Luri */
1053 {"zyb", HB_TAG('Z','H','A',' ')}, /* Yongbei Zhuang -> Zhuang */
1054 {"zyg", HB_TAG('Z','H','A',' ')}, /* Yang Zhuang -> Zhuang */
1055 {"zyj", HB_TAG('Z','H','A',' ')}, /* Youjiang Zhuang -> Zhuang */
1056 {"zyn", HB_TAG('Z','H','A',' ')}, /* Yongnan Zhuang -> Zhuang */
1057/*{"zza", HB_TAG('Z','Z','A',' ')},*/ /* Zazaki [macrolanguage] */
1058 {"zzj", HB_TAG('Z','H','A',' ')}, /* Zuojiang Zhuang -> Zhuang */
1059};
1060
1061/**
1062 * hb_ot_tags_from_complex_language:
1063 * @lang_str: a BCP 47 language tag to convert.
1064 * @limit: a pointer to the end of the substring of @lang_str to consider for
1065 * conversion.
1066 * @count: maximum number of language tags to retrieve (IN) and actual number of
1067 * language tags retrieved (OUT). If no tags are retrieved, it is not modified.
1068 * @tags: array of size at least @language_count to store the language tag
1069 * results
1070 *
1071 * Converts a multi-subtag BCP 47 language tag to language tags.
1072 *
1073 * Return value: Whether any language systems were retrieved.
1074 **/
1075static bool
1076hb_ot_tags_from_complex_language (const char *lang_str,
1077 const char *limit,
1078 unsigned int *count /* IN/OUT */,
1079 hb_tag_t *tags /* OUT */)
1080{
1081 if (subtag_matches (lang_str, limit, "-fonnapa"))
1082 {
1083 /* Undetermined; North American Phonetic Alphabet */
1084 tags[0] = HB_TAG('A','P','P','H'); /* Phonetic transcription—Americanist conventions */
1085 *count = 1;
1086 return true;
1087 }
1088 if (subtag_matches (lang_str, limit, "-polyton"))
1089 {
1090 /* Modern Greek (1453-); Polytonic Greek */
1091 tags[0] = HB_TAG('P','G','R',' '); /* Polytonic Greek */
1092 *count = 1;
1093 return true;
1094 }
1095 if (subtag_matches (lang_str, limit, "-provenc"))
1096 {
1097 /* Occitan (post 1500); Provençal */
1098 tags[0] = HB_TAG('P','R','O',' '); /* Provençal / Old Provençal */
1099 *count = 1;
1100 return true;
1101 }
1102 if (subtag_matches (lang_str, limit, "-fonipa"))
1103 {
1104 /* Undetermined; International Phonetic Alphabet */
1105 tags[0] = HB_TAG('I','P','P','H'); /* Phonetic transcription—IPA conventions */
1106 *count = 1;
1107 return true;
1108 }
1109 if (subtag_matches (lang_str, limit, "-geok"))
1110 {
1111 /* Undetermined; Khutsuri (Asomtavruli and Nuskhuri) */
1112 tags[0] = HB_TAG('K','G','E',' '); /* Khutsuri Georgian */
1113 *count = 1;
1114 return true;
1115 }
1116 if (subtag_matches (lang_str, limit, "-syre"))
1117 {
1118 /* Undetermined; Syriac (Estrangelo variant) */
1119 tags[0] = HB_TAG('S','Y','R','E'); /* Syriac, Estrangela script-variant (equivalent to ISO 15924 'Syre') */
1120 *count = 1;
1121 return true;
1122 }
1123 if (subtag_matches (lang_str, limit, "-syrj"))
1124 {
1125 /* Undetermined; Syriac (Western variant) */
1126 tags[0] = HB_TAG('S','Y','R','J'); /* Syriac, Western script-variant (equivalent to ISO 15924 'Syrj') */
1127 *count = 1;
1128 return true;
1129 }
1130 if (subtag_matches (lang_str, limit, "-syrn"))
1131 {
1132 /* Undetermined; Syriac (Eastern variant) */
1133 tags[0] = HB_TAG('S','Y','R','N'); /* Syriac, Eastern script-variant (equivalent to ISO 15924 'Syrn') */
1134 *count = 1;
1135 return true;
1136 }
1137 switch (lang_str[0])
1138 {
1139 case 'a':
1140 if (0 == strcmp (&lang_str[1], "rt-lojban"))
1141 {
1142 /* Lojban */
1143 tags[0] = HB_TAG('J','B','O',' '); /* Lojban */
1144 *count = 1;
1145 return true;
1146 }
1147 break;
1148 case 'c':
1149 if (lang_matches (&lang_str[1], "do-hant-hk"))
1150 {
1151 /* Min Dong Chinese */
1152 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1153 *count = 1;
1154 return true;
1155 }
1156 if (lang_matches (&lang_str[1], "do-hant-mo"))
1157 {
1158 /* Min Dong Chinese */
1159 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1160 *count = 1;
1161 return true;
1162 }
1163 if (lang_matches (&lang_str[1], "jy-hant-hk"))
1164 {
1165 /* Jinyu Chinese */
1166 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1167 *count = 1;
1168 return true;
1169 }
1170 if (lang_matches (&lang_str[1], "jy-hant-mo"))
1171 {
1172 /* Jinyu Chinese */
1173 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1174 *count = 1;
1175 return true;
1176 }
1177 if (lang_matches (&lang_str[1], "mn-hant-hk"))
1178 {
1179 /* Mandarin Chinese */
1180 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1181 *count = 1;
1182 return true;
1183 }
1184 if (lang_matches (&lang_str[1], "mn-hant-mo"))
1185 {
1186 /* Mandarin Chinese */
1187 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1188 *count = 1;
1189 return true;
1190 }
1191 if (lang_matches (&lang_str[1], "np-hant-hk"))
1192 {
1193 /* Northern Ping Chinese */
1194 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1195 *count = 1;
1196 return true;
1197 }
1198 if (lang_matches (&lang_str[1], "np-hant-mo"))
1199 {
1200 /* Northern Ping Chinese */
1201 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1202 *count = 1;
1203 return true;
1204 }
1205 if (lang_matches (&lang_str[1], "px-hant-hk"))
1206 {
1207 /* Pu-Xian Chinese */
1208 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1209 *count = 1;
1210 return true;
1211 }
1212 if (lang_matches (&lang_str[1], "px-hant-mo"))
1213 {
1214 /* Pu-Xian Chinese */
1215 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1216 *count = 1;
1217 return true;
1218 }
1219 if (lang_matches (&lang_str[1], "sp-hant-hk"))
1220 {
1221 /* Southern Ping Chinese */
1222 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1223 *count = 1;
1224 return true;
1225 }
1226 if (lang_matches (&lang_str[1], "sp-hant-mo"))
1227 {
1228 /* Southern Ping Chinese */
1229 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1230 *count = 1;
1231 return true;
1232 }
1233 if (lang_matches (&lang_str[1], "zh-hant-hk"))
1234 {
1235 /* Huizhou Chinese */
1236 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1237 *count = 1;
1238 return true;
1239 }
1240 if (lang_matches (&lang_str[1], "zh-hant-mo"))
1241 {
1242 /* Huizhou Chinese */
1243 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1244 *count = 1;
1245 return true;
1246 }
1247 if (lang_matches (&lang_str[1], "zo-hant-hk"))
1248 {
1249 /* Min Zhong Chinese */
1250 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1251 *count = 1;
1252 return true;
1253 }
1254 if (lang_matches (&lang_str[1], "zo-hant-mo"))
1255 {
1256 /* Min Zhong Chinese */
1257 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1258 *count = 1;
1259 return true;
1260 }
1261 if (lang_matches (&lang_str[1], "do-hans"))
1262 {
1263 /* Min Dong Chinese */
1264 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1265 *count = 1;
1266 return true;
1267 }
1268 if (lang_matches (&lang_str[1], "do-hant"))
1269 {
1270 /* Min Dong Chinese */
1271 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1272 *count = 1;
1273 return true;
1274 }
1275 if (lang_matches (&lang_str[1], "jy-hans"))
1276 {
1277 /* Jinyu Chinese */
1278 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1279 *count = 1;
1280 return true;
1281 }
1282 if (lang_matches (&lang_str[1], "jy-hant"))
1283 {
1284 /* Jinyu Chinese */
1285 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1286 *count = 1;
1287 return true;
1288 }
1289 if (lang_matches (&lang_str[1], "mn-hans"))
1290 {
1291 /* Mandarin Chinese */
1292 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1293 *count = 1;
1294 return true;
1295 }
1296 if (lang_matches (&lang_str[1], "mn-hant"))
1297 {
1298 /* Mandarin Chinese */
1299 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1300 *count = 1;
1301 return true;
1302 }
1303 if (lang_matches (&lang_str[1], "np-hans"))
1304 {
1305 /* Northern Ping Chinese */
1306 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1307 *count = 1;
1308 return true;
1309 }
1310 if (lang_matches (&lang_str[1], "np-hant"))
1311 {
1312 /* Northern Ping Chinese */
1313 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1314 *count = 1;
1315 return true;
1316 }
1317 if (lang_matches (&lang_str[1], "px-hans"))
1318 {
1319 /* Pu-Xian Chinese */
1320 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1321 *count = 1;
1322 return true;
1323 }
1324 if (lang_matches (&lang_str[1], "px-hant"))
1325 {
1326 /* Pu-Xian Chinese */
1327 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1328 *count = 1;
1329 return true;
1330 }
1331 if (lang_matches (&lang_str[1], "sp-hans"))
1332 {
1333 /* Southern Ping Chinese */
1334 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1335 *count = 1;
1336 return true;
1337 }
1338 if (lang_matches (&lang_str[1], "sp-hant"))
1339 {
1340 /* Southern Ping Chinese */
1341 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1342 *count = 1;
1343 return true;
1344 }
1345 if (lang_matches (&lang_str[1], "zh-hans"))
1346 {
1347 /* Huizhou Chinese */
1348 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1349 *count = 1;
1350 return true;
1351 }
1352 if (lang_matches (&lang_str[1], "zh-hant"))
1353 {
1354 /* Huizhou Chinese */
1355 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1356 *count = 1;
1357 return true;
1358 }
1359 if (lang_matches (&lang_str[1], "zo-hans"))
1360 {
1361 /* Min Zhong Chinese */
1362 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1363 *count = 1;
1364 return true;
1365 }
1366 if (lang_matches (&lang_str[1], "zo-hant"))
1367 {
1368 /* Min Zhong Chinese */
1369 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1370 *count = 1;
1371 return true;
1372 }
1373 if (0 == strncmp (&lang_str[1], "do-", 3)
1374 && subtag_matches (lang_str, limit, "-hk"))
1375 {
1376 /* Min Dong Chinese; Hong Kong */
1377 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1378 *count = 1;
1379 return true;
1380 }
1381 if (0 == strncmp (&lang_str[1], "do-", 3)
1382 && subtag_matches (lang_str, limit, "-mo"))
1383 {
1384 /* Min Dong Chinese; Macao */
1385 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1386 *count = 1;
1387 return true;
1388 }
1389 if (0 == strncmp (&lang_str[1], "do-", 3)
1390 && subtag_matches (lang_str, limit, "-tw"))
1391 {
1392 /* Min Dong Chinese; Taiwan, Province of China */
1393 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1394 *count = 1;
1395 return true;
1396 }
1397 if (0 == strncmp (&lang_str[1], "jy-", 3)
1398 && subtag_matches (lang_str, limit, "-hk"))
1399 {
1400 /* Jinyu Chinese; Hong Kong */
1401 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1402 *count = 1;
1403 return true;
1404 }
1405 if (0 == strncmp (&lang_str[1], "jy-", 3)
1406 && subtag_matches (lang_str, limit, "-mo"))
1407 {
1408 /* Jinyu Chinese; Macao */
1409 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1410 *count = 1;
1411 return true;
1412 }
1413 if (0 == strncmp (&lang_str[1], "jy-", 3)
1414 && subtag_matches (lang_str, limit, "-tw"))
1415 {
1416 /* Jinyu Chinese; Taiwan, Province of China */
1417 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1418 *count = 1;
1419 return true;
1420 }
1421 if (0 == strncmp (&lang_str[1], "mn-", 3)
1422 && subtag_matches (lang_str, limit, "-hk"))
1423 {
1424 /* Mandarin Chinese; Hong Kong */
1425 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1426 *count = 1;
1427 return true;
1428 }
1429 if (0 == strncmp (&lang_str[1], "mn-", 3)
1430 && subtag_matches (lang_str, limit, "-mo"))
1431 {
1432 /* Mandarin Chinese; Macao */
1433 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1434 *count = 1;
1435 return true;
1436 }
1437 if (0 == strncmp (&lang_str[1], "mn-", 3)
1438 && subtag_matches (lang_str, limit, "-tw"))
1439 {
1440 /* Mandarin Chinese; Taiwan, Province of China */
1441 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1442 *count = 1;
1443 return true;
1444 }
1445 if (0 == strncmp (&lang_str[1], "np-", 3)
1446 && subtag_matches (lang_str, limit, "-hk"))
1447 {
1448 /* Northern Ping Chinese; Hong Kong */
1449 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1450 *count = 1;
1451 return true;
1452 }
1453 if (0 == strncmp (&lang_str[1], "np-", 3)
1454 && subtag_matches (lang_str, limit, "-mo"))
1455 {
1456 /* Northern Ping Chinese; Macao */
1457 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1458 *count = 1;
1459 return true;
1460 }
1461 if (0 == strncmp (&lang_str[1], "np-", 3)
1462 && subtag_matches (lang_str, limit, "-tw"))
1463 {
1464 /* Northern Ping Chinese; Taiwan, Province of China */
1465 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1466 *count = 1;
1467 return true;
1468 }
1469 if (0 == strncmp (&lang_str[1], "px-", 3)
1470 && subtag_matches (lang_str, limit, "-hk"))
1471 {
1472 /* Pu-Xian Chinese; Hong Kong */
1473 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1474 *count = 1;
1475 return true;
1476 }
1477 if (0 == strncmp (&lang_str[1], "px-", 3)
1478 && subtag_matches (lang_str, limit, "-mo"))
1479 {
1480 /* Pu-Xian Chinese; Macao */
1481 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1482 *count = 1;
1483 return true;
1484 }
1485 if (0 == strncmp (&lang_str[1], "px-", 3)
1486 && subtag_matches (lang_str, limit, "-tw"))
1487 {
1488 /* Pu-Xian Chinese; Taiwan, Province of China */
1489 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1490 *count = 1;
1491 return true;
1492 }
1493 if (0 == strncmp (&lang_str[1], "sp-", 3)
1494 && subtag_matches (lang_str, limit, "-hk"))
1495 {
1496 /* Southern Ping Chinese; Hong Kong */
1497 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1498 *count = 1;
1499 return true;
1500 }
1501 if (0 == strncmp (&lang_str[1], "sp-", 3)
1502 && subtag_matches (lang_str, limit, "-mo"))
1503 {
1504 /* Southern Ping Chinese; Macao */
1505 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1506 *count = 1;
1507 return true;
1508 }
1509 if (0 == strncmp (&lang_str[1], "sp-", 3)
1510 && subtag_matches (lang_str, limit, "-tw"))
1511 {
1512 /* Southern Ping Chinese; Taiwan, Province of China */
1513 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1514 *count = 1;
1515 return true;
1516 }
1517 if (0 == strncmp (&lang_str[1], "zh-", 3)
1518 && subtag_matches (lang_str, limit, "-hk"))
1519 {
1520 /* Huizhou Chinese; Hong Kong */
1521 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1522 *count = 1;
1523 return true;
1524 }
1525 if (0 == strncmp (&lang_str[1], "zh-", 3)
1526 && subtag_matches (lang_str, limit, "-mo"))
1527 {
1528 /* Huizhou Chinese; Macao */
1529 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1530 *count = 1;
1531 return true;
1532 }
1533 if (0 == strncmp (&lang_str[1], "zh-", 3)
1534 && subtag_matches (lang_str, limit, "-tw"))
1535 {
1536 /* Huizhou Chinese; Taiwan, Province of China */
1537 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1538 *count = 1;
1539 return true;
1540 }
1541 if (0 == strncmp (&lang_str[1], "zo-", 3)
1542 && subtag_matches (lang_str, limit, "-hk"))
1543 {
1544 /* Min Zhong Chinese; Hong Kong */
1545 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1546 *count = 1;
1547 return true;
1548 }
1549 if (0 == strncmp (&lang_str[1], "zo-", 3)
1550 && subtag_matches (lang_str, limit, "-mo"))
1551 {
1552 /* Min Zhong Chinese; Macao */
1553 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1554 *count = 1;
1555 return true;
1556 }
1557 if (0 == strncmp (&lang_str[1], "zo-", 3)
1558 && subtag_matches (lang_str, limit, "-tw"))
1559 {
1560 /* Min Zhong Chinese; Taiwan, Province of China */
1561 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1562 *count = 1;
1563 return true;
1564 }
1565 break;
1566 case 'g':
1567 if (lang_matches (&lang_str[1], "an-hant-hk"))
1568 {
1569 /* Gan Chinese */
1570 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1571 *count = 1;
1572 return true;
1573 }
1574 if (lang_matches (&lang_str[1], "an-hant-mo"))
1575 {
1576 /* Gan Chinese */
1577 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1578 *count = 1;
1579 return true;
1580 }
1581 if (lang_matches (&lang_str[1], "an-hans"))
1582 {
1583 /* Gan Chinese */
1584 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1585 *count = 1;
1586 return true;
1587 }
1588 if (lang_matches (&lang_str[1], "an-hant"))
1589 {
1590 /* Gan Chinese */
1591 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1592 *count = 1;
1593 return true;
1594 }
1595 if (lang_matches (&lang_str[1], "a-latg"))
1596 {
1597 /* Irish */
1598 tags[0] = HB_TAG('I','R','T',' '); /* Irish Traditional */
1599 *count = 1;
1600 return true;
1601 }
1602 if (0 == strncmp (&lang_str[1], "an-", 3)
1603 && subtag_matches (lang_str, limit, "-hk"))
1604 {
1605 /* Gan Chinese; Hong Kong */
1606 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1607 *count = 1;
1608 return true;
1609 }
1610 if (0 == strncmp (&lang_str[1], "an-", 3)
1611 && subtag_matches (lang_str, limit, "-mo"))
1612 {
1613 /* Gan Chinese; Macao */
1614 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1615 *count = 1;
1616 return true;
1617 }
1618 if (0 == strncmp (&lang_str[1], "an-", 3)
1619 && subtag_matches (lang_str, limit, "-tw"))
1620 {
1621 /* Gan Chinese; Taiwan, Province of China */
1622 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1623 *count = 1;
1624 return true;
1625 }
1626 break;
1627 case 'h':
1628 if (lang_matches (&lang_str[1], "ak-hant-hk"))
1629 {
1630 /* Hakka Chinese */
1631 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1632 *count = 1;
1633 return true;
1634 }
1635 if (lang_matches (&lang_str[1], "ak-hant-mo"))
1636 {
1637 /* Hakka Chinese */
1638 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1639 *count = 1;
1640 return true;
1641 }
1642 if (lang_matches (&lang_str[1], "sn-hant-hk"))
1643 {
1644 /* Xiang Chinese */
1645 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1646 *count = 1;
1647 return true;
1648 }
1649 if (lang_matches (&lang_str[1], "sn-hant-mo"))
1650 {
1651 /* Xiang Chinese */
1652 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1653 *count = 1;
1654 return true;
1655 }
1656 if (lang_matches (&lang_str[1], "ak-hans"))
1657 {
1658 /* Hakka Chinese */
1659 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1660 *count = 1;
1661 return true;
1662 }
1663 if (lang_matches (&lang_str[1], "ak-hant"))
1664 {
1665 /* Hakka Chinese */
1666 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1667 *count = 1;
1668 return true;
1669 }
1670 if (lang_matches (&lang_str[1], "sn-hans"))
1671 {
1672 /* Xiang Chinese */
1673 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1674 *count = 1;
1675 return true;
1676 }
1677 if (lang_matches (&lang_str[1], "sn-hant"))
1678 {
1679 /* Xiang Chinese */
1680 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1681 *count = 1;
1682 return true;
1683 }
1684 if (0 == strncmp (&lang_str[1], "ak-", 3)
1685 && subtag_matches (lang_str, limit, "-hk"))
1686 {
1687 /* Hakka Chinese; Hong Kong */
1688 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1689 *count = 1;
1690 return true;
1691 }
1692 if (0 == strncmp (&lang_str[1], "ak-", 3)
1693 && subtag_matches (lang_str, limit, "-mo"))
1694 {
1695 /* Hakka Chinese; Macao */
1696 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1697 *count = 1;
1698 return true;
1699 }
1700 if (0 == strncmp (&lang_str[1], "ak-", 3)
1701 && subtag_matches (lang_str, limit, "-tw"))
1702 {
1703 /* Hakka Chinese; Taiwan, Province of China */
1704 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1705 *count = 1;
1706 return true;
1707 }
1708 if (0 == strncmp (&lang_str[1], "sn-", 3)
1709 && subtag_matches (lang_str, limit, "-hk"))
1710 {
1711 /* Xiang Chinese; Hong Kong */
1712 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1713 *count = 1;
1714 return true;
1715 }
1716 if (0 == strncmp (&lang_str[1], "sn-", 3)
1717 && subtag_matches (lang_str, limit, "-mo"))
1718 {
1719 /* Xiang Chinese; Macao */
1720 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1721 *count = 1;
1722 return true;
1723 }
1724 if (0 == strncmp (&lang_str[1], "sn-", 3)
1725 && subtag_matches (lang_str, limit, "-tw"))
1726 {
1727 /* Xiang Chinese; Taiwan, Province of China */
1728 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1729 *count = 1;
1730 return true;
1731 }
1732 break;
1733 case 'i':
1734 if (0 == strcmp (&lang_str[1], "-navajo"))
1735 {
1736 /* Navajo */
1737 unsigned int i;
1738 hb_tag_t possible_tags[] = {
1739 HB_TAG('N','A','V',' '), /* Navajo */
1740 HB_TAG('A','T','H',' '), /* Athapaskan */
1741 };
1742 for (i = 0; i < 2 && i < *count; i++)
1743 tags[i] = possible_tags[i];
1744 *count = i;
1745 return true;
1746 }
1747 if (0 == strcmp (&lang_str[1], "-hak"))
1748 {
1749 /* Hakka */
1750 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1751 *count = 1;
1752 return true;
1753 }
1754 if (0 == strcmp (&lang_str[1], "-lux"))
1755 {
1756 /* Luxembourgish */
1757 tags[0] = HB_TAG('L','T','Z',' '); /* Luxembourgish */
1758 *count = 1;
1759 return true;
1760 }
1761 break;
1762 case 'l':
1763 if (lang_matches (&lang_str[1], "zh-hans"))
1764 {
1765 /* Literary Chinese */
1766 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1767 *count = 1;
1768 return true;
1769 }
1770 break;
1771 case 'm':
1772 if (lang_matches (&lang_str[1], "np-hant-hk"))
1773 {
1774 /* Min Bei Chinese */
1775 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1776 *count = 1;
1777 return true;
1778 }
1779 if (lang_matches (&lang_str[1], "np-hant-mo"))
1780 {
1781 /* Min Bei Chinese */
1782 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1783 *count = 1;
1784 return true;
1785 }
1786 if (lang_matches (&lang_str[1], "np-hans"))
1787 {
1788 /* Min Bei Chinese */
1789 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1790 *count = 1;
1791 return true;
1792 }
1793 if (lang_matches (&lang_str[1], "np-hant"))
1794 {
1795 /* Min Bei Chinese */
1796 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1797 *count = 1;
1798 return true;
1799 }
1800 if (0 == strncmp (&lang_str[1], "np-", 3)
1801 && subtag_matches (lang_str, limit, "-hk"))
1802 {
1803 /* Min Bei Chinese; Hong Kong */
1804 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1805 *count = 1;
1806 return true;
1807 }
1808 if (0 == strncmp (&lang_str[1], "np-", 3)
1809 && subtag_matches (lang_str, limit, "-mo"))
1810 {
1811 /* Min Bei Chinese; Macao */
1812 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1813 *count = 1;
1814 return true;
1815 }
1816 if (0 == strncmp (&lang_str[1], "np-", 3)
1817 && subtag_matches (lang_str, limit, "-tw"))
1818 {
1819 /* Min Bei Chinese; Taiwan, Province of China */
1820 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1821 *count = 1;
1822 return true;
1823 }
1824 break;
1825 case 'n':
1826 if (lang_matches (&lang_str[1], "an-hant-hk"))
1827 {
1828 /* Min Nan Chinese */
1829 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1830 *count = 1;
1831 return true;
1832 }
1833 if (lang_matches (&lang_str[1], "an-hant-mo"))
1834 {
1835 /* Min Nan Chinese */
1836 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1837 *count = 1;
1838 return true;
1839 }
1840 if (lang_matches (&lang_str[1], "an-hans"))
1841 {
1842 /* Min Nan Chinese */
1843 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1844 *count = 1;
1845 return true;
1846 }
1847 if (lang_matches (&lang_str[1], "an-hant"))
1848 {
1849 /* Min Nan Chinese */
1850 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1851 *count = 1;
1852 return true;
1853 }
1854 if (0 == strncmp (&lang_str[1], "an-", 3)
1855 && subtag_matches (lang_str, limit, "-hk"))
1856 {
1857 /* Min Nan Chinese; Hong Kong */
1858 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1859 *count = 1;
1860 return true;
1861 }
1862 if (0 == strncmp (&lang_str[1], "an-", 3)
1863 && subtag_matches (lang_str, limit, "-mo"))
1864 {
1865 /* Min Nan Chinese; Macao */
1866 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1867 *count = 1;
1868 return true;
1869 }
1870 if (0 == strncmp (&lang_str[1], "an-", 3)
1871 && subtag_matches (lang_str, limit, "-tw"))
1872 {
1873 /* Min Nan Chinese; Taiwan, Province of China */
1874 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1875 *count = 1;
1876 return true;
1877 }
1878 if (0 == strcmp (&lang_str[1], "o-bok"))
1879 {
1880 /* Norwegian Bokmal */
1881 tags[0] = HB_TAG('N','O','R',' '); /* Norwegian */
1882 *count = 1;
1883 return true;
1884 }
1885 if (0 == strcmp (&lang_str[1], "o-nyn"))
1886 {
1887 /* Norwegian Nynorsk */
1888 tags[0] = HB_TAG('N','Y','N',' '); /* Norwegian Nynorsk (Nynorsk, Norwegian) */
1889 *count = 1;
1890 return true;
1891 }
1892 break;
1893 case 'r':
1894 if (0 == strncmp (&lang_str[1], "o-", 2)
1895 && subtag_matches (lang_str, limit, "-md"))
1896 {
1897 /* Romanian; Moldova */
1898 tags[0] = HB_TAG('M','O','L',' '); /* Moldavian */
1899 *count = 1;
1900 return true;
1901 }
1902 break;
1903 case 'w':
1904 if (lang_matches (&lang_str[1], "uu-hant-hk"))
1905 {
1906 /* Wu Chinese */
1907 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1908 *count = 1;
1909 return true;
1910 }
1911 if (lang_matches (&lang_str[1], "uu-hant-mo"))
1912 {
1913 /* Wu Chinese */
1914 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1915 *count = 1;
1916 return true;
1917 }
1918 if (lang_matches (&lang_str[1], "uu-hans"))
1919 {
1920 /* Wu Chinese */
1921 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1922 *count = 1;
1923 return true;
1924 }
1925 if (lang_matches (&lang_str[1], "uu-hant"))
1926 {
1927 /* Wu Chinese */
1928 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1929 *count = 1;
1930 return true;
1931 }
1932 if (0 == strncmp (&lang_str[1], "uu-", 3)
1933 && subtag_matches (lang_str, limit, "-hk"))
1934 {
1935 /* Wu Chinese; Hong Kong */
1936 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1937 *count = 1;
1938 return true;
1939 }
1940 if (0 == strncmp (&lang_str[1], "uu-", 3)
1941 && subtag_matches (lang_str, limit, "-mo"))
1942 {
1943 /* Wu Chinese; Macao */
1944 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1945 *count = 1;
1946 return true;
1947 }
1948 if (0 == strncmp (&lang_str[1], "uu-", 3)
1949 && subtag_matches (lang_str, limit, "-tw"))
1950 {
1951 /* Wu Chinese; Taiwan, Province of China */
1952 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1953 *count = 1;
1954 return true;
1955 }
1956 break;
1957 case 'y':
1958 if (lang_matches (&lang_str[1], "ue-hans"))
1959 {
1960 /* Yue Chinese */
1961 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1962 *count = 1;
1963 return true;
1964 }
1965 break;
1966 case 'z':
1967 if (lang_matches (&lang_str[1], "h-hant-hk"))
1968 {
1969 /* Chinese */
1970 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1971 *count = 1;
1972 return true;
1973 }
1974 if (lang_matches (&lang_str[1], "h-hant-mo"))
1975 {
1976 /* Chinese */
1977 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
1978 *count = 1;
1979 return true;
1980 }
1981 if (0 == strcmp (&lang_str[1], "h-min-nan"))
1982 {
1983 /* Minnan, Hokkien, Amoy, Taiwanese, Southern Min, Southern Fujian, Hoklo, Southern Fukien, Ho-lo */
1984 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1985 *count = 1;
1986 return true;
1987 }
1988 if (lang_matches (&lang_str[1], "h-hans"))
1989 {
1990 /* Chinese */
1991 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
1992 *count = 1;
1993 return true;
1994 }
1995 if (lang_matches (&lang_str[1], "h-hant"))
1996 {
1997 /* Chinese */
1998 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
1999 *count = 1;
2000 return true;
2001 }
2002 if (0 == strcmp (&lang_str[1], "h-min"))
2003 {
2004 /* Min, Fuzhou, Hokkien, Amoy, or Taiwanese */
2005 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese Simplified */
2006 *count = 1;
2007 return true;
2008 }
2009 if (0 == strncmp (&lang_str[1], "h-", 2)
2010 && subtag_matches (lang_str, limit, "-hk"))
2011 {
2012 /* Chinese; Hong Kong */
2013 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
2014 *count = 1;
2015 return true;
2016 }
2017 if (0 == strncmp (&lang_str[1], "h-", 2)
2018 && subtag_matches (lang_str, limit, "-mo"))
2019 {
2020 /* Chinese; Macao */
2021 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Hong Kong SAR */
2022 *count = 1;
2023 return true;
2024 }
2025 if (0 == strncmp (&lang_str[1], "h-", 2)
2026 && subtag_matches (lang_str, limit, "-tw"))
2027 {
2028 /* Chinese; Taiwan, Province of China */
2029 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese Traditional */
2030 *count = 1;
2031 return true;
2032 }
2033 break;
2034 }
2035 return false;
2036}
2037
2038/**
2039 * hb_ot_ambiguous_tag_to_language
2040 * @tag: A language tag.
2041 *
2042 * Converts @tag to a BCP 47 language tag if it is ambiguous (it corresponds to
2043 * many language tags) and the best tag is not the alphabetically first, or if
2044 * the best tag consists of multiple subtags, or if the best tag does not appear
2045 * in #ot_languages.
2046 *
2047 * Return value: The #hb_language_t corresponding to the BCP 47 language tag,
2048 * or #HB_LANGUAGE_INVALID if @tag is not ambiguous.
2049 **/
2050static hb_language_t
2051hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
2052{
2053 switch (tag)
2054 {
2055 case HB_TAG('A','L','T',' '): /* Altai */
2056 return hb_language_from_string ("alt", -1); /* Southern Altai */
2057 case HB_TAG('A','P','P','H'): /* Phonetic transcription—Americanist conventions */
2058 return hb_language_from_string ("und-fonnapa", -1); /* Undetermined; North American Phonetic Alphabet */
2059 case HB_TAG('A','R','A',' '): /* Arabic */
2060 return hb_language_from_string ("ar", -1); /* Arabic */
2061 case HB_TAG('A','R','K',' '): /* Rakhine */
2062 return hb_language_from_string ("rki", -1); /* Rakhine */
2063 case HB_TAG('A','T','H',' '): /* Athapaskan */
2064 return hb_language_from_string ("ath", -1); /* Athapascan */
2065 case HB_TAG('B','I','K',' '): /* Bikol */
2066 return hb_language_from_string ("bik", -1); /* Bikol */
2067 case HB_TAG('C','P','P',' '): /* Creoles */
2068 return hb_language_from_string ("crp", -1); /* Creoles and pidgins */
2069 case HB_TAG('C','R','R',' '): /* Carrier */
2070 return hb_language_from_string ("crx", -1); /* Carrier */
2071 case HB_TAG('D','N','K',' '): /* Dinka */
2072 return hb_language_from_string ("din", -1); /* Dinka */
2073 case HB_TAG('D','R','I',' '): /* Dari */
2074 return hb_language_from_string ("prs", -1); /* Dari */
2075 case HB_TAG('D','Z','N',' '): /* Dzongkha */
2076 return hb_language_from_string ("dz", -1); /* Dzongkha */
2077 case HB_TAG('E','T','I',' '): /* Estonian */
2078 return hb_language_from_string ("et", -1); /* Estonian */
2079 case HB_TAG('G','O','N',' '): /* Gondi */
2080 return hb_language_from_string ("gon", -1); /* Gondi */
2081 case HB_TAG('H','M','N',' '): /* Hmong */
2082 return hb_language_from_string ("hmn", -1); /* Hmong */
2083 case HB_TAG('H','N','D',' '): /* Hindko */
2084 return hb_language_from_string ("hnd", -1); /* Southern Hindko */
2085 case HB_TAG('I','J','O',' '): /* Ijo */
2086 return hb_language_from_string ("ijo", -1); /* Ijo */
2087 case HB_TAG('I','N','U',' '): /* Inuktitut */
2088 return hb_language_from_string ("iu", -1); /* Inuktitut */
2089 case HB_TAG('I','P','K',' '): /* Inupiat */
2090 return hb_language_from_string ("ik", -1); /* Inupiaq */
2091 case HB_TAG('I','P','P','H'): /* Phonetic transcription—IPA conventions */
2092 return hb_language_from_string ("und-fonipa", -1); /* Undetermined; International Phonetic Alphabet */
2093 case HB_TAG('I','R','T',' '): /* Irish Traditional */
2094 return hb_language_from_string ("ga-Latg", -1); /* Irish; Latin (Gaelic variant) */
2095 case HB_TAG('J','I','I',' '): /* Yiddish */
2096 return hb_language_from_string ("yi", -1); /* Yiddish */
2097 case HB_TAG('K','A','L',' '): /* Kalenjin */
2098 return hb_language_from_string ("kln", -1); /* Kalenjin */
2099 case HB_TAG('K','G','E',' '): /* Khutsuri Georgian */
2100 return hb_language_from_string ("und-Geok", -1); /* Undetermined; Khutsuri (Asomtavruli and Nuskhuri) */
2101 case HB_TAG('K','N','R',' '): /* Kanuri */
2102 return hb_language_from_string ("kr", -1); /* Kanuri */
2103 case HB_TAG('K','O','K',' '): /* Konkani */
2104 return hb_language_from_string ("kok", -1); /* Konkani */
2105 case HB_TAG('K','U','I',' '): /* Kui */
2106 return hb_language_from_string ("uki", -1); /* Kui (India) */
2107 case HB_TAG('K','U','R',' '): /* Kurdish */
2108 return hb_language_from_string ("ku", -1); /* Kurdish */
2109 case HB_TAG('L','U','H',' '): /* Luyia */
2110 return hb_language_from_string ("luy", -1); /* Luyia */
2111 case HB_TAG('L','V','I',' '): /* Latvian */
2112 return hb_language_from_string ("lv", -1); /* Latvian */
2113 case HB_TAG('M','A','W',' '): /* Marwari */
2114 return hb_language_from_string ("mwr", -1); /* Marwari */
2115 case HB_TAG('M','L','G',' '): /* Malagasy */
2116 return hb_language_from_string ("mg", -1); /* Malagasy */
2117 case HB_TAG('M','L','Y',' '): /* Malay */
2118 return hb_language_from_string ("ms", -1); /* Malay */
2119 case HB_TAG('M','N','G',' '): /* Mongolian */
2120 return hb_language_from_string ("mn", -1); /* Mongolian */
2121 case HB_TAG('M','O','L',' '): /* Moldavian */
2122 return hb_language_from_string ("ro-MD", -1); /* Romanian; Moldova */
2123 case HB_TAG('N','E','P',' '): /* Nepali */
2124 return hb_language_from_string ("ne", -1); /* Nepali */
2125 case HB_TAG('N','I','S',' '): /* Nisi */
2126 return hb_language_from_string ("njz", -1); /* Nyishi */
2127 case HB_TAG('N','O','R',' '): /* Norwegian */
2128 return hb_language_from_string ("no", -1); /* Norwegian */
2129 case HB_TAG('O','J','B',' '): /* Ojibway */
2130 return hb_language_from_string ("oj", -1); /* Ojibwa */
2131 case HB_TAG('O','R','O',' '): /* Oromo */
2132 return hb_language_from_string ("om", -1); /* Oromo */
2133 case HB_TAG('P','A','S',' '): /* Pashto */
2134 return hb_language_from_string ("ps", -1); /* Pashto */
2135 case HB_TAG('P','G','R',' '): /* Polytonic Greek */
2136 return hb_language_from_string ("el-polyton", -1); /* Modern Greek (1453-); Polytonic Greek */
2137 case HB_TAG('P','R','O',' '): /* Provençal / Old Provençal */
2138 return hb_language_from_string ("pro", -1); /* Old Provençal (to 1500) */
2139 case HB_TAG('Q','U','H',' '): /* Quechua (Bolivia) */
2140 return hb_language_from_string ("quh", -1); /* South Bolivian Quechua */
2141 case HB_TAG('Q','V','I',' '): /* Quechua (Ecuador) */
2142 return hb_language_from_string ("qvi", -1); /* Imbabura Highland Quichua */
2143 case HB_TAG('Q','W','H',' '): /* Quechua (Peru) */
2144 return hb_language_from_string ("qwh", -1); /* Huaylas Ancash Quechua */
2145 case HB_TAG('R','A','J',' '): /* Rajasthani */
2146 return hb_language_from_string ("raj", -1); /* Rajasthani */
2147 case HB_TAG('R','O','Y',' '): /* Romany */
2148 return hb_language_from_string ("rom", -1); /* Romany */
2149 case HB_TAG('S','Q','I',' '): /* Albanian */
2150 return hb_language_from_string ("sq", -1); /* Albanian */
2151 case HB_TAG('S','Y','R',' '): /* Syriac */
2152 return hb_language_from_string ("syr", -1); /* Syriac */
2153 case HB_TAG('S','Y','R','E'): /* Syriac, Estrangela script-variant (equivalent to ISO 15924 'Syre') */
2154 return hb_language_from_string ("und-Syre", -1); /* Undetermined; Syriac (Estrangelo variant) */
2155 case HB_TAG('S','Y','R','J'): /* Syriac, Western script-variant (equivalent to ISO 15924 'Syrj') */
2156 return hb_language_from_string ("und-Syrj", -1); /* Undetermined; Syriac (Western variant) */
2157 case HB_TAG('S','Y','R','N'): /* Syriac, Eastern script-variant (equivalent to ISO 15924 'Syrn') */
2158 return hb_language_from_string ("und-Syrn", -1); /* Undetermined; Syriac (Eastern variant) */
2159 case HB_TAG('T','M','H',' '): /* Tamashek */
2160 return hb_language_from_string ("tmh", -1); /* Tamashek */
2161 case HB_TAG('T','N','E',' '): /* Tundra Nenets */
2162 return hb_language_from_string ("yrk", -1); /* Nenets */
2163 case HB_TAG('Z','H','H',' '): /* Chinese, Hong Kong SAR */
2164 return hb_language_from_string ("zh-HK", -1); /* Chinese; Hong Kong */
2165 case HB_TAG('Z','H','S',' '): /* Chinese Simplified */
2166 return hb_language_from_string ("zh-Hans", -1); /* Chinese; Han (Simplified variant) */
2167 case HB_TAG('Z','H','T',' '): /* Chinese Traditional */
2168 return hb_language_from_string ("zh-Hant", -1); /* Chinese; Han (Traditional variant) */
2169 default:
2170 return HB_LANGUAGE_INVALID;
2171 }
2172}
2173
2174#endif /* HB_OT_TAG_TABLE_HH */
2175
2176/* == End of generated table == */
2177