ttf_name_decoder/
macintosh.rs

1use crate::decoders;
2use crate::macros::generate_id_table;
3use crate::{Decoder, Error, Result};
4
5pub fn get_decoder(encoding_id: u16, language_id: u16) -> Result<Decoder> {
6    get_decoder_from_language_id(language_id).or(get_decoder_from_encoding_id(encoding_id))
7}
8
9fn get_decoder_from_language_id(language_id: u16) -> Result<Decoder> {
10    match LanguageId::try_from(language_id)? {
11        _ => Err(Error::UnsupportedLanguage),
12    }
13}
14
15fn get_decoder_from_encoding_id(encoding_id: u16) -> Result<Decoder> {
16    match EncodingId::try_from(encoding_id)? {
17        EncodingId::Roman => Ok(decoders::mac_roman_decode),
18        EncodingId::Japanese => Ok(decoders::shift_jis_decode),
19        EncodingId::ChineseTraditional => Ok(decoders::big5_decode),
20        EncodingId::Korean => Ok(decoders::euc_kr_decode),
21        EncodingId::Arabic => Ok(decoders::iso_8859_6_decode),
22        EncodingId::Hebrew => Ok(decoders::iso_8859_8_decode),
23        EncodingId::Greek => Ok(decoders::iso_8859_7_decode),
24        EncodingId::Russian => Ok(decoders::cyrillic_decode),
25        EncodingId::ChineseSimplified => Ok(decoders::gbk_decode),
26        _ => Err(Error::UnsupportedEncoding),
27    }
28}
29
30// ref. https://docs.microsoft.com/en-us/typography/opentype/spec/name#macintosh-encoding-ids-script-manager-codes
31generate_id_table!(EncodingId, Error::UnsupportedEncoding, {
32    Roman: 0,
33    Japanese: 1,
34    ChineseTraditional: 2,
35    Korean: 3,
36    Arabic: 4,
37    Hebrew: 5,
38    Greek: 6,
39    Russian: 7,
40    RSymbol: 8,
41    Devanagari: 9,
42    Gurmukhi: 10,
43    Gujarati: 11,
44    Oriya: 12,
45    Bengali: 13,
46    Tamil: 14,
47    Telugu: 15,
48    Kannada: 16,
49    Malayalam: 17,
50    Sinhalese: 18,
51    Burmese: 19,
52    Khmer: 20,
53    Thai: 21,
54    Laotian: 22,
55    Georgian: 23,
56    Armenian: 24,
57    ChineseSimplified: 25,
58    Tibetan: 26,
59    Mongolian: 27,
60    Geez: 28,
61    Slavic: 29,
62    Vietnamese: 30,
63    Sindhi: 31,
64    Uninterpreted: 32,
65});
66
67// ref. https://docs.microsoft.com/en-us/typography/opentype/spec/name#macintosh-language-ids
68generate_id_table! (LanguageId, Error::UnsupportedLanguage, {
69    English: 0,
70    French: 1,
71    German: 2,
72    Italian: 3,
73    Dutch: 4,
74    Swedish: 5,
75    Spanish: 6,
76    Danish: 7,
77    Portuguese: 8,
78    Norwegian: 9,
79    Hebrew: 10,
80    Japanese: 11,
81    Arabic: 12,
82    Finnish: 13,
83    Greek: 14,
84    Icelandic: 15,
85    Maltese: 16,
86    Turkish: 17,
87    Croatian: 18,
88    ChineseTraditional: 19,
89    Urdu: 20,
90    Hindi: 21,
91    Thai: 22,
92    Korean: 23,
93    Lithuanian: 24,
94    Polish: 25,
95    Hungarian: 26,
96    Estonian: 27,
97    Latvian: 28,
98    Sami: 29,
99    Faroese: 30,
100    FarsiPersian: 31,
101    Russian: 32,
102    ChineseSimplified: 33,
103    Flemish: 34,
104    IrishGaelic: 35,
105    Albanian: 36,
106    Romanian: 37,
107    Czech: 38,
108    Slovak: 39,
109    Slovenian: 40,
110    Yiddish: 41,
111    Serbian: 42,
112    Macedonian: 43,
113    Bulgarian: 44,
114    Ukrainian: 45,
115    Byelorussian: 46,
116    Uzbek: 47,
117    Kazakh: 48,
118    AzerbaijaniCyrillicScript: 49,
119    AzerbaijaniArabicScript: 50,
120    Armenian: 51,
121    Georgian: 52,
122    Moldavian: 53,
123    Kirghiz: 54,
124    Tajiki: 55,
125    Turkmen: 56,
126    MongolianMongolianScript: 57,
127    MongolianCyrillicScript: 58,
128    Pashto: 59,
129    Kurdish: 60,
130    Kashmiri: 61,
131    Sindhi: 62,
132    Tibetan: 63,
133    Nepali: 64,
134    Sanskrit: 65,
135    Marathi: 66,
136    Bengali: 67,
137    Assamese: 68,
138    Gujarati: 69,
139    Punjabi: 70,
140    Oriya: 71,
141    Malayalam: 72,
142    Kannada: 73,
143    Tamil: 74,
144    Telugu: 75,
145    Sinhalese: 76,
146    Burmese: 77,
147    Khmer: 78,
148    Lao: 79,
149    Vietnamese: 80,
150    Indonesian: 81,
151    Tagalog: 82,
152    MalayRomanScript: 83,
153    MalayArabicScript: 84,
154    Amharic: 85,
155    Tigrinya: 86,
156    Galla: 87,
157    Somali: 88,
158    Swahili: 89,
159    KinyarwandaRuanda: 90,
160    Rundi: 91,
161    NyanjaChewa: 92,
162    Malagasy: 93,
163    Esperanto: 94,
164    Welsh: 128,
165    Basque: 129,
166    Catalan: 130,
167    Latin: 131,
168    Quechua: 132,
169    Guarani: 133,
170    Aymara: 134,
171    Tatar: 135,
172    Uighur: 136,
173    Dzongkha: 137,
174    JavaneseRomanScript: 138,
175    SundaneseRomanScript: 139,
176    Galician: 140,
177    Afrikaans: 141,
178    Breton: 142,
179    Inuktitut: 143,
180    ScottishGaelic: 144,
181    ManxGaelic: 145,
182    IrishGaelicWithDotAbove: 146,
183    Tongan: 147,
184    GreekPolytonic: 148,
185    Greenlandic: 149,
186    AzerbaijaniRomanScript: 150,
187});