1use truetype::Tag;
4
5table! {
6 pub Header { tag (Tag), offset (u16), }
11}
12
13table! {
14 pub Record { lookup_order_offset (u16) = { 0 }, required_feature_index (u16), feature_index_count (u16), feature_indices (Vec<u16>) |this, tape| { tape.take_given(this.feature_index_count as usize)
22 },
23 }
24}
25
26macro_rules! implement {
27 ($(
28 $(#[$attribute:meta])*
29 $tag:literal => $name:literal => $variant:ident => $codes:literal,
30 )*) => (
31 #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
33 pub enum Language {
34 $($(#[$attribute])* #[doc = $name] $variant,)*
35 Other(Tag),
36 }
37
38 impl Language {
39 pub fn from_tag(tag: &Tag) -> Self {
41 match &**tag {
42 $($(#[$attribute])* $tag => Self::$variant,)*
43 _ => Self::Other(tag.clone()),
44 }
45 }
46
47 pub fn codes(&self) -> impl Iterator<Item = &'static str> {
49 let filter = |code: &&str| !code.is_empty();
50 let value = match self {
51 $($(#[$attribute])* Language::$variant => $codes,)*
52 _ => "",
53 };
54 value.split(", ").filter(filter)
55 }
56
57 pub fn name(&self) -> Option<&'static str> {
59 match self {
60 $($(#[$attribute])* Self::$variant => Some($name),)*
61 _ => None,
62 }
63 }
64 }
65
66 impl From<Language> for Tag {
67 fn from(language: Language) -> Self {
68 match language {
69 $($(#[$attribute])* Language::$variant => Tag(*$tag),)*
70 Language::Other(tag) => tag,
71 }
72 }
73 }
74 );
75}
76
77implement! {
78 b"ABA " => "Abaza" => Abaza => "abq",
79 b"ABK " => "Abkhazian" => Abkhazian => "abk",
80 b"ACH " => "Acholi" => Acholi => "ach",
81 b"ACR " => "Achi" => Achi => "acr",
82 b"ADY " => "Adyghe" => Adyghe => "ady",
83 b"AFK " => "Afrikaans" => Afrikaans => "afr",
84 b"AFR " => "Afar" => Afar => "aar",
85 b"AGW " => "Agaw" => Agaw => "ahg",
86 b"AIO " => "Aiton" => Aiton => "aio",
87 b"AKA " => "Akan" => Akan => "aka",
88 b"ALS " => "Alsatian" => Alsatian => "gsw",
89 b"ALT " => "Altai" => Altai => "atv, alt",
90 b"AMH " => "Amharic" => Amharic => "amh",
91 b"ANG " => "Anglo-Saxon" => AngloSaxon => "ang",
92 b"APPH" => "Phonetic Transcription, Americanist" => AmericanistPhoneticNotation => "",
93 b"ARA " => "Arabic" => Arabic => "ara",
94 b"ARG " => "Aragonese" => Aragonese => "arg",
95 b"ARI " => "Aari" => Aari => "aiw",
96 b"ARK " => "Rakhine" => Rakhine => "mhv, rmz, rki",
97 b"ASM " => "Assamese" => Assamese => "asm",
98 b"AST " => "Asturian" => Asturian => "ast",
99 b"ATH " => "Athapaskan" => Athapaskan => "apk, apj, apl, apm, apw, nav, bea, sek, bcr, caf, \
100 crx, clc, gwi, haa, chp, dgr, scs, xsl, srs, ing, \
101 hoi, koy, hup, ktw, mvb, wlk, coq, ctc, gce, tol, \
102 tuu, kkz, tgx, tht, aht, tfn, taa, tau, tcb, kuu, \
103 tce, ttm, txc",
104 b"AVR " => "Avar" => Avar => "ava",
105 b"AWA " => "Awadhi" => Awadhi => "awa",
106 b"AYM " => "Aymara" => Aymara => "aym",
107 b"AZB " => "Torki" => Torki => "azb",
108 b"AZE " => "Azerbaijani" => Azerbaijani => "aze",
109 b"BAD " => "Badaga" => Badaga => "bfq",
110 b"BAD0" => "Banda" => Banda => "bad",
111 b"BAG " => "Baghelkhandi" => Baghelkhandi => "bfy",
112 b"BAL " => "Balkar" => Balkar => "krc",
113 b"BAN " => "Balinese" => Balinese => "ban",
114 b"BAR " => "Bavarian" => Bavarian => "bar",
115 b"BAU " => "Baulé" => Baule => "bci",
116 b"BBC " => "Batak Toba" => BatakToba => "bbc",
117 b"BBR " => "Berber" => Berber => "",
118 b"BCH " => "Bench" => Bench => "bcq",
119 b"BCR " => "Bible Cree" => BibleCree => "",
120 b"BDY " => "Bandjalang" => Bandjalang => "bdy",
121 b"BEL " => "Belarussian" => Belarussian => "bel",
122 b"BEM " => "Bemba" => Bemba => "bem",
123 b"BEN " => "Bengali" => Bengali => "ben",
124 b"BGC " => "Haryanvi" => Haryanvi => "bgc",
125 b"BGQ " => "Bagri" => Bagri => "bgq",
126 b"BGR " => "Bulgarian" => Bulgarian => "bul",
127 b"BHI " => "Bhili" => Bhili => "bhi, bhb",
128 b"BHO " => "Bhojpuri" => Bhojpuri => "bho",
129 b"BIK " => "Bikol" => Bikol => "bik, bhk, bcl, bto, cts, bln",
130 b"BIL " => "Bilen" => Bilen => "byn",
131 b"BIS " => "Bislama" => Bislama => "bis",
132 b"BJJ " => "Kanauji" => Kanauji => "bjj",
133 b"BKF " => "Blackfoot" => Blackfoot => "bla",
134 b"BLI " => "Baluchi" => Baluchi => "bal",
135 b"BLK " => "Pa’o Karen" => PaoKaren => "blk",
136 b"BLN " => "Balante" => Balante => "bjt, ble",
137 b"BLT " => "Balti" => Balti => "bft",
138 b"BMB " => "Bambara (Bamanankan)" => Bambara => "bam",
139 b"BML " => "Bamileke" => Bamileke => "",
140 b"BOS " => "Bosnian" => Bosnian => "bos",
141 b"BPY " => "Bishnupriya Manipuri" => BishnupriyaManipuri => "bpy",
142 b"BRE " => "Breton" => Breton => "bre",
143 b"BRH " => "Brahui" => Brahui => "brh",
144 b"BRI " => "Braj Bhasha" => BrajBhasha => "bra",
145 b"BRM " => "Burmese" => Burmese => "mya",
146 b"BRX " => "Bodo" => Bodo => "brx",
147 b"BSH " => "Bashkir" => Bashkir => "bak",
148 b"BSK " => "Burushaski" => Burushaski => "bsk",
149 b"BTI " => "Beti" => Beti => "btb",
150 b"BTS " => "Batak Simalungun" => BatakSimalungun => "bts",
151 b"BUG " => "Bugis" => Bugis => "bug",
152 b"BYV " => "Medumba" => Medumba => "byv",
153 b"CAK " => "Kaqchikel" => Kaqchikel => "cak",
154 b"CAT " => "Catalan" => Catalan => "cat",
155 b"CBK " => "Zamboanga Chavacano" => ZamboangaChavacano => "cbk",
156 b"CEB " => "Cebuano" => Cebuano => "ceb",
157 b"CHE " => "Chechen" => Chechen => "che",
158 b"CHG " => "Chaha Gurage" => ChahaGurage => "sgw",
159 b"CHH " => "Chattisgarhi" => Chattisgarhi => "hne",
160 b"CHI " => "Chichewa (Chewa, Nyanja)" => Chichewa => "nya",
161 b"CHK " => "Chukchi" => Chukchi => "ckt",
162 b"CHK0" => "Chuukese" => Chuukese => "chk",
163 b"CHO " => "Choctaw" => Choctaw => "cho",
164 b"CHP " => "Chipewyan" => Chipewyan => "chp",
165 b"CHR " => "Cherokee" => Cherokee => "chr",
166 b"CHA " => "Chamorro" => Chamorro => "cha",
167 b"CHU " => "Chuvash" => Chuvash => "chv",
168 b"CHY " => "Cheyenne" => Cheyenne => "chy",
169 b"CGG " => "Chiga" => Chiga => "cgg",
170 b"CMR " => "Comorian" => Comorian => "swb, wlc, wni, zdj",
171 b"COP " => "Coptic" => Coptic => "cop",
172 b"COR " => "Cornish" => Cornish => "cor",
173 b"COS " => "Corsican" => Corsican => "cos",
174 b"CPP " => "Creoles" => Creoles => "cpp",
175 b"CRE " => "Cree" => Cree => "cre",
176 b"CRR " => "Carrier" => Carrier => "crx, caf",
177 b"CRT " => "Crimean Tatar" => CrimeanTatar => "crh",
178 b"CSB " => "Kashubian" => Kashubian => "csb",
179 b"CSL " => "Church Slavonic" => ChurchSlavonic => "chu",
180 b"CSY " => "Czech" => Czech => "ces",
181 b"CTG " => "Chittagonian" => Chittagonian => "ctg",
182 b"CUK " => "San Blas Kuna" => SanBlasKuna => "cuk",
183 b"DAN " => "Danish" => Danish => "dan",
184 b"DAR " => "Dargwa" => Dargwa => "dar",
185 b"DAX " => "Dayi" => Dayi => "dax",
186 b"DCR " => "Woods Cree" => WoodsCree => "cwd",
187 #[cfg(feature = "default-language")]
188 b"DFLT" => "Default" => Default => "",
189 b"DEU " => "German" => German => "deu",
190 b"DGO " => "Dogri" => Dogri => "dgo",
191 b"DGR " => "Dogri" => DogriMacrolanguage => "doi",
192 b"DHG " => "Dhangu" => Dhangu => "dhg",
193 b"DHV " => "Divehi (Dhivehi, Maldivian)" => DivehiDeprecated => "div",
194 b"DIQ " => "Dimli" => Dimli => "diq",
195 b"DIV " => "Divehi (Dhivehi, Maldivian)" => Divehi => "div",
196 b"DJR " => "Zarma" => Zarma => "dje",
197 b"DJR0" => "Djambarrpuyngu" => Djambarrpuyngu => "djr",
198 b"DNG " => "Dangme" => Dangme => "ada",
199 b"DNJ " => "Dan" => Dan => "dnj",
200 b"DNK " => "Dinka" => Dinka => "din",
201 b"DRI " => "Dari" => Dari => "prs",
202 b"DUJ " => "Dhuwal" => Dhuwal => "duj",
203 b"DUN " => "Dungan" => Dungan => "dng",
204 b"DZN " => "Dzongkha" => Dzongkha => "dzo",
205 b"EBI " => "Ebira" => Ebira => "igb",
206 b"ECR " => "Eastern Cree" => EasternCree => "crj, crl",
207 b"EDO " => "Edo" => Edo => "bin",
208 b"EFI " => "Efik" => Efik => "efi",
209 b"ELL " => "Greek" => Greek => "ell",
210 b"EMK " => "Eastern Maninkakan" => EasternManinkakan => "emk",
211 b"ENG " => "English" => English => "eng",
212 b"ERZ " => "Erzya" => Erzya => "myv",
213 b"ESP " => "Spanish" => Spanish => "spa",
214 b"ESU " => "Central Yupik" => CentralYupik => "esu",
215 b"ETI " => "Estonian" => Estonian => "est",
216 b"EUQ " => "Basque" => Basque => "eus",
217 b"EVK " => "Evenki" => Evenki => "evn",
218 b"EVN " => "Even" => Even => "eve",
219 b"EWE " => "Ewe" => Ewe => "ewe",
220 b"FAN " => "French Antillean" => FrenchAntillean => "acf",
221 b"FAN0" => "Fang" => Fang => "fan",
222 b"FAR " => "Persian" => Persian => "fas",
223 b"FAT " => "Fanti" => Fanti => "fat",
224 b"FIN " => "Finnish" => Finnish => "fin",
225 b"FJI " => "Fijian" => Fijian => "fij",
226 b"FLE " => "Dutch (Flemish)" => DutchFlemish => "vls",
227 b"FMP " => "Fe’fe’" => Fefe => "fmp",
228 b"FNE " => "Forest Nenets" => ForestNenets => "enf",
229 b"FON " => "Fon" => Fon => "fon",
230 b"FOS " => "Faroese" => Faroese => "fao",
231 b"FRA " => "French" => French => "fra",
232 b"FRC " => "Cajun French" => CajunFrench => "frc",
233 b"FRI " => "Frisian" => Frisian => "fry",
234 b"FRL " => "Friulian" => Friulian => "fur",
235 b"FRP " => "Arpitan" => Arpitan => "frp",
236 b"FTA " => "Futa" => Futa => "fuf",
237 b"FUL " => "Fulah" => Fulah => "ful",
238 b"FUV " => "Nigerian Fulfulde" => NigerianFulfulde => "fuv",
239 b"GAD " => "Ga" => Ga => "gaa",
240 b"GAE " => "Scottish Gaelic (Gaelic)" => ScottishGaelic => "gla",
241 b"GAG " => "Gagauz" => Gagauz => "gag",
242 b"GAL " => "Galician" => Galician => "glg",
243 b"GAR " => "Garshuni" => Garshuni => "",
244 b"GAW " => "Garhwali" => Garhwali => "gbm",
245 b"GEZ " => "Ge’ez" => Geez => "gez",
246 b"GIH " => "Githabul" => Githabul => "gih",
247 b"GIL " => "Gilyak" => Gilyak => "niv",
248 b"GIL0" => "Kiribati (Gilbertese)" => Kiribati => "gil",
249 b"GKP " => "Kpelle (Guinea)" => KpelleGuinea => "gkp",
250 b"GLK " => "Gilaki" => Gilaki => "glk",
251 b"GMZ " => "Gumuz" => Gumuz => "guk",
252 b"GNN " => "Gumatj" => Gumatj => "gnn",
253 b"GOG " => "Gogo" => Gogo => "gog",
254 b"GON " => "Gondi" => Gondi => "gon",
255 b"GRN " => "Greenlandic" => Greenlandic => "kal",
256 b"GRO " => "Garo" => Garo => "grt",
257 b"GUA " => "Guarani" => Guarani => "grn",
258 b"GUC " => "Wayuu" => Wayuu => "guc",
259 b"GUF " => "Gupapuyngu" => Gupapuyngu => "guf",
260 b"GUJ " => "Gujarati" => Gujarati => "guj",
261 b"GUZ " => "Gusii" => Gusii => "guz",
262 b"HAI " => "Haitian (Haitian Creole)" => Haitian => "hat",
263 b"HAL " => "Halam" => Halam => "flm",
264 b"HAR " => "Harauti" => Harauti => "hoj",
265 b"HAU " => "Hausa" => Hausa => "hau",
266 b"HAW " => "Hawaiian" => Hawaiian => "haw",
267 b"HAY " => "Haya" => Haya => "hay",
268 b"HAZ " => "Hazaragi" => Hazaragi => "haz",
269 b"HBN " => "Hammer-Banna" => HammerBanna => "amf",
270 b"HER " => "Herero" => Herero => "her",
271 b"HIL " => "Hiligaynon" => Hiligaynon => "hil",
272 b"HIN " => "Hindi" => Hindi => "hin",
273 b"HMA " => "High Mari" => HighMari => "mrj",
274 b"HMN " => "Hmong" => Hmong => "hmn",
275 b"HMO " => "Hiri Motu" => HiriMotu => "hmo",
276 b"HND " => "Hindko" => Hindko => "hno, hnd",
277 b"HO " => "Ho" => Ho => "hoc",
278 b"HRI " => "Harari" => Harari => "har",
279 b"HRV " => "Croatian" => Croatian => "hrv",
280 b"HUN " => "Hungarian" => Hungarian => "hun",
281 b"HYE " => "Armenian" => Armenian => "hye",
282 b"HYE0" => "Armenian East" => ArmenianEast => "hye",
283 b"IBA " => "Iban" => Iban => "iba",
284 b"IBB " => "Ibibio" => Ibibio => "ibb",
285 b"IBO " => "Igbo" => Igbo => "ibo",
286 b"IJO " => "Ijo languages" => Ijolanguages => "ijc",
287 b"IDO " => "Ido" => Ido => "ido",
288 b"ILE " => "Interlingue" => Interlingue => "ile",
289 b"ILO " => "Ilokano" => Ilokano => "ilo",
290 b"INA " => "Interlingua" => Interlingua => "ina",
291 b"IND " => "Indonesian" => Indonesian => "ind",
292 b"ING " => "Ingush" => Ingush => "inh",
293 b"INU " => "Inuktitut" => Inuktitut => "iku",
294 b"IPK " => "Inupiat" => Inupiat => "ipk",
295 b"IPPH" => "Phonetic transcription, IPA" => InternationalPhoneticAlphabet => "",
296 b"IRI " => "Irish" => Irish => "gle",
297 b"IRT " => "Irish Traditional" => IrishTraditional => "gle",
298 b"ISL " => "Icelandic" => Icelandic => "isl",
299 b"ISM " => "Inari Sami" => InariSami => "smn",
300 b"ITA " => "Italian" => Italian => "ita",
301 b"IWR " => "Hebrew" => Hebrew => "heb",
302 b"JAM " => "Jamaican Creole" => JamaicanCreole => "jam",
303 b"JAN " => "Japanese" => Japanese => "jpn",
304 b"JAV " => "Javanese" => Javanese => "jav",
305 b"JBO " => "Lojban" => Lojban => "jbo",
306 b"JCT " => "Krymchak" => Krymchak => "jct",
307 b"JII " => "Yiddish" => Yiddish => "yid",
308 b"JUD " => "Ladino" => Ladino => "lad",
309 b"JUL " => "Jula" => Jula => "dyu",
310 b"KAB " => "Kabardian" => Kabardian => "kbd",
311 b"KAB0" => "Kabyle" => Kabyle => "kab",
312 b"KAC " => "Kachchi" => Kachchi => "kfr",
313 b"KAL " => "Kalenjin" => Kalenjin => "kln",
314 b"KAN " => "Kannada" => Kannada => "kan",
315 b"KAR " => "Karachay" => Karachay => "krc",
316 b"KAT " => "Georgian" => Georgian => "kat",
317 b"KAZ " => "Kazakh" => Kazakh => "kaz",
318 b"KDE " => "Makonde" => Makonde => "kde",
319 b"KEA " => "Kabuverdianu (Crioulo)" => Kabuverdianu => "kea",
320 b"KEB " => "Kebena" => Kebena => "ktb",
321 b"KEK " => "Kekchi" => Kekchi => "kek",
322 b"KGE " => "Khutsuri Georgian" => KhutsuriGeorgian => "kat",
323 b"KHA " => "Khakass" => Khakass => "kjh",
324 b"KHK " => "Khanty-Kazim" => KhantyKazim => "kca",
325 b"KHM " => "Khmer" => Khmer => "khm",
326 b"KHS " => "Khanty-Shurishkar" => KhantyShurishkar => "kca",
327 b"KHT " => "Khamti Shan" => KhamtiShan => "kht",
328 b"KHV " => "Khanty-Vakhi" => KhantyVakhi => "kca",
329 b"KHW " => "Khowar" => Khowar => "khw",
330 b"KIK " => "Kikuyu (Gikuyu)" => Kikuyu => "kik",
331 b"KIR " => "Kirghiz (Kyrgyz)" => Kirghiz => "kir",
332 b"KIS " => "Kisii" => Kisii => "kqs, kss",
333 b"KIU " => "Kirmanjki" => Kirmanjki => "kiu",
334 b"KJD " => "Southern Kiwai" => SouthernKiwai => "kjd",
335 b"KJP " => "Eastern Pwo Karen" => EasternPwoKaren => "kjp",
336 b"KKN " => "Kokni" => Kokni => "kex",
337 b"KLM " => "Kalmyk" => Kalmyk => "xal",
338 b"KMB " => "Kamba" => Kamba => "kam",
339 b"KMN " => "Kumaoni" => Kumaoni => "kfy",
340 b"KMO " => "Komo" => Komo => "kmw",
341 b"KMS " => "Komso" => Komso => "kxc",
342 b"KMZ " => "Khorasani Turkic" => KhorasaniTurkic => "kmz",
343 b"KNR " => "Kanuri" => Kanuri => "kau",
344 b"KOD " => "Kodagu" => Kodagu => "kfa",
345 b"KOH " => "Korean Old Hangul" => KoreanOldHangul => "okm",
346 b"KOK " => "Konkani" => Konkani => "kok",
347 b"KON " => "Kikongo" => Kikongo => "ktu",
348 b"KOM " => "Komi" => Komi => "kom",
349 b"KON0" => "Kongo" => Kongo => "kon",
350 b"KOP " => "Komi-Permyak" => KomiPermyak => "koi",
351 b"KOR " => "Korean" => Korean => "kor",
352 b"KOS " => "Kosraean" => Kosraean => "kos",
353 b"KOZ " => "Komi-Zyrian" => KomiZyrian => "kpv",
354 b"KPL " => "Kpelle" => Kpelle => "kpe",
355 b"KRI " => "Krio" => Krio => "kri",
356 b"KRK " => "Karakalpak" => Karakalpak => "kaa",
357 b"KRL " => "Karelian" => Karelian => "krl",
358 b"KRM " => "Karaim" => Karaim => "kdr",
359 b"KRN " => "Karen" => Karen => "kar",
360 b"KRT " => "Koorete" => Koorete => "kqy",
361 b"KSH " => "Kashmiri" => Kashmiri => "kas",
362 b"KSH0" => "Ripuarian" => Ripuarian => "ksh",
363 b"KSI " => "Khasi" => Khasi => "kha",
364 b"KSM " => "Kildin Sami" => KildinSami => "sjd",
365 b"KSW " => "S’gaw Karen" => SgawKaren => "ksw",
366 b"KUA " => "Kuanyama" => Kuanyama => "kua",
367 b"KUI " => "Kui" => Kui => "kxu",
368 b"KUL " => "Kulvi" => Kulvi => "kfx",
369 b"KUM " => "Kumyk" => Kumyk => "kum",
370 b"KUR " => "Kurdish" => Kurdish => "kur",
371 b"KUU " => "Kurukh" => Kurukh => "kru",
372 b"KUY " => "Kuy" => Kuy => "kdt",
373 b"KYK " => "Koryak" => Koryak => "kpy",
374 b"KYU " => "Western Kayah" => WesternKayah => "kyu",
375 b"LAD " => "Ladin" => Ladin => "lld",
376 b"LAH " => "Lahuli" => Lahuli => "bfu",
377 b"LAK " => "Lak" => Lak => "lbe",
378 b"LAM " => "Lambani" => Lambani => "lmn",
379 b"LAO " => "Lao" => Lao => "lao",
380 b"LAT " => "Latin" => Latin => "lat",
381 b"LAZ " => "Laz" => Laz => "lzz",
382 b"LCR " => "L-Cree" => LCree => "crm",
383 b"LDK " => "Ladakhi" => Ladakhi => "lbj",
384 b"LEZ " => "Lezgi" => Lezgi => "lez",
385 b"LIJ " => "Ligurian" => Ligurian => "lij",
386 b"LIM " => "Limburgish" => Limburgish => "lim",
387 b"LIN " => "Lingala" => Lingala => "lin",
388 b"LIS " => "Lisu" => Lisu => "lis",
389 b"LJP " => "Lampung" => Lampung => "ljp",
390 b"LKI " => "Laki" => Laki => "lki",
391 b"LMA " => "Low Mari" => LowMari => "mhr",
392 b"LMB " => "Limbu" => Limbu => "lif",
393 b"LMO " => "Lombard" => Lombard => "lmo",
394 b"LMW " => "Lomwe" => Lomwe => "ngl",
395 b"LOM " => "Loma" => Loma => "lom",
396 b"LRC " => "Luri" => Luri => "lrc, luz, bqi, zum",
397 b"LSB " => "Lower Sorbian" => LowerSorbian => "dsb",
398 b"LSM " => "Lule Sami" => LuleSami => "smj",
399 b"LTH " => "Lithuanian" => Lithuanian => "lit",
400 b"LTZ " => "Luxembourgish" => Luxembourgish => "ltz",
401 b"LUA " => "Luba-Lulua" => LubaLulua => "lua",
402 b"LUB " => "Luba-Katanga" => LubaKatanga => "lub",
403 b"LUG " => "Ganda" => Ganda => "lug",
404 b"LUH " => "Luyia" => Luyia => "luy",
405 b"LUO " => "Luo" => Luo => "luo",
406 b"LVI " => "Latvian" => Latvian => "lav",
407 b"MAD " => "Madura" => Madura => "mad",
408 b"MAG " => "Magahi" => Magahi => "mag",
409 b"MAH " => "Marshallese" => Marshallese => "mah",
410 b"MAJ " => "Majang" => Majang => "mpe",
411 b"MAK " => "Makhuwa" => Makhuwa => "vmw",
412 b"MAL " => "Malayalam" => Malayalam => "mal",
413 b"MAM " => "Mam" => Mam => "mam",
414 b"MAN " => "Mansi" => Mansi => "mns",
415 b"MAP " => "Mapudungun" => Mapudungun => "arn",
416 b"MAR " => "Marathi" => Marathi => "mar",
417 b"MAW " => "Marwari" => Marwari => "mwr, dhd, rwr, mve, wry, mtr, swv",
418 b"MBN " => "Mbundu" => Mbundu => "kmb",
419 b"MBO " => "Mbo" => Mbo => "mbo",
420 b"MCH " => "Manchu" => Manchu => "mnc",
421 b"MCR " => "Moose Cree" => MooseCree => "crm",
422 b"MDE " => "Mende" => Mende => "men",
423 b"MDR " => "Mandar" => Mandar => "mdr",
424 b"MEN " => "Me’en" => Meen => "mym",
425 b"MER " => "Meru" => Meru => "mer",
426 b"MFE " => "Morisyen" => Morisyen => "mfe",
427 b"MIN " => "Minangkabau" => Minangkabau => "min",
428 b"MIZ " => "Mizo" => Mizo => "lus",
429 b"MKD " => "Macedonian" => Macedonian => "mkd",
430 b"MKR " => "Makasar" => Makasar => "mak",
431 b"MKW " => "Kituba" => Kituba => "mkw",
432 b"MLE " => "Male" => Male => "mdy",
433 b"MLG " => "Malagasy" => Malagasy => "mlg",
434 b"MLN " => "Malinke" => Malinke => "mlq",
435 b"MLR " => "Malayalam Reformed" => MalayalamReformed => "mal",
436 b"MLY " => "Malay" => Malay => "msa",
437 b"MND " => "Mandinka" => Mandinka => "mnk",
438 b"MNG " => "Mongolian" => Mongolian => "mon",
439 b"MNI " => "Manipuri" => Manipuri => "mni",
440 b"MNK " => "Maninka" => Maninka => "man, mnk, myq, mku, msc, emk, mwk, mlq",
441 b"MNX " => "Manx" => Manx => "glv",
442 b"MOH " => "Mohawk" => Mohawk => "moh",
443 b"MOK " => "Moksha" => Moksha => "mdf",
444 b"MOL " => "Moldavian" => Moldavian => "mol",
445 b"MON " => "Mon" => Mon => "mnw",
446 b"MOR " => "Moroccan" => Moroccan => "",
447 b"MOS " => "Mossi" => Mossi => "mos",
448 b"MRI " => "Maori" => Maori => "mri",
449 b"MTH " => "Maithili" => Maithili => "mai",
450 b"MTS " => "Maltese" => Maltese => "mlt",
451 b"MUN " => "Mundari" => Mundari => "unr",
452 b"MUS " => "Muscogee" => Muscogee => "mus",
453 b"MWL " => "Mirandese" => Mirandese => "mwl",
454 b"MWW " => "Hmong Daw" => HmongDaw => "mww",
455 b"MYN " => "Mayan" => Mayan => "myn",
456 b"MZN " => "Mazanderani" => Mazanderani => "mzn",
457 b"NAG " => "Naga-Assamese" => NagaAssamese => "nag",
458 b"NAH " => "Nahuatl" => Nahuatl => "nah",
459 b"NAN " => "Nanai" => Nanai => "gld",
460 b"NAP " => "Neapolitan" => Neapolitan => "nap",
461 b"NAS " => "Naskapi" => Naskapi => "nsk",
462 b"NAU " => "Nauruan" => Nauruan => "nau",
463 b"NAV " => "Navajo" => Navajo => "nav",
464 b"NCR " => "N-Cree" => NCree => "csw",
465 b"NDB " => "Ndebele" => Ndebele => "nbl, nde",
466 b"NDC " => "Ndau" => Ndau => "ndc",
467 b"NDG " => "Ndonga" => Ndonga => "ndo",
468 b"NDS " => "Low Saxon" => LowSaxon => "nds",
469 b"NEP " => "Nepali" => Nepali => "nep",
470 b"NEW " => "Newari" => Newari => "new",
471 b"NGA " => "Ngbaka" => Ngbaka => "nga",
472 b"NGR " => "Nagari" => Nagari => "",
473 b"NHC " => "Norway House Cree" => NorwayHouseCree => "csw",
474 b"NIS " => "Nisi" => Nisi => "dap",
475 b"NIU " => "Niuean" => Niuean => "niu",
476 b"NKL " => "Nyankole" => Nyankole => "nyn",
477 b"NKO " => "N’Ko" => NKo => "nqo",
478 b"NLD " => "Dutch" => Dutch => "nld",
479 b"NOE " => "Nimadi" => Nimadi => "noe",
480 b"NOG " => "Nogai" => Nogai => "nog",
481 b"NOR " => "Norwegian" => Norwegian => "nob",
482 b"NOV " => "Novial" => Novial => "nov",
483 b"NSM " => "Northern Sami" => NorthernSami => "sme",
484 b"NSO " => "Sotho, Northern" => NorthernSotho => "nso",
485 b"NTA " => "Northern Tai" => NorthernTai => "nod",
486 b"NTO " => "Esperanto" => Esperanto => "epo",
487 b"NYM " => "Nyamwezi" => Nyamwezi => "nym",
488 b"NYN " => "Norwegian Nynorsk (Nynorsk, Norwegian)" => NorwegianNynorsk => "nno",
489 b"NZA " => "Mbembe Tigon" => MbembeTigon => "nza",
490 b"OCI " => "Occitan" => Occitan => "oci",
491 b"OCR " => "Oji-Cree" => OjiCree => "ojs",
492 b"OJB " => "Ojibway" => Ojibway => "oji",
493 b"ORI " => "Odia" => Odia => "ori",
494 b"ORO " => "Oromo" => Oromo => "orm",
495 b"OSS " => "Ossetian" => Ossetian => "oss",
496 b"PAA " => "Palestinian Aramaic" => PalestinianAramaic => "sam",
497 b"PAG " => "Pangasinan" => Pangasinan => "pag",
498 b"PAL " => "Pali" => Pali => "pli",
499 b"PAM " => "Pampangan" => Pampangan => "pam",
500 b"PAN " => "Punjabi" => Punjabi => "pan",
501 b"PAP " => "Palpa" => Palpa => "plp",
502 b"PAP0" => "Papiamentu" => Papiamentu => "pap",
503 b"PAS " => "Pashto" => Pashto => "pus",
504 b"PAU " => "Palauan" => Palauan => "pau",
505 b"PCC " => "Bouyei" => Bouyei => "pcc",
506 b"PCD " => "Picard" => Picard => "pcd",
507 b"PDC " => "Pennsylvania German" => PennsylvaniaGerman => "pdc",
508 b"PGR " => "Polytonic Greek" => PolytonicGreek => "ell",
509 b"PHK " => "Phake" => Phake => "phk",
510 b"PIH " => "Norfolk" => Norfolk => "pih",
511 b"PIL " => "Filipino" => Filipino => "fil",
512 b"PLG " => "Palaung" => Palaung => "pce, rbb, pll",
513 b"PLK " => "Polish" => Polish => "pol",
514 b"PMS " => "Piemontese" => Piemontese => "pms",
515 b"PNB " => "Western Panjabi" => WesternPanjabi => "pnb",
516 b"POH " => "Pocomchi" => Pocomchi => "poh",
517 b"PON " => "Pohnpeian" => Pohnpeian => "pon",
518 b"PRO " => "Provencal" => Provencal => "pro",
519 b"PTG " => "Portuguese" => Portuguese => "por",
520 b"PWO " => "Western Pwo Karen" => WesternPwoKaren => "pwo",
521 b"QIN " => "Chin" => Chin => "bgr, cnh, cnw, czt, sez, tcp, csy, ctd, flm, pck, tcz, zom, \
522 cmr, dao, hlt, cka, cnk, mrh, mwg, cbl, cnb, csh",
523 b"QUC " => "K’iche’" => Kiche => "quc",
524 b"QUH " => "Quechua (Bolivia)" => QuechuaBolivia => "quh",
525 b"QUZ " => "Quechua" => Quechua => "quz",
526 b"QVI " => "Quechua (Ecuador)" => QuechuaEcuador => "qvi",
527 b"QWH " => "Quechua (Peru)" => QuechuaPeru => "qwh",
528 b"RAJ " => "Rajasthani" => Rajasthani => "raj",
529 b"RAR " => "Rarotongan" => Rarotongan => "rar",
530 b"RBU " => "Russian Buriat" => RussianBuriat => "bxr",
531 b"RCR " => "R-Cree" => RCree => "atj",
532 b"REJ " => "Rejang" => Rejang => "rej",
533 b"RIA " => "Riang" => Riang => "ria",
534 b"RIF " => "Tarifit" => Tarifit => "rif",
535 b"RIT " => "Ritarungo" => Ritarungo => "rit",
536 b"RKW " => "Arakwal" => Arakwal => "rkw",
537 b"RMS " => "Romansh" => Romansh => "roh",
538 b"RMY " => "Vlax Romani" => VlaxRomani => "rmy",
539 b"ROM " => "Romanian" => Romanian => "ron",
540 b"ROY " => "Romany" => Romany => "rom",
541 b"RSY " => "Rusyn" => Rusyn => "rue",
542 b"RTM " => "Rotuman" => Rotuman => "rtm",
543 b"RUA " => "Kinyarwanda" => Kinyarwanda => "kin",
544 b"RUN " => "Rundi" => Rundi => "run",
545 b"RUP " => "Aromanian" => Aromanian => "rup",
546 b"RUS " => "Russian" => Russian => "rus",
547 b"SAD " => "Sadri" => Sadri => "sck",
548 b"SAN " => "Sanskrit" => Sanskrit => "san",
549 b"SAS " => "Sasak" => Sasak => "sas",
550 b"SAT " => "Santali" => Santali => "sat",
551 b"SAY " => "Sayisi" => Sayisi => "chp",
552 b"SCN " => "Sicilian" => Sicilian => "scn",
553 b"SCO " => "Scots" => Scots => "sco",
554 b"SEK " => "Sekota" => Sekota => "xan",
555 b"SEL " => "Selkup" => Selkup => "sel",
556 b"SGA " => "Old Irish" => OldIrish => "sga",
557 b"SGO " => "Sango" => Sango => "sag",
558 b"SGS " => "Samogitian" => Samogitian => "sgs",
559 b"SHI " => "Tachelhit" => Tachelhit => "shi",
560 b"SHN " => "Shan" => Shan => "shn",
561 b"SIB " => "Sibe" => Sibe => "sjo",
562 b"SID " => "Sidamo" => Sidamo => "sid",
563 b"SIG " => "Silte Gurage" => SilteGurage => "xst",
564 b"SKS " => "Skolt Sami" => SkoltSami => "sms",
565 b"SKY " => "Slovak" => Slovak => "slk",
566 b"SCS " => "North Slavey" => NorthSlavey => "scs",
567 b"SLA " => "Slavey" => Slavey => "scs, xsl",
568 b"SLV " => "Slovenian" => Slovenian => "slv",
569 b"SML " => "Somali" => Somali => "som",
570 b"SMO " => "Samoan" => Samoan => "smo",
571 b"SNA " => "Sena" => Sena => "seh",
572 b"SNA0" => "Shona" => Shona => "sna",
573 b"SND " => "Sindhi" => Sindhi => "snd",
574 b"SNH " => "Sinhala (Sinhalese)" => Sinhala => "sin",
575 b"SNK " => "Soninke" => Soninke => "snk",
576 b"SOG " => "Sodo Gurage" => SodoGurage => "gru",
577 b"SOP " => "Songe" => Songe => "sop",
578 b"SOT " => "Sotho, Southern" => SouthernSotho => "sot",
579 b"SQI " => "Albanian" => Albanian => "sqi",
580 b"SRB " => "Serbian" => Serbian => "srp",
581 b"SRD " => "Sardinian" => Sardinian => "srd",
582 b"SRK " => "Saraiki" => Saraiki => "skr",
583 b"SRR " => "Serer" => Serer => "srr",
584 b"SSL " => "South Slavey" => SouthSlavey => "xsl",
585 b"SSM " => "Southern Sami" => SouthernSami => "sma",
586 b"STQ " => "Saterland Frisian" => SaterlandFrisian => "stq",
587 b"SUK " => "Sukuma" => Sukuma => "suk",
588 b"SUN " => "Sundanese" => Sundanese => "sun",
589 b"SUR " => "Suri" => Suri => "suq",
590 b"SVA " => "Svan" => Svan => "sva",
591 b"SVE " => "Swedish" => Swedish => "swe",
592 b"SWA " => "Swadaya Aramaic" => SwadayaAramaic => "aii",
593 b"SWK " => "Swahili" => Swahili => "swa",
594 b"SWZ " => "Swati" => Swati => "ssw",
595 b"SXT " => "Sutu" => Sutu => "ngo",
596 b"SXU " => "Upper Saxon" => UpperSaxon => "sxu",
597 b"SYL " => "Sylheti" => Sylheti => "syl",
598 b"SYR " => "Syriac" => Syriac => "syr",
599 b"SZL " => "Silesian" => Silesian => "szl",
600 b"TAB " => "Tabasaran" => Tabasaran => "tab",
601 b"TAJ " => "Tajiki" => Tajiki => "tgk",
602 b"TAM " => "Tamil" => Tamil => "tam",
603 b"TAT " => "Tatar" => Tatar => "tat",
604 b"TCR " => "TH-Cree" => THCree => "cwd",
605 b"TDD " => "Dehong Dai" => DehongDai => "tdd",
606 b"TEL " => "Telugu" => Telugu => "tel",
607 b"TET " => "Tetum" => Tetum => "tet",
608 b"TGL " => "Tagalog" => Tagalog => "tgl",
609 b"TGN " => "Tongan" => Tongan => "ton",
610 b"TGR " => "Tigre" => Tigre => "tig",
611 b"TGY " => "Tigrinya" => Tigrinya => "tir",
612 b"THA " => "Thai" => Thai => "tha",
613 b"THT " => "Tahitian" => Tahitian => "tah",
614 b"TIB " => "Tibetan" => Tibetan => "bod",
615 b"TIV " => "Tiv" => Tiv => "tiv",
616 b"TKM " => "Turkmen" => Turkmen => "tuk",
617 b"TMH " => "Tamashek" => Tamashek => "tmh",
618 b"TMN " => "Temne" => Temne => "tem",
619 b"TNA " => "Tswana" => Tswana => "tsn",
620 b"TNE " => "Tundra Nenets" => TundraNenets => "enh",
621 b"TNG " => "Tonga" => Tonga => "toi",
622 b"TOD " => "Todo" => Todo => "xal",
623 b"TOD0" => "Toma" => Toma => "tod",
624 b"TPI " => "Tok Pisin" => TokPisin => "tpi",
625 b"TRK " => "Turkish" => Turkish => "tur",
626 b"TSG " => "Tsonga" => Tsonga => "tso",
627 b"TUA " => "Turoyo Aramaic" => TuroyoAramaic => "tru",
628 b"TUM " => "Tulu" => Tulu => "tum",
629 b"TUL " => "Tumbuka" => Tumbuka => "tcy",
630 b"TUV " => "Tuvin" => Tuvin => "tyv",
631 b"TVL " => "Tuvalu" => Tuvalu => "tvl",
632 b"TWI " => "Twi" => Twi => "aka",
633 b"TYZ " => "Tày" => Tay => "tyz",
634 b"TZM " => "Tamazight" => Tamazight => "tzm",
635 b"TZO " => "Tzotzil" => Tzotzil => "tzo",
636 b"UDM " => "Udmurt" => Udmurt => "udm",
637 b"UKR " => "Ukrainian" => Ukrainian => "ukr",
638 b"UMB " => "Umbundu" => Umbundu => "umb",
639 b"URD " => "Urdu" => Urdu => "urd",
640 b"USB " => "Upper Sorbian" => UpperSorbian => "hsb",
641 b"UYG " => "Uyghur" => Uyghur => "uig",
642 b"UZB " => "Uzbek" => Uzbek => "uzb",
643 b"VEC " => "Venetian" => Venetian => "vec",
644 b"VEN " => "Venda" => Venda => "ven",
645 b"VIT " => "Vietnamese" => Vietnamese => "vie",
646 b"VOL " => "Volapük" => Volapuk => "vol",
647 b"VRO " => "Võro" => Voro => "vro",
648 b"WA " => "Wa" => Wa => "wbm",
649 b"WAG " => "Wagdi" => Wagdi => "wbr",
650 b"WAR " => "Waray-Waray" => WarayWaray => "war",
651 b"WCR " => "West-Cree" => WestCree => "crk",
652 b"WEL " => "Welsh" => Welsh => "cym",
653 b"WLN " => "Walloon" => Walloon => "wln",
654 b"WLF " => "Wolof" => Wolof => "wol",
655 b"WTM " => "Mewati" => Mewati => "wtm",
656 b"XBD " => "Lü" => Lu => "khb",
657 b"XHS " => "Xhosa" => Xhosa => "xho",
658 b"XJB " => "Minjangbal" => Minjangbal => "xjb",
659 b"XOG " => "Soga" => Soga => "xog",
660 b"XPE " => "Kpelle (Liberia)" => KpelleLiberia => "xpe",
661 b"YAK " => "Sakha" => Sakha => "sah",
662 b"YAO " => "Yao" => Yao => "yao",
663 b"YAP " => "Yapese" => Yapese => "yap",
664 b"YBA " => "Yoruba" => Yoruba => "yor",
665 b"YCR " => "Y-Cree" => YCree => "cre",
666 b"YIC " => "Yi Classic" => YiClassic => "",
667 b"YIM " => "Yi Modern" => YiModern => "iii",
668 b"ZEA " => "Zealandic" => Zealandic => "zea",
669 b"ZGH " => "Standard Morrocan Tamazigh" => StandardMorrocanTamazigh => "zgh",
670 b"ZHA " => "Zhuang" => Zhuang => "zha",
671 b"ZHH " => "Chinese, Hong Kong SAR" => Chinese => "zho",
672 b"ZHP " => "Chinese Phonetic" => ChinesePhonetic => "zho",
673 b"ZHS " => "Chinese Simplified" => ChineseSimplified => "zho",
674 b"ZHT " => "Chinese Traditional" => ChineseTraditional => "zho",
675 b"ZND " => "Zande" => Zande => "zne",
676 b"ZUL " => "Zulu" => Zulu => "zul",
677 b"ZZA " => "Zazaki" => Zazaki => "zza",
678}
679
680#[cfg(test)]
681mod tests {
682 use truetype::Tag;
683
684 use super::Language;
685
686 #[test]
687 fn codes() {
688 assert_eq!(Language::from_tag(&Tag(*b"IPPH")).codes().count(), 0);
689 assert_eq!(Language::from_tag(&Tag(*b"ATH ")).codes().count(), 43);
690 }
691}