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