Coverage Report

Created: 2025-07-11 06:34

/src/harfbuzz/src/hb-ot-name-language-static.hh
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright © 2018  Google, Inc.
3
 *
4
 *  This is part of HarfBuzz, a text shaping library.
5
 *
6
 * Permission is hereby granted, without written agreement and without
7
 * license or royalty fees, to use, copy, modify, and distribute this
8
 * software and its documentation for any purpose, provided that the
9
 * above copyright notice and the following two paragraphs appear in
10
 * all copies of this software.
11
 *
12
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16
 * DAMAGE.
17
 *
18
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23
 *
24
 * Google Author(s): Behdad Esfahbod
25
 */
26
27
#ifndef HB_OT_NAME_LANGUAGE_STATIC_HH
28
#define HB_OT_NAME_LANGUAGE_STATIC_HH
29
30
#include "hb-ot-name-language.hh"
31
32
/* Following two tables were generated by joining FreeType, FontConfig,
33
 * and OpenType specification language lists, then filled in missing
34
 * entries using:
35
 * https://docs.microsoft.com/en-us/windows/desktop/intl/language-identifier-constants-and-strings
36
 */
37
38
struct hb_ot_language_map_t
39
{
40
  int cmp (unsigned int key) const
41
0
  { return key < code ? -1 : key > code ? +1 : 0; }
42
43
  uint16_t  code;
44
  char    lang[6];
45
};
46
47
static const hb_ot_language_map_t
48
_hb_ms_language_map[] =
49
{
50
  {0x0001,  "ar"},  /* ??? */
51
  {0x0004,  "zh"},  /* ??? */
52
  {0x0009,  "en"},  /* ??? */
53
  {0x0401,  "ar"},  /* Arabic (Saudi Arabia) */
54
  {0x0402,  "bg"},  /* Bulgarian (Bulgaria) */
55
  {0x0403,  "ca"},  /* Catalan (Catalan) */
56
  {0x0404,  "zh-tw"}, /* Chinese (Taiwan) */
57
  {0x0405,  "cs"},  /* Czech (Czech Republic) */
58
  {0x0406,  "da"},  /* Danish (Denmark) */
59
  {0x0407,  "de"},  /* German (Germany) */
60
  {0x0408,  "el"},  /* Greek (Greece) */
61
  {0x0409,  "en"},  /* English (United States) */
62
  {0x040A,  "es"},  /* Spanish (Traditional Sort) (Spain) */
63
  {0x040B,  "fi"},  /* Finnish (Finland) */
64
  {0x040C,  "fr"},  /* French (France) */
65
  {0x040D,  "he"},  /* Hebrew (Israel) */
66
  {0x040E,  "hu"},  /* Hungarian (Hungary) */
67
  {0x040F,  "is"},  /* Icelandic (Iceland) */
68
  {0x0410,  "it"},  /* Italian (Italy) */
69
  {0x0411,  "ja"},  /* Japanese (Japan) */
70
  {0x0412,  "ko"},  /* Korean (Korea) */
71
  {0x0413,  "nl"},  /* Dutch (Netherlands) */
72
  {0x0414,  "no"},  /* Norwegian (Bokmal) (Norway) */
73
  {0x0415,  "pl"},  /* Polish (Poland) */
74
  {0x0416,  "pt"},  /* Portuguese (Brazil) */
75
  {0x0417,  "rm"},  /* Romansh (Switzerland) */
76
  {0x0418,  "ro"},  /* Romanian (Romania) */
77
  {0x0419,  "ru"},  /* Russian (Russia) */
78
  {0x041A,  "hr"},  /* Croatian (Croatia) */
79
  {0x041B,  "sk"},  /* Slovak (Slovakia) */
80
  {0x041C,  "sq"},  /* Albanian (Albania) */
81
  {0x041D,  "sv"},  /* Swedish (Sweden) */
82
  {0x041E,  "th"},  /* Thai (Thailand) */
83
  {0x041F,  "tr"},  /* Turkish (Turkey) */
84
  {0x0420,  "ur"},  /* Urdu (Islamic Republic of Pakistan) */
85
  {0x0421,  "id"},  /* Indonesian (Indonesia) */
86
  {0x0422,  "uk"},  /* Ukrainian (Ukraine) */
87
  {0x0423,  "be"},  /* Belarusian (Belarus) */
88
  {0x0424,  "sl"},  /* Slovenian (Slovenia) */
89
  {0x0425,  "et"},  /* Estonian (Estonia) */
90
  {0x0426,  "lv"},  /* Latvian (Latvia) */
91
  {0x0427,  "lt"},  /* Lithuanian (Lithuania) */
92
  {0x0428,  "tg"},  /* Tajik (Cyrillic) (Tajikistan) */
93
  {0x0429,  "fa"},  /* Persian (Iran) */
94
  {0x042A,  "vi"},  /* Vietnamese (Vietnam) */
95
  {0x042B,  "hy"},  /* Armenian (Armenia) */
96
  {0x042C,  "az"},  /* Azeri (Latin) (Azerbaijan) */
97
  {0x042D,  "eu"},  /* Basque (Basque) */
98
  {0x042E,  "hsb"}, /* Upper Sorbian (Germany) */
99
  {0x042F,  "mk"},  /* Macedonian (FYROM) (Former Yugoslav Republic of Macedonia) */
100
  {0x0430,  "st"},  /* ??? */
101
  {0x0431,  "ts"},  /* ??? */
102
  {0x0432,  "tn"},  /* Setswana (South Africa) */
103
  {0x0433,  "ven"}, /* ??? */
104
  {0x0434,  "xh"},  /* isiXhosa (South Africa) */
105
  {0x0435,  "zu"},  /* isiZulu (South Africa) */
106
  {0x0436,  "af"},  /* Afrikaans (South Africa) */
107
  {0x0437,  "ka"},  /* Georgian (Georgia) */
108
  {0x0438,  "fo"},  /* Faroese (Faroe Islands) */
109
  {0x0439,  "hi"},  /* Hindi (India) */
110
  {0x043A,  "mt"},  /* Maltese (Malta) */
111
  {0x043B,  "se"},  /* Sami (Northern) (Norway) */
112
  {0x043C,  "ga"},  /* ??? */
113
  {0x043D,  "yi"},  /* ??? */
114
  {0x043E,  "ms"},  /* Malay (Malaysia) */
115
  {0x043F,  "kk"},  /* Kazakh (Kazakhstan) */
116
  {0x0440,  "ky"},  /* Kyrgyz (Kyrgyzstan) */
117
  {0x0441,  "sw"},  /* Kiswahili (Kenya) */
118
  {0x0442,  "tk"},  /* Turkmen (Turkmenistan) */
119
  {0x0443,  "uz"},  /* Uzbek (Latin) (Uzbekistan) */
120
  {0x0444,  "tt"},  /* Tatar (Russia) */
121
  {0x0445,  "bn"},  /* Bengali (India) */
122
  {0x0446,  "pa"},  /* Punjabi (India) */
123
  {0x0447,  "gu"},  /* Gujarati (India) */
124
  {0x0448,  "or"},  /* Odia (formerly Oriya) (India) */
125
  {0x0449,  "ta"},  /* Tamil (India) */
126
  {0x044A,  "te"},  /* Telugu (India) */
127
  {0x044B,  "kn"},  /* Kannada (India) */
128
  {0x044C,  "ml"},  /* Malayalam (India) */
129
  {0x044D,  "as"},  /* Assamese (India) */
130
  {0x044E,  "mr"},  /* Marathi (India) */
131
  {0x044F,  "sa"},  /* Sanskrit (India) */
132
  {0x0450,  "mn"},  /* Mongolian (Cyrillic) (Mongolia) */
133
  {0x0451,  "bo"},  /* Tibetan (PRC) */
134
  {0x0452,  "cy"},  /* Welsh (United Kingdom) */
135
  {0x0453,  "km"},  /* Khmer (Cambodia) */
136
  {0x0454,  "lo"},  /* Lao (Lao P.D.R.) */
137
  {0x0455,  "my"},  /* ??? */
138
  {0x0456,  "gl"},  /* Galician (Galician) */
139
  {0x0457,  "kok"}, /* Konkani (India) */
140
  {0x0458,  "mni"}, /* ??? */
141
  {0x0459,  "sd"},  /* ??? */
142
  {0x045A,  "syr"}, /* Syriac (Syria) */
143
  {0x045B,  "si"},  /* Sinhala (Sri Lanka) */
144
  {0x045C,  "chr"}, /* ??? */
145
  {0x045D,  "iu"},  /* Inuktitut (Canada) */
146
  {0x045E,  "am"},  /* Amharic (Ethiopia) */
147
  {0x0460,  "ks"},  /* ??? */
148
  {0x0461,  "ne"},  /* Nepali (Nepal) */
149
  {0x0462,  "fy"},  /* Frisian (Netherlands) */
150
  {0x0463,  "ps"},  /* Pashto (Afghanistan) */
151
  {0x0464,  "phi"}, /* Filipino (Philippines) */
152
  {0x0465,  "div"}, /* Divehi (Maldives) */
153
  {0x0468,  "ha"},  /* Hausa (Latin) (Nigeria) */
154
  {0x046A,  "yo"},  /* Yoruba (Nigeria) */
155
  {0x046B,  "quz"}, /* Quechua (Bolivia) */
156
  {0x046C,  "nso"}, /* Sesotho sa Leboa (South Africa) */
157
  {0x046D,  "ba"},  /* Bashkir (Russia) */
158
  {0x046E,  "lb"},  /* Luxembourgish (Luxembourg) */
159
  {0x046F,  "kl"},  /* Greenlandic (Greenland) */
160
  {0x0470,  "ibo"}, /* Igbo (Nigeria) */
161
  {0x0471,  "kau"}, /* ??? */
162
  {0x0472,  "om"},  /* ??? */
163
  {0x0473,  "ti"},  /* ??? */
164
  {0x0474,  "gn"},  /* ??? */
165
  {0x0475,  "haw"}, /* ??? */
166
  {0x0476,  "la"},  /* ??? */
167
  {0x0477,  "so"},  /* ??? */
168
  {0x0478,  "ii"},  /* Yi (PRC) */
169
  {0x0479,  "pap"}, /* ??? */
170
  {0x047A,  "arn"}, /* Mapudungun (Chile) */
171
  {0x047C,  "moh"}, /* Mohawk (Mohawk) */
172
  {0x047E,  "br"},  /* Breton (France) */
173
  {0x0480,  "ug"},  /* Uighur (PRC) */
174
  {0x0481,  "mi"},  /* Maori (New Zealand) */
175
  {0x0482,  "oc"},  /* Occitan (France) */
176
  {0x0483,  "co"},  /* Corsican (France) */
177
  {0x0484,  "gsw"}, /* Alsatian (France) */
178
  {0x0485,  "sah"}, /* Yakut (Russia) */
179
  {0x0486,  "qut"}, /* K'iche (Guatemala) */
180
  {0x0487,  "rw"},  /* Kinyarwanda (Rwanda) */
181
  {0x0488,  "wo"},  /* Wolof (Senegal) */
182
  {0x048C,  "fa"},  /* Dari (Afghanistan) */
183
  {0x0801,  "ar"},  /* Arabic (Iraq) */
184
  {0x0804,  "zh-cn"}, /* Chinese (People’s Republic of China) */
185
  {0x0807,  "de"},  /* German (Switzerland) */
186
  {0x0809,  "en"},  /* English (United Kingdom) */
187
  {0x080A,  "es"},  /* Spanish (Mexico) */
188
  {0x080C,  "fr"},  /* French (Belgium) */
189
  {0x0810,  "it"},  /* Italian (Switzerland) */
190
  {0x0812,  "ko"},  /* ??? */
191
  {0x0813,  "nl"},  /* Dutch (Belgium) */
192
  {0x0814,  "nn"},  /* Norwegian (Nynorsk) (Norway) */
193
  {0x0816,  "pt"},  /* Portuguese (Portugal) */
194
  {0x0818,  "mo"},  /* ??? */
195
  {0x0819,  "ru"},  /* ??? */
196
  {0x081A,  "sr"},  /* Serbian (Latin) (Serbia) */
197
  {0x081D,  "sv"},  /* Sweden (Finland) */
198
  {0x0820,  "ur"},  /* ??? */
199
  {0x0827,  "lt"},  /* ??? */
200
  {0x082C,  "az"},  /* Azeri (Cyrillic) (Azerbaijan) */
201
  {0x082E,  "dsb"}, /* Lower Sorbian (Germany) */
202
//{0x083B,  ""},  /* Sami (Northern) (Sweden) */
203
  {0x083C,  "gd"},  /* Irish (Ireland) */
204
  {0x083E,  "ms"},  /* Malay (Brunei Darussalam) */
205
  {0x0843,  "uz"},  /* Uzbek (Cyrillic) (Uzbekistan) */
206
  {0x0845,  "bn"},  /* Bengali (Bangladesh) */
207
  {0x0846,  "ar"},  /* ??? */
208
  {0x0850,  "mn"},  /* Mongolian (Traditional) (People’s Republic of China) */
209
  {0x0851,  "dz"},  /* ??? */
210
  {0x085D,  "iu"},  /* Inuktitut (Latin) (Canada) */
211
  {0x085F,  "tzm"}, /* Tamazight (Latin) (Algeria) */
212
  {0x0861,  "ne"},  /* ??? */
213
//{0x086B,  ""},  /* Quechua (Ecuador) */
214
  {0x0873,  "ti"},  /* ??? */
215
  {0x0C01,  "ar"},  /* Arabic (Egypt) */
216
  {0x0C04,  "zh-hk"}, /* Chinese (Hong Kong S.A.R.) */
217
  {0x0C07,  "de"},  /* German (Austria) */
218
  {0x0C09,  "en"},  /* English (Australia) */
219
  {0x0C0A,  "es"},  /* Spanish (Modern Sort) (Spain) */
220
  {0x0C0C,  "fr"},  /* French (Canada) */
221
  {0x0C1A,  "sr"},  /* Serbian (Cyrillic) (Serbia) */
222
  {0x0C3B,  "se"},  /* Sami (Northern) (Finland) */
223
//{0x0C6B,  ""},  /* Quechua (Peru) */
224
  {0x1001,  "ar"},  /* Arabic (Libya) */
225
  {0x1004,  "zh-sg"}, /* Chinese (Singapore) */
226
  {0x1007,  "de"},  /* German (Luxembourg) */
227
  {0x1009,  "en"},  /* English (Canada) */
228
  {0x100A,  "es"},  /* Spanish (Guatemala) */
229
  {0x100C,  "fr"},  /* French (Switzerland) */
230
  {0x101A,  "hr"},  /* Croatian (Latin) (Bosnia and Herzegovina) */
231
  {0x103B,  "smj"}, /* Sami (Lule) (Norway) */
232
  {0x1401,  "ar"},  /* Arabic (Algeria) */
233
//{0x1404,  ""},  /* Chinese (Macao S.A.R.) */
234
  {0x1407,  "de"},  /* German (Liechtenstein) */
235
  {0x1409,  "en"},  /* English (New Zealand) */
236
  {0x140A,  "es"},  /* Spanish (Costa Rica) */
237
  {0x140C,  "fr"},  /* French (Luxembourg) */
238
  {0x141A,  "bs"},  /* Bosnian (Latin) (Bosnia and Herzegovina) */
239
//{0x143B,  ""},  /* Sami (Lule) (Sweden) */
240
  {0x1801,  "ar"},  /* Arabic (Morocco) */
241
  {0x1809,  "en"},  /* English (Ireland) */
242
  {0x180A,  "es"},  /* Spanish (Panama) */
243
  {0x180C,  "fr"},  /* French (Principality of Monaco) */
244
//{0x181A,  ""},  /* Serbian (Latin) (Bosnia and Herzegovina) */
245
  {0x183B,  "sma"}, /* Sami (Southern) (Norway) */
246
  {0x1C01,  "ar"},  /* Arabic (Tunisia) */
247
  {0x1C09,  "en"},  /* English (South Africa) */
248
  {0x1C0A,  "es"},  /* Spanish (Dominican Republic) */
249
  {0x1C0C,  "fr"},  /* ??? */
250
//{0x1C1A,  ""},  /* Serbian (Cyrillic) (Bosnia and Herzegovina) */
251
//{0x1C3B,  ""},  /* Sami (Southern) (Sweden) */
252
  {0x2001,  "ar"},  /* Arabic (Oman) */
253
  {0x2009,  "en"},  /* English (Jamaica) */
254
  {0x200A,  "es"},  /* Spanish (Venezuela) */
255
  {0x200C,  "fr"},  /* ??? */
256
  {0x201A,  "bs"},  /* Bosnian (Cyrillic) (Bosnia and Herzegovina) */
257
  {0x203B,  "sms"}, /* Sami (Skolt) (Finland) */
258
  {0x2401,  "ar"},  /* Arabic (Yemen) */
259
  {0x2409,  "en"},  /* English (Caribbean) */
260
  {0x240A,  "es"},  /* Spanish (Colombia) */
261
  {0x240C,  "fr"},  /* ??? */
262
  {0x243B,  "smn"}, /* Sami (Inari) (Finland) */
263
  {0x2801,  "ar"},  /* Arabic (Syria) */
264
  {0x2809,  "en"},  /* English (Belize) */
265
  {0x280A,  "es"},  /* Spanish (Peru) */
266
  {0x280C,  "fr"},  /* ??? */
267
  {0x2C01,  "ar"},  /* Arabic (Jordan) */
268
  {0x2C09,  "en"},  /* English (Trinidad and Tobago) */
269
  {0x2C0A,  "es"},  /* Spanish (Argentina) */
270
  {0x2C0C,  "fr"},  /* ??? */
271
  {0x3001,  "ar"},  /* Arabic (Lebanon) */
272
  {0x3009,  "en"},  /* English (Zimbabwe) */
273
  {0x300A,  "es"},  /* Spanish (Ecuador) */
274
  {0x300C,  "fr"},  /* ??? */
275
  {0x3401,  "ar"},  /* Arabic (Kuwait) */
276
  {0x3409,  "en"},  /* English (Republic of the Philippines) */
277
  {0x340A,  "es"},  /* Spanish (Chile) */
278
  {0x340C,  "fr"},  /* ??? */
279
  {0x3801,  "ar"},  /* Arabic (U.A.E.) */
280
  {0x380A,  "es"},  /* Spanish (Uruguay) */
281
  {0x380C,  "fr"},  /* ??? */
282
  {0x3C01,  "ar"},  /* Arabic (Bahrain) */
283
  {0x3C09,  "en"},  /* ??? */
284
  {0x3C0A,  "es"},  /* Spanish (Paraguay) */
285
  {0x3C0C,  "fr"},  /* ??? */
286
  {0x4001,  "ar"},  /* Arabic (Qatar) */
287
  {0x4009,  "en"},  /* English (India) */
288
  {0x400A,  "es"},  /* Spanish (Bolivia) */
289
  {0x4409,  "en"},  /* English (Malaysia) */
290
  {0x440A,  "es"},  /* Spanish (El Salvador) */
291
  {0x4809,  "en"},  /* English (Singapore) */
292
  {0x480A,  "es"},  /* Spanish (Honduras) */
293
  {0x4C0A,  "es"},  /* Spanish (Nicaragua) */
294
  {0x500A,  "es"},  /* Spanish (Puerto Rico) */
295
  {0x540A,  "es"},  /* Spanish (United States) */
296
  {0xE40A,  "es"},  /* ??? */
297
  {0xE40C,  "fr"},  /* ??? */
298
};
299
300
static const hb_ot_language_map_t
301
_hb_mac_language_map[] =
302
{
303
  {  0, "en"},  /* English */
304
  {  1, "fr"},  /* French */
305
  {  2, "de"},  /* German */
306
  {  3, "it"},  /* Italian */
307
  {  4, "nl"},  /* Dutch */
308
  {  5, "sv"},  /* Swedish */
309
  {  6, "es"},  /* Spanish */
310
  {  7, "da"},  /* Danish */
311
  {  8, "pt"},  /* Portuguese */
312
  {  9, "no"},  /* Norwegian */
313
  { 10, "he"},  /* Hebrew */
314
  { 11, "ja"},  /* Japanese */
315
  { 12, "ar"},  /* Arabic */
316
  { 13, "fi"},  /* Finnish */
317
  { 14, "el"},  /* Greek */
318
  { 15, "is"},  /* Icelandic */
319
  { 16, "mt"},  /* Maltese */
320
  { 17, "tr"},  /* Turkish */
321
  { 18, "hr"},  /* Croatian */
322
  { 19, "zh-tw"}, /* Chinese (Traditional) */
323
  { 20, "ur"},  /* Urdu */
324
  { 21, "hi"},  /* Hindi */
325
  { 22, "th"},  /* Thai */
326
  { 23, "ko"},  /* Korean */
327
  { 24, "lt"},  /* Lithuanian */
328
  { 25, "pl"},  /* Polish */
329
  { 26, "hu"},  /* Hungarian */
330
  { 27, "et"},  /* Estonian */
331
  { 28, "lv"},  /* Latvian */
332
//{ 29, ""},  /* Sami */
333
  { 30, "fo"},  /* Faroese */
334
  { 31, "fa"},  /* Farsi/Persian */
335
  { 32, "ru"},  /* Russian */
336
  { 33, "zh-cn"}, /* Chinese (Simplified) */
337
  { 34, "nl"},  /* Flemish */
338
  { 35, "ga"},  /* Irish Gaelic */
339
  { 36, "sq"},  /* Albanian */
340
  { 37, "ro"},  /* Romanian */
341
  { 38, "cs"},  /* Czech */
342
  { 39, "sk"},  /* Slovak */
343
  { 40, "sl"},  /* Slovenian */
344
  { 41, "yi"},  /* Yiddish */
345
  { 42, "sr"},  /* Serbian */
346
  { 43, "mk"},  /* Macedonian */
347
  { 44, "bg"},  /* Bulgarian */
348
  { 45, "uk"},  /* Ukrainian */
349
  { 46, "be"},  /* Byelorussian */
350
  { 47, "uz"},  /* Uzbek */
351
  { 48, "kk"},  /* Kazakh */
352
  { 49, "az"},  /* Azerbaijani (Cyrillic script) */
353
  { 50, "az"},  /* Azerbaijani (Arabic script) */
354
  { 51, "hy"},  /* Armenian */
355
  { 52, "ka"},  /* Georgian */
356
  { 53, "mo"},  /* Moldavian */
357
  { 54, "ky"},  /* Kirghiz */
358
  { 55, "tg"},  /* Tajiki */
359
  { 56, "tk"},  /* Turkmen */
360
  { 57, "mn"},  /* Mongolian (Mongolian script) */
361
  { 58, "mn"},  /* Mongolian (Cyrillic script) */
362
  { 59, "ps"},  /* Pashto */
363
  { 60, "ku"},  /* Kurdish */
364
  { 61, "ks"},  /* Kashmiri */
365
  { 62, "sd"},  /* Sindhi */
366
  { 63, "bo"},  /* Tibetan */
367
  { 64, "ne"},  /* Nepali */
368
  { 65, "sa"},  /* Sanskrit */
369
  { 66, "mr"},  /* Marathi */
370
  { 67, "bn"},  /* Bengali */
371
  { 68, "as"},  /* Assamese */
372
  { 69, "gu"},  /* Gujarati */
373
  { 70, "pa"},  /* Punjabi */
374
  { 71, "or"},  /* Oriya */
375
  { 72, "ml"},  /* Malayalam */
376
  { 73, "kn"},  /* Kannada */
377
  { 74, "ta"},  /* Tamil */
378
  { 75, "te"},  /* Telugu */
379
  { 76, "si"},  /* Sinhalese */
380
  { 77, "my"},  /* Burmese */
381
  { 78, "km"},  /* Khmer */
382
  { 79, "lo"},  /* Lao */
383
  { 80, "vi"},  /* Vietnamese */
384
  { 81, "id"},  /* Indonesian */
385
  { 82, "tl"},  /* Tagalog */
386
  { 83, "ms"},  /* Malay (Roman script) */
387
  { 84, "ms"},  /* Malay (Arabic script) */
388
  { 85, "am"},  /* Amharic */
389
  { 86, "ti"},  /* Tigrinya */
390
  { 87, "om"},  /* Galla */
391
  { 88, "so"},  /* Somali */
392
  { 89, "sw"},  /* Swahili */
393
  { 90, "rw"},  /* Kinyarwanda/Ruanda */
394
  { 91, "rn"},  /* Rundi */
395
  { 92, "ny"},  /* Nyanja/Chewa */
396
  { 93, "mg"},  /* Malagasy */
397
  { 94, "eo"},  /* Esperanto */
398
  {128, "cy"},  /* Welsh */
399
  {129, "eu"},  /* Basque */
400
  {130, "ca"},  /* Catalan */
401
  {131, "la"},  /* Latin */
402
  {132, "qu"},  /* Quechua */
403
  {133, "gn"},  /* Guarani */
404
  {134, "ay"},  /* Aymara */
405
  {135, "tt"},  /* Tatar */
406
  {136, "ug"},  /* Uighur */
407
  {137, "dz"},  /* Dzongkha */
408
  {138, "jw"},  /* Javanese (Roman script) */
409
  {139, "su"},  /* Sundanese (Roman script) */
410
  {140, "gl"},  /* Galician */
411
  {141, "af"},  /* Afrikaans */
412
  {142, "br"},  /* Breton */
413
  {143, "iu"},  /* Inuktitut */
414
  {144, "gd"},  /* Scottish Gaelic */
415
  {145, "gv"},  /* Manx Gaelic */
416
  {146, "ga"},  /* Irish Gaelic (with dot above) */
417
  {147, "to"},  /* Tongan */
418
  {148, "el"},  /* Greek (polytonic) */
419
  {149, "ik"},  /* Greenlandic */
420
  {150, "az"},  /* Azerbaijani (Roman script) */
421
};
422
423
424
static hb_language_t
425
_hb_ot_name_language_for (unsigned int code,
426
        const hb_ot_language_map_t *array,
427
        unsigned int len)
428
0
{
429
#ifdef HB_NO_OT_NAME_LANGUAGE
430
  return HB_LANGUAGE_INVALID;
431
#endif
432
0
  auto *entry = hb_bsearch (code, array, len);
433
434
0
  if (entry)
435
0
    return hb_language_from_string (entry->lang, -1);
436
437
0
  return HB_LANGUAGE_INVALID;
438
0
}
439
440
hb_language_t
441
_hb_ot_name_language_for_ms_code (unsigned int code)
442
0
{
443
0
  return _hb_ot_name_language_for (code,
444
0
           _hb_ms_language_map,
445
0
           ARRAY_LENGTH (_hb_ms_language_map));
446
0
}
447
448
hb_language_t
449
_hb_ot_name_language_for_mac_code (unsigned int code)
450
0
{
451
0
  return _hb_ot_name_language_for (code,
452
0
           _hb_mac_language_map,
453
0
           ARRAY_LENGTH (_hb_mac_language_map));
454
0
}
455
456
#endif /* HB_OT_NAME_LANGUAGE_STATIC_HH */