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