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