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="2022-09-30 11:47 PM" />
10 * File-Date: 2023-08-02
11 */
12
13 #ifndef HB_OT_TAG_TABLE_HH
14 #define HB_OT_TAG_TABLE_HH
15
16 static const LangTag ot_languages2[] = {
17 {HB_TAG('a','a',' ',' '), HB_TAG('A','F','R',' ')}, /* Afar */
18 {HB_TAG('a','b',' ',' '), HB_TAG('A','B','K',' ')}, /* Abkhazian */
19 {HB_TAG('a','f',' ',' '), HB_TAG('A','F','K',' ')}, /* Afrikaans */
20 {HB_TAG('a','k',' ',' '), HB_TAG('A','K','A',' ')}, /* Akan [macrolanguage] */
21 {HB_TAG('a','m',' ',' '), HB_TAG('A','M','H',' ')}, /* Amharic */
22 {HB_TAG('a','n',' ',' '), HB_TAG('A','R','G',' ')}, /* Aragonese */
23 {HB_TAG('a','r',' ',' '), HB_TAG('A','R','A',' ')}, /* Arabic [macrolanguage] */
24 {HB_TAG('a','s',' ',' '), HB_TAG('A','S','M',' ')}, /* Assamese */
25 {HB_TAG('a','v',' ',' '), HB_TAG('A','V','R',' ')}, /* Avaric -> Avar */
26 {HB_TAG('a','y',' ',' '), HB_TAG('A','Y','M',' ')}, /* Aymara [macrolanguage] */
27 {HB_TAG('a','z',' ',' '), HB_TAG('A','Z','E',' ')}, /* Azerbaijani [macrolanguage] */
28 {HB_TAG('b','a',' ',' '), HB_TAG('B','S','H',' ')}, /* Bashkir */
29 {HB_TAG('b','e',' ',' '), HB_TAG('B','E','L',' ')}, /* Belarusian -> Belarussian */
30 {HB_TAG('b','g',' ',' '), HB_TAG('B','G','R',' ')}, /* Bulgarian */
31 {HB_TAG('b','i',' ',' '), HB_TAG('B','I','S',' ')}, /* Bislama */
32 {HB_TAG('b','i',' ',' '), HB_TAG('C','P','P',' ')}, /* Bislama -> Creoles */
33 {HB_TAG('b','m',' ',' '), HB_TAG('B','M','B',' ')}, /* Bambara (Bamanankan) */
34 {HB_TAG('b','n',' ',' '), HB_TAG('B','E','N',' ')}, /* Bengali */
35 {HB_TAG('b','o',' ',' '), HB_TAG('T','I','B',' ')}, /* Tibetan */
36 {HB_TAG('b','r',' ',' '), HB_TAG('B','R','E',' ')}, /* Breton */
37 {HB_TAG('b','s',' ',' '), HB_TAG('B','O','S',' ')}, /* Bosnian */
38 {HB_TAG('c','a',' ',' '), HB_TAG('C','A','T',' ')}, /* Catalan */
39 {HB_TAG('c','e',' ',' '), HB_TAG('C','H','E',' ')}, /* Chechen */
40 {HB_TAG('c','h',' ',' '), HB_TAG('C','H','A',' ')}, /* Chamorro */
41 {HB_TAG('c','o',' ',' '), HB_TAG('C','O','S',' ')}, /* Corsican */
42 {HB_TAG('c','r',' ',' '), HB_TAG('C','R','E',' ')}, /* Cree [macrolanguage] */
43 {HB_TAG('c','s',' ',' '), HB_TAG('C','S','Y',' ')}, /* Czech */
44 {HB_TAG('c','u',' ',' '), HB_TAG('C','S','L',' ')}, /* Church Slavonic */
45 {HB_TAG('c','v',' ',' '), HB_TAG('C','H','U',' ')}, /* Chuvash */
46 {HB_TAG('c','y',' ',' '), HB_TAG('W','E','L',' ')}, /* Welsh */
47 {HB_TAG('d','a',' ',' '), HB_TAG('D','A','N',' ')}, /* Danish */
48 {HB_TAG('d','e',' ',' '), HB_TAG('D','E','U',' ')}, /* German */
49 {HB_TAG('d','v',' ',' '), HB_TAG('D','I','V',' ')}, /* Divehi (Dhivehi, Maldivian) */
50 {HB_TAG('d','v',' ',' '), HB_TAG('D','H','V',' ')}, /* Divehi (Dhivehi, Maldivian) (deprecated) */
51 {HB_TAG('d','z',' ',' '), HB_TAG('D','Z','N',' ')}, /* Dzongkha */
52 {HB_TAG('e','e',' ',' '), HB_TAG('E','W','E',' ')}, /* Ewe */
53 {HB_TAG('e','l',' ',' '), HB_TAG('E','L','L',' ')}, /* Modern Greek (1453-) -> Greek */
54 {HB_TAG('e','n',' ',' '), HB_TAG('E','N','G',' ')}, /* English */
55 {HB_TAG('e','o',' ',' '), HB_TAG('N','T','O',' ')}, /* Esperanto */
56 {HB_TAG('e','s',' ',' '), HB_TAG('E','S','P',' ')}, /* Spanish */
57 {HB_TAG('e','t',' ',' '), HB_TAG('E','T','I',' ')}, /* Estonian [macrolanguage] */
58 {HB_TAG('e','u',' ',' '), HB_TAG('E','U','Q',' ')}, /* Basque */
59 {HB_TAG('f','a',' ',' '), HB_TAG('F','A','R',' ')}, /* Persian [macrolanguage] */
60 {HB_TAG('f','f',' ',' '), HB_TAG('F','U','L',' ')}, /* Fulah [macrolanguage] */
61 {HB_TAG('f','i',' ',' '), HB_TAG('F','I','N',' ')}, /* Finnish */
62 {HB_TAG('f','j',' ',' '), HB_TAG('F','J','I',' ')}, /* Fijian */
63 {HB_TAG('f','o',' ',' '), HB_TAG('F','O','S',' ')}, /* Faroese */
64 {HB_TAG('f','r',' ',' '), HB_TAG('F','R','A',' ')}, /* French */
65 {HB_TAG('f','y',' ',' '), HB_TAG('F','R','I',' ')}, /* Western Frisian -> Frisian */
66 {HB_TAG('g','a',' ',' '), HB_TAG('I','R','I',' ')}, /* Irish */
67 {HB_TAG('g','d',' ',' '), HB_TAG('G','A','E',' ')}, /* Scottish Gaelic (Gaelic) */
68 {HB_TAG('g','l',' ',' '), HB_TAG('G','A','L',' ')}, /* Galician */
69 {HB_TAG('g','n',' ',' '), HB_TAG('G','U','A',' ')}, /* Guarani [macrolanguage] */
70 {HB_TAG('g','u',' ',' '), HB_TAG('G','U','J',' ')}, /* Gujarati */
71 {HB_TAG('g','v',' ',' '), HB_TAG('M','N','X',' ')}, /* Manx */
72 {HB_TAG('h','a',' ',' '), HB_TAG('H','A','U',' ')}, /* Hausa */
73 {HB_TAG('h','e',' ',' '), HB_TAG('I','W','R',' ')}, /* Hebrew */
74 {HB_TAG('h','i',' ',' '), HB_TAG('H','I','N',' ')}, /* Hindi */
75 {HB_TAG('h','o',' ',' '), HB_TAG('H','M','O',' ')}, /* Hiri Motu */
76 {HB_TAG('h','o',' ',' '), HB_TAG('C','P','P',' ')}, /* Hiri Motu -> Creoles */
77 {HB_TAG('h','r',' ',' '), HB_TAG('H','R','V',' ')}, /* Croatian */
78 {HB_TAG('h','t',' ',' '), HB_TAG('H','A','I',' ')}, /* Haitian (Haitian Creole) */
79 {HB_TAG('h','t',' ',' '), HB_TAG('C','P','P',' ')}, /* Haitian -> Creoles */
80 {HB_TAG('h','u',' ',' '), HB_TAG('H','U','N',' ')}, /* Hungarian */
81 {HB_TAG('h','y',' ',' '), HB_TAG('H','Y','E','0')}, /* Armenian -> Armenian East */
82 {HB_TAG('h','y',' ',' '), HB_TAG('H','Y','E',' ')}, /* Armenian */
83 {HB_TAG('h','z',' ',' '), HB_TAG('H','E','R',' ')}, /* Herero */
84 {HB_TAG('i','a',' ',' '), HB_TAG('I','N','A',' ')}, /* Interlingua (International Auxiliary Language Association) */
85 {HB_TAG('i','d',' ',' '), HB_TAG('I','N','D',' ')}, /* Indonesian */
86 {HB_TAG('i','d',' ',' '), HB_TAG('M','L','Y',' ')}, /* Indonesian -> Malay */
87 {HB_TAG('i','e',' ',' '), HB_TAG('I','L','E',' ')}, /* Interlingue */
88 {HB_TAG('i','g',' ',' '), HB_TAG('I','B','O',' ')}, /* Igbo */
89 {HB_TAG('i','i',' ',' '), HB_TAG('Y','I','M',' ')}, /* Sichuan Yi -> Yi Modern */
90 {HB_TAG('i','k',' ',' '), HB_TAG('I','P','K',' ')}, /* Inupiaq [macrolanguage] -> Inupiat */
91 {HB_TAG('i','n',' ',' '), HB_TAG('I','N','D',' ')}, /* Indonesian (retired code) */
92 {HB_TAG('i','n',' ',' '), HB_TAG('M','L','Y',' ')}, /* Indonesian (retired code) -> Malay */
93 {HB_TAG('i','o',' ',' '), HB_TAG('I','D','O',' ')}, /* Ido */
94 {HB_TAG('i','s',' ',' '), HB_TAG('I','S','L',' ')}, /* Icelandic */
95 {HB_TAG('i','t',' ',' '), HB_TAG('I','T','A',' ')}, /* Italian */
96 {HB_TAG('i','u',' ',' '), HB_TAG('I','N','U',' ')}, /* Inuktitut [macrolanguage] */
97 {HB_TAG('i','u',' ',' '), HB_TAG('I','N','U','K')}, /* Inuktitut [macrolanguage] -> Nunavik Inuktitut */
98 {HB_TAG('i','w',' ',' '), HB_TAG('I','W','R',' ')}, /* Hebrew (retired code) */
99 {HB_TAG('j','a',' ',' '), HB_TAG('J','A','N',' ')}, /* Japanese */
100 {HB_TAG('j','i',' ',' '), HB_TAG('J','I','I',' ')}, /* Yiddish (retired code) */
101 {HB_TAG('j','v',' ',' '), HB_TAG('J','A','V',' ')}, /* Javanese */
102 {HB_TAG('j','w',' ',' '), HB_TAG('J','A','V',' ')}, /* Javanese (retired code) */
103 {HB_TAG('k','a',' ',' '), HB_TAG('K','A','T',' ')}, /* Georgian */
104 {HB_TAG('k','g',' ',' '), HB_TAG('K','O','N','0')}, /* Kongo [macrolanguage] */
105 {HB_TAG('k','i',' ',' '), HB_TAG('K','I','K',' ')}, /* Kikuyu (Gikuyu) */
106 {HB_TAG('k','j',' ',' '), HB_TAG('K','U','A',' ')}, /* Kuanyama */
107 {HB_TAG('k','k',' ',' '), HB_TAG('K','A','Z',' ')}, /* Kazakh */
108 {HB_TAG('k','l',' ',' '), HB_TAG('G','R','N',' ')}, /* Greenlandic */
109 {HB_TAG('k','m',' ',' '), HB_TAG('K','H','M',' ')}, /* Khmer */
110 {HB_TAG('k','n',' ',' '), HB_TAG('K','A','N',' ')}, /* Kannada */
111 {HB_TAG('k','o',' ',' '), HB_TAG('K','O','R',' ')}, /* Korean */
112 {HB_TAG('k','o',' ',' '), HB_TAG('K','O','H',' ')}, /* Korean -> Korean Old Hangul */
113 {HB_TAG('k','r',' ',' '), HB_TAG('K','N','R',' ')}, /* Kanuri [macrolanguage] */
114 {HB_TAG('k','s',' ',' '), HB_TAG('K','S','H',' ')}, /* Kashmiri */
115 {HB_TAG('k','u',' ',' '), HB_TAG('K','U','R',' ')}, /* Kurdish [macrolanguage] */
116 {HB_TAG('k','v',' ',' '), HB_TAG('K','O','M',' ')}, /* Komi [macrolanguage] */
117 {HB_TAG('k','w',' ',' '), HB_TAG('C','O','R',' ')}, /* Cornish */
118 {HB_TAG('k','y',' ',' '), HB_TAG('K','I','R',' ')}, /* Kirghiz (Kyrgyz) */
119 {HB_TAG('l','a',' ',' '), HB_TAG('L','A','T',' ')}, /* Latin */
120 {HB_TAG('l','b',' ',' '), HB_TAG('L','T','Z',' ')}, /* Luxembourgish */
121 {HB_TAG('l','g',' ',' '), HB_TAG('L','U','G',' ')}, /* Ganda */
122 {HB_TAG('l','i',' ',' '), HB_TAG('L','I','M',' ')}, /* Limburgish */
123 {HB_TAG('l','n',' ',' '), HB_TAG('L','I','N',' ')}, /* Lingala */
124 {HB_TAG('l','o',' ',' '), HB_TAG('L','A','O',' ')}, /* Lao */
125 {HB_TAG('l','t',' ',' '), HB_TAG('L','T','H',' ')}, /* Lithuanian */
126 {HB_TAG('l','u',' ',' '), HB_TAG('L','U','B',' ')}, /* Luba-Katanga */
127 {HB_TAG('l','v',' ',' '), HB_TAG('L','V','I',' ')}, /* Latvian [macrolanguage] */
128 {HB_TAG('m','g',' ',' '), HB_TAG('M','L','G',' ')}, /* Malagasy [macrolanguage] */
129 {HB_TAG('m','h',' ',' '), HB_TAG('M','A','H',' ')}, /* Marshallese */
130 {HB_TAG('m','i',' ',' '), HB_TAG('M','R','I',' ')}, /* Maori */
131 {HB_TAG('m','k',' ',' '), HB_TAG('M','K','D',' ')}, /* Macedonian */
132 {HB_TAG('m','l',' ',' '), HB_TAG('M','A','L',' ')}, /* Malayalam -> Malayalam Traditional */
133 {HB_TAG('m','l',' ',' '), HB_TAG('M','L','R',' ')}, /* Malayalam -> Malayalam Reformed */
134 {HB_TAG('m','n',' ',' '), HB_TAG('M','N','G',' ')}, /* Mongolian [macrolanguage] */
135 {HB_TAG('m','o',' ',' '), HB_TAG('M','O','L',' ')}, /* Moldavian (retired code) */
136 {HB_TAG('m','o',' ',' '), HB_TAG('R','O','M',' ')}, /* Moldavian (retired code) -> Romanian */
137 {HB_TAG('m','r',' ',' '), HB_TAG('M','A','R',' ')}, /* Marathi */
138 {HB_TAG('m','s',' ',' '), HB_TAG('M','L','Y',' ')}, /* Malay [macrolanguage] */
139 {HB_TAG('m','t',' ',' '), HB_TAG('M','T','S',' ')}, /* Maltese */
140 {HB_TAG('m','y',' ',' '), HB_TAG('B','R','M',' ')}, /* Burmese */
141 {HB_TAG('n','a',' ',' '), HB_TAG('N','A','U',' ')}, /* Nauru -> Nauruan */
142 {HB_TAG('n','b',' ',' '), HB_TAG('N','O','R',' ')}, /* Norwegian Bokmål -> Norwegian */
143 {HB_TAG('n','d',' ',' '), HB_TAG('N','D','B',' ')}, /* North Ndebele -> Ndebele */
144 {HB_TAG('n','e',' ',' '), HB_TAG('N','E','P',' ')}, /* Nepali [macrolanguage] */
145 {HB_TAG('n','g',' ',' '), HB_TAG('N','D','G',' ')}, /* Ndonga */
146 {HB_TAG('n','l',' ',' '), HB_TAG('N','L','D',' ')}, /* Dutch */
147 {HB_TAG('n','n',' ',' '), HB_TAG('N','Y','N',' ')}, /* Norwegian Nynorsk (Nynorsk, Norwegian) */
148 {HB_TAG('n','o',' ',' '), HB_TAG('N','O','R',' ')}, /* Norwegian [macrolanguage] */
149 {HB_TAG('n','r',' ',' '), HB_TAG('N','D','B',' ')}, /* South Ndebele -> Ndebele */
150 {HB_TAG('n','v',' ',' '), HB_TAG('N','A','V',' ')}, /* Navajo */
151 {HB_TAG('n','v',' ',' '), HB_TAG('A','T','H',' ')}, /* Navajo -> Athapaskan */
152 {HB_TAG('n','y',' ',' '), HB_TAG('C','H','I',' ')}, /* Chichewa (Chewa, Nyanja) */
153 {HB_TAG('o','c',' ',' '), HB_TAG('O','C','I',' ')}, /* Occitan (post 1500) */
154 {HB_TAG('o','j',' ',' '), HB_TAG('O','J','B',' ')}, /* Ojibwa [macrolanguage] -> Ojibway */
155 {HB_TAG('o','m',' ',' '), HB_TAG('O','R','O',' ')}, /* Oromo [macrolanguage] */
156 {HB_TAG('o','r',' ',' '), HB_TAG('O','R','I',' ')}, /* Odia (formerly Oriya) [macrolanguage] */
157 {HB_TAG('o','s',' ',' '), HB_TAG('O','S','S',' ')}, /* Ossetian */
158 {HB_TAG('p','a',' ',' '), HB_TAG('P','A','N',' ')}, /* Punjabi */
159 {HB_TAG('p','i',' ',' '), HB_TAG('P','A','L',' ')}, /* Pali */
160 {HB_TAG('p','l',' ',' '), HB_TAG('P','L','K',' ')}, /* Polish */
161 {HB_TAG('p','s',' ',' '), HB_TAG('P','A','S',' ')}, /* Pashto [macrolanguage] */
162 {HB_TAG('p','t',' ',' '), HB_TAG('P','T','G',' ')}, /* Portuguese */
163 {HB_TAG('q','u',' ',' '), HB_TAG('Q','U','Z',' ')}, /* Quechua [macrolanguage] */
164 {HB_TAG('r','m',' ',' '), HB_TAG('R','M','S',' ')}, /* Romansh */
165 {HB_TAG('r','n',' ',' '), HB_TAG('R','U','N',' ')}, /* Rundi */
166 {HB_TAG('r','o',' ',' '), HB_TAG('R','O','M',' ')}, /* Romanian */
167 {HB_TAG('r','u',' ',' '), HB_TAG('R','U','S',' ')}, /* Russian */
168 {HB_TAG('r','w',' ',' '), HB_TAG('R','U','A',' ')}, /* Kinyarwanda */
169 {HB_TAG('s','a',' ',' '), HB_TAG('S','A','N',' ')}, /* Sanskrit */
170 {HB_TAG('s','c',' ',' '), HB_TAG('S','R','D',' ')}, /* Sardinian [macrolanguage] */
171 {HB_TAG('s','d',' ',' '), HB_TAG('S','N','D',' ')}, /* Sindhi */
172 {HB_TAG('s','e',' ',' '), HB_TAG('N','S','M',' ')}, /* Northern Sami */
173 {HB_TAG('s','g',' ',' '), HB_TAG('S','G','O',' ')}, /* Sango */
174 {HB_TAG('s','h',' ',' '), HB_TAG('B','O','S',' ')}, /* Serbo-Croatian [macrolanguage] -> Bosnian */
175 {HB_TAG('s','h',' ',' '), HB_TAG('H','R','V',' ')}, /* Serbo-Croatian [macrolanguage] -> Croatian */
176 {HB_TAG('s','h',' ',' '), HB_TAG('S','R','B',' ')}, /* Serbo-Croatian [macrolanguage] -> Serbian */
177 {HB_TAG('s','i',' ',' '), HB_TAG('S','N','H',' ')}, /* Sinhala (Sinhalese) */
178 {HB_TAG('s','k',' ',' '), HB_TAG('S','K','Y',' ')}, /* Slovak */
179 {HB_TAG('s','l',' ',' '), HB_TAG('S','L','V',' ')}, /* Slovenian */
180 {HB_TAG('s','m',' ',' '), HB_TAG('S','M','O',' ')}, /* Samoan */
181 {HB_TAG('s','n',' ',' '), HB_TAG('S','N','A','0')}, /* Shona */
182 {HB_TAG('s','o',' ',' '), HB_TAG('S','M','L',' ')}, /* Somali */
183 {HB_TAG('s','q',' ',' '), HB_TAG('S','Q','I',' ')}, /* Albanian [macrolanguage] */
184 {HB_TAG('s','r',' ',' '), HB_TAG('S','R','B',' ')}, /* Serbian */
185 {HB_TAG('s','s',' ',' '), HB_TAG('S','W','Z',' ')}, /* Swati */
186 {HB_TAG('s','t',' ',' '), HB_TAG('S','O','T',' ')}, /* Southern Sotho */
187 {HB_TAG('s','u',' ',' '), HB_TAG('S','U','N',' ')}, /* Sundanese */
188 {HB_TAG('s','v',' ',' '), HB_TAG('S','V','E',' ')}, /* Swedish */
189 {HB_TAG('s','w',' ',' '), HB_TAG('S','W','K',' ')}, /* Swahili [macrolanguage] */
190 {HB_TAG('t','a',' ',' '), HB_TAG('T','A','M',' ')}, /* Tamil */
191 {HB_TAG('t','e',' ',' '), HB_TAG('T','E','L',' ')}, /* Telugu */
192 {HB_TAG('t','g',' ',' '), HB_TAG('T','A','J',' ')}, /* Tajik -> Tajiki */
193 {HB_TAG('t','h',' ',' '), HB_TAG('T','H','A',' ')}, /* Thai */
194 {HB_TAG('t','i',' ',' '), HB_TAG('T','G','Y',' ')}, /* Tigrinya */
195 {HB_TAG('t','k',' ',' '), HB_TAG('T','K','M',' ')}, /* Turkmen */
196 {HB_TAG('t','l',' ',' '), HB_TAG('T','G','L',' ')}, /* Tagalog */
197 {HB_TAG('t','n',' ',' '), HB_TAG('T','N','A',' ')}, /* Tswana */
198 {HB_TAG('t','o',' ',' '), HB_TAG('T','G','N',' ')}, /* Tonga (Tonga Islands) -> Tongan */
199 {HB_TAG('t','r',' ',' '), HB_TAG('T','R','K',' ')}, /* Turkish */
200 {HB_TAG('t','s',' ',' '), HB_TAG('T','S','G',' ')}, /* Tsonga */
201 {HB_TAG('t','t',' ',' '), HB_TAG('T','A','T',' ')}, /* Tatar */
202 {HB_TAG('t','w',' ',' '), HB_TAG('T','W','I',' ')}, /* Twi */
203 {HB_TAG('t','w',' ',' '), HB_TAG('A','K','A',' ')}, /* Twi -> Akan */
204 {HB_TAG('t','y',' ',' '), HB_TAG('T','H','T',' ')}, /* Tahitian */
205 {HB_TAG('u','g',' ',' '), HB_TAG('U','Y','G',' ')}, /* Uyghur */
206 {HB_TAG('u','k',' ',' '), HB_TAG('U','K','R',' ')}, /* Ukrainian */
207 {HB_TAG('u','r',' ',' '), HB_TAG('U','R','D',' ')}, /* Urdu */
208 {HB_TAG('u','z',' ',' '), HB_TAG('U','Z','B',' ')}, /* Uzbek [macrolanguage] */
209 {HB_TAG('v','e',' ',' '), HB_TAG('V','E','N',' ')}, /* Venda */
210 {HB_TAG('v','i',' ',' '), HB_TAG('V','I','T',' ')}, /* Vietnamese */
211 {HB_TAG('v','o',' ',' '), HB_TAG('V','O','L',' ')}, /* Volapük */
212 {HB_TAG('w','a',' ',' '), HB_TAG('W','L','N',' ')}, /* Walloon */
213 {HB_TAG('w','o',' ',' '), HB_TAG('W','L','F',' ')}, /* Wolof */
214 {HB_TAG('x','h',' ',' '), HB_TAG('X','H','S',' ')}, /* Xhosa */
215 {HB_TAG('y','i',' ',' '), HB_TAG('J','I','I',' ')}, /* Yiddish [macrolanguage] */
216 {HB_TAG('y','o',' ',' '), HB_TAG('Y','B','A',' ')}, /* Yoruba */
217 {HB_TAG('z','a',' ',' '), HB_TAG('Z','H','A',' ')}, /* Zhuang [macrolanguage] */
218 {HB_TAG('z','h',' ',' '), HB_TAG('Z','H','S',' ')}, /* Chinese, Simplified [macrolanguage] */
219 {HB_TAG('z','u',' ',' '), HB_TAG('Z','U','L',' ')}, /* Zulu */
220 };
221
222 #ifndef HB_NO_LANGUAGE_LONG
223 static const LangTag ot_languages3[] = {
224 {HB_TAG('a','a','e',' '), HB_TAG('S','Q','I',' ')}, /* Arbëreshë Albanian -> Albanian */
225 {HB_TAG('a','a','o',' '), HB_TAG('A','R','A',' ')}, /* Algerian Saharan Arabic -> Arabic */
226 {HB_TAG('a','a','t',' '), HB_TAG('S','Q','I',' ')}, /* Arvanitika Albanian -> Albanian */
227 {HB_TAG('a','b','a',' '), HB_TAG_NONE }, /* Abé != Abaza */
228 {HB_TAG('a','b','h',' '), HB_TAG('A','R','A',' ')}, /* Tajiki Arabic -> Arabic */
229 {HB_TAG('a','b','q',' '), HB_TAG('A','B','A',' ')}, /* Abaza */
230 {HB_TAG('a','b','s',' '), HB_TAG('C','P','P',' ')}, /* Ambonese Malay -> Creoles */
231 {HB_TAG('a','b','v',' '), HB_TAG('A','R','A',' ')}, /* Baharna Arabic -> Arabic */
232 {HB_TAG('a','c','f',' '), HB_TAG('F','A','N',' ')}, /* Saint Lucian Creole French -> French Antillean */
233 {HB_TAG('a','c','f',' '), HB_TAG('C','P','P',' ')}, /* Saint Lucian Creole French -> Creoles */
234 /*{HB_TAG('a','c','h',' '), HB_TAG('A','C','H',' ')},*/ /* Acoli -> Acholi */
235 {HB_TAG('a','c','m',' '), HB_TAG('A','R','A',' ')}, /* Mesopotamian Arabic -> Arabic */
236 {HB_TAG('a','c','q',' '), HB_TAG('A','R','A',' ')}, /* Ta'izzi-Adeni Arabic -> Arabic */
237 {HB_TAG('a','c','r',' '), HB_TAG('A','C','R',' ')}, /* Achi */
238 {HB_TAG('a','c','r',' '), HB_TAG('M','Y','N',' ')}, /* Achi -> Mayan */
239 {HB_TAG('a','c','w',' '), HB_TAG('A','R','A',' ')}, /* Hijazi Arabic -> Arabic */
240 {HB_TAG('a','c','x',' '), HB_TAG('A','R','A',' ')}, /* Omani Arabic -> Arabic */
241 {HB_TAG('a','c','y',' '), HB_TAG('A','R','A',' ')}, /* Cypriot Arabic -> Arabic */
242 {HB_TAG('a','d','a',' '), HB_TAG('D','N','G',' ')}, /* Adangme -> Dangme */
243 {HB_TAG('a','d','f',' '), HB_TAG('A','R','A',' ')}, /* Dhofari Arabic -> Arabic */
244 {HB_TAG('a','d','p',' '), HB_TAG('D','Z','N',' ')}, /* Adap (retired code) -> Dzongkha */
245 /*{HB_TAG('a','d','y',' '), HB_TAG('A','D','Y',' ')},*/ /* Adyghe */
246 {HB_TAG('a','e','b',' '), HB_TAG('A','R','A',' ')}, /* Tunisian Arabic -> Arabic */
247 {HB_TAG('a','e','c',' '), HB_TAG('A','R','A',' ')}, /* Saidi Arabic -> Arabic */
248 {HB_TAG('a','f','b',' '), HB_TAG('A','R','A',' ')}, /* Gulf Arabic -> Arabic */
249 {HB_TAG('a','f','k',' '), HB_TAG_NONE }, /* Nanubae != Afrikaans */
250 {HB_TAG('a','f','s',' '), HB_TAG('C','P','P',' ')}, /* Afro-Seminole Creole -> Creoles */
251 {HB_TAG('a','g','u',' '), HB_TAG('M','Y','N',' ')}, /* Aguacateco -> Mayan */
252 {HB_TAG('a','g','w',' '), HB_TAG_NONE }, /* Kahua != Agaw */
253 {HB_TAG('a','h','g',' '), HB_TAG('A','G','W',' ')}, /* Qimant -> Agaw */
254 {HB_TAG('a','h','t',' '), HB_TAG('A','T','H',' ')}, /* Ahtena -> Athapaskan */
255 {HB_TAG('a','i','g',' '), HB_TAG('C','P','P',' ')}, /* Antigua and Barbuda Creole English -> Creoles */
256 {HB_TAG('a','i','i',' '), HB_TAG('S','W','A',' ')}, /* Assyrian Neo-Aramaic -> Swadaya Aramaic */
257 {HB_TAG('a','i','i',' '), HB_TAG('S','Y','R',' ')}, /* Assyrian Neo-Aramaic -> Syriac */
258 /*{HB_TAG('a','i','o',' '), HB_TAG('A','I','O',' ')},*/ /* Aiton */
259 {HB_TAG('a','i','w',' '), HB_TAG('A','R','I',' ')}, /* Aari */
260 {HB_TAG('a','j','p',' '), HB_TAG('A','R','A',' ')}, /* South Levantine Arabic (retired code) -> Arabic */
261 {HB_TAG('a','j','t',' '), HB_TAG('A','R','A',' ')}, /* Judeo-Tunisian Arabic (retired code) -> Arabic */
262 {HB_TAG('a','k','b',' '), HB_TAG('A','K','B',' ')}, /* Batak Angkola */
263 {HB_TAG('a','k','b',' '), HB_TAG('B','T','K',' ')}, /* Batak Angkola -> Batak */
264 {HB_TAG('a','l','n',' '), HB_TAG('S','Q','I',' ')}, /* Gheg Albanian -> Albanian */
265 {HB_TAG('a','l','s',' '), HB_TAG('S','Q','I',' ')}, /* Tosk Albanian -> Albanian */
266 /*{HB_TAG('a','l','t',' '), HB_TAG('A','L','T',' ')},*/ /* Southern Altai -> Altai */
267 {HB_TAG('a','m','f',' '), HB_TAG('H','B','N',' ')}, /* Hamer-Banna -> Hammer-Banna */
268 {HB_TAG('a','m','w',' '), HB_TAG('S','Y','R',' ')}, /* Western Neo-Aramaic -> Syriac */
269 /*{HB_TAG('a','n','g',' '), HB_TAG('A','N','G',' ')},*/ /* Old English (ca. 450-1100) -> Anglo-Saxon */
270 {HB_TAG('a','o','a',' '), HB_TAG('C','P','P',' ')}, /* Angolar -> Creoles */
271 {HB_TAG('a','p','a',' '), HB_TAG('A','T','H',' ')}, /* Apache [collection] -> Athapaskan */
272 {HB_TAG('a','p','c',' '), HB_TAG('A','R','A',' ')}, /* Levantine Arabic -> Arabic */
273 {HB_TAG('a','p','d',' '), HB_TAG('A','R','A',' ')}, /* Sudanese Arabic -> Arabic */
274 {HB_TAG('a','p','j',' '), HB_TAG('A','T','H',' ')}, /* Jicarilla Apache -> Athapaskan */
275 {HB_TAG('a','p','k',' '), HB_TAG('A','T','H',' ')}, /* Kiowa Apache -> Athapaskan */
276 {HB_TAG('a','p','l',' '), HB_TAG('A','T','H',' ')}, /* Lipan Apache -> Athapaskan */
277 {HB_TAG('a','p','m',' '), HB_TAG('A','T','H',' ')}, /* Mescalero-Chiricahua Apache -> Athapaskan */
278 {HB_TAG('a','p','w',' '), HB_TAG('A','T','H',' ')}, /* Western Apache -> Athapaskan */
279 {HB_TAG('a','r','b',' '), HB_TAG('A','R','A',' ')}, /* Standard Arabic -> Arabic */
280 {HB_TAG('a','r','i',' '), HB_TAG_NONE }, /* Arikara != Aari */
281 {HB_TAG('a','r','k',' '), HB_TAG_NONE }, /* Arikapú != Rakhine */
282 {HB_TAG('a','r','n',' '), HB_TAG('M','A','P',' ')}, /* Mapudungun */
283 {HB_TAG('a','r','q',' '), HB_TAG('A','R','A',' ')}, /* Algerian Arabic -> Arabic */
284 {HB_TAG('a','r','s',' '), HB_TAG('A','R','A',' ')}, /* Najdi Arabic -> Arabic */
285 {HB_TAG('a','r','y',' '), HB_TAG('M','O','R',' ')}, /* Moroccan Arabic -> Moroccan */
286 {HB_TAG('a','r','y',' '), HB_TAG('A','R','A',' ')}, /* Moroccan Arabic -> Arabic */
287 {HB_TAG('a','r','z',' '), HB_TAG('A','R','A',' ')}, /* Egyptian Arabic -> Arabic */
288 /*{HB_TAG('a','s','t',' '), HB_TAG('A','S','T',' ')},*/ /* Asturian */
289 /*{HB_TAG('a','t','h',' '), HB_TAG('A','T','H',' ')},*/ /* Athapascan [collection] -> Athapaskan */
290 {HB_TAG('a','t','j',' '), HB_TAG('R','C','R',' ')}, /* Atikamekw -> R-Cree */
291 {HB_TAG('a','t','v',' '), HB_TAG('A','L','T',' ')}, /* Northern Altai -> Altai */
292 {HB_TAG('a','u','j',' '), HB_TAG('B','B','R',' ')}, /* Awjilah -> Berber */
293 {HB_TAG('a','u','z',' '), HB_TAG('A','R','A',' ')}, /* Uzbeki Arabic -> Arabic */
294 {HB_TAG('a','v','l',' '), HB_TAG('A','R','A',' ')}, /* Eastern Egyptian Bedawi Arabic -> Arabic */
295 /*{HB_TAG('a','v','n',' '), HB_TAG('A','V','N',' ')},*/ /* Avatime */
296 /*{HB_TAG('a','w','a',' '), HB_TAG('A','W','A',' ')},*/ /* Awadhi */
297 {HB_TAG('a','y','c',' '), HB_TAG('A','Y','M',' ')}, /* Southern Aymara -> Aymara */
298 {HB_TAG('a','y','h',' '), HB_TAG('A','R','A',' ')}, /* Hadrami Arabic -> Arabic */
299 {HB_TAG('a','y','l',' '), HB_TAG('A','R','A',' ')}, /* Libyan Arabic -> Arabic */
300 {HB_TAG('a','y','n',' '), HB_TAG('A','R','A',' ')}, /* Sanaani Arabic -> Arabic */
301 {HB_TAG('a','y','p',' '), HB_TAG('A','R','A',' ')}, /* North Mesopotamian Arabic -> Arabic */
302 {HB_TAG('a','y','r',' '), HB_TAG('A','Y','M',' ')}, /* Central Aymara -> Aymara */
303 {HB_TAG('a','z','b',' '), HB_TAG('A','Z','B',' ')}, /* South Azerbaijani -> Torki */
304 {HB_TAG('a','z','b',' '), HB_TAG('A','Z','E',' ')}, /* South Azerbaijani -> Azerbaijani */
305 {HB_TAG('a','z','d',' '), HB_TAG('N','A','H',' ')}, /* Eastern Durango Nahuatl -> Nahuatl */
306 {HB_TAG('a','z','j',' '), HB_TAG('A','Z','E',' ')}, /* North Azerbaijani -> Azerbaijani */
307 {HB_TAG('a','z','n',' '), HB_TAG('N','A','H',' ')}, /* Western Durango Nahuatl -> Nahuatl */
308 {HB_TAG('a','z','z',' '), HB_TAG('N','A','H',' ')}, /* Highland Puebla Nahuatl -> Nahuatl */
309 {HB_TAG('b','a','d',' '), HB_TAG('B','A','D','0')}, /* Banda [collection] */
310 {HB_TAG('b','a','g',' '), HB_TAG_NONE }, /* Tuki != Baghelkhandi */
311 {HB_TAG('b','a','h',' '), HB_TAG('C','P','P',' ')}, /* Bahamas Creole English -> Creoles */
312 {HB_TAG('b','a','i',' '), HB_TAG('B','M','L',' ')}, /* Bamileke [collection] */
313 {HB_TAG('b','a','l',' '), HB_TAG('B','L','I',' ')}, /* Baluchi [macrolanguage] */
314 /*{HB_TAG('b','a','n',' '), HB_TAG('B','A','N',' ')},*/ /* Balinese */
315 /*{HB_TAG('b','a','r',' '), HB_TAG('B','A','R',' ')},*/ /* Bavarian */
316 {HB_TAG('b','a','u',' '), HB_TAG_NONE }, /* Bada (Nigeria) != Baulé */
317 {HB_TAG('b','b','c',' '), HB_TAG('B','B','C',' ')}, /* Batak Toba */
318 {HB_TAG('b','b','c',' '), HB_TAG('B','T','K',' ')}, /* Batak Toba -> Batak */
319 {HB_TAG('b','b','j',' '), HB_TAG('B','M','L',' ')}, /* Ghomálá' -> Bamileke */
320 {HB_TAG('b','b','p',' '), HB_TAG('B','A','D','0')}, /* West Central Banda -> Banda */
321 {HB_TAG('b','b','r',' '), HB_TAG_NONE }, /* Girawa != Berber */
322 {HB_TAG('b','b','z',' '), HB_TAG('A','R','A',' ')}, /* Babalia Creole Arabic (retired code) -> Arabic */
323 {HB_TAG('b','c','c',' '), HB_TAG('B','L','I',' ')}, /* Southern Balochi -> Baluchi */
324 {HB_TAG('b','c','h',' '), HB_TAG_NONE }, /* Bariai != Bench */
325 {HB_TAG('b','c','i',' '), HB_TAG('B','A','U',' ')}, /* Baoulé -> Baulé */
326 {HB_TAG('b','c','l',' '), HB_TAG('B','I','K',' ')}, /* Central Bikol -> Bikol */
327 {HB_TAG('b','c','q',' '), HB_TAG('B','C','H',' ')}, /* Bench */
328 {HB_TAG('b','c','r',' '), HB_TAG('A','T','H',' ')}, /* Babine -> Athapaskan */
329 /*{HB_TAG('b','d','y',' '), HB_TAG('B','D','Y',' ')},*/ /* Bandjalang */
330 {HB_TAG('b','e','a',' '), HB_TAG('A','T','H',' ')}, /* Beaver -> Athapaskan */
331 {HB_TAG('b','e','b',' '), HB_TAG('B','T','I',' ')}, /* Bebele -> Beti */
332 /*{HB_TAG('b','e','m',' '), HB_TAG('B','E','M',' ')},*/ /* Bemba (Zambia) */
333 {HB_TAG('b','e','r',' '), HB_TAG('B','B','R',' ')}, /* Berber [collection] */
334 {HB_TAG('b','e','w',' '), HB_TAG('C','P','P',' ')}, /* Betawi -> Creoles */
335 {HB_TAG('b','f','l',' '), HB_TAG('B','A','D','0')}, /* Banda-Ndélé -> Banda */
336 {HB_TAG('b','f','q',' '), HB_TAG('B','A','D',' ')}, /* Badaga */
337 {HB_TAG('b','f','t',' '), HB_TAG('B','L','T',' ')}, /* Balti */
338 {HB_TAG('b','f','u',' '), HB_TAG('L','A','H',' ')}, /* Gahri -> Lahuli */
339 {HB_TAG('b','f','y',' '), HB_TAG('B','A','G',' ')}, /* Bagheli -> Baghelkhandi */
340 /*{HB_TAG('b','g','c',' '), HB_TAG('B','G','C',' ')},*/ /* Haryanvi */
341 {HB_TAG('b','g','n',' '), HB_TAG('B','L','I',' ')}, /* Western Balochi -> Baluchi */
342 {HB_TAG('b','g','p',' '), HB_TAG('B','L','I',' ')}, /* Eastern Balochi -> Baluchi */
343 {HB_TAG('b','g','q',' '), HB_TAG('B','G','Q',' ')}, /* Bagri */
344 {HB_TAG('b','g','q',' '), HB_TAG('R','A','J',' ')}, /* Bagri -> Rajasthani */
345 {HB_TAG('b','g','r',' '), HB_TAG('Q','I','N',' ')}, /* Bawm Chin -> Chin */
346 {HB_TAG('b','h','b',' '), HB_TAG('B','H','I',' ')}, /* Bhili */
347 /*{HB_TAG('b','h','i',' '), HB_TAG('B','H','I',' ')},*/ /* Bhilali -> Bhili */
348 {HB_TAG('b','h','k',' '), HB_TAG('B','I','K',' ')}, /* Albay Bicolano (retired code) -> Bikol */
349 /*{HB_TAG('b','h','o',' '), HB_TAG('B','H','O',' ')},*/ /* Bhojpuri */
350 {HB_TAG('b','h','r',' '), HB_TAG('M','L','G',' ')}, /* Bara Malagasy -> Malagasy */
351 /*{HB_TAG('b','i','k',' '), HB_TAG('B','I','K',' ')},*/ /* Bikol [macrolanguage] */
352 {HB_TAG('b','i','l',' '), HB_TAG_NONE }, /* Bile != Bilen */
353 {HB_TAG('b','i','n',' '), HB_TAG('E','D','O',' ')}, /* Edo */
354 {HB_TAG('b','i','u',' '), HB_TAG('Q','I','N',' ')}, /* Biete -> Chin */
355 /*{HB_TAG('b','j','j',' '), HB_TAG('B','J','J',' ')},*/ /* Kanauji */
356 {HB_TAG('b','j','n',' '), HB_TAG('M','L','Y',' ')}, /* Banjar -> Malay */
357 {HB_TAG('b','j','o',' '), HB_TAG('B','A','D','0')}, /* Mid-Southern Banda -> Banda */
358 {HB_TAG('b','j','q',' '), HB_TAG('M','L','G',' ')}, /* Southern Betsimisaraka Malagasy (retired code) -> Malagasy */
359 {HB_TAG('b','j','s',' '), HB_TAG('C','P','P',' ')}, /* Bajan -> Creoles */
360 {HB_TAG('b','j','t',' '), HB_TAG('B','L','N',' ')}, /* Balanta-Ganja -> Balante */
361 {HB_TAG('b','k','f',' '), HB_TAG_NONE }, /* Beeke != Blackfoot */
362 {HB_TAG('b','k','o',' '), HB_TAG('B','M','L',' ')}, /* Kwa' -> Bamileke */
363 {HB_TAG('b','l','a',' '), HB_TAG('B','K','F',' ')}, /* Siksika -> Blackfoot */
364 {HB_TAG('b','l','e',' '), HB_TAG('B','L','N',' ')}, /* Balanta-Kentohe -> Balante */
365 {HB_TAG('b','l','g',' '), HB_TAG('I','B','A',' ')}, /* Balau (retired code) -> Iban */
366 {HB_TAG('b','l','i',' '), HB_TAG_NONE }, /* Bolia != Baluchi */
367 {HB_TAG('b','l','k',' '), HB_TAG('B','L','K',' ')}, /* Pa’o Karen */
368 {HB_TAG('b','l','k',' '), HB_TAG('K','R','N',' ')}, /* Pa'o Karen -> Karen */
369 {HB_TAG('b','l','n',' '), HB_TAG('B','I','K',' ')}, /* Southern Catanduanes Bikol -> Bikol */
370 {HB_TAG('b','l','t',' '), HB_TAG_NONE }, /* Tai Dam != Balti */
371 {HB_TAG('b','m','b',' '), HB_TAG_NONE }, /* Bembe != Bambara (Bamanankan) */
372 {HB_TAG('b','m','l',' '), HB_TAG_NONE }, /* Bomboli != Bamileke */
373 {HB_TAG('b','m','m',' '), HB_TAG('M','L','G',' ')}, /* Northern Betsimisaraka Malagasy -> Malagasy */
374 {HB_TAG('b','p','d',' '), HB_TAG('B','A','D','0')}, /* Banda-Banda -> Banda */
375 {HB_TAG('b','p','l',' '), HB_TAG('C','P','P',' ')}, /* Broome Pearling Lugger Pidgin -> Creoles */
376 {HB_TAG('b','p','q',' '), HB_TAG('C','P','P',' ')}, /* Banda Malay -> Creoles */
377 /*{HB_TAG('b','p','y',' '), HB_TAG('B','P','Y',' ')},*/ /* Bishnupriya -> Bishnupriya Manipuri */
378 {HB_TAG('b','q','i',' '), HB_TAG('L','R','C',' ')}, /* Bakhtiari -> Luri */
379 {HB_TAG('b','q','k',' '), HB_TAG('B','A','D','0')}, /* Banda-Mbrès -> Banda */
380 {HB_TAG('b','r','a',' '), HB_TAG('B','R','I',' ')}, /* Braj -> Braj Bhasha */
381 {HB_TAG('b','r','c',' '), HB_TAG('C','P','P',' ')}, /* Berbice Creole Dutch -> Creoles */
382 /*{HB_TAG('b','r','h',' '), HB_TAG('B','R','H',' ')},*/ /* Brahui */
383 {HB_TAG('b','r','i',' '), HB_TAG_NONE }, /* Mokpwe != Braj Bhasha */
384 {HB_TAG('b','r','m',' '), HB_TAG_NONE }, /* Barambu != Burmese */
385 /*{HB_TAG('b','r','x',' '), HB_TAG('B','R','X',' ')},*/ /* Bodo (India) */
386 {HB_TAG('b','s','h',' '), HB_TAG_NONE }, /* Kati != Bashkir */
387 /*{HB_TAG('b','s','k',' '), HB_TAG('B','S','K',' ')},*/ /* Burushaski */
388 {HB_TAG('b','t','b',' '), HB_TAG('B','T','I',' ')}, /* Beti (Cameroon) (retired code) */
389 {HB_TAG('b','t','d',' '), HB_TAG('B','T','D',' ')}, /* Batak Dairi (Pakpak) */
390 {HB_TAG('b','t','d',' '), HB_TAG('B','T','K',' ')}, /* Batak Dairi -> Batak */
391 {HB_TAG('b','t','i',' '), HB_TAG_NONE }, /* Burate != Beti */
392 {HB_TAG('b','t','j',' '), HB_TAG('M','L','Y',' ')}, /* Bacanese Malay -> Malay */
393 /*{HB_TAG('b','t','k',' '), HB_TAG('B','T','K',' ')},*/ /* Batak [collection] */
394 {HB_TAG('b','t','m',' '), HB_TAG('B','T','M',' ')}, /* Batak Mandailing */
395 {HB_TAG('b','t','m',' '), HB_TAG('B','T','K',' ')}, /* Batak Mandailing -> Batak */
396 {HB_TAG('b','t','o',' '), HB_TAG('B','I','K',' ')}, /* Rinconada Bikol -> Bikol */
397 {HB_TAG('b','t','s',' '), HB_TAG('B','T','S',' ')}, /* Batak Simalungun */
398 {HB_TAG('b','t','s',' '), HB_TAG('B','T','K',' ')}, /* Batak Simalungun -> Batak */
399 {HB_TAG('b','t','x',' '), HB_TAG('B','T','X',' ')}, /* Batak Karo */
400 {HB_TAG('b','t','x',' '), HB_TAG('B','T','K',' ')}, /* Batak Karo -> Batak */
401 {HB_TAG('b','t','z',' '), HB_TAG('B','T','Z',' ')}, /* Batak Alas-Kluet */
402 {HB_TAG('b','t','z',' '), HB_TAG('B','T','K',' ')}, /* Batak Alas-Kluet -> Batak */
403 /*{HB_TAG('b','u','g',' '), HB_TAG('B','U','G',' ')},*/ /* Buginese -> Bugis */
404 {HB_TAG('b','u','m',' '), HB_TAG('B','T','I',' ')}, /* Bulu (Cameroon) -> Beti */
405 {HB_TAG('b','v','e',' '), HB_TAG('M','L','Y',' ')}, /* Berau Malay -> Malay */
406 {HB_TAG('b','v','u',' '), HB_TAG('M','L','Y',' ')}, /* Bukit Malay -> Malay */
407 {HB_TAG('b','w','e',' '), HB_TAG('K','R','N',' ')}, /* Bwe Karen -> Karen */
408 {HB_TAG('b','x','k',' '), HB_TAG('L','U','H',' ')}, /* Bukusu -> Luyia */
409 {HB_TAG('b','x','o',' '), HB_TAG('C','P','P',' ')}, /* Barikanchi -> Creoles */
410 {HB_TAG('b','x','p',' '), HB_TAG('B','T','I',' ')}, /* Bebil -> Beti */
411 {HB_TAG('b','x','r',' '), HB_TAG('R','B','U',' ')}, /* Russia Buriat -> Russian Buriat */
412 {HB_TAG('b','y','n',' '), HB_TAG('B','I','L',' ')}, /* Bilin -> Bilen */
413 {HB_TAG('b','y','v',' '), HB_TAG('B','Y','V',' ')}, /* Medumba */
414 {HB_TAG('b','y','v',' '), HB_TAG('B','M','L',' ')}, /* Medumba -> Bamileke */
415 {HB_TAG('b','z','c',' '), HB_TAG('M','L','G',' ')}, /* Southern Betsimisaraka Malagasy -> Malagasy */
416 {HB_TAG('b','z','j',' '), HB_TAG('C','P','P',' ')}, /* Belize Kriol English -> Creoles */
417 {HB_TAG('b','z','k',' '), HB_TAG('C','P','P',' ')}, /* Nicaragua Creole English -> Creoles */
418 {HB_TAG('c','a','a',' '), HB_TAG('M','Y','N',' ')}, /* Chortí -> Mayan */
419 {HB_TAG('c','a','c',' '), HB_TAG('M','Y','N',' ')}, /* Chuj -> Mayan */
420 {HB_TAG('c','a','f',' '), HB_TAG('C','R','R',' ')}, /* Southern Carrier -> Carrier */
421 {HB_TAG('c','a','f',' '), HB_TAG('A','T','H',' ')}, /* Southern Carrier -> Athapaskan */
422 {HB_TAG('c','a','k',' '), HB_TAG('C','A','K',' ')}, /* Kaqchikel */
423 {HB_TAG('c','a','k',' '), HB_TAG('M','Y','N',' ')}, /* Kaqchikel -> Mayan */
424 {HB_TAG('c','b','k',' '), HB_TAG('C','B','K',' ')}, /* Chavacano -> Zamboanga Chavacano */
425 {HB_TAG('c','b','k',' '), HB_TAG('C','P','P',' ')}, /* Chavacano -> Creoles */
426 {HB_TAG('c','b','l',' '), HB_TAG('Q','I','N',' ')}, /* Bualkhaw Chin -> Chin */
427 {HB_TAG('c','c','l',' '), HB_TAG('C','P','P',' ')}, /* Cutchi-Swahili -> Creoles */
428 {HB_TAG('c','c','m',' '), HB_TAG('C','P','P',' ')}, /* Malaccan Creole Malay -> Creoles */
429 {HB_TAG('c','c','o',' '), HB_TAG('C','C','H','N')}, /* Comaltepec Chinantec -> Chinantec */
430 {HB_TAG('c','c','q',' '), HB_TAG('A','R','K',' ')}, /* Chaungtha (retired code) -> Rakhine */
431 {HB_TAG('c','d','o',' '), HB_TAG('Z','H','S',' ')}, /* Min Dong Chinese -> Chinese, Simplified */
432 /*{HB_TAG('c','e','b',' '), HB_TAG('C','E','B',' ')},*/ /* Cebuano */
433 {HB_TAG('c','e','k',' '), HB_TAG('Q','I','N',' ')}, /* Eastern Khumi Chin -> Chin */
434 {HB_TAG('c','e','y',' '), HB_TAG('Q','I','N',' ')}, /* Ekai Chin -> Chin */
435 {HB_TAG('c','f','m',' '), HB_TAG('H','A','L',' ')}, /* Halam (Falam Chin) */
436 {HB_TAG('c','f','m',' '), HB_TAG('Q','I','N',' ')}, /* Falam Chin -> Chin */
437 /*{HB_TAG('c','g','g',' '), HB_TAG('C','G','G',' ')},*/ /* Chiga */
438 {HB_TAG('c','h','f',' '), HB_TAG('M','Y','N',' ')}, /* Tabasco Chontal -> Mayan */
439 {HB_TAG('c','h','g',' '), HB_TAG_NONE }, /* Chagatai != Chaha Gurage */
440 {HB_TAG('c','h','h',' '), HB_TAG_NONE }, /* Chinook != Chattisgarhi */
441 {HB_TAG('c','h','j',' '), HB_TAG('C','C','H','N')}, /* Ojitlán Chinantec -> Chinantec */
442 {HB_TAG('c','h','k',' '), HB_TAG('C','H','K','0')}, /* Chuukese */
443 {HB_TAG('c','h','m',' '), HB_TAG('H','M','A',' ')}, /* Mari (Russia) [macrolanguage] -> High Mari */
444 {HB_TAG('c','h','m',' '), HB_TAG('L','M','A',' ')}, /* Mari (Russia) [macrolanguage] -> Low Mari */
445 {HB_TAG('c','h','n',' '), HB_TAG('C','P','P',' ')}, /* Chinook jargon -> Creoles */
446 /*{HB_TAG('c','h','o',' '), HB_TAG('C','H','O',' ')},*/ /* Choctaw */
447 {HB_TAG('c','h','p',' '), HB_TAG('C','H','P',' ')}, /* Chipewyan */
448 {HB_TAG('c','h','p',' '), HB_TAG('S','A','Y',' ')}, /* Chipewyan -> Sayisi */
449 {HB_TAG('c','h','p',' '), HB_TAG('A','T','H',' ')}, /* Chipewyan -> Athapaskan */
450 {HB_TAG('c','h','q',' '), HB_TAG('C','C','H','N')}, /* Quiotepec Chinantec -> Chinantec */
451 /*{HB_TAG('c','h','r',' '), HB_TAG('C','H','R',' ')},*/ /* Cherokee */
452 /*{HB_TAG('c','h','y',' '), HB_TAG('C','H','Y',' ')},*/ /* Cheyenne */
453 {HB_TAG('c','h','z',' '), HB_TAG('C','C','H','N')}, /* Ozumacín Chinantec -> Chinantec */
454 {HB_TAG('c','i','w',' '), HB_TAG('O','J','B',' ')}, /* Chippewa -> Ojibway */
455 /*{HB_TAG('c','j','a',' '), HB_TAG('C','J','A',' ')},*/ /* Western Cham */
456 /*{HB_TAG('c','j','m',' '), HB_TAG('C','J','M',' ')},*/ /* Eastern Cham */
457 {HB_TAG('c','j','y',' '), HB_TAG('Z','H','S',' ')}, /* Jinyu Chinese -> Chinese, Simplified */
458 {HB_TAG('c','k','a',' '), HB_TAG('Q','I','N',' ')}, /* Khumi Awa Chin (retired code) -> Chin */
459 {HB_TAG('c','k','b',' '), HB_TAG('K','U','R',' ')}, /* Central Kurdish -> Kurdish */
460 {HB_TAG('c','k','n',' '), HB_TAG('Q','I','N',' ')}, /* Kaang Chin -> Chin */
461 {HB_TAG('c','k','s',' '), HB_TAG('C','P','P',' ')}, /* Tayo -> Creoles */
462 {HB_TAG('c','k','t',' '), HB_TAG('C','H','K',' ')}, /* Chukot -> Chukchi */
463 {HB_TAG('c','k','z',' '), HB_TAG('M','Y','N',' ')}, /* Cakchiquel-Quiché Mixed Language -> Mayan */
464 {HB_TAG('c','l','c',' '), HB_TAG('A','T','H',' ')}, /* Chilcotin -> Athapaskan */
465 {HB_TAG('c','l','d',' '), HB_TAG('S','Y','R',' ')}, /* Chaldean Neo-Aramaic -> Syriac */
466 {HB_TAG('c','l','e',' '), HB_TAG('C','C','H','N')}, /* Lealao Chinantec -> Chinantec */
467 {HB_TAG('c','l','j',' '), HB_TAG('Q','I','N',' ')}, /* Laitu Chin -> Chin */
468 {HB_TAG('c','l','t',' '), HB_TAG('Q','I','N',' ')}, /* Lautu Chin -> Chin */
469 {HB_TAG('c','m','n',' '), HB_TAG('Z','H','S',' ')}, /* Mandarin Chinese -> Chinese, Simplified */
470 {HB_TAG('c','m','r',' '), HB_TAG('Q','I','N',' ')}, /* Mro-Khimi Chin -> Chin */
471 {HB_TAG('c','n','b',' '), HB_TAG('Q','I','N',' ')}, /* Chinbon Chin -> Chin */
472 {HB_TAG('c','n','h',' '), HB_TAG('Q','I','N',' ')}, /* Hakha Chin -> Chin */
473 {HB_TAG('c','n','k',' '), HB_TAG('Q','I','N',' ')}, /* Khumi Chin -> Chin */
474 {HB_TAG('c','n','l',' '), HB_TAG('C','C','H','N')}, /* Lalana Chinantec -> Chinantec */
475 {HB_TAG('c','n','p',' '), HB_TAG('Z','H','S',' ')}, /* Northern Ping Chinese -> Chinese, Simplified */
476 {HB_TAG('c','n','r',' '), HB_TAG('S','R','B',' ')}, /* Montenegrin -> Serbian */
477 {HB_TAG('c','n','t',' '), HB_TAG('C','C','H','N')}, /* Tepetotutla Chinantec -> Chinantec */
478 {HB_TAG('c','n','u',' '), HB_TAG('B','B','R',' ')}, /* Chenoua -> Berber */
479 {HB_TAG('c','n','w',' '), HB_TAG('Q','I','N',' ')}, /* Ngawn Chin -> Chin */
480 {HB_TAG('c','o','a',' '), HB_TAG('M','L','Y',' ')}, /* Cocos Islands Malay -> Malay */
481 {HB_TAG('c','o','b',' '), HB_TAG('M','Y','N',' ')}, /* Chicomuceltec -> Mayan */
482 /*{HB_TAG('c','o','p',' '), HB_TAG('C','O','P',' ')},*/ /* Coptic */
483 {HB_TAG('c','o','q',' '), HB_TAG('A','T','H',' ')}, /* Coquille -> Athapaskan */
484 {HB_TAG('c','p','a',' '), HB_TAG('C','C','H','N')}, /* Palantla Chinantec -> Chinantec */
485 {HB_TAG('c','p','e',' '), HB_TAG('C','P','P',' ')}, /* English-based creoles and pidgins [collection] -> Creoles */
486 {HB_TAG('c','p','f',' '), HB_TAG('C','P','P',' ')}, /* French-based creoles and pidgins [collection] -> Creoles */
487 {HB_TAG('c','p','i',' '), HB_TAG('C','P','P',' ')}, /* Chinese Pidgin English -> Creoles */
488 /*{HB_TAG('c','p','p',' '), HB_TAG('C','P','P',' ')},*/ /* Portuguese-based creoles and pidgins [collection] -> Creoles */
489 {HB_TAG('c','p','x',' '), HB_TAG('Z','H','S',' ')}, /* Pu-Xian Chinese -> Chinese, Simplified */
490 {HB_TAG('c','q','d',' '), HB_TAG('H','M','N',' ')}, /* Chuanqiandian Cluster Miao -> Hmong */
491 {HB_TAG('c','q','u',' '), HB_TAG('Q','U','H',' ')}, /* Chilean Quechua (retired code) -> Quechua (Bolivia) */
492 {HB_TAG('c','q','u',' '), HB_TAG('Q','U','Z',' ')}, /* Chilean Quechua (retired code) -> Quechua */
493 {HB_TAG('c','r','h',' '), HB_TAG('C','R','T',' ')}, /* Crimean Tatar */
494 {HB_TAG('c','r','i',' '), HB_TAG('C','P','P',' ')}, /* Sãotomense -> Creoles */
495 {HB_TAG('c','r','j',' '), HB_TAG('E','C','R',' ')}, /* Southern East Cree -> Eastern Cree */
496 {HB_TAG('c','r','j',' '), HB_TAG('Y','C','R',' ')}, /* Southern East Cree -> Y-Cree */
497 {HB_TAG('c','r','j',' '), HB_TAG('C','R','E',' ')}, /* Southern East Cree -> Cree */
498 {HB_TAG('c','r','k',' '), HB_TAG('W','C','R',' ')}, /* Plains Cree -> West-Cree */
499 {HB_TAG('c','r','k',' '), HB_TAG('Y','C','R',' ')}, /* Plains Cree -> Y-Cree */
500 {HB_TAG('c','r','k',' '), HB_TAG('C','R','E',' ')}, /* Plains Cree -> Cree */
501 {HB_TAG('c','r','l',' '), HB_TAG('E','C','R',' ')}, /* Northern East Cree -> Eastern Cree */
502 {HB_TAG('c','r','l',' '), HB_TAG('Y','C','R',' ')}, /* Northern East Cree -> Y-Cree */
503 {HB_TAG('c','r','l',' '), HB_TAG('C','R','E',' ')}, /* Northern East Cree -> Cree */
504 {HB_TAG('c','r','m',' '), HB_TAG('M','C','R',' ')}, /* Moose Cree */
505 {HB_TAG('c','r','m',' '), HB_TAG('L','C','R',' ')}, /* Moose Cree -> L-Cree */
506 {HB_TAG('c','r','m',' '), HB_TAG('C','R','E',' ')}, /* Moose Cree -> Cree */
507 {HB_TAG('c','r','p',' '), HB_TAG('C','P','P',' ')}, /* Creoles and pidgins [collection] -> Creoles */
508 {HB_TAG('c','r','r',' '), HB_TAG_NONE }, /* Carolina Algonquian != Carrier */
509 {HB_TAG('c','r','s',' '), HB_TAG('C','P','P',' ')}, /* Seselwa Creole French -> Creoles */
510 {HB_TAG('c','r','t',' '), HB_TAG_NONE }, /* Iyojwa'ja Chorote != Crimean Tatar */
511 {HB_TAG('c','r','x',' '), HB_TAG('C','R','R',' ')}, /* Carrier */
512 {HB_TAG('c','r','x',' '), HB_TAG('A','T','H',' ')}, /* Carrier -> Athapaskan */
513 {HB_TAG('c','s','a',' '), HB_TAG('C','C','H','N')}, /* Chiltepec Chinantec -> Chinantec */
514 /*{HB_TAG('c','s','b',' '), HB_TAG('C','S','B',' ')},*/ /* Kashubian */
515 {HB_TAG('c','s','h',' '), HB_TAG('Q','I','N',' ')}, /* Asho Chin -> Chin */
516 {HB_TAG('c','s','j',' '), HB_TAG('Q','I','N',' ')}, /* Songlai Chin -> Chin */
517 {HB_TAG('c','s','l',' '), HB_TAG_NONE }, /* Chinese Sign Language != Church Slavonic */
518 {HB_TAG('c','s','o',' '), HB_TAG('C','C','H','N')}, /* Sochiapam Chinantec -> Chinantec */
519 {HB_TAG('c','s','p',' '), HB_TAG('Z','H','S',' ')}, /* Southern Ping Chinese -> Chinese, Simplified */
520 {HB_TAG('c','s','v',' '), HB_TAG('Q','I','N',' ')}, /* Sumtu Chin -> Chin */
521 {HB_TAG('c','s','w',' '), HB_TAG('N','C','R',' ')}, /* Swampy Cree -> N-Cree */
522 {HB_TAG('c','s','w',' '), HB_TAG('N','H','C',' ')}, /* Swampy Cree -> Norway House Cree */
523 {HB_TAG('c','s','w',' '), HB_TAG('C','R','E',' ')}, /* Swampy Cree -> Cree */
524 {HB_TAG('c','s','y',' '), HB_TAG('Q','I','N',' ')}, /* Siyin Chin -> Chin */
525 {HB_TAG('c','t','c',' '), HB_TAG('A','T','H',' ')}, /* Chetco -> Athapaskan */
526 {HB_TAG('c','t','d',' '), HB_TAG('Q','I','N',' ')}, /* Tedim Chin -> Chin */
527 {HB_TAG('c','t','e',' '), HB_TAG('C','C','H','N')}, /* Tepinapa Chinantec -> Chinantec */
528 /*{HB_TAG('c','t','g',' '), HB_TAG('C','T','G',' ')},*/ /* Chittagonian */
529 {HB_TAG('c','t','h',' '), HB_TAG('Q','I','N',' ')}, /* Thaiphum Chin -> Chin */
530 {HB_TAG('c','t','l',' '), HB_TAG('C','C','H','N')}, /* Tlacoatzintepec Chinantec -> Chinantec */
531 {HB_TAG('c','t','s',' '), HB_TAG('B','I','K',' ')}, /* Northern Catanduanes Bikol -> Bikol */
532 /*{HB_TAG('c','t','t',' '), HB_TAG('C','T','T',' ')},*/ /* Wayanad Chetti */
533 {HB_TAG('c','t','u',' '), HB_TAG('M','Y','N',' ')}, /* Chol -> Mayan */
534 {HB_TAG('c','u','c',' '), HB_TAG('C','C','H','N')}, /* Usila Chinantec -> Chinantec */
535 /*{HB_TAG('c','u','k',' '), HB_TAG('C','U','K',' ')},*/ /* San Blas Kuna */
536 {HB_TAG('c','v','n',' '), HB_TAG('C','C','H','N')}, /* Valle Nacional Chinantec -> Chinantec */
537 {HB_TAG('c','w','d',' '), HB_TAG('D','C','R',' ')}, /* Woods Cree */
538 {HB_TAG('c','w','d',' '), HB_TAG('T','C','R',' ')}, /* Woods Cree -> TH-Cree */
539 {HB_TAG('c','w','d',' '), HB_TAG('C','R','E',' ')}, /* Woods Cree -> Cree */
540 {HB_TAG('c','z','h',' '), HB_TAG('Z','H','S',' ')}, /* Huizhou Chinese -> Chinese, Simplified */
541 {HB_TAG('c','z','o',' '), HB_TAG('Z','H','S',' ')}, /* Min Zhong Chinese -> Chinese, Simplified */
542 {HB_TAG('c','z','t',' '), HB_TAG('Q','I','N',' ')}, /* Zotung Chin -> Chin */
543 /*{HB_TAG('d','a','g',' '), HB_TAG('D','A','G',' ')},*/ /* Dagbani */
544 {HB_TAG('d','a','o',' '), HB_TAG('Q','I','N',' ')}, /* Daai Chin -> Chin */
545 {HB_TAG('d','a','p',' '), HB_TAG('N','I','S',' ')}, /* Nisi (India) (retired code) */
546 /*{HB_TAG('d','a','r',' '), HB_TAG('D','A','R',' ')},*/ /* Dargwa */
547 /*{HB_TAG('d','a','x',' '), HB_TAG('D','A','X',' ')},*/ /* Dayi */
548 {HB_TAG('d','c','r',' '), HB_TAG('C','P','P',' ')}, /* Negerhollands -> Creoles */
549 {HB_TAG('d','e','n',' '), HB_TAG('S','L','A',' ')}, /* Slave (Athapascan) [macrolanguage] -> Slavey */
550 {HB_TAG('d','e','n',' '), HB_TAG('A','T','H',' ')}, /* Slave (Athapascan) [macrolanguage] -> Athapaskan */
551 {HB_TAG('d','e','p',' '), HB_TAG('C','P','P',' ')}, /* Pidgin Delaware -> Creoles */
552 {HB_TAG('d','g','o',' '), HB_TAG('D','G','O',' ')}, /* Dogri (individual language) */
553 {HB_TAG('d','g','o',' '), HB_TAG('D','G','R',' ')}, /* Dogri (macrolanguage) */
554 {HB_TAG('d','g','r',' '), HB_TAG('A','T','H',' ')}, /* Dogrib -> Athapaskan */
555 {HB_TAG('d','h','d',' '), HB_TAG('M','A','W',' ')}, /* Dhundari -> Marwari */
556 /*{HB_TAG('d','h','g',' '), HB_TAG('D','H','G',' ')},*/ /* Dhangu */
557 {HB_TAG('d','h','v',' '), HB_TAG_NONE }, /* Dehu != Divehi (Dhivehi, Maldivian) (deprecated) */
558 {HB_TAG('d','i','b',' '), HB_TAG('D','N','K',' ')}, /* South Central Dinka -> Dinka */
559 {HB_TAG('d','i','k',' '), HB_TAG('D','N','K',' ')}, /* Southwestern Dinka -> Dinka */
560 {HB_TAG('d','i','n',' '), HB_TAG('D','N','K',' ')}, /* Dinka [macrolanguage] */
561 {HB_TAG('d','i','p',' '), HB_TAG('D','N','K',' ')}, /* Northeastern Dinka -> Dinka */
562 {HB_TAG('d','i','q',' '), HB_TAG('D','I','Q',' ')}, /* Dimli */
563 {HB_TAG('d','i','q',' '), HB_TAG('Z','Z','A',' ')}, /* Dimli -> Zazaki */
564 {HB_TAG('d','i','w',' '), HB_TAG('D','N','K',' ')}, /* Northwestern Dinka -> Dinka */
565 {HB_TAG('d','j','e',' '), HB_TAG('D','J','R',' ')}, /* Zarma */
566 {HB_TAG('d','j','k',' '), HB_TAG('C','P','P',' ')}, /* Eastern Maroon Creole -> Creoles */
567 {HB_TAG('d','j','r',' '), HB_TAG('D','J','R','0')}, /* Djambarrpuyngu */
568 {HB_TAG('d','k','s',' '), HB_TAG('D','N','K',' ')}, /* Southeastern Dinka -> Dinka */
569 {HB_TAG('d','n','g',' '), HB_TAG('D','U','N',' ')}, /* Dungan */
570 /*{HB_TAG('d','n','j',' '), HB_TAG('D','N','J',' ')},*/ /* Dan */
571 {HB_TAG('d','n','k',' '), HB_TAG_NONE }, /* Dengka != Dinka */
572 {HB_TAG('d','o','i',' '), HB_TAG('D','G','R',' ')}, /* Dogri (macrolanguage) [macrolanguage] */
573 {HB_TAG('d','r','h',' '), HB_TAG('M','N','G',' ')}, /* Darkhat (retired code) -> Mongolian */
574 {HB_TAG('d','r','i',' '), HB_TAG_NONE }, /* C'Lela != Dari */
575 {HB_TAG('d','r','w',' '), HB_TAG('D','R','I',' ')}, /* Darwazi (retired code) -> Dari */
576 {HB_TAG('d','r','w',' '), HB_TAG('F','A','R',' ')}, /* Darwazi (retired code) -> Persian */
577 {HB_TAG('d','s','b',' '), HB_TAG('L','S','B',' ')}, /* Lower Sorbian */
578 {HB_TAG('d','t','y',' '), HB_TAG('N','E','P',' ')}, /* Dotyali -> Nepali */
579 /*{HB_TAG('d','u','j',' '), HB_TAG('D','U','J',' ')},*/ /* Dhuwal (retired code) */
580 {HB_TAG('d','u','n',' '), HB_TAG_NONE }, /* Dusun Deyah != Dungan */
581 {HB_TAG('d','u','p',' '), HB_TAG('M','L','Y',' ')}, /* Duano -> Malay */
582 {HB_TAG('d','w','k',' '), HB_TAG('K','U','I',' ')}, /* Dawik Kui -> Kui */
583 {HB_TAG('d','w','u',' '), HB_TAG('D','U','J',' ')}, /* Dhuwal */
584 {HB_TAG('d','w','y',' '), HB_TAG('D','U','J',' ')}, /* Dhuwaya -> Dhuwal */
585 {HB_TAG('d','y','u',' '), HB_TAG('J','U','L',' ')}, /* Dyula -> Jula */
586 {HB_TAG('d','z','n',' '), HB_TAG_NONE }, /* Dzando != Dzongkha */
587 {HB_TAG('e','c','r',' '), HB_TAG_NONE }, /* Eteocretan != Eastern Cree */
588 /*{HB_TAG('e','f','i',' '), HB_TAG('E','F','I',' ')},*/ /* Efik */
589 {HB_TAG('e','k','k',' '), HB_TAG('E','T','I',' ')}, /* Standard Estonian -> Estonian */
590 {HB_TAG('e','k','y',' '), HB_TAG('K','R','N',' ')}, /* Eastern Kayah -> Karen */
591 {HB_TAG('e','m','k',' '), HB_TAG('E','M','K',' ')}, /* Eastern Maninkakan */
592 {HB_TAG('e','m','k',' '), HB_TAG('M','N','K',' ')}, /* Eastern Maninkakan -> Maninka */
593 {HB_TAG('e','m','y',' '), HB_TAG('M','Y','N',' ')}, /* Epigraphic Mayan -> Mayan */
594 {HB_TAG('e','n','b',' '), HB_TAG('K','A','L',' ')}, /* Markweeta -> Kalenjin */
595 {HB_TAG('e','n','f',' '), HB_TAG('F','N','E',' ')}, /* Forest Enets */
596 {HB_TAG('e','n','h',' '), HB_TAG('T','N','E',' ')}, /* Tundra Enets */
597 {HB_TAG('e','s','g',' '), HB_TAG('G','O','N',' ')}, /* Aheri Gondi -> Gondi */
598 {HB_TAG('e','s','i',' '), HB_TAG('I','P','K',' ')}, /* North Alaskan Inupiatun -> Inupiat */
599 {HB_TAG('e','s','k',' '), HB_TAG('I','P','K',' ')}, /* Northwest Alaska Inupiatun -> Inupiat */
600 /*{HB_TAG('e','s','u',' '), HB_TAG('E','S','U',' ')},*/ /* Central Yupik */
601 {HB_TAG('e','t','o',' '), HB_TAG('B','T','I',' ')}, /* Eton (Cameroon) -> Beti */
602 {HB_TAG('e','u','q',' '), HB_TAG_NONE }, /* Basque [collection] != Basque */
603 {HB_TAG('e','v','e',' '), HB_TAG('E','V','N',' ')}, /* Even */
604 {HB_TAG('e','v','n',' '), HB_TAG('E','V','K',' ')}, /* Evenki */
605 {HB_TAG('e','w','o',' '), HB_TAG('B','T','I',' ')}, /* Ewondo -> Beti */
606 {HB_TAG('e','y','o',' '), HB_TAG('K','A','L',' ')}, /* Keiyo -> Kalenjin */
607 {HB_TAG('f','a','b',' '), HB_TAG('C','P','P',' ')}, /* Fa d'Ambu -> Creoles */
608 {HB_TAG('f','a','n',' '), HB_TAG('F','A','N','0')}, /* Fang (Equatorial Guinea) */
609 {HB_TAG('f','a','n',' '), HB_TAG('B','T','I',' ')}, /* Fang (Equatorial Guinea) -> Beti */
610 {HB_TAG('f','a','r',' '), HB_TAG_NONE }, /* Fataleka != Persian */
611 {HB_TAG('f','a','t',' '), HB_TAG('F','A','T',' ')}, /* Fanti */
612 {HB_TAG('f','a','t',' '), HB_TAG('A','K','A',' ')}, /* Fanti -> Akan */
613 {HB_TAG('f','b','l',' '), HB_TAG('B','I','K',' ')}, /* West Albay Bikol -> Bikol */
614 {HB_TAG('f','f','m',' '), HB_TAG('F','U','L',' ')}, /* Maasina Fulfulde -> Fulah */
615 {HB_TAG('f','i','l',' '), HB_TAG('P','I','L',' ')}, /* Filipino */
616 {HB_TAG('f','l','m',' '), HB_TAG('H','A','L',' ')}, /* Halam (Falam Chin) (retired code) */
617 {HB_TAG('f','l','m',' '), HB_TAG('Q','I','N',' ')}, /* Falam Chin (retired code) -> Chin */
618 {HB_TAG('f','m','p',' '), HB_TAG('F','M','P',' ')}, /* Fe’fe’ */
619 {HB_TAG('f','m','p',' '), HB_TAG('B','M','L',' ')}, /* Fe'fe' -> Bamileke */
620 {HB_TAG('f','n','g',' '), HB_TAG('C','P','P',' ')}, /* Fanagalo -> Creoles */
621 /*{HB_TAG('f','o','n',' '), HB_TAG('F','O','N',' ')},*/ /* Fon */
622 {HB_TAG('f','o','s',' '), HB_TAG_NONE }, /* Siraya != Faroese */
623 {HB_TAG('f','p','e',' '), HB_TAG('C','P','P',' ')}, /* Fernando Po Creole English -> Creoles */
624 /*{HB_TAG('f','r','c',' '), HB_TAG('F','R','C',' ')},*/ /* Cajun French */
625 /*{HB_TAG('f','r','p',' '), HB_TAG('F','R','P',' ')},*/ /* Arpitan */
626 {HB_TAG('f','u','b',' '), HB_TAG('F','U','L',' ')}, /* Adamawa Fulfulde -> Fulah */
627 {HB_TAG('f','u','c',' '), HB_TAG('F','U','L',' ')}, /* Pulaar -> Fulah */
628 {HB_TAG('f','u','e',' '), HB_TAG('F','U','L',' ')}, /* Borgu Fulfulde -> Fulah */
629 {HB_TAG('f','u','f',' '), HB_TAG('F','T','A',' ')}, /* Pular -> Futa */
630 {HB_TAG('f','u','f',' '), HB_TAG('F','U','L',' ')}, /* Pular -> Fulah */
631 {HB_TAG('f','u','h',' '), HB_TAG('F','U','L',' ')}, /* Western Niger Fulfulde -> Fulah */
632 {HB_TAG('f','u','i',' '), HB_TAG('F','U','L',' ')}, /* Bagirmi Fulfulde -> Fulah */
633 {HB_TAG('f','u','q',' '), HB_TAG('F','U','L',' ')}, /* Central-Eastern Niger Fulfulde -> Fulah */
634 {HB_TAG('f','u','r',' '), HB_TAG('F','R','L',' ')}, /* Friulian */
635 {HB_TAG('f','u','v',' '), HB_TAG('F','U','V',' ')}, /* Nigerian Fulfulde */
636 {HB_TAG('f','u','v',' '), HB_TAG('F','U','L',' ')}, /* Nigerian Fulfulde -> Fulah */
637 {HB_TAG('g','a','a',' '), HB_TAG('G','A','D',' ')}, /* Ga */
638 {HB_TAG('g','a','c',' '), HB_TAG('C','P','P',' ')}, /* Mixed Great Andamanese -> Creoles */
639 {HB_TAG('g','a','d',' '), HB_TAG_NONE }, /* Gaddang != Ga */
640 {HB_TAG('g','a','e',' '), HB_TAG_NONE }, /* Guarequena != Scottish Gaelic (Gaelic) */
641 /*{HB_TAG('g','a','g',' '), HB_TAG('G','A','G',' ')},*/ /* Gagauz */
642 {HB_TAG('g','a','l',' '), HB_TAG_NONE }, /* Galolen != Galician */
643 {HB_TAG('g','a','n',' '), HB_TAG('Z','H','S',' ')}, /* Gan Chinese -> Chinese, Simplified */
644 {HB_TAG('g','a','r',' '), HB_TAG_NONE }, /* Galeya != Garshuni */
645 {HB_TAG('g','a','w',' '), HB_TAG_NONE }, /* Nobonob != Garhwali */
646 {HB_TAG('g','a','x',' '), HB_TAG('O','R','O',' ')}, /* Borana-Arsi-Guji Oromo -> Oromo */
647 {HB_TAG('g','a','z',' '), HB_TAG('O','R','O',' ')}, /* West Central Oromo -> Oromo */
648 {HB_TAG('g','b','m',' '), HB_TAG('G','A','W',' ')}, /* Garhwali */
649 {HB_TAG('g','c','e',' '), HB_TAG('A','T','H',' ')}, /* Galice -> Athapaskan */
650 {HB_TAG('g','c','f',' '), HB_TAG('C','P','P',' ')}, /* Guadeloupean Creole French -> Creoles */
651 {HB_TAG('g','c','l',' '), HB_TAG('C','P','P',' ')}, /* Grenadian Creole English -> Creoles */
652 {HB_TAG('g','c','r',' '), HB_TAG('C','P','P',' ')}, /* Guianese Creole French -> Creoles */
653 {HB_TAG('g','d','a',' '), HB_TAG('R','A','J',' ')}, /* Gade Lohar -> Rajasthani */
654 /*{HB_TAG('g','e','z',' '), HB_TAG('G','E','Z',' ')},*/ /* Geez */
655 {HB_TAG('g','g','o',' '), HB_TAG('G','O','N',' ')}, /* Southern Gondi (retired code) -> Gondi */
656 {HB_TAG('g','h','a',' '), HB_TAG('B','B','R',' ')}, /* Ghadamès -> Berber */
657 {HB_TAG('g','h','k',' '), HB_TAG('K','R','N',' ')}, /* Geko Karen -> Karen */
658 {HB_TAG('g','h','o',' '), HB_TAG('B','B','R',' ')}, /* Ghomara -> Berber */
659 {HB_TAG('g','i','b',' '), HB_TAG('C','P','P',' ')}, /* Gibanawa -> Creoles */
660 /*{HB_TAG('g','i','h',' '), HB_TAG('G','I','H',' ')},*/ /* Githabul */
661 {HB_TAG('g','i','l',' '), HB_TAG('G','I','L','0')}, /* Kiribati (Gilbertese) */
662 {HB_TAG('g','j','u',' '), HB_TAG('R','A','J',' ')}, /* Gujari -> Rajasthani */
663 {HB_TAG('g','k','p',' '), HB_TAG('G','K','P',' ')}, /* Guinea Kpelle -> Kpelle (Guinea) */
664 {HB_TAG('g','k','p',' '), HB_TAG('K','P','L',' ')}, /* Guinea Kpelle -> Kpelle */
665 {HB_TAG('g','l','d',' '), HB_TAG('N','A','N',' ')}, /* Nanai */
666 /*{HB_TAG('g','l','k',' '), HB_TAG('G','L','K',' ')},*/ /* Gilaki */
667 {HB_TAG('g','m','z',' '), HB_TAG_NONE }, /* Mgbolizhia != Gumuz */
668 {HB_TAG('g','n','b',' '), HB_TAG('Q','I','N',' ')}, /* Gangte -> Chin */
669 /*{HB_TAG('g','n','n',' '), HB_TAG('G','N','N',' ')},*/ /* Gumatj */
670 {HB_TAG('g','n','o',' '), HB_TAG('G','O','N',' ')}, /* Northern Gondi -> Gondi */
671 {HB_TAG('g','n','w',' '), HB_TAG('G','U','A',' ')}, /* Western Bolivian Guaraní -> Guarani */
672 /*{HB_TAG('g','o','g',' '), HB_TAG('G','O','G',' ')},*/ /* Gogo */
673 {HB_TAG('g','o','m',' '), HB_TAG('K','O','K',' ')}, /* Goan Konkani -> Konkani */
674 /*{HB_TAG('g','o','n',' '), HB_TAG('G','O','N',' ')},*/ /* Gondi [macrolanguage] */
675 {HB_TAG('g','o','q',' '), HB_TAG('C','P','P',' ')}, /* Gorap -> Creoles */
676 {HB_TAG('g','o','x',' '), HB_TAG('B','A','D','0')}, /* Gobu -> Banda */
677 {HB_TAG('g','p','e',' '), HB_TAG('C','P','P',' ')}, /* Ghanaian Pidgin English -> Creoles */
678 {HB_TAG('g','r','o',' '), HB_TAG_NONE }, /* Groma != Garo */
679 {HB_TAG('g','r','r',' '), HB_TAG('B','B','R',' ')}, /* Taznatit -> Berber */
680 {HB_TAG('g','r','t',' '), HB_TAG('G','R','O',' ')}, /* Garo */
681 {HB_TAG('g','r','u',' '), HB_TAG('S','O','G',' ')}, /* Kistane -> Sodo Gurage */
682 {HB_TAG('g','s','w',' '), HB_TAG('A','L','S',' ')}, /* Alsatian */
683 {HB_TAG('g','u','a',' '), HB_TAG_NONE }, /* Shiki != Guarani */
684 /*{HB_TAG('g','u','c',' '), HB_TAG('G','U','C',' ')},*/ /* Wayuu */
685 /*{HB_TAG('g','u','f',' '), HB_TAG('G','U','F',' ')},*/ /* Gupapuyngu */
686 {HB_TAG('g','u','g',' '), HB_TAG('G','U','A',' ')}, /* Paraguayan Guaraní -> Guarani */
687 {HB_TAG('g','u','i',' '), HB_TAG('G','U','A',' ')}, /* Eastern Bolivian Guaraní -> Guarani */
688 {HB_TAG('g','u','k',' '), HB_TAG('G','M','Z',' ')}, /* Gumuz */
689 {HB_TAG('g','u','l',' '), HB_TAG('C','P','P',' ')}, /* Sea Island Creole English -> Creoles */
690 {HB_TAG('g','u','n',' '), HB_TAG('G','U','A',' ')}, /* Mbyá Guaraní -> Guarani */
691 /*{HB_TAG('g','u','z',' '), HB_TAG('G','U','Z',' ')},*/ /* Gusii */
692 {HB_TAG('g','w','i',' '), HB_TAG('A','T','H',' ')}, /* Gwichʼin -> Athapaskan */
693 {HB_TAG('g','y','n',' '), HB_TAG('C','P','P',' ')}, /* Guyanese Creole English -> Creoles */
694 {HB_TAG('h','a','a',' '), HB_TAG('A','T','H',' ')}, /* Han -> Athapaskan */
695 {HB_TAG('h','a','e',' '), HB_TAG('O','R','O',' ')}, /* Eastern Oromo -> Oromo */
696 {HB_TAG('h','a','i',' '), HB_TAG('H','A','I','0')}, /* Haida [macrolanguage] */
697 {HB_TAG('h','a','k',' '), HB_TAG('Z','H','S',' ')}, /* Hakka Chinese -> Chinese, Simplified */
698 {HB_TAG('h','a','l',' '), HB_TAG_NONE }, /* Halang != Halam (Falam Chin) */
699 {HB_TAG('h','a','r',' '), HB_TAG('H','R','I',' ')}, /* Harari */
700 /*{HB_TAG('h','a','w',' '), HB_TAG('H','A','W',' ')},*/ /* Hawaiian */
701 {HB_TAG('h','a','x',' '), HB_TAG('H','A','I','0')}, /* Southern Haida -> Haida */
702 /*{HB_TAG('h','a','y',' '), HB_TAG('H','A','Y',' ')},*/ /* Haya */
703 /*{HB_TAG('h','a','z',' '), HB_TAG('H','A','Z',' ')},*/ /* Hazaragi */
704 {HB_TAG('h','b','n',' '), HB_TAG_NONE }, /* Heiban != Hammer-Banna */
705 {HB_TAG('h','c','a',' '), HB_TAG('C','P','P',' ')}, /* Andaman Creole Hindi -> Creoles */
706 {HB_TAG('h','d','n',' '), HB_TAG('H','A','I','0')}, /* Northern Haida -> Haida */
707 {HB_TAG('h','e','a',' '), HB_TAG('H','M','N',' ')}, /* Northern Qiandong Miao -> Hmong */
708 /*{HB_TAG('h','e','i',' '), HB_TAG('H','E','I',' ')},*/ /* Heiltsuk */
709 /*{HB_TAG('h','i','l',' '), HB_TAG('H','I','L',' ')},*/ /* Hiligaynon */
710 {HB_TAG('h','j','i',' '), HB_TAG('M','L','Y',' ')}, /* Haji -> Malay */
711 {HB_TAG('h','l','t',' '), HB_TAG('Q','I','N',' ')}, /* Matu Chin -> Chin */
712 {HB_TAG('h','m','a',' '), HB_TAG('H','M','N',' ')}, /* Southern Mashan Hmong -> Hmong */
713 {HB_TAG('h','m','c',' '), HB_TAG('H','M','N',' ')}, /* Central Huishui Hmong -> Hmong */
714 {HB_TAG('h','m','d',' '), HB_TAG('H','M','D',' ')}, /* Large Flowery Miao -> A-Hmao */
715 {HB_TAG('h','m','d',' '), HB_TAG('H','M','N',' ')}, /* Large Flowery Miao -> Hmong */
716 {HB_TAG('h','m','e',' '), HB_TAG('H','M','N',' ')}, /* Eastern Huishui Hmong -> Hmong */
717 {HB_TAG('h','m','g',' '), HB_TAG('H','M','N',' ')}, /* Southwestern Guiyang Hmong -> Hmong */
718 {HB_TAG('h','m','h',' '), HB_TAG('H','M','N',' ')}, /* Southwestern Huishui Hmong -> Hmong */
719 {HB_TAG('h','m','i',' '), HB_TAG('H','M','N',' ')}, /* Northern Huishui Hmong -> Hmong */
720 {HB_TAG('h','m','j',' '), HB_TAG('H','M','N',' ')}, /* Ge -> Hmong */
721 {HB_TAG('h','m','l',' '), HB_TAG('H','M','N',' ')}, /* Luopohe Hmong -> Hmong */
722 {HB_TAG('h','m','m',' '), HB_TAG('H','M','N',' ')}, /* Central Mashan Hmong -> Hmong */
723 /*{HB_TAG('h','m','n',' '), HB_TAG('H','M','N',' ')},*/ /* Hmong [macrolanguage] */
724 {HB_TAG('h','m','p',' '), HB_TAG('H','M','N',' ')}, /* Northern Mashan Hmong -> Hmong */
725 {HB_TAG('h','m','q',' '), HB_TAG('H','M','N',' ')}, /* Eastern Qiandong Miao -> Hmong */
726 {HB_TAG('h','m','r',' '), HB_TAG('Q','I','N',' ')}, /* Hmar -> Chin */
727 {HB_TAG('h','m','s',' '), HB_TAG('H','M','N',' ')}, /* Southern Qiandong Miao -> Hmong */
728 {HB_TAG('h','m','w',' '), HB_TAG('H','M','N',' ')}, /* Western Mashan Hmong -> Hmong */
729 {HB_TAG('h','m','y',' '), HB_TAG('H','M','N',' ')}, /* Southern Guiyang Hmong -> Hmong */
730 {HB_TAG('h','m','z',' '), HB_TAG('H','M','Z',' ')}, /* Hmong Shua -> Hmong Shuat */
731 {HB_TAG('h','m','z',' '), HB_TAG('H','M','N',' ')}, /* Hmong Shua -> Hmong */
732 /*{HB_TAG('h','n','d',' '), HB_TAG('H','N','D',' ')},*/ /* Southern Hindko -> Hindko */
733 {HB_TAG('h','n','e',' '), HB_TAG('C','H','H',' ')}, /* Chhattisgarhi -> Chattisgarhi */
734 {HB_TAG('h','n','j',' '), HB_TAG('H','M','N',' ')}, /* Hmong Njua -> Hmong */
735 {HB_TAG('h','n','o',' '), HB_TAG('H','N','D',' ')}, /* Northern Hindko -> Hindko */
736 {HB_TAG('h','o','c',' '), HB_TAG('H','O',' ',' ')}, /* Ho */
737 {HB_TAG('h','o','i',' '), HB_TAG('A','T','H',' ')}, /* Holikachuk -> Athapaskan */
738 {HB_TAG('h','o','j',' '), HB_TAG('H','A','R',' ')}, /* Hadothi -> Harauti */
739 {HB_TAG('h','o','j',' '), HB_TAG('R','A','J',' ')}, /* Hadothi -> Rajasthani */
740 {HB_TAG('h','r','a',' '), HB_TAG('Q','I','N',' ')}, /* Hrangkhol -> Chin */
741 {HB_TAG('h','r','m',' '), HB_TAG('H','M','N',' ')}, /* Horned Miao -> Hmong */
742 {HB_TAG('h','s','b',' '), HB_TAG('U','S','B',' ')}, /* Upper Sorbian */
743 {HB_TAG('h','s','n',' '), HB_TAG('Z','H','S',' ')}, /* Xiang Chinese -> Chinese, Simplified */
744 {HB_TAG('h','u','j',' '), HB_TAG('H','M','N',' ')}, /* Northern Guiyang Hmong -> Hmong */
745 {HB_TAG('h','u','p',' '), HB_TAG('A','T','H',' ')}, /* Hupa -> Athapaskan */
746 {HB_TAG('h','u','s',' '), HB_TAG('M','Y','N',' ')}, /* Huastec -> Mayan */
747 {HB_TAG('h','w','c',' '), HB_TAG('C','P','P',' ')}, /* Hawai'i Creole English -> Creoles */
748 {HB_TAG('h','y','w',' '), HB_TAG('H','Y','E',' ')}, /* Western Armenian -> Armenian */
749 /*{HB_TAG('i','b','a',' '), HB_TAG('I','B','A',' ')},*/ /* Iban */
750 /*{HB_TAG('i','b','b',' '), HB_TAG('I','B','B',' ')},*/ /* Ibibio */
751 {HB_TAG('i','b','y',' '), HB_TAG('I','J','O',' ')}, /* Ibani -> Ijo */
752 {HB_TAG('i','c','r',' '), HB_TAG('C','P','P',' ')}, /* Islander Creole English -> Creoles */
753 {HB_TAG('i','d','a',' '), HB_TAG('L','U','H',' ')}, /* Idakho-Isukha-Tiriki -> Luyia */
754 {HB_TAG('i','d','b',' '), HB_TAG('C','P','P',' ')}, /* Indo-Portuguese -> Creoles */
755 {HB_TAG('i','g','b',' '), HB_TAG('E','B','I',' ')}, /* Ebira */
756 {HB_TAG('i','h','b',' '), HB_TAG('C','P','P',' ')}, /* Iha Based Pidgin -> Creoles */
757 {HB_TAG('i','j','c',' '), HB_TAG('I','J','O',' ')}, /* Izon -> Ijo */
758 {HB_TAG('i','j','e',' '), HB_TAG('I','J','O',' ')}, /* Biseni -> Ijo */
759 {HB_TAG('i','j','n',' '), HB_TAG('I','J','O',' ')}, /* Kalabari -> Ijo */
760 /*{HB_TAG('i','j','o',' '), HB_TAG('I','J','O',' ')},*/ /* Ijo [collection] */
761 {HB_TAG('i','j','s',' '), HB_TAG('I','J','O',' ')}, /* Southeast Ijo -> Ijo */
762 {HB_TAG('i','k','e',' '), HB_TAG('I','N','U',' ')}, /* Eastern Canadian Inuktitut -> Inuktitut */
763 {HB_TAG('i','k','e',' '), HB_TAG('I','N','U','K')}, /* Eastern Canadian Inuktitut -> Nunavik Inuktitut */
764 {HB_TAG('i','k','t',' '), HB_TAG('I','N','U',' ')}, /* Inuinnaqtun -> Inuktitut */
765 /*{HB_TAG('i','l','o',' '), HB_TAG('I','L','O',' ')},*/ /* Iloko -> Ilokano */
766 {HB_TAG('i','n','g',' '), HB_TAG('A','T','H',' ')}, /* Degexit'an -> Athapaskan */
767 {HB_TAG('i','n','h',' '), HB_TAG('I','N','G',' ')}, /* Ingush */
768 {HB_TAG('i','r','i',' '), HB_TAG_NONE }, /* Rigwe != Irish */
769 /*{HB_TAG('i','r','u',' '), HB_TAG('I','R','U',' ')},*/ /* Irula */
770 {HB_TAG('i','s','m',' '), HB_TAG_NONE }, /* Masimasi != Inari Sami */
771 {HB_TAG('i','t','z',' '), HB_TAG('M','Y','N',' ')}, /* Itzá -> Mayan */
772 {HB_TAG('i','x','l',' '), HB_TAG('M','Y','N',' ')}, /* Ixil -> Mayan */
773 {HB_TAG('j','a','c',' '), HB_TAG('M','Y','N',' ')}, /* Popti' -> Mayan */
774 {HB_TAG('j','a','k',' '), HB_TAG('M','L','Y',' ')}, /* Jakun -> Malay */
775 {HB_TAG('j','a','m',' '), HB_TAG('J','A','M',' ')}, /* Jamaican Creole English -> Jamaican Creole */
776 {HB_TAG('j','a','m',' '), HB_TAG('C','P','P',' ')}, /* Jamaican Creole English -> Creoles */
777 {HB_TAG('j','a','n',' '), HB_TAG_NONE }, /* Jandai != Japanese */
778 {HB_TAG('j','a','x',' '), HB_TAG('M','L','Y',' ')}, /* Jambi Malay -> Malay */
779 {HB_TAG('j','b','e',' '), HB_TAG('B','B','R',' ')}, /* Judeo-Berber -> Berber */
780 {HB_TAG('j','b','n',' '), HB_TAG('B','B','R',' ')}, /* Nafusi -> Berber */
781 /*{HB_TAG('j','b','o',' '), HB_TAG('J','B','O',' ')},*/ /* Lojban */
782 /*{HB_TAG('j','c','t',' '), HB_TAG('J','C','T',' ')},*/ /* Krymchak */
783 {HB_TAG('j','g','o',' '), HB_TAG('B','M','L',' ')}, /* Ngomba -> Bamileke */
784 {HB_TAG('j','i','i',' '), HB_TAG_NONE }, /* Jiiddu != Yiddish */
785 {HB_TAG('j','k','m',' '), HB_TAG('K','R','N',' ')}, /* Mobwa Karen -> Karen */
786 {HB_TAG('j','k','p',' '), HB_TAG('K','R','N',' ')}, /* Paku Karen -> Karen */
787 {HB_TAG('j','u','d',' '), HB_TAG_NONE }, /* Worodougou != Ladino */
788 {HB_TAG('j','u','l',' '), HB_TAG_NONE }, /* Jirel != Jula */
789 {HB_TAG('j','v','d',' '), HB_TAG('C','P','P',' ')}, /* Javindo -> Creoles */
790 {HB_TAG('k','a','a',' '), HB_TAG('K','R','K',' ')}, /* Karakalpak */
791 {HB_TAG('k','a','b',' '), HB_TAG('K','A','B','0')}, /* Kabyle */
792 {HB_TAG('k','a','b',' '), HB_TAG('B','B','R',' ')}, /* Kabyle -> Berber */
793 {HB_TAG('k','a','c',' '), HB_TAG_NONE }, /* Kachin != Kachchi */
794 {HB_TAG('k','a','m',' '), HB_TAG('K','M','B',' ')}, /* Kamba (Kenya) */
795 {HB_TAG('k','a','r',' '), HB_TAG('K','R','N',' ')}, /* Karen [collection] */
796 /*{HB_TAG('k','a','w',' '), HB_TAG('K','A','W',' ')},*/ /* Kawi (Old Javanese) */
797 {HB_TAG('k','b','d',' '), HB_TAG('K','A','B',' ')}, /* Kabardian */
798 {HB_TAG('k','b','y',' '), HB_TAG('K','N','R',' ')}, /* Manga Kanuri -> Kanuri */
799 {HB_TAG('k','c','a',' '), HB_TAG('K','H','K',' ')}, /* Khanty -> Khanty-Kazim */
800 {HB_TAG('k','c','a',' '), HB_TAG('K','H','S',' ')}, /* Khanty -> Khanty-Shurishkar */
801 {HB_TAG('k','c','a',' '), HB_TAG('K','H','V',' ')}, /* Khanty -> Khanty-Vakhi */
802 {HB_TAG('k','c','n',' '), HB_TAG('C','P','P',' ')}, /* Nubi -> Creoles */
803 /*{HB_TAG('k','d','e',' '), HB_TAG('K','D','E',' ')},*/ /* Makonde */
804 {HB_TAG('k','d','r',' '), HB_TAG('K','R','M',' ')}, /* Karaim */
805 {HB_TAG('k','d','t',' '), HB_TAG('K','U','Y',' ')}, /* Kuy */
806 {HB_TAG('k','e','a',' '), HB_TAG('K','E','A',' ')}, /* Kabuverdianu (Crioulo) */
807 {HB_TAG('k','e','a',' '), HB_TAG('C','P','P',' ')}, /* Kabuverdianu -> Creoles */
808 {HB_TAG('k','e','b',' '), HB_TAG_NONE }, /* Kélé != Kebena */
809 {HB_TAG('k','e','k',' '), HB_TAG('K','E','K',' ')}, /* Kekchi */
810 {HB_TAG('k','e','k',' '), HB_TAG('M','Y','N',' ')}, /* Kekchí -> Mayan */
811 {HB_TAG('k','e','x',' '), HB_TAG('K','K','N',' ')}, /* Kukna -> Kokni */
812 {HB_TAG('k','f','a',' '), HB_TAG('K','O','D',' ')}, /* Kodava -> Kodagu */
813 {HB_TAG('k','f','r',' '), HB_TAG('K','A','C',' ')}, /* Kachhi -> Kachchi */
814 {HB_TAG('k','f','x',' '), HB_TAG('K','U','L',' ')}, /* Kullu Pahari -> Kulvi */
815 {HB_TAG('k','f','y',' '), HB_TAG('K','M','N',' ')}, /* Kumaoni */
816 {HB_TAG('k','g','e',' '), HB_TAG_NONE }, /* Komering != Khutsuri Georgian */
817 {HB_TAG('k','h','a',' '), HB_TAG('K','S','I',' ')}, /* Khasi */
818 {HB_TAG('k','h','b',' '), HB_TAG('X','B','D',' ')}, /* Lü */
819 {HB_TAG('k','h','k',' '), HB_TAG('M','N','G',' ')}, /* Halh Mongolian -> Mongolian */
820 {HB_TAG('k','h','n',' '), HB_TAG_NONE }, /* Khandesi != Khamti Shan (Microsoft fonts) */
821 {HB_TAG('k','h','s',' '), HB_TAG_NONE }, /* Kasua != Khanty-Shurishkar */
822 {HB_TAG('k','h','t',' '), HB_TAG('K','H','T',' ')}, /* Khamti -> Khamti Shan */
823 {HB_TAG('k','h','t',' '), HB_TAG('K','H','N',' ')}, /* Khamti -> Khamti Shan (Microsoft fonts) */
824 {HB_TAG('k','h','v',' '), HB_TAG_NONE }, /* Khvarshi != Khanty-Vakhi */
825 /*{HB_TAG('k','h','w',' '), HB_TAG('K','H','W',' ')},*/ /* Khowar */
826 {HB_TAG('k','i','s',' '), HB_TAG_NONE }, /* Kis != Kisii */
827 {HB_TAG('k','i','u',' '), HB_TAG('K','I','U',' ')}, /* Kirmanjki */
828 {HB_TAG('k','i','u',' '), HB_TAG('Z','Z','A',' ')}, /* Kirmanjki -> Zazaki */
829 {HB_TAG('k','j','b',' '), HB_TAG('M','Y','N',' ')}, /* Q'anjob'al -> Mayan */
830 /*{HB_TAG('k','j','d',' '), HB_TAG('K','J','D',' ')},*/ /* Southern Kiwai */
831 {HB_TAG('k','j','h',' '), HB_TAG('K','H','A',' ')}, /* Khakas -> Khakass */
832 {HB_TAG('k','j','p',' '), HB_TAG('K','J','P',' ')}, /* Pwo Eastern Karen -> Eastern Pwo Karen */
833 {HB_TAG('k','j','p',' '), HB_TAG('K','R','N',' ')}, /* Pwo Eastern Karen -> Karen */
834 {HB_TAG('k','j','t',' '), HB_TAG('K','R','N',' ')}, /* Phrae Pwo Karen -> Karen */
835 /*{HB_TAG('k','j','z',' '), HB_TAG('K','J','Z',' ')},*/ /* Bumthangkha */
836 {HB_TAG('k','k','n',' '), HB_TAG_NONE }, /* Kon Keu != Kokni */
837 {HB_TAG('k','k','z',' '), HB_TAG('A','T','H',' ')}, /* Kaska -> Athapaskan */
838 {HB_TAG('k','l','m',' '), HB_TAG_NONE }, /* Migum != Kalmyk */
839 {HB_TAG('k','l','n',' '), HB_TAG('K','A','L',' ')}, /* Kalenjin [macrolanguage] */
840 {HB_TAG('k','m','b',' '), HB_TAG('M','B','N',' ')}, /* Kimbundu -> Mbundu */
841 {HB_TAG('k','m','n',' '), HB_TAG_NONE }, /* Awtuw != Kumaoni */
842 {HB_TAG('k','m','o',' '), HB_TAG_NONE }, /* Kwoma != Komo */
843 {HB_TAG('k','m','r',' '), HB_TAG('K','U','R',' ')}, /* Northern Kurdish -> Kurdish */
844 {HB_TAG('k','m','s',' '), HB_TAG_NONE }, /* Kamasau != Komso */
845 {HB_TAG('k','m','v',' '), HB_TAG('C','P','P',' ')}, /* Karipúna Creole French -> Creoles */
846 {HB_TAG('k','m','w',' '), HB_TAG('K','M','O',' ')}, /* Komo (Democratic Republic of Congo) */
847 /*{HB_TAG('k','m','z',' '), HB_TAG('K','M','Z',' ')},*/ /* Khorasani Turkish -> Khorasani Turkic */
848 {HB_TAG('k','n','c',' '), HB_TAG('K','N','R',' ')}, /* Central Kanuri -> Kanuri */
849 {HB_TAG('k','n','g',' '), HB_TAG('K','O','N','0')}, /* Koongo -> Kongo */
850 {HB_TAG('k','n','j',' '), HB_TAG('M','Y','N',' ')}, /* Western Kanjobal -> Mayan */
851 {HB_TAG('k','n','n',' '), HB_TAG('K','O','K',' ')}, /* Konkani */
852 {HB_TAG('k','n','r',' '), HB_TAG_NONE }, /* Kaningra != Kanuri */
853 {HB_TAG('k','o','d',' '), HB_TAG_NONE }, /* Kodi != Kodagu */
854 {HB_TAG('k','o','h',' '), HB_TAG_NONE }, /* Koyo != Korean Old Hangul */
855 {HB_TAG('k','o','i',' '), HB_TAG('K','O','P',' ')}, /* Komi-Permyak */
856 {HB_TAG('k','o','i',' '), HB_TAG('K','O','M',' ')}, /* Komi-Permyak -> Komi */
857 /*{HB_TAG('k','o','k',' '), HB_TAG('K','O','K',' ')},*/ /* Konkani [macrolanguage] */
858 {HB_TAG('k','o','p',' '), HB_TAG_NONE }, /* Waube != Komi-Permyak */
859 /*{HB_TAG('k','o','s',' '), HB_TAG('K','O','S',' ')},*/ /* Kosraean */
860 {HB_TAG('k','o','y',' '), HB_TAG('A','T','H',' ')}, /* Koyukon -> Athapaskan */
861 {HB_TAG('k','o','z',' '), HB_TAG_NONE }, /* Korak != Komi-Zyrian */
862 {HB_TAG('k','p','e',' '), HB_TAG('K','P','L',' ')}, /* Kpelle [macrolanguage] */
863 {HB_TAG('k','p','l',' '), HB_TAG_NONE }, /* Kpala != Kpelle */
864 {HB_TAG('k','p','p',' '), HB_TAG('K','R','N',' ')}, /* Paku Karen (retired code) -> Karen */
865 {HB_TAG('k','p','v',' '), HB_TAG('K','O','Z',' ')}, /* Komi-Zyrian */
866 {HB_TAG('k','p','v',' '), HB_TAG('K','O','M',' ')}, /* Komi-Zyrian -> Komi */
867 {HB_TAG('k','p','y',' '), HB_TAG('K','Y','K',' ')}, /* Koryak */
868 {HB_TAG('k','q','s',' '), HB_TAG('K','I','S',' ')}, /* Northern Kissi -> Kisii */
869 {HB_TAG('k','q','y',' '), HB_TAG('K','R','T',' ')}, /* Koorete */
870 {HB_TAG('k','r','c',' '), HB_TAG('K','A','R',' ')}, /* Karachay-Balkar -> Karachay */
871 {HB_TAG('k','r','c',' '), HB_TAG('B','A','L',' ')}, /* Karachay-Balkar -> Balkar */
872 {HB_TAG('k','r','i',' '), HB_TAG('K','R','I',' ')}, /* Krio */
873 {HB_TAG('k','r','i',' '), HB_TAG('C','P','P',' ')}, /* Krio -> Creoles */
874 {HB_TAG('k','r','k',' '), HB_TAG_NONE }, /* Kerek != Karakalpak */
875 /*{HB_TAG('k','r','l',' '), HB_TAG('K','R','L',' ')},*/ /* Karelian */
876 {HB_TAG('k','r','m',' '), HB_TAG_NONE }, /* Krim (retired code) != Karaim */
877 {HB_TAG('k','r','n',' '), HB_TAG_NONE }, /* Sapo != Karen */
878 {HB_TAG('k','r','t',' '), HB_TAG('K','N','R',' ')}, /* Tumari Kanuri -> Kanuri */
879 {HB_TAG('k','r','u',' '), HB_TAG('K','U','U',' ')}, /* Kurukh */
880 {HB_TAG('k','s','h',' '), HB_TAG('K','S','H','0')}, /* Kölsch -> Ripuarian */
881 {HB_TAG('k','s','i',' '), HB_TAG_NONE }, /* Krisa != Khasi */
882 {HB_TAG('k','s','m',' '), HB_TAG_NONE }, /* Kumba != Kildin Sami */
883 {HB_TAG('k','s','s',' '), HB_TAG('K','I','S',' ')}, /* Southern Kisi -> Kisii */
884 {HB_TAG('k','s','w',' '), HB_TAG('K','S','W',' ')}, /* S’gaw Karen */
885 {HB_TAG('k','s','w',' '), HB_TAG('K','R','N',' ')}, /* S'gaw Karen -> Karen */
886 {HB_TAG('k','t','b',' '), HB_TAG('K','E','B',' ')}, /* Kambaata -> Kebena */
887 {HB_TAG('k','t','u',' '), HB_TAG('K','O','N',' ')}, /* Kituba (Democratic Republic of Congo) -> Kikongo */
888 {HB_TAG('k','t','w',' '), HB_TAG('A','T','H',' ')}, /* Kato -> Athapaskan */
889 {HB_TAG('k','u','i',' '), HB_TAG_NONE }, /* Kuikúro-Kalapálo != Kui */
890 {HB_TAG('k','u','l',' '), HB_TAG_NONE }, /* Kulere != Kulvi */
891 /*{HB_TAG('k','u','m',' '), HB_TAG('K','U','M',' ')},*/ /* Kumyk */
892 {HB_TAG('k','u','u',' '), HB_TAG('A','T','H',' ')}, /* Upper Kuskokwim -> Athapaskan */
893 {HB_TAG('k','u','w',' '), HB_TAG('B','A','D','0')}, /* Kpagua -> Banda */
894 {HB_TAG('k','u','y',' '), HB_TAG_NONE }, /* Kuuku-Ya'u != Kuy */
895 {HB_TAG('k','v','b',' '), HB_TAG('M','L','Y',' ')}, /* Kubu -> Malay */
896 {HB_TAG('k','v','l',' '), HB_TAG('K','R','N',' ')}, /* Kayaw -> Karen */
897 {HB_TAG('k','v','q',' '), HB_TAG('K','R','N',' ')}, /* Geba Karen -> Karen */
898 {HB_TAG('k','v','r',' '), HB_TAG('M','L','Y',' ')}, /* Kerinci -> Malay */
899 {HB_TAG('k','v','t',' '), HB_TAG('K','R','N',' ')}, /* Lahta Karen -> Karen */
900 {HB_TAG('k','v','u',' '), HB_TAG('K','R','N',' ')}, /* Yinbaw Karen -> Karen */
901 {HB_TAG('k','v','y',' '), HB_TAG('K','R','N',' ')}, /* Yintale Karen -> Karen */
902 /*{HB_TAG('k','w','k',' '), HB_TAG('K','W','K',' ')},*/ /* Kwakiutl -> Kwakʼwala */
903 {HB_TAG('k','w','w',' '), HB_TAG('C','P','P',' ')}, /* Kwinti -> Creoles */
904 {HB_TAG('k','w','y',' '), HB_TAG('K','O','N','0')}, /* San Salvador Kongo -> Kongo */
905 {HB_TAG('k','x','c',' '), HB_TAG('K','M','S',' ')}, /* Konso -> Komso */
906 {HB_TAG('k','x','d',' '), HB_TAG('M','L','Y',' ')}, /* Brunei -> Malay */
907 {HB_TAG('k','x','f',' '), HB_TAG('K','R','N',' ')}, /* Manumanaw Karen -> Karen */
908 {HB_TAG('k','x','k',' '), HB_TAG('K','R','N',' ')}, /* Zayein Karen -> Karen */
909 {HB_TAG('k','x','l',' '), HB_TAG('K','U','U',' ')}, /* Nepali Kurux (retired code) -> Kurukh */
910 {HB_TAG('k','x','u',' '), HB_TAG('K','U','I',' ')}, /* Kui (India) (retired code) */
911 {HB_TAG('k','y','k',' '), HB_TAG_NONE }, /* Kamayo != Koryak */
912 {HB_TAG('k','y','u',' '), HB_TAG('K','Y','U',' ')}, /* Western Kayah */
913 {HB_TAG('k','y','u',' '), HB_TAG('K','R','N',' ')}, /* Western Kayah -> Karen */
914 {HB_TAG('l','a','c',' '), HB_TAG('M','Y','N',' ')}, /* Lacandon -> Mayan */
915 {HB_TAG('l','a','d',' '), HB_TAG('J','U','D',' ')}, /* Ladino */
916 {HB_TAG('l','a','h',' '), HB_TAG_NONE }, /* Lahnda [macrolanguage] != Lahuli */
917 {HB_TAG('l','a','k',' '), HB_TAG_NONE }, /* Laka (Nigeria) (retired code) != Lak */
918 {HB_TAG('l','a','m',' '), HB_TAG_NONE }, /* Lamba != Lambani */
919 {HB_TAG('l','a','z',' '), HB_TAG_NONE }, /* Aribwatsa != Laz */
920 {HB_TAG('l','b','e',' '), HB_TAG('L','A','K',' ')}, /* Lak */
921 {HB_TAG('l','b','j',' '), HB_TAG('L','D','K',' ')}, /* Ladakhi */
922 {HB_TAG('l','b','l',' '), HB_TAG('B','I','K',' ')}, /* Libon Bikol -> Bikol */
923 {HB_TAG('l','c','e',' '), HB_TAG('M','L','Y',' ')}, /* Loncong -> Malay */
924 {HB_TAG('l','c','f',' '), HB_TAG('M','L','Y',' ')}, /* Lubu -> Malay */
925 {HB_TAG('l','d','i',' '), HB_TAG('K','O','N','0')}, /* Laari -> Kongo */
926 {HB_TAG('l','d','k',' '), HB_TAG_NONE }, /* Leelau != Ladakhi */
927 /*{HB_TAG('l','e','f',' '), HB_TAG('L','E','F',' ')},*/ /* Lelemi */
928 /*{HB_TAG('l','e','z',' '), HB_TAG('L','E','Z',' ')},*/ /* Lezghian -> Lezgi */
929 {HB_TAG('l','i','f',' '), HB_TAG('L','M','B',' ')}, /* Limbu */
930 /*{HB_TAG('l','i','j',' '), HB_TAG('L','I','J',' ')},*/ /* Ligurian */
931 {HB_TAG('l','i','r',' '), HB_TAG('C','P','P',' ')}, /* Liberian English -> Creoles */
932 /*{HB_TAG('l','i','s',' '), HB_TAG('L','I','S',' ')},*/ /* Lisu */
933 {HB_TAG('l','i','w',' '), HB_TAG('M','L','Y',' ')}, /* Col -> Malay */
934 {HB_TAG('l','i','y',' '), HB_TAG('B','A','D','0')}, /* Banda-Bambari -> Banda */
935 /*{HB_TAG('l','j','p',' '), HB_TAG('L','J','P',' ')},*/ /* Lampung Api -> Lampung */
936 {HB_TAG('l','k','b',' '), HB_TAG('L','U','H',' ')}, /* Kabras -> Luyia */
937 /*{HB_TAG('l','k','i',' '), HB_TAG('L','K','I',' ')},*/ /* Laki */
938 {HB_TAG('l','k','o',' '), HB_TAG('L','U','H',' ')}, /* Khayo -> Luyia */
939 {HB_TAG('l','k','s',' '), HB_TAG('L','U','H',' ')}, /* Kisa -> Luyia */
940 {HB_TAG('l','l','d',' '), HB_TAG('L','A','D',' ')}, /* Ladin */
941 {HB_TAG('l','m','a',' '), HB_TAG_NONE }, /* East Limba != Low Mari */
942 {HB_TAG('l','m','b',' '), HB_TAG_NONE }, /* Merei != Limbu */
943 {HB_TAG('l','m','n',' '), HB_TAG('L','A','M',' ')}, /* Lambadi -> Lambani */
944 /*{HB_TAG('l','m','o',' '), HB_TAG('L','M','O',' ')},*/ /* Lombard */
945 {HB_TAG('l','m','w',' '), HB_TAG_NONE }, /* Lake Miwok != Lomwe */
946 {HB_TAG('l','n','a',' '), HB_TAG('B','A','D','0')}, /* Langbashe -> Banda */
947 {HB_TAG('l','n','l',' '), HB_TAG('B','A','D','0')}, /* South Central Banda -> Banda */
948 /*{HB_TAG('l','o','m',' '), HB_TAG('L','O','M',' ')},*/ /* Loma (Liberia) */
949 {HB_TAG('l','o','u',' '), HB_TAG('C','P','P',' ')}, /* Louisiana Creole -> Creoles */
950 /*{HB_TAG('l','p','o',' '), HB_TAG('L','P','O',' ')},*/ /* Lipo */
951 /*{HB_TAG('l','r','c',' '), HB_TAG('L','R','C',' ')},*/ /* Northern Luri -> Luri */
952 {HB_TAG('l','r','i',' '), HB_TAG('L','U','H',' ')}, /* Marachi -> Luyia */
953 {HB_TAG('l','r','m',' '), HB_TAG('L','U','H',' ')}, /* Marama -> Luyia */
954 {HB_TAG('l','r','t',' '), HB_TAG('C','P','P',' ')}, /* Larantuka Malay -> Creoles */
955 {HB_TAG('l','s','b',' '), HB_TAG_NONE }, /* Burundian Sign Language != Lower Sorbian */
956 {HB_TAG('l','s','m',' '), HB_TAG('L','U','H',' ')}, /* Saamia -> Luyia */
957 {HB_TAG('l','t','g',' '), HB_TAG('L','V','I',' ')}, /* Latgalian -> Latvian */
958 {HB_TAG('l','t','h',' '), HB_TAG_NONE }, /* Thur != Lithuanian */
959 {HB_TAG('l','t','o',' '), HB_TAG('L','U','H',' ')}, /* Tsotso -> Luyia */
960 {HB_TAG('l','t','s',' '), HB_TAG('L','U','H',' ')}, /* Tachoni -> Luyia */
961 /*{HB_TAG('l','u','a',' '), HB_TAG('L','U','A',' ')},*/ /* Luba-Lulua */
962 /*{HB_TAG('l','u','o',' '), HB_TAG('L','U','O',' ')},*/ /* Luo (Kenya and Tanzania) */
963 {HB_TAG('l','u','s',' '), HB_TAG('M','I','Z',' ')}, /* Lushai -> Mizo */
964 {HB_TAG('l','u','s',' '), HB_TAG('Q','I','N',' ')}, /* Lushai -> Chin */
965 {HB_TAG('l','u','y',' '), HB_TAG('L','U','H',' ')}, /* Luyia [macrolanguage] */
966 {HB_TAG('l','u','z',' '), HB_TAG('L','R','C',' ')}, /* Southern Luri -> Luri */
967 {HB_TAG('l','v','i',' '), HB_TAG_NONE }, /* Lavi != Latvian */
968 {HB_TAG('l','v','s',' '), HB_TAG('L','V','I',' ')}, /* Standard Latvian -> Latvian */
969 {HB_TAG('l','w','g',' '), HB_TAG('L','U','H',' ')}, /* Wanga -> Luyia */
970 {HB_TAG('l','z','h',' '), HB_TAG('Z','H','T',' ')}, /* Literary Chinese -> Chinese, Traditional */
971 {HB_TAG('l','z','z',' '), HB_TAG('L','A','Z',' ')}, /* Laz */
972 /*{HB_TAG('m','a','d',' '), HB_TAG('M','A','D',' ')},*/ /* Madurese -> Madura */
973 /*{HB_TAG('m','a','g',' '), HB_TAG('M','A','G',' ')},*/ /* Magahi */
974 {HB_TAG('m','a','i',' '), HB_TAG('M','T','H',' ')}, /* Maithili */
975 {HB_TAG('m','a','j',' '), HB_TAG_NONE }, /* Jalapa De Díaz Mazatec != Majang */
976 {HB_TAG('m','a','k',' '), HB_TAG('M','K','R',' ')}, /* Makasar */
977 {HB_TAG('m','a','m',' '), HB_TAG('M','A','M',' ')}, /* Mam */
978 {HB_TAG('m','a','m',' '), HB_TAG('M','Y','N',' ')}, /* Mam -> Mayan */
979 {HB_TAG('m','a','n',' '), HB_TAG('M','N','K',' ')}, /* Mandingo [macrolanguage] -> Maninka */
980 {HB_TAG('m','a','p',' '), HB_TAG_NONE }, /* Austronesian [collection] != Mapudungun */
981 {HB_TAG('m','a','w',' '), HB_TAG_NONE }, /* Mampruli != Marwari */
982 {HB_TAG('m','a','x',' '), HB_TAG('M','L','Y',' ')}, /* North Moluccan Malay -> Malay */
983 {HB_TAG('m','a','x',' '), HB_TAG('C','P','P',' ')}, /* North Moluccan Malay -> Creoles */
984 {HB_TAG('m','b','f',' '), HB_TAG('C','P','P',' ')}, /* Baba Malay -> Creoles */
985 {HB_TAG('m','b','n',' '), HB_TAG_NONE }, /* Macaguán != Mbundu */
986 /*{HB_TAG('m','b','o',' '), HB_TAG('M','B','O',' ')},*/ /* Mbo (Cameroon) */
987 {HB_TAG('m','c','h',' '), HB_TAG_NONE }, /* Maquiritari != Manchu */
988 {HB_TAG('m','c','m',' '), HB_TAG('C','P','P',' ')}, /* Malaccan Creole Portuguese -> Creoles */
989 {HB_TAG('m','c','r',' '), HB_TAG_NONE }, /* Menya != Moose Cree */
990 {HB_TAG('m','c','t',' '), HB_TAG('B','T','I',' ')}, /* Mengisa -> Beti */
991 {HB_TAG('m','d','e',' '), HB_TAG_NONE }, /* Maba (Chad) != Mende */
992 {HB_TAG('m','d','f',' '), HB_TAG('M','O','K',' ')}, /* Moksha */
993 /*{HB_TAG('m','d','r',' '), HB_TAG('M','D','R',' ')},*/ /* Mandar */
994 {HB_TAG('m','d','y',' '), HB_TAG('M','L','E',' ')}, /* Male (Ethiopia) */
995 {HB_TAG('m','e','n',' '), HB_TAG('M','D','E',' ')}, /* Mende (Sierra Leone) */
996 {HB_TAG('m','e','o',' '), HB_TAG('M','L','Y',' ')}, /* Kedah Malay -> Malay */
997 /*{HB_TAG('m','e','r',' '), HB_TAG('M','E','R',' ')},*/ /* Meru */
998 {HB_TAG('m','f','a',' '), HB_TAG('M','F','A',' ')}, /* Pattani Malay */
999 {HB_TAG('m','f','a',' '), HB_TAG('M','L','Y',' ')}, /* Pattani Malay -> Malay */
1000 {HB_TAG('m','f','b',' '), HB_TAG('M','L','Y',' ')}, /* Bangka -> Malay */
1001 {HB_TAG('m','f','e',' '), HB_TAG('M','F','E',' ')}, /* Morisyen */
1002 {HB_TAG('m','f','e',' '), HB_TAG('C','P','P',' ')}, /* Morisyen -> Creoles */
1003 {HB_TAG('m','f','p',' '), HB_TAG('C','P','P',' ')}, /* Makassar Malay -> Creoles */
1004 {HB_TAG('m','h','c',' '), HB_TAG('M','Y','N',' ')}, /* Mocho -> Mayan */
1005 {HB_TAG('m','h','r',' '), HB_TAG('L','M','A',' ')}, /* Eastern Mari -> Low Mari */
1006 {HB_TAG('m','h','v',' '), HB_TAG('A','R','K',' ')}, /* Arakanese (retired code) -> Rakhine */
1007 {HB_TAG('m','i','n',' '), HB_TAG('M','I','N',' ')}, /* Minangkabau */
1008 {HB_TAG('m','i','n',' '), HB_TAG('M','L','Y',' ')}, /* Minangkabau -> Malay */
1009 {HB_TAG('m','i','z',' '), HB_TAG_NONE }, /* Coatzospan Mixtec != Mizo */
1010 {HB_TAG('m','k','n',' '), HB_TAG('C','P','P',' ')}, /* Kupang Malay -> Creoles */
1011 {HB_TAG('m','k','r',' '), HB_TAG_NONE }, /* Malas != Makasar */
1012 {HB_TAG('m','k','u',' '), HB_TAG('M','N','K',' ')}, /* Konyanka Maninka -> Maninka */
1013 /*{HB_TAG('m','k','w',' '), HB_TAG('M','K','W',' ')},*/ /* Kituba (Congo) */
1014 {HB_TAG('m','l','e',' '), HB_TAG_NONE }, /* Manambu != Male */
1015 {HB_TAG('m','l','n',' '), HB_TAG_NONE }, /* Malango != Malinke */
1016 {HB_TAG('m','l','q',' '), HB_TAG('M','L','N',' ')}, /* Western Maninkakan -> Malinke */
1017 {HB_TAG('m','l','q',' '), HB_TAG('M','N','K',' ')}, /* Western Maninkakan -> Maninka */
1018 {HB_TAG('m','l','r',' '), HB_TAG_NONE }, /* Vame != Malayalam Reformed */
1019 {HB_TAG('m','m','r',' '), HB_TAG('H','M','N',' ')}, /* Western Xiangxi Miao -> Hmong */
1020 {HB_TAG('m','n','c',' '), HB_TAG('M','C','H',' ')}, /* Manchu */
1021 {HB_TAG('m','n','d',' '), HB_TAG_NONE }, /* Mondé != Mandinka */
1022 {HB_TAG('m','n','g',' '), HB_TAG_NONE }, /* Eastern Mnong != Mongolian */
1023 {HB_TAG('m','n','h',' '), HB_TAG('B','A','D','0')}, /* Mono (Democratic Republic of Congo) -> Banda */
1024 /*{HB_TAG('m','n','i',' '), HB_TAG('M','N','I',' ')},*/ /* Manipuri */
1025 {HB_TAG('m','n','k',' '), HB_TAG('M','N','D',' ')}, /* Mandinka */
1026 {HB_TAG('m','n','k',' '), HB_TAG('M','N','K',' ')}, /* Mandinka -> Maninka */
1027 {HB_TAG('m','n','p',' '), HB_TAG('Z','H','S',' ')}, /* Min Bei Chinese -> Chinese, Simplified */
1028 {HB_TAG('m','n','s',' '), HB_TAG('M','A','N',' ')}, /* Mansi */
1029 {HB_TAG('m','n','w',' '), HB_TAG('M','O','N',' ')}, /* Mon */
1030 {HB_TAG('m','n','w',' '), HB_TAG('M','O','N','T')}, /* Mon -> Thailand Mon */
1031 {HB_TAG('m','n','x',' '), HB_TAG_NONE }, /* Manikion != Manx */
1032 {HB_TAG('m','o','d',' '), HB_TAG('C','P','P',' ')}, /* Mobilian -> Creoles */
1033 /*{HB_TAG('m','o','h',' '), HB_TAG('M','O','H',' ')},*/ /* Mohawk */
1034 {HB_TAG('m','o','k',' '), HB_TAG_NONE }, /* Morori != Moksha */
1035 {HB_TAG('m','o','p',' '), HB_TAG('M','Y','N',' ')}, /* Mopán Maya -> Mayan */
1036 {HB_TAG('m','o','r',' '), HB_TAG_NONE }, /* Moro != Moroccan */
1037 /*{HB_TAG('m','o','s',' '), HB_TAG('M','O','S',' ')},*/ /* Mossi */
1038 {HB_TAG('m','p','e',' '), HB_TAG('M','A','J',' ')}, /* Majang */
1039 {HB_TAG('m','q','g',' '), HB_TAG('M','L','Y',' ')}, /* Kota Bangun Kutai Malay -> Malay */
1040 {HB_TAG('m','r','h',' '), HB_TAG('Q','I','N',' ')}, /* Mara Chin -> Chin */
1041 {HB_TAG('m','r','j',' '), HB_TAG('H','M','A',' ')}, /* Western Mari -> High Mari */
1042 {HB_TAG('m','s','c',' '), HB_TAG('M','N','K',' ')}, /* Sankaran Maninka -> Maninka */
1043 {HB_TAG('m','s','h',' '), HB_TAG('M','L','G',' ')}, /* Masikoro Malagasy -> Malagasy */
1044 {HB_TAG('m','s','i',' '), HB_TAG('M','L','Y',' ')}, /* Sabah Malay -> Malay */
1045 {HB_TAG('m','s','i',' '), HB_TAG('C','P','P',' ')}, /* Sabah Malay -> Creoles */
1046 {HB_TAG('m','t','h',' '), HB_TAG_NONE }, /* Munggui != Maithili */
1047 {HB_TAG('m','t','r',' '), HB_TAG('M','A','W',' ')}, /* Mewari -> Marwari */
1048 {HB_TAG('m','t','s',' '), HB_TAG_NONE }, /* Yora != Maltese */
1049 {HB_TAG('m','u','d',' '), HB_TAG('C','P','P',' ')}, /* Mednyj Aleut -> Creoles */
1050 {HB_TAG('m','u','i',' '), HB_TAG('M','L','Y',' ')}, /* Musi -> Malay */
1051 {HB_TAG('m','u','n',' '), HB_TAG_NONE }, /* Munda [collection] != Mundari */
1052 {HB_TAG('m','u','p',' '), HB_TAG('R','A','J',' ')}, /* Malvi -> Rajasthani */
1053 {HB_TAG('m','u','q',' '), HB_TAG('H','M','N',' ')}, /* Eastern Xiangxi Miao -> Hmong */
1054 /*{HB_TAG('m','u','s',' '), HB_TAG('M','U','S',' ')},*/ /* Creek -> Muscogee */
1055 {HB_TAG('m','v','b',' '), HB_TAG('A','T','H',' ')}, /* Mattole -> Athapaskan */
1056 {HB_TAG('m','v','e',' '), HB_TAG('M','A','W',' ')}, /* Marwari (Pakistan) */
1057 {HB_TAG('m','v','f',' '), HB_TAG('M','N','G',' ')}, /* Peripheral Mongolian -> Mongolian */
1058 {HB_TAG('m','w','k',' '), HB_TAG('M','N','K',' ')}, /* Kita Maninkakan -> Maninka */
1059 /*{HB_TAG('m','w','l',' '), HB_TAG('M','W','L',' ')},*/ /* Mirandese */
1060 {HB_TAG('m','w','q',' '), HB_TAG('Q','I','N',' ')}, /* Mün Chin -> Chin */
1061 {HB_TAG('m','w','r',' '), HB_TAG('M','A','W',' ')}, /* Marwari [macrolanguage] */
1062 {HB_TAG('m','w','w',' '), HB_TAG('M','W','W',' ')}, /* Hmong Daw */
1063 {HB_TAG('m','w','w',' '), HB_TAG('H','M','N',' ')}, /* Hmong Daw -> Hmong */
1064 {HB_TAG('m','y','m',' '), HB_TAG('M','E','N',' ')}, /* Me’en */
1065 /*{HB_TAG('m','y','n',' '), HB_TAG('M','Y','N',' ')},*/ /* Mayan [collection] */
1066 {HB_TAG('m','y','q',' '), HB_TAG('M','N','K',' ')}, /* Forest Maninka (retired code) -> Maninka */
1067 {HB_TAG('m','y','v',' '), HB_TAG('E','R','Z',' ')}, /* Erzya */
1068 {HB_TAG('m','z','b',' '), HB_TAG('B','B','R',' ')}, /* Tumzabt -> Berber */
1069 /*{HB_TAG('m','z','n',' '), HB_TAG('M','Z','N',' ')},*/ /* Mazanderani */
1070 {HB_TAG('m','z','s',' '), HB_TAG('C','P','P',' ')}, /* Macanese -> Creoles */
1071 {HB_TAG('n','a','g',' '), HB_TAG('N','A','G',' ')}, /* Naga Pidgin -> Naga-Assamese */
1072 {HB_TAG('n','a','g',' '), HB_TAG('C','P','P',' ')}, /* Naga Pidgin -> Creoles */
1073 /*{HB_TAG('n','a','h',' '), HB_TAG('N','A','H',' ')},*/ /* Nahuatl [collection] */
1074 {HB_TAG('n','a','n',' '), HB_TAG('Z','H','S',' ')}, /* Min Nan Chinese -> Chinese, Simplified */
1075 /*{HB_TAG('n','a','p',' '), HB_TAG('N','A','P',' ')},*/ /* Neapolitan */
1076 {HB_TAG('n','a','s',' '), HB_TAG_NONE }, /* Naasioi != Naskapi */
1077 {HB_TAG('n','a','z',' '), HB_TAG('N','A','H',' ')}, /* Coatepec Nahuatl -> Nahuatl */
1078 {HB_TAG('n','c','h',' '), HB_TAG('N','A','H',' ')}, /* Central Huasteca Nahuatl -> Nahuatl */
1079 {HB_TAG('n','c','i',' '), HB_TAG('N','A','H',' ')}, /* Classical Nahuatl -> Nahuatl */
1080 {HB_TAG('n','c','j',' '), HB_TAG('N','A','H',' ')}, /* Northern Puebla Nahuatl -> Nahuatl */
1081 {HB_TAG('n','c','l',' '), HB_TAG('N','A','H',' ')}, /* Michoacán Nahuatl -> Nahuatl */
1082 {HB_TAG('n','c','r',' '), HB_TAG_NONE }, /* Ncane != N-Cree */
1083 {HB_TAG('n','c','x',' '), HB_TAG('N','A','H',' ')}, /* Central Puebla Nahuatl -> Nahuatl */
1084 {HB_TAG('n','d','b',' '), HB_TAG_NONE }, /* Kenswei Nsei != Ndebele */
1085 /*{HB_TAG('n','d','c',' '), HB_TAG('N','D','C',' ')},*/ /* Ndau */
1086 {HB_TAG('n','d','g',' '), HB_TAG_NONE }, /* Ndengereko != Ndonga */
1087 /*{HB_TAG('n','d','s',' '), HB_TAG('N','D','S',' ')},*/ /* Low Saxon */
1088 {HB_TAG('n','e','f',' '), HB_TAG('C','P','P',' ')}, /* Nefamese -> Creoles */
1089 /*{HB_TAG('n','e','w',' '), HB_TAG('N','E','W',' ')},*/ /* Newari */
1090 /*{HB_TAG('n','g','a',' '), HB_TAG('N','G','A',' ')},*/ /* Ngbaka */
1091 {HB_TAG('n','g','l',' '), HB_TAG('L','M','W',' ')}, /* Lomwe */
1092 {HB_TAG('n','g','m',' '), HB_TAG('C','P','P',' ')}, /* Ngatik Men's Creole -> Creoles */
1093 {HB_TAG('n','g','o',' '), HB_TAG('S','X','T',' ')}, /* Ngoni (retired code) -> Sutu */
1094 {HB_TAG('n','g','r',' '), HB_TAG_NONE }, /* Engdewu != Nagari */
1095 {HB_TAG('n','g','u',' '), HB_TAG('N','A','H',' ')}, /* Guerrero Nahuatl -> Nahuatl */
1096 {HB_TAG('n','h','c',' '), HB_TAG('N','A','H',' ')}, /* Tabasco Nahuatl -> Nahuatl */
1097 {HB_TAG('n','h','d',' '), HB_TAG('G','U','A',' ')}, /* Chiripá -> Guarani */
1098 {HB_TAG('n','h','e',' '), HB_TAG('N','A','H',' ')}, /* Eastern Huasteca Nahuatl -> Nahuatl */
1099 {HB_TAG('n','h','g',' '), HB_TAG('N','A','H',' ')}, /* Tetelcingo Nahuatl -> Nahuatl */
1100 {HB_TAG('n','h','i',' '), HB_TAG('N','A','H',' ')}, /* Zacatlán-Ahuacatlán-Tepetzintla Nahuatl -> Nahuatl */
1101 {HB_TAG('n','h','k',' '), HB_TAG('N','A','H',' ')}, /* Isthmus-Cosoleacaque Nahuatl -> Nahuatl */
1102 {HB_TAG('n','h','m',' '), HB_TAG('N','A','H',' ')}, /* Morelos Nahuatl -> Nahuatl */
1103 {HB_TAG('n','h','n',' '), HB_TAG('N','A','H',' ')}, /* Central Nahuatl -> Nahuatl */
1104 {HB_TAG('n','h','p',' '), HB_TAG('N','A','H',' ')}, /* Isthmus-Pajapan Nahuatl -> Nahuatl */
1105 {HB_TAG('n','h','q',' '), HB_TAG('N','A','H',' ')}, /* Huaxcaleca Nahuatl -> Nahuatl */
1106 {HB_TAG('n','h','t',' '), HB_TAG('N','A','H',' ')}, /* Ometepec Nahuatl -> Nahuatl */
1107 {HB_TAG('n','h','v',' '), HB_TAG('N','A','H',' ')}, /* Temascaltepec Nahuatl -> Nahuatl */
1108 {HB_TAG('n','h','w',' '), HB_TAG('N','A','H',' ')}, /* Western Huasteca Nahuatl -> Nahuatl */
1109 {HB_TAG('n','h','x',' '), HB_TAG('N','A','H',' ')}, /* Isthmus-Mecayapan Nahuatl -> Nahuatl */
1110 {HB_TAG('n','h','y',' '), HB_TAG('N','A','H',' ')}, /* Northern Oaxaca Nahuatl -> Nahuatl */
1111 {HB_TAG('n','h','z',' '), HB_TAG('N','A','H',' ')}, /* Santa María La Alta Nahuatl -> Nahuatl */
1112 {HB_TAG('n','i','q',' '), HB_TAG('K','A','L',' ')}, /* Nandi -> Kalenjin */
1113 {HB_TAG('n','i','s',' '), HB_TAG_NONE }, /* Nimi != Nisi */
1114 /*{HB_TAG('n','i','u',' '), HB_TAG('N','I','U',' ')},*/ /* Niuean */
1115 {HB_TAG('n','i','v',' '), HB_TAG('G','I','L',' ')}, /* Gilyak */
1116 {HB_TAG('n','j','t',' '), HB_TAG('C','P','P',' ')}, /* Ndyuka-Trio Pidgin -> Creoles */
1117 {HB_TAG('n','j','z',' '), HB_TAG('N','I','S',' ')}, /* Nyishi -> Nisi */
1118 {HB_TAG('n','k','o',' '), HB_TAG_NONE }, /* Nkonya != N’Ko */
1119 {HB_TAG('n','k','x',' '), HB_TAG('I','J','O',' ')}, /* Nkoroo -> Ijo */
1120 {HB_TAG('n','l','a',' '), HB_TAG('B','M','L',' ')}, /* Ngombale -> Bamileke */
1121 {HB_TAG('n','l','e',' '), HB_TAG('L','U','H',' ')}, /* East Nyala -> Luyia */
1122 {HB_TAG('n','l','n',' '), HB_TAG('N','A','H',' ')}, /* Durango Nahuatl (retired code) -> Nahuatl */
1123 {HB_TAG('n','l','v',' '), HB_TAG('N','A','H',' ')}, /* Orizaba Nahuatl -> Nahuatl */
1124 {HB_TAG('n','n','h',' '), HB_TAG('B','M','L',' ')}, /* Ngiemboon -> Bamileke */
1125 {HB_TAG('n','n','z',' '), HB_TAG('B','M','L',' ')}, /* Nda'nda' -> Bamileke */
1126 {HB_TAG('n','o','d',' '), HB_TAG('N','T','A',' ')}, /* Northern Thai -> Northern Tai */
1127 /*{HB_TAG('n','o','e',' '), HB_TAG('N','O','E',' ')},*/ /* Nimadi */
1128 /*{HB_TAG('n','o','g',' '), HB_TAG('N','O','G',' ')},*/ /* Nogai */
1129 /*{HB_TAG('n','o','v',' '), HB_TAG('N','O','V',' ')},*/ /* Novial */
1130 {HB_TAG('n','p','i',' '), HB_TAG('N','E','P',' ')}, /* Nepali */
1131 {HB_TAG('n','p','l',' '), HB_TAG('N','A','H',' ')}, /* Southeastern Puebla Nahuatl -> Nahuatl */
1132 {HB_TAG('n','q','o',' '), HB_TAG('N','K','O',' ')}, /* N’Ko */
1133 {HB_TAG('n','s','k',' '), HB_TAG('N','A','S',' ')}, /* Naskapi */
1134 {HB_TAG('n','s','m',' '), HB_TAG_NONE }, /* Sumi Naga != Northern Sami */
1135 /*{HB_TAG('n','s','o',' '), HB_TAG('N','S','O',' ')},*/ /* Northern Sotho */
1136 {HB_TAG('n','s','u',' '), HB_TAG('N','A','H',' ')}, /* Sierra Negra Nahuatl -> Nahuatl */
1137 {HB_TAG('n','t','o',' '), HB_TAG_NONE }, /* Ntomba != Esperanto */
1138 {HB_TAG('n','u','e',' '), HB_TAG('B','A','D','0')}, /* Ngundu -> Banda */
1139 {HB_TAG('n','u','u',' '), HB_TAG('B','A','D','0')}, /* Ngbundu -> Banda */
1140 {HB_TAG('n','u','z',' '), HB_TAG('N','A','H',' ')}, /* Tlamacazapa Nahuatl -> Nahuatl */
1141 {HB_TAG('n','w','e',' '), HB_TAG('B','M','L',' ')}, /* Ngwe -> Bamileke */
1142 {HB_TAG('n','y','d',' '), HB_TAG('L','U','H',' ')}, /* Nyore -> Luyia */
1143 /*{HB_TAG('n','y','m',' '), HB_TAG('N','Y','M',' ')},*/ /* Nyamwezi */
1144 {HB_TAG('n','y','n',' '), HB_TAG('N','K','L',' ')}, /* Nyankole */
1145 /*{HB_TAG('n','z','a',' '), HB_TAG('N','Z','A',' ')},*/ /* Tigon Mbembe -> Mbembe Tigon */
1146 /*{HB_TAG('o','j','b',' '), HB_TAG('O','J','B',' ')},*/ /* Northwestern Ojibwa -> Ojibway */
1147 {HB_TAG('o','j','c',' '), HB_TAG('O','J','B',' ')}, /* Central Ojibwa -> Ojibway */
1148 {HB_TAG('o','j','g',' '), HB_TAG('O','J','B',' ')}, /* Eastern Ojibwa -> Ojibway */
1149 {HB_TAG('o','j','s',' '), HB_TAG('O','C','R',' ')}, /* Severn Ojibwa -> Oji-Cree */
1150 {HB_TAG('o','j','s',' '), HB_TAG('O','J','B',' ')}, /* Severn Ojibwa -> Ojibway */
1151 {HB_TAG('o','j','w',' '), HB_TAG('O','J','B',' ')}, /* Western Ojibwa -> Ojibway */
1152 {HB_TAG('o','k','d',' '), HB_TAG('I','J','O',' ')}, /* Okodia -> Ijo */
1153 {HB_TAG('o','k','i',' '), HB_TAG('K','A','L',' ')}, /* Okiek -> Kalenjin */
1154 {HB_TAG('o','k','m',' '), HB_TAG('K','O','H',' ')}, /* Middle Korean (10th-16th cent.) -> Korean Old Hangul */
1155 {HB_TAG('o','k','r',' '), HB_TAG('I','J','O',' ')}, /* Kirike -> Ijo */
1156 {HB_TAG('o','n','x',' '), HB_TAG('C','P','P',' ')}, /* Onin Based Pidgin -> Creoles */
1157 {HB_TAG('o','o','r',' '), HB_TAG('C','P','P',' ')}, /* Oorlams -> Creoles */
1158 {HB_TAG('o','r','c',' '), HB_TAG('O','R','O',' ')}, /* Orma -> Oromo */
1159 {HB_TAG('o','r','n',' '), HB_TAG('M','L','Y',' ')}, /* Orang Kanaq -> Malay */
1160 {HB_TAG('o','r','o',' '), HB_TAG_NONE }, /* Orokolo != Oromo */
1161 {HB_TAG('o','r','r',' '), HB_TAG('I','J','O',' ')}, /* Oruma -> Ijo */
1162 {HB_TAG('o','r','s',' '), HB_TAG('M','L','Y',' ')}, /* Orang Seletar -> Malay */
1163 {HB_TAG('o','r','y',' '), HB_TAG('O','R','I',' ')}, /* Odia (formerly Oriya) */
1164 {HB_TAG('o','t','w',' '), HB_TAG('O','J','B',' ')}, /* Ottawa -> Ojibway */
1165 {HB_TAG('o','u','a',' '), HB_TAG('B','B','R',' ')}, /* Tagargrent -> Berber */
1166 {HB_TAG('p','a','a',' '), HB_TAG_NONE }, /* Papuan [collection] != Palestinian Aramaic */
1167 /*{HB_TAG('p','a','g',' '), HB_TAG('P','A','G',' ')},*/ /* Pangasinan */
1168 {HB_TAG('p','a','l',' '), HB_TAG_NONE }, /* Pahlavi != Pali */
1169 /*{HB_TAG('p','a','m',' '), HB_TAG('P','A','M',' ')},*/ /* Pampanga -> Pampangan */
1170 {HB_TAG('p','a','p',' '), HB_TAG('P','A','P','0')}, /* Papiamento -> Papiamentu */
1171 {HB_TAG('p','a','p',' '), HB_TAG('C','P','P',' ')}, /* Papiamento -> Creoles */
1172 {HB_TAG('p','a','s',' '), HB_TAG_NONE }, /* Papasena != Pashto */
1173 /*{HB_TAG('p','a','u',' '), HB_TAG('P','A','U',' ')},*/ /* Palauan */
1174 {HB_TAG('p','b','t',' '), HB_TAG('P','A','S',' ')}, /* Southern Pashto -> Pashto */
1175 {HB_TAG('p','b','u',' '), HB_TAG('P','A','S',' ')}, /* Northern Pashto -> Pashto */
1176 /*{HB_TAG('p','c','c',' '), HB_TAG('P','C','C',' ')},*/ /* Bouyei */
1177 /*{HB_TAG('p','c','d',' '), HB_TAG('P','C','D',' ')},*/ /* Picard */
1178 {HB_TAG('p','c','e',' '), HB_TAG('P','L','G',' ')}, /* Ruching Palaung -> Palaung */
1179 {HB_TAG('p','c','k',' '), HB_TAG('Q','I','N',' ')}, /* Paite Chin -> Chin */
1180 {HB_TAG('p','c','m',' '), HB_TAG('C','P','P',' ')}, /* Nigerian Pidgin -> Creoles */
1181 /*{HB_TAG('p','d','c',' '), HB_TAG('P','D','C',' ')},*/ /* Pennsylvania German */
1182 {HB_TAG('p','d','u',' '), HB_TAG('K','R','N',' ')}, /* Kayan -> Karen */
1183 {HB_TAG('p','e','a',' '), HB_TAG('C','P','P',' ')}, /* Peranakan Indonesian -> Creoles */
1184 {HB_TAG('p','e','l',' '), HB_TAG('M','L','Y',' ')}, /* Pekal -> Malay */
1185 {HB_TAG('p','e','s',' '), HB_TAG('F','A','R',' ')}, /* Iranian Persian -> Persian */
1186 {HB_TAG('p','e','y',' '), HB_TAG('C','P','P',' ')}, /* Petjo -> Creoles */
1187 {HB_TAG('p','g','a',' '), HB_TAG('A','R','A',' ')}, /* Sudanese Creole Arabic -> Arabic */
1188 {HB_TAG('p','g','a',' '), HB_TAG('C','P','P',' ')}, /* Sudanese Creole Arabic -> Creoles */
1189 /*{HB_TAG('p','h','k',' '), HB_TAG('P','H','K',' ')},*/ /* Phake */
1190 {HB_TAG('p','i','h',' '), HB_TAG('P','I','H',' ')}, /* Pitcairn-Norfolk -> Norfolk */
1191 {HB_TAG('p','i','h',' '), HB_TAG('C','P','P',' ')}, /* Pitcairn-Norfolk -> Creoles */
1192 {HB_TAG('p','i','l',' '), HB_TAG_NONE }, /* Yom != Filipino */
1193 {HB_TAG('p','i','s',' '), HB_TAG('C','P','P',' ')}, /* Pijin -> Creoles */
1194 {HB_TAG('p','k','h',' '), HB_TAG('Q','I','N',' ')}, /* Pankhu -> Chin */
1195 {HB_TAG('p','k','o',' '), HB_TAG('K','A','L',' ')}, /* Pökoot -> Kalenjin */
1196 {HB_TAG('p','l','g',' '), HB_TAG_NONE }, /* Pilagá != Palaung */
1197 {HB_TAG('p','l','k',' '), HB_TAG_NONE }, /* Kohistani Shina != Polish */
1198 {HB_TAG('p','l','l',' '), HB_TAG('P','L','G',' ')}, /* Shwe Palaung -> Palaung */
1199 {HB_TAG('p','l','n',' '), HB_TAG('C','P','P',' ')}, /* Palenquero -> Creoles */
1200 {HB_TAG('p','l','p',' '), HB_TAG('P','A','P',' ')}, /* Palpa (retired code) */
1201 {HB_TAG('p','l','t',' '), HB_TAG('M','L','G',' ')}, /* Plateau Malagasy -> Malagasy */
1202 {HB_TAG('p','m','l',' '), HB_TAG('C','P','P',' ')}, /* Lingua Franca -> Creoles */
1203 /*{HB_TAG('p','m','s',' '), HB_TAG('P','M','S',' ')},*/ /* Piemontese */
1204 {HB_TAG('p','m','y',' '), HB_TAG('C','P','P',' ')}, /* Papuan Malay -> Creoles */
1205 /*{HB_TAG('p','n','b',' '), HB_TAG('P','N','B',' ')},*/ /* Western Panjabi */
1206 {HB_TAG('p','o','c',' '), HB_TAG('M','Y','N',' ')}, /* Poqomam -> Mayan */
1207 {HB_TAG('p','o','h',' '), HB_TAG('P','O','H',' ')}, /* Poqomchi' -> Pocomchi */
1208 {HB_TAG('p','o','h',' '), HB_TAG('M','Y','N',' ')}, /* Poqomchi' -> Mayan */
1209 /*{HB_TAG('p','o','n',' '), HB_TAG('P','O','N',' ')},*/ /* Pohnpeian */
1210 {HB_TAG('p','o','v',' '), HB_TAG('C','P','P',' ')}, /* Upper Guinea Crioulo -> Creoles */
1211 {HB_TAG('p','p','a',' '), HB_TAG('B','A','G',' ')}, /* Pao (retired code) -> Baghelkhandi */
1212 {HB_TAG('p','r','e',' '), HB_TAG('C','P','P',' ')}, /* Principense -> Creoles */
1213 /*{HB_TAG('p','r','o',' '), HB_TAG('P','R','O',' ')},*/ /* Old Provençal (to 1500) -> Provençal / Old Provençal */
1214 {HB_TAG('p','r','p',' '), HB_TAG('G','U','J',' ')}, /* Parsi (retired code) -> Gujarati */
1215 {HB_TAG('p','r','s',' '), HB_TAG('D','R','I',' ')}, /* Dari */
1216 {HB_TAG('p','r','s',' '), HB_TAG('F','A','R',' ')}, /* Dari -> Persian */
1217 {HB_TAG('p','s','e',' '), HB_TAG('M','L','Y',' ')}, /* Central Malay -> Malay */
1218 {HB_TAG('p','s','t',' '), HB_TAG('P','A','S',' ')}, /* Central Pashto -> Pashto */
1219 {HB_TAG('p','u','b',' '), HB_TAG('Q','I','N',' ')}, /* Purum -> Chin */
1220 {HB_TAG('p','u','z',' '), HB_TAG('Q','I','N',' ')}, /* Purum Naga (retired code) -> Chin */
1221 {HB_TAG('p','w','o',' '), HB_TAG('P','W','O',' ')}, /* Pwo Western Karen -> Western Pwo Karen */
1222 {HB_TAG('p','w','o',' '), HB_TAG('K','R','N',' ')}, /* Pwo Western Karen -> Karen */
1223 {HB_TAG('p','w','w',' '), HB_TAG('K','R','N',' ')}, /* Pwo Northern Karen -> Karen */
1224 {HB_TAG('q','u','b',' '), HB_TAG('Q','W','H',' ')}, /* Huallaga Huánuco Quechua -> Quechua (Peru) */
1225 {HB_TAG('q','u','b',' '), HB_TAG('Q','U','Z',' ')}, /* Huallaga Huánuco Quechua -> Quechua */
1226 {HB_TAG('q','u','c',' '), HB_TAG('Q','U','C',' ')}, /* K’iche’ */
1227 {HB_TAG('q','u','c',' '), HB_TAG('M','Y','N',' ')}, /* K'iche' -> Mayan */
1228 {HB_TAG('q','u','d',' '), HB_TAG('Q','V','I',' ')}, /* Calderón Highland Quichua -> Quechua (Ecuador) */
1229 {HB_TAG('q','u','d',' '), HB_TAG('Q','U','Z',' ')}, /* Calderón Highland Quichua -> Quechua */
1230 {HB_TAG('q','u','f',' '), HB_TAG('Q','U','Z',' ')}, /* Lambayeque Quechua -> Quechua */
1231 {HB_TAG('q','u','g',' '), HB_TAG('Q','V','I',' ')}, /* Chimborazo Highland Quichua -> Quechua (Ecuador) */
1232 {HB_TAG('q','u','g',' '), HB_TAG('Q','U','Z',' ')}, /* Chimborazo Highland Quichua -> Quechua */
1233 {HB_TAG('q','u','h',' '), HB_TAG('Q','U','H',' ')}, /* South Bolivian Quechua -> Quechua (Bolivia) */
1234 {HB_TAG('q','u','h',' '), HB_TAG('Q','U','Z',' ')}, /* South Bolivian Quechua -> Quechua */
1235 {HB_TAG('q','u','k',' '), HB_TAG('Q','U','Z',' ')}, /* Chachapoyas Quechua -> Quechua */
1236 {HB_TAG('q','u','l',' '), HB_TAG('Q','U','H',' ')}, /* North Bolivian Quechua -> Quechua (Bolivia) */
1237 {HB_TAG('q','u','l',' '), HB_TAG('Q','U','Z',' ')}, /* North Bolivian Quechua -> Quechua */
1238 {HB_TAG('q','u','m',' '), HB_TAG('M','Y','N',' ')}, /* Sipacapense -> Mayan */
1239 {HB_TAG('q','u','p',' '), HB_TAG('Q','V','I',' ')}, /* Southern Pastaza Quechua -> Quechua (Ecuador) */
1240 {HB_TAG('q','u','p',' '), HB_TAG('Q','U','Z',' ')}, /* Southern Pastaza Quechua -> Quechua */
1241 {HB_TAG('q','u','r',' '), HB_TAG('Q','W','H',' ')}, /* Yanahuanca Pasco Quechua -> Quechua (Peru) */
1242 {HB_TAG('q','u','r',' '), HB_TAG('Q','U','Z',' ')}, /* Yanahuanca Pasco Quechua -> Quechua */
1243 {HB_TAG('q','u','s',' '), HB_TAG('Q','U','H',' ')}, /* Santiago del Estero Quichua -> Quechua (Bolivia) */
1244 {HB_TAG('q','u','s',' '), HB_TAG('Q','U','Z',' ')}, /* Santiago del Estero Quichua -> Quechua */
1245 {HB_TAG('q','u','v',' '), HB_TAG('M','Y','N',' ')}, /* Sacapulteco -> Mayan */
1246 {HB_TAG('q','u','w',' '), HB_TAG('Q','V','I',' ')}, /* Tena Lowland Quichua -> Quechua (Ecuador) */
1247 {HB_TAG('q','u','w',' '), HB_TAG('Q','U','Z',' ')}, /* Tena Lowland Quichua -> Quechua */
1248 {HB_TAG('q','u','x',' '), HB_TAG('Q','W','H',' ')}, /* Yauyos Quechua -> Quechua (Peru) */
1249 {HB_TAG('q','u','x',' '), HB_TAG('Q','U','Z',' ')}, /* Yauyos Quechua -> Quechua */
1250 {HB_TAG('q','u','y',' '), HB_TAG('Q','U','Z',' ')}, /* Ayacucho Quechua -> Quechua */
1251 /*{HB_TAG('q','u','z',' '), HB_TAG('Q','U','Z',' ')},*/ /* Cusco Quechua -> Quechua */
1252 {HB_TAG('q','v','a',' '), HB_TAG('Q','W','H',' ')}, /* Ambo-Pasco Quechua -> Quechua (Peru) */
1253 {HB_TAG('q','v','a',' '), HB_TAG('Q','U','Z',' ')}, /* Ambo-Pasco Quechua -> Quechua */
1254 {HB_TAG('q','v','c',' '), HB_TAG('Q','U','Z',' ')}, /* Cajamarca Quechua -> Quechua */
1255 {HB_TAG('q','v','e',' '), HB_TAG('Q','U','Z',' ')}, /* Eastern Apurímac Quechua -> Quechua */
1256 {HB_TAG('q','v','h',' '), HB_TAG('Q','W','H',' ')}, /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua (Peru) */
1257 {HB_TAG('q','v','h',' '), HB_TAG('Q','U','Z',' ')}, /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua */
1258 {HB_TAG('q','v','i',' '), HB_TAG('Q','V','I',' ')}, /* Imbabura Highland Quichua -> Quechua (Ecuador) */
1259 {HB_TAG('q','v','i',' '), HB_TAG('Q','U','Z',' ')}, /* Imbabura Highland Quichua -> Quechua */
1260 {HB_TAG('q','v','j',' '), HB_TAG('Q','V','I',' ')}, /* Loja Highland Quichua -> Quechua (Ecuador) */
1261 {HB_TAG('q','v','j',' '), HB_TAG('Q','U','Z',' ')}, /* Loja Highland Quichua -> Quechua */
1262 {HB_TAG('q','v','l',' '), HB_TAG('Q','W','H',' ')}, /* Cajatambo North Lima Quechua -> Quechua (Peru) */
1263 {HB_TAG('q','v','l',' '), HB_TAG('Q','U','Z',' ')}, /* Cajatambo North Lima Quechua -> Quechua */
1264 {HB_TAG('q','v','m',' '), HB_TAG('Q','W','H',' ')}, /* Margos-Yarowilca-Lauricocha Quechua -> Quechua (Peru) */
1265 {HB_TAG('q','v','m',' '), HB_TAG('Q','U','Z',' ')}, /* Margos-Yarowilca-Lauricocha Quechua -> Quechua */
1266 {HB_TAG('q','v','n',' '), HB_TAG('Q','W','H',' ')}, /* North Junín Quechua -> Quechua (Peru) */
1267 {HB_TAG('q','v','n',' '), HB_TAG('Q','U','Z',' ')}, /* North Junín Quechua -> Quechua */
1268 {HB_TAG('q','v','o',' '), HB_TAG('Q','V','I',' ')}, /* Napo Lowland Quechua -> Quechua (Ecuador) */
1269 {HB_TAG('q','v','o',' '), HB_TAG('Q','U','Z',' ')}, /* Napo Lowland Quechua -> Quechua */
1270 {HB_TAG('q','v','p',' '), HB_TAG('Q','W','H',' ')}, /* Pacaraos Quechua -> Quechua (Peru) */
1271 {HB_TAG('q','v','p',' '), HB_TAG('Q','U','Z',' ')}, /* Pacaraos Quechua -> Quechua */
1272 {HB_TAG('q','v','s',' '), HB_TAG('Q','U','Z',' ')}, /* San Martín Quechua -> Quechua */
1273 {HB_TAG('q','v','w',' '), HB_TAG('Q','W','H',' ')}, /* Huaylla Wanca Quechua -> Quechua (Peru) */
1274 {HB_TAG('q','v','w',' '), HB_TAG('Q','U','Z',' ')}, /* Huaylla Wanca Quechua -> Quechua */
1275 {HB_TAG('q','v','z',' '), HB_TAG('Q','V','I',' ')}, /* Northern Pastaza Quichua -> Quechua (Ecuador) */
1276 {HB_TAG('q','v','z',' '), HB_TAG('Q','U','Z',' ')}, /* Northern Pastaza Quichua -> Quechua */
1277 {HB_TAG('q','w','a',' '), HB_TAG('Q','W','H',' ')}, /* Corongo Ancash Quechua -> Quechua (Peru) */
1278 {HB_TAG('q','w','a',' '), HB_TAG('Q','U','Z',' ')}, /* Corongo Ancash Quechua -> Quechua */
1279 {HB_TAG('q','w','c',' '), HB_TAG('Q','U','Z',' ')}, /* Classical Quechua -> Quechua */
1280 {HB_TAG('q','w','h',' '), HB_TAG('Q','W','H',' ')}, /* Huaylas Ancash Quechua -> Quechua (Peru) */
1281 {HB_TAG('q','w','h',' '), HB_TAG('Q','U','Z',' ')}, /* Huaylas Ancash Quechua -> Quechua */
1282 {HB_TAG('q','w','s',' '), HB_TAG('Q','W','H',' ')}, /* Sihuas Ancash Quechua -> Quechua (Peru) */
1283 {HB_TAG('q','w','s',' '), HB_TAG('Q','U','Z',' ')}, /* Sihuas Ancash Quechua -> Quechua */
1284 {HB_TAG('q','w','t',' '), HB_TAG('A','T','H',' ')}, /* Kwalhioqua-Tlatskanai -> Athapaskan */
1285 {HB_TAG('q','x','a',' '), HB_TAG('Q','W','H',' ')}, /* Chiquián Ancash Quechua -> Quechua (Peru) */
1286 {HB_TAG('q','x','a',' '), HB_TAG('Q','U','Z',' ')}, /* Chiquián Ancash Quechua -> Quechua */
1287 {HB_TAG('q','x','c',' '), HB_TAG('Q','W','H',' ')}, /* Chincha Quechua -> Quechua (Peru) */
1288 {HB_TAG('q','x','c',' '), HB_TAG('Q','U','Z',' ')}, /* Chincha Quechua -> Quechua */
1289 {HB_TAG('q','x','h',' '), HB_TAG('Q','W','H',' ')}, /* Panao Huánuco Quechua -> Quechua (Peru) */
1290 {HB_TAG('q','x','h',' '), HB_TAG('Q','U','Z',' ')}, /* Panao Huánuco Quechua -> Quechua */
1291 {HB_TAG('q','x','l',' '), HB_TAG('Q','V','I',' ')}, /* Salasaca Highland Quichua -> Quechua (Ecuador) */
1292 {HB_TAG('q','x','l',' '), HB_TAG('Q','U','Z',' ')}, /* Salasaca Highland Quichua -> Quechua */
1293 {HB_TAG('q','x','n',' '), HB_TAG('Q','W','H',' ')}, /* Northern Conchucos Ancash Quechua -> Quechua (Peru) */
1294 {HB_TAG('q','x','n',' '), HB_TAG('Q','U','Z',' ')}, /* Northern Conchucos Ancash Quechua -> Quechua */
1295 {HB_TAG('q','x','o',' '), HB_TAG('Q','W','H',' ')}, /* Southern Conchucos Ancash Quechua -> Quechua (Peru) */
1296 {HB_TAG('q','x','o',' '), HB_TAG('Q','U','Z',' ')}, /* Southern Conchucos Ancash Quechua -> Quechua */
1297 {HB_TAG('q','x','p',' '), HB_TAG('Q','U','Z',' ')}, /* Puno Quechua -> Quechua */
1298 {HB_TAG('q','x','r',' '), HB_TAG('Q','V','I',' ')}, /* Cañar Highland Quichua -> Quechua (Ecuador) */
1299 {HB_TAG('q','x','r',' '), HB_TAG('Q','U','Z',' ')}, /* Cañar Highland Quichua -> Quechua */
1300 {HB_TAG('q','x','t',' '), HB_TAG('Q','W','H',' ')}, /* Santa Ana de Tusi Pasco Quechua -> Quechua (Peru) */
1301 {HB_TAG('q','x','t',' '), HB_TAG('Q','U','Z',' ')}, /* Santa Ana de Tusi Pasco Quechua -> Quechua */
1302 {HB_TAG('q','x','u',' '), HB_TAG('Q','U','Z',' ')}, /* Arequipa-La Unión Quechua -> Quechua */
1303 {HB_TAG('q','x','w',' '), HB_TAG('Q','W','H',' ')}, /* Jauja Wanca Quechua -> Quechua (Peru) */
1304 {HB_TAG('q','x','w',' '), HB_TAG('Q','U','Z',' ')}, /* Jauja Wanca Quechua -> Quechua */
1305 {HB_TAG('r','a','g',' '), HB_TAG('L','U','H',' ')}, /* Logooli -> Luyia */
1306 /*{HB_TAG('r','a','j',' '), HB_TAG('R','A','J',' ')},*/ /* Rajasthani [macrolanguage] */
1307 {HB_TAG('r','a','l',' '), HB_TAG('Q','I','N',' ')}, /* Ralte -> Chin */
1308 /*{HB_TAG('r','a','r',' '), HB_TAG('R','A','R',' ')},*/ /* Rarotongan */
1309 {HB_TAG('r','b','b',' '), HB_TAG('P','L','G',' ')}, /* Rumai Palaung -> Palaung */
1310 {HB_TAG('r','b','l',' '), HB_TAG('B','I','K',' ')}, /* Miraya Bikol -> Bikol */
1311 {HB_TAG('r','c','f',' '), HB_TAG('C','P','P',' ')}, /* Réunion Creole French -> Creoles */
1312 /*{HB_TAG('r','e','j',' '), HB_TAG('R','E','J',' ')},*/ /* Rejang */
1313 /*{HB_TAG('r','h','g',' '), HB_TAG('R','H','G',' ')},*/ /* Rohingya */
1314 /*{HB_TAG('r','i','a',' '), HB_TAG('R','I','A',' ')},*/ /* Riang (India) */
1315 {HB_TAG('r','i','f',' '), HB_TAG('R','I','F',' ')}, /* Tarifit */
1316 {HB_TAG('r','i','f',' '), HB_TAG('B','B','R',' ')}, /* Tarifit -> Berber */
1317 /*{HB_TAG('r','i','t',' '), HB_TAG('R','I','T',' ')},*/ /* Ritharrngu -> Ritarungo */
1318 {HB_TAG('r','k','i',' '), HB_TAG('A','R','K',' ')}, /* Rakhine */
1319 /*{HB_TAG('r','k','w',' '), HB_TAG('R','K','W',' ')},*/ /* Arakwal */
1320 {HB_TAG('r','m','c',' '), HB_TAG('R','O','Y',' ')}, /* Carpathian Romani -> Romany */
1321 {HB_TAG('r','m','f',' '), HB_TAG('R','O','Y',' ')}, /* Kalo Finnish Romani -> Romany */
1322 {HB_TAG('r','m','l',' '), HB_TAG('R','O','Y',' ')}, /* Baltic Romani -> Romany */
1323 {HB_TAG('r','m','n',' '), HB_TAG('R','O','Y',' ')}, /* Balkan Romani -> Romany */
1324 {HB_TAG('r','m','o',' '), HB_TAG('R','O','Y',' ')}, /* Sinte Romani -> Romany */
1325 {HB_TAG('r','m','s',' '), HB_TAG_NONE }, /* Romanian Sign Language != Romansh */
1326 {HB_TAG('r','m','w',' '), HB_TAG('R','O','Y',' ')}, /* Welsh Romani -> Romany */
1327 {HB_TAG('r','m','y',' '), HB_TAG('R','M','Y',' ')}, /* Vlax Romani */
1328 {HB_TAG('r','m','y',' '), HB_TAG('R','O','Y',' ')}, /* Vlax Romani -> Romany */
1329 {HB_TAG('r','m','z',' '), HB_TAG('A','R','K',' ')}, /* Marma -> Rakhine */
1330 {HB_TAG('r','o','m',' '), HB_TAG('R','O','Y',' ')}, /* Romany [macrolanguage] */
1331 {HB_TAG('r','o','p',' '), HB_TAG('C','P','P',' ')}, /* Kriol -> Creoles */
1332 {HB_TAG('r','t','c',' '), HB_TAG('Q','I','N',' ')}, /* Rungtu Chin -> Chin */
1333 /*{HB_TAG('r','t','m',' '), HB_TAG('R','T','M',' ')},*/ /* Rotuman */
1334 {HB_TAG('r','u','e',' '), HB_TAG('R','S','Y',' ')}, /* Rusyn */
1335 /*{HB_TAG('r','u','p',' '), HB_TAG('R','U','P',' ')},*/ /* Aromanian */
1336 {HB_TAG('r','w','r',' '), HB_TAG('M','A','W',' ')}, /* Marwari (India) */
1337 {HB_TAG('s','a','d',' '), HB_TAG_NONE }, /* Sandawe != Sadri */
1338 {HB_TAG('s','a','h',' '), HB_TAG('Y','A','K',' ')}, /* Yakut -> Sakha */
1339 {HB_TAG('s','a','m',' '), HB_TAG('P','A','A',' ')}, /* Samaritan Aramaic -> Palestinian Aramaic */
1340 /*{HB_TAG('s','a','s',' '), HB_TAG('S','A','S',' ')},*/ /* Sasak */
1341 /*{HB_TAG('s','a','t',' '), HB_TAG('S','A','T',' ')},*/ /* Santali */
1342 {HB_TAG('s','a','y',' '), HB_TAG_NONE }, /* Saya != Sayisi */
1343 {HB_TAG('s','c','f',' '), HB_TAG('C','P','P',' ')}, /* San Miguel Creole French -> Creoles */
1344 {HB_TAG('s','c','h',' '), HB_TAG('Q','I','N',' ')}, /* Sakachep -> Chin */
1345 {HB_TAG('s','c','i',' '), HB_TAG('C','P','P',' ')}, /* Sri Lankan Creole Malay -> Creoles */
1346 {HB_TAG('s','c','k',' '), HB_TAG('S','A','D',' ')}, /* Sadri */
1347 /*{HB_TAG('s','c','n',' '), HB_TAG('S','C','N',' ')},*/ /* Sicilian */
1348 /*{HB_TAG('s','c','o',' '), HB_TAG('S','C','O',' ')},*/ /* Scots */
1349 {HB_TAG('s','c','s',' '), HB_TAG('S','C','S',' ')}, /* North Slavey */
1350 {HB_TAG('s','c','s',' '), HB_TAG('S','L','A',' ')}, /* North Slavey -> Slavey */
1351 {HB_TAG('s','c','s',' '), HB_TAG('A','T','H',' ')}, /* North Slavey -> Athapaskan */
1352 {HB_TAG('s','d','c',' '), HB_TAG('S','R','D',' ')}, /* Sassarese Sardinian -> Sardinian */
1353 {HB_TAG('s','d','h',' '), HB_TAG('K','U','R',' ')}, /* Southern Kurdish -> Kurdish */
1354 {HB_TAG('s','d','n',' '), HB_TAG('S','R','D',' ')}, /* Gallurese Sardinian -> Sardinian */
1355 {HB_TAG('s','d','s',' '), HB_TAG('B','B','R',' ')}, /* Sened -> Berber */
1356 {HB_TAG('s','e','h',' '), HB_TAG('S','N','A',' ')}, /* Sena */
1357 {HB_TAG('s','e','k',' '), HB_TAG('A','T','H',' ')}, /* Sekani -> Athapaskan */
1358 /*{HB_TAG('s','e','l',' '), HB_TAG('S','E','L',' ')},*/ /* Selkup */
1359 {HB_TAG('s','e','z',' '), HB_TAG('Q','I','N',' ')}, /* Senthang Chin -> Chin */
1360 {HB_TAG('s','f','m',' '), HB_TAG('S','F','M',' ')}, /* Small Flowery Miao */
1361 {HB_TAG('s','f','m',' '), HB_TAG('H','M','N',' ')}, /* Small Flowery Miao -> Hmong */
1362 /*{HB_TAG('s','g','a',' '), HB_TAG('S','G','A',' ')},*/ /* Old Irish (to 900) */
1363 {HB_TAG('s','g','c',' '), HB_TAG('K','A','L',' ')}, /* Kipsigis -> Kalenjin */
1364 {HB_TAG('s','g','o',' '), HB_TAG_NONE }, /* Songa (retired code) != Sango */
1365 /*{HB_TAG('s','g','s',' '), HB_TAG('S','G','S',' ')},*/ /* Samogitian */
1366 {HB_TAG('s','g','w',' '), HB_TAG('C','H','G',' ')}, /* Sebat Bet Gurage -> Chaha Gurage */
1367 {HB_TAG('s','h','i',' '), HB_TAG('S','H','I',' ')}, /* Tachelhit */
1368 {HB_TAG('s','h','i',' '), HB_TAG('B','B','R',' ')}, /* Tachelhit -> Berber */
1369 {HB_TAG('s','h','l',' '), HB_TAG('Q','I','N',' ')}, /* Shendu -> Chin */
1370 /*{HB_TAG('s','h','n',' '), HB_TAG('S','H','N',' ')},*/ /* Shan */
1371 {HB_TAG('s','h','u',' '), HB_TAG('A','R','A',' ')}, /* Chadian Arabic -> Arabic */
1372 {HB_TAG('s','h','y',' '), HB_TAG('B','B','R',' ')}, /* Tachawit -> Berber */
1373 {HB_TAG('s','i','b',' '), HB_TAG_NONE }, /* Sebop != Sibe */
1374 /*{HB_TAG('s','i','d',' '), HB_TAG('S','I','D',' ')},*/ /* Sidamo */
1375 {HB_TAG('s','i','g',' '), HB_TAG_NONE }, /* Paasaal != Silte Gurage */
1376 {HB_TAG('s','i','z',' '), HB_TAG('B','B','R',' ')}, /* Siwi -> Berber */
1377 {HB_TAG('s','j','d',' '), HB_TAG('K','S','M',' ')}, /* Kildin Sami */
1378 {HB_TAG('s','j','o',' '), HB_TAG('S','I','B',' ')}, /* Xibe -> Sibe */
1379 {HB_TAG('s','j','s',' '), HB_TAG('B','B','R',' ')}, /* Senhaja De Srair -> Berber */
1380 {HB_TAG('s','k','g',' '), HB_TAG('M','L','G',' ')}, /* Sakalava Malagasy -> Malagasy */
1381 {HB_TAG('s','k','r',' '), HB_TAG('S','R','K',' ')}, /* Saraiki */
1382 {HB_TAG('s','k','s',' '), HB_TAG_NONE }, /* Maia != Skolt Sami */
1383 {HB_TAG('s','k','w',' '), HB_TAG('C','P','P',' ')}, /* Skepi Creole Dutch -> Creoles */
1384 {HB_TAG('s','k','y',' '), HB_TAG_NONE }, /* Sikaiana != Slovak */
1385 {HB_TAG('s','l','a',' '), HB_TAG_NONE }, /* Slavic [collection] != Slavey */
1386 {HB_TAG('s','m','a',' '), HB_TAG('S','S','M',' ')}, /* Southern Sami */
1387 {HB_TAG('s','m','d',' '), HB_TAG('M','B','N',' ')}, /* Sama (retired code) -> Mbundu */
1388 {HB_TAG('s','m','j',' '), HB_TAG('L','S','M',' ')}, /* Lule Sami */
1389 {HB_TAG('s','m','l',' '), HB_TAG_NONE }, /* Central Sama != Somali */
1390 {HB_TAG('s','m','n',' '), HB_TAG('I','S','M',' ')}, /* Inari Sami */
1391 {HB_TAG('s','m','s',' '), HB_TAG('S','K','S',' ')}, /* Skolt Sami */
1392 {HB_TAG('s','m','t',' '), HB_TAG('Q','I','N',' ')}, /* Simte -> Chin */
1393 {HB_TAG('s','n','b',' '), HB_TAG('I','B','A',' ')}, /* Sebuyau (retired code) -> Iban */
1394 {HB_TAG('s','n','h',' '), HB_TAG_NONE }, /* Shinabo (retired code) != Sinhala (Sinhalese) */
1395 /*{HB_TAG('s','n','k',' '), HB_TAG('S','N','K',' ')},*/ /* Soninke */
1396 {HB_TAG('s','o','g',' '), HB_TAG_NONE }, /* Sogdian != Sodo Gurage */
1397 /*{HB_TAG('s','o','p',' '), HB_TAG('S','O','P',' ')},*/ /* Songe */
1398 {HB_TAG('s','p','v',' '), HB_TAG('O','R','I',' ')}, /* Sambalpuri -> Odia (formerly Oriya) */
1399 {HB_TAG('s','p','y',' '), HB_TAG('K','A','L',' ')}, /* Sabaot -> Kalenjin */
1400 {HB_TAG('s','r','b',' '), HB_TAG_NONE }, /* Sora != Serbian */
1401 {HB_TAG('s','r','c',' '), HB_TAG('S','R','D',' ')}, /* Logudorese Sardinian -> Sardinian */
1402 {HB_TAG('s','r','k',' '), HB_TAG_NONE }, /* Serudung Murut != Saraiki */
1403 {HB_TAG('s','r','m',' '), HB_TAG('C','P','P',' ')}, /* Saramaccan -> Creoles */
1404 {HB_TAG('s','r','n',' '), HB_TAG('C','P','P',' ')}, /* Sranan Tongo -> Creoles */
1405 {HB_TAG('s','r','o',' '), HB_TAG('S','R','D',' ')}, /* Campidanese Sardinian -> Sardinian */
1406 /*{HB_TAG('s','r','r',' '), HB_TAG('S','R','R',' ')},*/ /* Serer */
1407 {HB_TAG('s','r','s',' '), HB_TAG('A','T','H',' ')}, /* Sarsi -> Athapaskan */
1408 {HB_TAG('s','s','h',' '), HB_TAG('A','R','A',' ')}, /* Shihhi Arabic -> Arabic */
1409 {HB_TAG('s','s','l',' '), HB_TAG_NONE }, /* Western Sisaala != South Slavey */
1410 {HB_TAG('s','s','m',' '), HB_TAG_NONE }, /* Semnam != Southern Sami */
1411 {HB_TAG('s','t','a',' '), HB_TAG('C','P','P',' ')}, /* Settla -> Creoles */
1412 /*{HB_TAG('s','t','q',' '), HB_TAG('S','T','Q',' ')},*/ /* Saterfriesisch -> Saterland Frisian */
1413 {HB_TAG('s','t','v',' '), HB_TAG('S','I','G',' ')}, /* Silt'e -> Silte Gurage */
1414 /*{HB_TAG('s','u','k',' '), HB_TAG('S','U','K',' ')},*/ /* Sukuma */
1415 {HB_TAG('s','u','q',' '), HB_TAG('S','U','R',' ')}, /* Suri */
1416 {HB_TAG('s','u','r',' '), HB_TAG_NONE }, /* Mwaghavul != Suri */
1417 /*{HB_TAG('s','v','a',' '), HB_TAG('S','V','A',' ')},*/ /* Svan */
1418 {HB_TAG('s','v','c',' '), HB_TAG('C','P','P',' ')}, /* Vincentian Creole English -> Creoles */
1419 {HB_TAG('s','v','e',' '), HB_TAG_NONE }, /* Serili != Swedish */
1420 {HB_TAG('s','w','b',' '), HB_TAG('C','M','R',' ')}, /* Maore Comorian -> Comorian */
1421 {HB_TAG('s','w','c',' '), HB_TAG('S','W','K',' ')}, /* Congo Swahili -> Swahili */
1422 {HB_TAG('s','w','h',' '), HB_TAG('S','W','K',' ')}, /* Swahili */
1423 {HB_TAG('s','w','k',' '), HB_TAG_NONE }, /* Malawi Sena != Swahili */
1424 {HB_TAG('s','w','n',' '), HB_TAG('B','B','R',' ')}, /* Sawknah -> Berber */
1425 {HB_TAG('s','w','v',' '), HB_TAG('M','A','W',' ')}, /* Shekhawati -> Marwari */
1426 /*{HB_TAG('s','x','u',' '), HB_TAG('S','X','U',' ')},*/ /* Upper Saxon */
1427 {HB_TAG('s','y','c',' '), HB_TAG('S','Y','R',' ')}, /* Classical Syriac -> Syriac */
1428 /*{HB_TAG('s','y','l',' '), HB_TAG('S','Y','L',' ')},*/ /* Sylheti */
1429 /*{HB_TAG('s','y','r',' '), HB_TAG('S','Y','R',' ')},*/ /* Syriac [macrolanguage] */
1430 /*{HB_TAG('s','z','l',' '), HB_TAG('S','Z','L',' ')},*/ /* Silesian */
1431 {HB_TAG('t','a','a',' '), HB_TAG('A','T','H',' ')}, /* Lower Tanana -> Athapaskan */
1432 /*{HB_TAG('t','a','b',' '), HB_TAG('T','A','B',' ')},*/ /* Tabassaran -> Tabasaran */
1433 {HB_TAG('t','a','j',' '), HB_TAG_NONE }, /* Eastern Tamang != Tajiki */
1434 {HB_TAG('t','a','q',' '), HB_TAG('T','M','H',' ')}, /* Tamasheq -> Tamashek */
1435 {HB_TAG('t','a','q',' '), HB_TAG('B','B','R',' ')}, /* Tamasheq -> Berber */
1436 {HB_TAG('t','a','s',' '), HB_TAG('C','P','P',' ')}, /* Tay Boi -> Creoles */
1437 {HB_TAG('t','a','u',' '), HB_TAG('A','T','H',' ')}, /* Upper Tanana -> Athapaskan */
1438 {HB_TAG('t','c','b',' '), HB_TAG('A','T','H',' ')}, /* Tanacross -> Athapaskan */
1439 {HB_TAG('t','c','e',' '), HB_TAG('A','T','H',' ')}, /* Southern Tutchone -> Athapaskan */
1440 {HB_TAG('t','c','h',' '), HB_TAG('C','P','P',' ')}, /* Turks And Caicos Creole English -> Creoles */
1441 {HB_TAG('t','c','p',' '), HB_TAG('Q','I','N',' ')}, /* Tawr Chin -> Chin */
1442 {HB_TAG('t','c','s',' '), HB_TAG('C','P','P',' ')}, /* Torres Strait Creole -> Creoles */
1443 {HB_TAG('t','c','y',' '), HB_TAG('T','U','L',' ')}, /* Tulu */
1444 {HB_TAG('t','c','z',' '), HB_TAG('Q','I','N',' ')}, /* Thado Chin -> Chin */
1445 /*{HB_TAG('t','d','d',' '), HB_TAG('T','D','D',' ')},*/ /* Tai Nüa -> Dehong Dai */
1446 {HB_TAG('t','d','x',' '), HB_TAG('M','L','G',' ')}, /* Tandroy-Mahafaly Malagasy -> Malagasy */
1447 {HB_TAG('t','e','c',' '), HB_TAG('K','A','L',' ')}, /* Terik -> Kalenjin */
1448 {HB_TAG('t','e','m',' '), HB_TAG('T','M','N',' ')}, /* Timne -> Temne */
1449 /*{HB_TAG('t','e','t',' '), HB_TAG('T','E','T',' ')},*/ /* Tetum */
1450 {HB_TAG('t','e','z',' '), HB_TAG('B','B','R',' ')}, /* Tetserret -> Berber */
1451 {HB_TAG('t','f','n',' '), HB_TAG('A','T','H',' ')}, /* Tanaina -> Athapaskan */
1452 {HB_TAG('t','g','h',' '), HB_TAG('C','P','P',' ')}, /* Tobagonian Creole English -> Creoles */
1453 {HB_TAG('t','g','j',' '), HB_TAG('N','I','S',' ')}, /* Tagin -> Nisi */
1454 {HB_TAG('t','g','n',' '), HB_TAG_NONE }, /* Tandaganon != Tongan */
1455 {HB_TAG('t','g','r',' '), HB_TAG_NONE }, /* Tareng != Tigre */
1456 {HB_TAG('t','g','x',' '), HB_TAG('A','T','H',' ')}, /* Tagish -> Athapaskan */
1457 {HB_TAG('t','g','y',' '), HB_TAG_NONE }, /* Togoyo != Tigrinya */
1458 {HB_TAG('t','h','t',' '), HB_TAG('A','T','H',' ')}, /* Tahltan -> Athapaskan */
1459 {HB_TAG('t','h','v',' '), HB_TAG('T','M','H',' ')}, /* Tahaggart Tamahaq -> Tamashek */
1460 {HB_TAG('t','h','v',' '), HB_TAG('B','B','R',' ')}, /* Tahaggart Tamahaq -> Berber */
1461 {HB_TAG('t','h','z',' '), HB_TAG('T','M','H',' ')}, /* Tayart Tamajeq -> Tamashek */
1462 {HB_TAG('t','h','z',' '), HB_TAG('B','B','R',' ')}, /* Tayart Tamajeq -> Berber */
1463 {HB_TAG('t','i','a',' '), HB_TAG('B','B','R',' ')}, /* Tidikelt Tamazight -> Berber */
1464 {HB_TAG('t','i','g',' '), HB_TAG('T','G','R',' ')}, /* Tigre */
1465 /*{HB_TAG('t','i','v',' '), HB_TAG('T','I','V',' ')},*/ /* Tiv */
1466 /*{HB_TAG('t','j','l',' '), HB_TAG('T','J','L',' ')},*/ /* Tai Laing */
1467 {HB_TAG('t','j','o',' '), HB_TAG('B','B','R',' ')}, /* Temacine Tamazight -> Berber */
1468 {HB_TAG('t','k','g',' '), HB_TAG('M','L','G',' ')}, /* Tesaka Malagasy -> Malagasy */
1469 {HB_TAG('t','k','m',' '), HB_TAG_NONE }, /* Takelma != Turkmen */
1470 /*{HB_TAG('t','l','i',' '), HB_TAG('T','L','I',' ')},*/ /* Tlingit */
1471 {HB_TAG('t','m','g',' '), HB_TAG('C','P','P',' ')}, /* Ternateño -> Creoles */
1472 {HB_TAG('t','m','h',' '), HB_TAG('T','M','H',' ')}, /* Tamashek [macrolanguage] */
1473 {HB_TAG('t','m','h',' '), HB_TAG('B','B','R',' ')}, /* Tamashek [macrolanguage] -> Berber */
1474 {HB_TAG('t','m','n',' '), HB_TAG_NONE }, /* Taman (Indonesia) != Temne */
1475 {HB_TAG('t','m','w',' '), HB_TAG('M','L','Y',' ')}, /* Temuan -> Malay */
1476 {HB_TAG('t','n','a',' '), HB_TAG_NONE }, /* Tacana != Tswana */
1477 {HB_TAG('t','n','e',' '), HB_TAG_NONE }, /* Tinoc Kallahan (retired code) != Tundra Enets */
1478 {HB_TAG('t','n','f',' '), HB_TAG('D','R','I',' ')}, /* Tangshewi (retired code) -> Dari */
1479 {HB_TAG('t','n','f',' '), HB_TAG('F','A','R',' ')}, /* Tangshewi (retired code) -> Persian */
1480 {HB_TAG('t','n','g',' '), HB_TAG_NONE }, /* Tobanga != Tonga */
1481 {HB_TAG('t','o','d',' '), HB_TAG('T','O','D','0')}, /* Toma */
1482 {HB_TAG('t','o','i',' '), HB_TAG('T','N','G',' ')}, /* Tonga (Zambia) */
1483 {HB_TAG('t','o','j',' '), HB_TAG('M','Y','N',' ')}, /* Tojolabal -> Mayan */
1484 {HB_TAG('t','o','l',' '), HB_TAG('A','T','H',' ')}, /* Tolowa -> Athapaskan */
1485 {HB_TAG('t','o','r',' '), HB_TAG('B','A','D','0')}, /* Togbo-Vara Banda -> Banda */
1486 {HB_TAG('t','p','i',' '), HB_TAG('T','P','I',' ')}, /* Tok Pisin */
1487 {HB_TAG('t','p','i',' '), HB_TAG('C','P','P',' ')}, /* Tok Pisin -> Creoles */
1488 {HB_TAG('t','r','f',' '), HB_TAG('C','P','P',' ')}, /* Trinidadian Creole English -> Creoles */
1489 {HB_TAG('t','r','k',' '), HB_TAG_NONE }, /* Turkic [collection] != Turkish */
1490 {HB_TAG('t','r','u',' '), HB_TAG('T','U','A',' ')}, /* Turoyo -> Turoyo Aramaic */
1491 {HB_TAG('t','r','u',' '), HB_TAG('S','Y','R',' ')}, /* Turoyo -> Syriac */
1492 {HB_TAG('t','s','g',' '), HB_TAG_NONE }, /* Tausug != Tsonga */
1493 /*{HB_TAG('t','s','j',' '), HB_TAG('T','S','J',' ')},*/ /* Tshangla */
1494 {HB_TAG('t','t','c',' '), HB_TAG('M','Y','N',' ')}, /* Tektiteko -> Mayan */
1495 {HB_TAG('t','t','m',' '), HB_TAG('A','T','H',' ')}, /* Northern Tutchone -> Athapaskan */
1496 {HB_TAG('t','t','q',' '), HB_TAG('T','M','H',' ')}, /* Tawallammat Tamajaq -> Tamashek */
1497 {HB_TAG('t','t','q',' '), HB_TAG('B','B','R',' ')}, /* Tawallammat Tamajaq -> Berber */
1498 {HB_TAG('t','u','a',' '), HB_TAG_NONE }, /* Wiarumus != Turoyo Aramaic */
1499 {HB_TAG('t','u','l',' '), HB_TAG_NONE }, /* Tula != Tulu */
1500 /*{HB_TAG('t','u','m',' '), HB_TAG('T','U','M',' ')},*/ /* Tumbuka */
1501 {HB_TAG('t','u','u',' '), HB_TAG('A','T','H',' ')}, /* Tututni -> Athapaskan */
1502 {HB_TAG('t','u','v',' '), HB_TAG_NONE }, /* Turkana != Tuvin */
1503 {HB_TAG('t','u','y',' '), HB_TAG('K','A','L',' ')}, /* Tugen -> Kalenjin */
1504 /*{HB_TAG('t','v','l',' '), HB_TAG('T','V','L',' ')},*/ /* Tuvalu */
1505 {HB_TAG('t','v','y',' '), HB_TAG('C','P','P',' ')}, /* Timor Pidgin -> Creoles */
1506 {HB_TAG('t','x','c',' '), HB_TAG('A','T','H',' ')}, /* Tsetsaut -> Athapaskan */
1507 {HB_TAG('t','x','y',' '), HB_TAG('M','L','G',' ')}, /* Tanosy Malagasy -> Malagasy */
1508 {HB_TAG('t','y','v',' '), HB_TAG('T','U','V',' ')}, /* Tuvinian -> Tuvin */
1509 /*{HB_TAG('t','y','z',' '), HB_TAG('T','Y','Z',' ')},*/ /* Tày */
1510 {HB_TAG('t','z','h',' '), HB_TAG('M','Y','N',' ')}, /* Tzeltal -> Mayan */
1511 {HB_TAG('t','z','j',' '), HB_TAG('M','Y','N',' ')}, /* Tz'utujil -> Mayan */
1512 {HB_TAG('t','z','m',' '), HB_TAG('T','Z','M',' ')}, /* Central Atlas Tamazight -> Tamazight */
1513 {HB_TAG('t','z','m',' '), HB_TAG('B','B','R',' ')}, /* Central Atlas Tamazight -> Berber */
1514 {HB_TAG('t','z','o',' '), HB_TAG('T','Z','O',' ')}, /* Tzotzil */
1515 {HB_TAG('t','z','o',' '), HB_TAG('M','Y','N',' ')}, /* Tzotzil -> Mayan */
1516 {HB_TAG('u','b','l',' '), HB_TAG('B','I','K',' ')}, /* Buhi'non Bikol -> Bikol */
1517 /*{HB_TAG('u','d','m',' '), HB_TAG('U','D','M',' ')},*/ /* Udmurt */
1518 {HB_TAG('u','k','i',' '), HB_TAG('K','U','I',' ')}, /* Kui (India) */
1519 {HB_TAG('u','l','n',' '), HB_TAG('C','P','P',' ')}, /* Unserdeutsch -> Creoles */
1520 /*{HB_TAG('u','m','b',' '), HB_TAG('U','M','B',' ')},*/ /* Umbundu */
1521 {HB_TAG('u','n','r',' '), HB_TAG('M','U','N',' ')}, /* Mundari */
1522 {HB_TAG('u','r','k',' '), HB_TAG('M','L','Y',' ')}, /* Urak Lawoi' -> Malay */
1523 {HB_TAG('u','s','p',' '), HB_TAG('M','Y','N',' ')}, /* Uspanteco -> Mayan */
1524 {HB_TAG('u','z','n',' '), HB_TAG('U','Z','B',' ')}, /* Northern Uzbek -> Uzbek */
1525 {HB_TAG('u','z','s',' '), HB_TAG('U','Z','B',' ')}, /* Southern Uzbek -> Uzbek */
1526 {HB_TAG('v','a','p',' '), HB_TAG('Q','I','N',' ')}, /* Vaiphei -> Chin */
1527 /*{HB_TAG('v','e','c',' '), HB_TAG('V','E','C',' ')},*/ /* Venetian */
1528 {HB_TAG('v','i','c',' '), HB_TAG('C','P','P',' ')}, /* Virgin Islands Creole English -> Creoles */
1529 {HB_TAG('v','i','t',' '), HB_TAG_NONE }, /* Viti != Vietnamese */
1530 {HB_TAG('v','k','k',' '), HB_TAG('M','L','Y',' ')}, /* Kaur -> Malay */
1531 {HB_TAG('v','k','p',' '), HB_TAG('C','P','P',' ')}, /* Korlai Creole Portuguese -> Creoles */
1532 {HB_TAG('v','k','t',' '), HB_TAG('M','L','Y',' ')}, /* Tenggarong Kutai Malay -> Malay */
1533 {HB_TAG('v','l','s',' '), HB_TAG('F','L','E',' ')}, /* Vlaams -> Dutch (Flemish) */
1534 {HB_TAG('v','m','w',' '), HB_TAG('M','A','K',' ')}, /* Makhuwa */
1535 /*{HB_TAG('v','r','o',' '), HB_TAG('V','R','O',' ')},*/ /* Võro */
1536 {HB_TAG('w','a','g',' '), HB_TAG_NONE }, /* Wa'ema != Wagdi */
1537 /*{HB_TAG('w','a','r',' '), HB_TAG('W','A','R',' ')},*/ /* Waray (Philippines) -> Waray-Waray */
1538 {HB_TAG('w','b','m',' '), HB_TAG('W','A',' ',' ')}, /* Wa */
1539 {HB_TAG('w','b','r',' '), HB_TAG('W','A','G',' ')}, /* Wagdi */
1540 {HB_TAG('w','b','r',' '), HB_TAG('R','A','J',' ')}, /* Wagdi -> Rajasthani */
1541 /*{HB_TAG('w','c','i',' '), HB_TAG('W','C','I',' ')},*/ /* Waci Gbe */
1542 {HB_TAG('w','e','a',' '), HB_TAG('K','R','N',' ')}, /* Wewaw -> Karen */
1543 {HB_TAG('w','e','s',' '), HB_TAG('C','P','P',' ')}, /* Cameroon Pidgin -> Creoles */
1544 {HB_TAG('w','e','u',' '), HB_TAG('Q','I','N',' ')}, /* Rawngtu Chin -> Chin */
1545 {HB_TAG('w','l','c',' '), HB_TAG('C','M','R',' ')}, /* Mwali Comorian -> Comorian */
1546 {HB_TAG('w','l','e',' '), HB_TAG('S','I','G',' ')}, /* Wolane -> Silte Gurage */
1547 {HB_TAG('w','l','k',' '), HB_TAG('A','T','H',' ')}, /* Wailaki -> Athapaskan */
1548 {HB_TAG('w','n','i',' '), HB_TAG('C','M','R',' ')}, /* Ndzwani Comorian -> Comorian */
1549 {HB_TAG('w','r','y',' '), HB_TAG('M','A','W',' ')}, /* Merwari -> Marwari */
1550 {HB_TAG('w','s','g',' '), HB_TAG('G','O','N',' ')}, /* Adilabad Gondi -> Gondi */
1551 /*{HB_TAG('w','t','m',' '), HB_TAG('W','T','M',' ')},*/ /* Mewati */
1552 {HB_TAG('w','u','u',' '), HB_TAG('Z','H','S',' ')}, /* Wu Chinese -> Chinese, Simplified */
1553 {HB_TAG('x','a','l',' '), HB_TAG('K','L','M',' ')}, /* Kalmyk */
1554 {HB_TAG('x','a','l',' '), HB_TAG('T','O','D',' ')}, /* Kalmyk -> Todo */
1555 {HB_TAG('x','a','n',' '), HB_TAG('S','E','K',' ')}, /* Xamtanga -> Sekota */
1556 {HB_TAG('x','b','d',' '), HB_TAG_NONE }, /* Bindal != Lü */
1557 /*{HB_TAG('x','j','b',' '), HB_TAG('X','J','B',' ')},*/ /* Minjungbal -> Minjangbal */
1558 /*{HB_TAG('x','k','f',' '), HB_TAG('X','K','F',' ')},*/ /* Khengkha */
1559 {HB_TAG('x','m','g',' '), HB_TAG('B','M','L',' ')}, /* Mengaka -> Bamileke */
1560 {HB_TAG('x','m','m',' '), HB_TAG('M','L','Y',' ')}, /* Manado Malay -> Malay */
1561 {HB_TAG('x','m','m',' '), HB_TAG('C','P','P',' ')}, /* Manado Malay -> Creoles */
1562 {HB_TAG('x','m','v',' '), HB_TAG('M','L','G',' ')}, /* Antankarana Malagasy -> Malagasy */
1563 {HB_TAG('x','m','w',' '), HB_TAG('M','L','G',' ')}, /* Tsimihety Malagasy -> Malagasy */
1564 {HB_TAG('x','n','j',' '), HB_TAG('S','X','T',' ')}, /* Ngoni (Tanzania) -> Sutu */
1565 {HB_TAG('x','n','q',' '), HB_TAG('S','X','T',' ')}, /* Ngoni (Mozambique) -> Sutu */
1566 {HB_TAG('x','n','r',' '), HB_TAG('D','G','R',' ')}, /* Kangri -> Dogri (macrolanguage) */
1567 /*{HB_TAG('x','o','g',' '), HB_TAG('X','O','G',' ')},*/ /* Soga */
1568 {HB_TAG('x','p','e',' '), HB_TAG('X','P','E',' ')}, /* Liberia Kpelle -> Kpelle (Liberia) */
1569 {HB_TAG('x','p','e',' '), HB_TAG('K','P','L',' ')}, /* Liberia Kpelle -> Kpelle */
1570 {HB_TAG('x','s','l',' '), HB_TAG('S','S','L',' ')}, /* South Slavey */
1571 {HB_TAG('x','s','l',' '), HB_TAG('S','L','A',' ')}, /* South Slavey -> Slavey */
1572 {HB_TAG('x','s','l',' '), HB_TAG('A','T','H',' ')}, /* South Slavey -> Athapaskan */
1573 {HB_TAG('x','s','t',' '), HB_TAG('S','I','G',' ')}, /* Silt'e (retired code) -> Silte Gurage */
1574 /*{HB_TAG('x','u','b',' '), HB_TAG('X','U','B',' ')},*/ /* Betta Kurumba -> Bette Kuruma */
1575 /*{HB_TAG('x','u','j',' '), HB_TAG('X','U','J',' ')},*/ /* Jennu Kurumba -> Jennu Kuruma */
1576 {HB_TAG('x','u','p',' '), HB_TAG('A','T','H',' ')}, /* Upper Umpqua -> Athapaskan */
1577 {HB_TAG('x','w','o',' '), HB_TAG('T','O','D',' ')}, /* Written Oirat -> Todo */
1578 {HB_TAG('y','a','j',' '), HB_TAG('B','A','D','0')}, /* Banda-Yangere -> Banda */
1579 {HB_TAG('y','a','k',' '), HB_TAG_NONE }, /* Yakama != Sakha */
1580 /*{HB_TAG('y','a','o',' '), HB_TAG('Y','A','O',' ')},*/ /* Yao */
1581 /*{HB_TAG('y','a','p',' '), HB_TAG('Y','A','P',' ')},*/ /* Yapese */
1582 {HB_TAG('y','b','a',' '), HB_TAG_NONE }, /* Yala != Yoruba */
1583 {HB_TAG('y','b','b',' '), HB_TAG('B','M','L',' ')}, /* Yemba -> Bamileke */
1584 {HB_TAG('y','b','d',' '), HB_TAG('A','R','K',' ')}, /* Yangbye (retired code) -> Rakhine */
1585 {HB_TAG('y','c','r',' '), HB_TAG_NONE }, /* Yilan Creole != Y-Cree */
1586 {HB_TAG('y','d','d',' '), HB_TAG('J','I','I',' ')}, /* Eastern Yiddish -> Yiddish */
1587 /*{HB_TAG('y','g','p',' '), HB_TAG('Y','G','P',' ')},*/ /* Gepo */
1588 {HB_TAG('y','i','h',' '), HB_TAG('J','I','I',' ')}, /* Western Yiddish -> Yiddish */
1589 {HB_TAG('y','i','m',' '), HB_TAG_NONE }, /* Yimchungru Naga != Yi Modern */
1590 /*{HB_TAG('y','n','a',' '), HB_TAG('Y','N','A',' ')},*/ /* Aluo */
1591 {HB_TAG('y','o','s',' '), HB_TAG('Q','I','N',' ')}, /* Yos (retired code) -> Chin */
1592 {HB_TAG('y','u','a',' '), HB_TAG('M','Y','N',' ')}, /* Yucateco -> Mayan */
1593 {HB_TAG('y','u','e',' '), HB_TAG('Z','H','H',' ')}, /* Yue Chinese -> Chinese, Traditional, Hong Kong SAR */
1594 /*{HB_TAG('y','w','q',' '), HB_TAG('Y','W','Q',' ')},*/ /* Wuding-Luquan Yi */
1595 {HB_TAG('z','c','h',' '), HB_TAG('Z','H','A',' ')}, /* Central Hongshuihe Zhuang -> Zhuang */
1596 {HB_TAG('z','d','j',' '), HB_TAG('C','M','R',' ')}, /* Ngazidja Comorian -> Comorian */
1597 /*{HB_TAG('z','e','a',' '), HB_TAG('Z','E','A',' ')},*/ /* Zeeuws -> Zealandic */
1598 {HB_TAG('z','e','h',' '), HB_TAG('Z','H','A',' ')}, /* Eastern Hongshuihe Zhuang -> Zhuang */
1599 {HB_TAG('z','e','n',' '), HB_TAG('B','B','R',' ')}, /* Zenaga -> Berber */
1600 {HB_TAG('z','g','b',' '), HB_TAG('Z','H','A',' ')}, /* Guibei Zhuang -> Zhuang */
1601 {HB_TAG('z','g','h',' '), HB_TAG('Z','G','H',' ')}, /* Standard Moroccan Tamazight */
1602 {HB_TAG('z','g','h',' '), HB_TAG('B','B','R',' ')}, /* Standard Moroccan Tamazight -> Berber */
1603 {HB_TAG('z','g','m',' '), HB_TAG('Z','H','A',' ')}, /* Minz Zhuang -> Zhuang */
1604 {HB_TAG('z','g','n',' '), HB_TAG('Z','H','A',' ')}, /* Guibian Zhuang -> Zhuang */
1605 {HB_TAG('z','h','d',' '), HB_TAG('Z','H','A',' ')}, /* Dai Zhuang -> Zhuang */
1606 {HB_TAG('z','h','n',' '), HB_TAG('Z','H','A',' ')}, /* Nong Zhuang -> Zhuang */
1607 {HB_TAG('z','k','b',' '), HB_TAG('K','H','A',' ')}, /* Koibal (retired code) -> Khakass */
1608 {HB_TAG('z','l','j',' '), HB_TAG('Z','H','A',' ')}, /* Liujiang Zhuang -> Zhuang */
1609 {HB_TAG('z','l','m',' '), HB_TAG('M','L','Y',' ')}, /* Malay */
1610 {HB_TAG('z','l','n',' '), HB_TAG('Z','H','A',' ')}, /* Lianshan Zhuang -> Zhuang */
1611 {HB_TAG('z','l','q',' '), HB_TAG('Z','H','A',' ')}, /* Liuqian Zhuang -> Zhuang */
1612 {HB_TAG('z','m','i',' '), HB_TAG('M','L','Y',' ')}, /* Negeri Sembilan Malay -> Malay */
1613 {HB_TAG('z','m','z',' '), HB_TAG('B','A','D','0')}, /* Mbandja -> Banda */
1614 {HB_TAG('z','n','d',' '), HB_TAG_NONE }, /* Zande [collection] != Zande */
1615 {HB_TAG('z','n','e',' '), HB_TAG('Z','N','D',' ')}, /* Zande */
1616 {HB_TAG('z','o','m',' '), HB_TAG('Q','I','N',' ')}, /* Zou -> Chin */
1617 {HB_TAG('z','q','e',' '), HB_TAG('Z','H','A',' ')}, /* Qiubei Zhuang -> Zhuang */
1618 {HB_TAG('z','s','m',' '), HB_TAG('M','L','Y',' ')}, /* Standard Malay -> Malay */
1619 {HB_TAG('z','u','m',' '), HB_TAG('L','R','C',' ')}, /* Kumzari -> Luri */
1620 {HB_TAG('z','y','b',' '), HB_TAG('Z','H','A',' ')}, /* Yongbei Zhuang -> Zhuang */
1621 {HB_TAG('z','y','g',' '), HB_TAG('Z','H','A',' ')}, /* Yang Zhuang -> Zhuang */
1622 {HB_TAG('z','y','j',' '), HB_TAG('Z','H','A',' ')}, /* Youjiang Zhuang -> Zhuang */
1623 {HB_TAG('z','y','n',' '), HB_TAG('Z','H','A',' ')}, /* Yongnan Zhuang -> Zhuang */
1624 {HB_TAG('z','y','p',' '), HB_TAG('Q','I','N',' ')}, /* Zyphe Chin -> Chin */
1625 /*{HB_TAG('z','z','a',' '), HB_TAG('Z','Z','A',' ')},*/ /* Zazaki [macrolanguage] */
1626 {HB_TAG('z','z','j',' '), HB_TAG('Z','H','A',' ')}, /* Zuojiang Zhuang -> Zhuang */
1627 };
1628 #endif
1629
1630 /**
1631 * hb_ot_tags_from_complex_language:
1632 * @lang_str: a BCP 47 language tag to convert.
1633 * @limit: a pointer to the end of the substring of @lang_str to consider for
1634 * conversion.
1635 * @count: maximum number of language tags to retrieve (IN) and actual number of
1636 * language tags retrieved (OUT). If no tags are retrieved, it is not modified.
1637 * @tags: array of size at least @language_count to store the language tag
1638 * results
1639 *
1640 * Converts a multi-subtag BCP 47 language tag to language tags.
1641 *
1642 * Return value: Whether any language systems were retrieved.
1643 **/
1644 static inline bool
hb_ot_tags_from_complex_language(const char * lang_str,const char * limit,unsigned int * count,hb_tag_t * tags)1645 hb_ot_tags_from_complex_language (const char *lang_str,
1646 const char *limit,
1647 unsigned int *count /* IN/OUT */,
1648 hb_tag_t *tags /* OUT */)
1649 {
1650 if (limit - lang_str >= 7)
1651 {
1652 const char *p = strchr (lang_str, '-');
1653 if (!p || p >= limit || limit - p < 5) goto out;
1654 if (subtag_matches (p, limit, "-fonnapa", 8))
1655 {
1656 /* Undetermined; North American Phonetic Alphabet */
1657 tags[0] = HB_TAG('A','P','P','H'); /* Phonetic transcription—Americanist conventions */
1658 *count = 1;
1659 return true;
1660 }
1661 if (subtag_matches (p, limit, "-polyton", 8))
1662 {
1663 /* Modern Greek (1453-); Polytonic Greek */
1664 tags[0] = HB_TAG('P','G','R',' '); /* Polytonic Greek */
1665 *count = 1;
1666 return true;
1667 }
1668 if (subtag_matches (p, limit, "-arevmda", 8))
1669 {
1670 /* Armenian; Western Armenian (retired code) */
1671 tags[0] = HB_TAG('H','Y','E',' '); /* Armenian */
1672 *count = 1;
1673 return true;
1674 }
1675 if (subtag_matches (p, limit, "-provenc", 8))
1676 {
1677 /* Occitan (post 1500); Provençal */
1678 tags[0] = HB_TAG('P','R','O',' '); /* Provençal / Old Provençal */
1679 *count = 1;
1680 return true;
1681 }
1682 if (subtag_matches (p, limit, "-fonipa", 7))
1683 {
1684 /* Undetermined; International Phonetic Alphabet */
1685 tags[0] = HB_TAG('I','P','P','H'); /* Phonetic transcription—IPA conventions */
1686 *count = 1;
1687 return true;
1688 }
1689 if (subtag_matches (p, limit, "-geok", 5))
1690 {
1691 /* Undetermined; Khutsuri (Asomtavruli and Nuskhuri) */
1692 tags[0] = HB_TAG('K','G','E',' '); /* Khutsuri Georgian */
1693 *count = 1;
1694 return true;
1695 }
1696 if (subtag_matches (p, limit, "-syre", 5))
1697 {
1698 /* Undetermined; Syriac (Estrangelo variant) */
1699 tags[0] = HB_TAG('S','Y','R','E'); /* Syriac, Estrangela script-variant (equivalent to ISO 15924 'Syre') */
1700 *count = 1;
1701 return true;
1702 }
1703 if (subtag_matches (p, limit, "-syrj", 5))
1704 {
1705 /* Undetermined; Syriac (Western variant) */
1706 tags[0] = HB_TAG('S','Y','R','J'); /* Syriac, Western script-variant (equivalent to ISO 15924 'Syrj') */
1707 *count = 1;
1708 return true;
1709 }
1710 if (subtag_matches (p, limit, "-syrn", 5))
1711 {
1712 /* Undetermined; Syriac (Eastern variant) */
1713 tags[0] = HB_TAG('S','Y','R','N'); /* Syriac, Eastern script-variant (equivalent to ISO 15924 'Syrn') */
1714 *count = 1;
1715 return true;
1716 }
1717 }
1718 out:
1719 switch (lang_str[0])
1720 {
1721 case 'a':
1722 if (0 == strcmp (&lang_str[1], "rt-lojban"))
1723 {
1724 /* Lojban (retired code) */
1725 tags[0] = HB_TAG('J','B','O',' '); /* Lojban */
1726 *count = 1;
1727 return true;
1728 }
1729 break;
1730 case 'c':
1731 if (lang_matches (&lang_str[1], limit, "do-hant-hk", 10))
1732 {
1733 /* Min Dong Chinese; Han (Traditional variant); Hong Kong */
1734 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1735 *count = 1;
1736 return true;
1737 }
1738 if (lang_matches (&lang_str[1], limit, "do-hant-mo", 10))
1739 {
1740 /* Min Dong Chinese; Han (Traditional variant); Macao */
1741 unsigned int i;
1742 hb_tag_t possible_tags[] = {
1743 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
1744 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
1745 };
1746 for (i = 0; i < 2 && i < *count; i++)
1747 tags[i] = possible_tags[i];
1748 *count = i;
1749 return true;
1750 }
1751 if (lang_matches (&lang_str[1], limit, "jy-hant-hk", 10))
1752 {
1753 /* Jinyu Chinese; Han (Traditional variant); Hong Kong */
1754 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1755 *count = 1;
1756 return true;
1757 }
1758 if (lang_matches (&lang_str[1], limit, "jy-hant-mo", 10))
1759 {
1760 /* Jinyu Chinese; Han (Traditional variant); Macao */
1761 unsigned int i;
1762 hb_tag_t possible_tags[] = {
1763 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
1764 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
1765 };
1766 for (i = 0; i < 2 && i < *count; i++)
1767 tags[i] = possible_tags[i];
1768 *count = i;
1769 return true;
1770 }
1771 if (lang_matches (&lang_str[1], limit, "mn-hant-hk", 10))
1772 {
1773 /* Mandarin Chinese; Han (Traditional variant); Hong Kong */
1774 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1775 *count = 1;
1776 return true;
1777 }
1778 if (lang_matches (&lang_str[1], limit, "mn-hant-mo", 10))
1779 {
1780 /* Mandarin Chinese; Han (Traditional variant); Macao */
1781 unsigned int i;
1782 hb_tag_t possible_tags[] = {
1783 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
1784 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
1785 };
1786 for (i = 0; i < 2 && i < *count; i++)
1787 tags[i] = possible_tags[i];
1788 *count = i;
1789 return true;
1790 }
1791 if (lang_matches (&lang_str[1], limit, "np-hant-hk", 10))
1792 {
1793 /* Northern Ping Chinese; Han (Traditional variant); Hong Kong */
1794 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1795 *count = 1;
1796 return true;
1797 }
1798 if (lang_matches (&lang_str[1], limit, "np-hant-mo", 10))
1799 {
1800 /* Northern Ping Chinese; Han (Traditional variant); Macao */
1801 unsigned int i;
1802 hb_tag_t possible_tags[] = {
1803 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
1804 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
1805 };
1806 for (i = 0; i < 2 && i < *count; i++)
1807 tags[i] = possible_tags[i];
1808 *count = i;
1809 return true;
1810 }
1811 if (lang_matches (&lang_str[1], limit, "px-hant-hk", 10))
1812 {
1813 /* Pu-Xian Chinese; Han (Traditional variant); Hong Kong */
1814 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1815 *count = 1;
1816 return true;
1817 }
1818 if (lang_matches (&lang_str[1], limit, "px-hant-mo", 10))
1819 {
1820 /* Pu-Xian Chinese; Han (Traditional variant); Macao */
1821 unsigned int i;
1822 hb_tag_t possible_tags[] = {
1823 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
1824 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
1825 };
1826 for (i = 0; i < 2 && i < *count; i++)
1827 tags[i] = possible_tags[i];
1828 *count = i;
1829 return true;
1830 }
1831 if (lang_matches (&lang_str[1], limit, "sp-hant-hk", 10))
1832 {
1833 /* Southern Ping Chinese; Han (Traditional variant); Hong Kong */
1834 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1835 *count = 1;
1836 return true;
1837 }
1838 if (lang_matches (&lang_str[1], limit, "sp-hant-mo", 10))
1839 {
1840 /* Southern Ping Chinese; Han (Traditional variant); Macao */
1841 unsigned int i;
1842 hb_tag_t possible_tags[] = {
1843 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
1844 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
1845 };
1846 for (i = 0; i < 2 && i < *count; i++)
1847 tags[i] = possible_tags[i];
1848 *count = i;
1849 return true;
1850 }
1851 if (lang_matches (&lang_str[1], limit, "zh-hant-hk", 10))
1852 {
1853 /* Huizhou Chinese; Han (Traditional variant); Hong Kong */
1854 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1855 *count = 1;
1856 return true;
1857 }
1858 if (lang_matches (&lang_str[1], limit, "zh-hant-mo", 10))
1859 {
1860 /* Huizhou Chinese; Han (Traditional variant); Macao */
1861 unsigned int i;
1862 hb_tag_t possible_tags[] = {
1863 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
1864 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
1865 };
1866 for (i = 0; i < 2 && i < *count; i++)
1867 tags[i] = possible_tags[i];
1868 *count = i;
1869 return true;
1870 }
1871 if (lang_matches (&lang_str[1], limit, "zo-hant-hk", 10))
1872 {
1873 /* Min Zhong Chinese; Han (Traditional variant); Hong Kong */
1874 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
1875 *count = 1;
1876 return true;
1877 }
1878 if (lang_matches (&lang_str[1], limit, "zo-hant-mo", 10))
1879 {
1880 /* Min Zhong Chinese; Han (Traditional variant); Macao */
1881 unsigned int i;
1882 hb_tag_t possible_tags[] = {
1883 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
1884 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
1885 };
1886 for (i = 0; i < 2 && i < *count; i++)
1887 tags[i] = possible_tags[i];
1888 *count = i;
1889 return true;
1890 }
1891 if (lang_matches (&lang_str[1], limit, "do-hans", 7))
1892 {
1893 /* Min Dong Chinese; Han (Simplified variant) */
1894 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1895 *count = 1;
1896 return true;
1897 }
1898 if (lang_matches (&lang_str[1], limit, "do-hant", 7))
1899 {
1900 /* Min Dong Chinese; Han (Traditional variant) */
1901 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1902 *count = 1;
1903 return true;
1904 }
1905 if (lang_matches (&lang_str[1], limit, "jy-hans", 7))
1906 {
1907 /* Jinyu Chinese; Han (Simplified variant) */
1908 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1909 *count = 1;
1910 return true;
1911 }
1912 if (lang_matches (&lang_str[1], limit, "jy-hant", 7))
1913 {
1914 /* Jinyu Chinese; Han (Traditional variant) */
1915 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1916 *count = 1;
1917 return true;
1918 }
1919 if (lang_matches (&lang_str[1], limit, "mn-hans", 7))
1920 {
1921 /* Mandarin Chinese; Han (Simplified variant) */
1922 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1923 *count = 1;
1924 return true;
1925 }
1926 if (lang_matches (&lang_str[1], limit, "mn-hant", 7))
1927 {
1928 /* Mandarin Chinese; Han (Traditional variant) */
1929 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1930 *count = 1;
1931 return true;
1932 }
1933 if (lang_matches (&lang_str[1], limit, "np-hans", 7))
1934 {
1935 /* Northern Ping Chinese; Han (Simplified variant) */
1936 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1937 *count = 1;
1938 return true;
1939 }
1940 if (lang_matches (&lang_str[1], limit, "np-hant", 7))
1941 {
1942 /* Northern Ping Chinese; Han (Traditional variant) */
1943 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1944 *count = 1;
1945 return true;
1946 }
1947 if (lang_matches (&lang_str[1], limit, "px-hans", 7))
1948 {
1949 /* Pu-Xian Chinese; Han (Simplified variant) */
1950 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1951 *count = 1;
1952 return true;
1953 }
1954 if (lang_matches (&lang_str[1], limit, "px-hant", 7))
1955 {
1956 /* Pu-Xian Chinese; Han (Traditional variant) */
1957 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1958 *count = 1;
1959 return true;
1960 }
1961 if (lang_matches (&lang_str[1], limit, "sp-hans", 7))
1962 {
1963 /* Southern Ping Chinese; Han (Simplified variant) */
1964 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1965 *count = 1;
1966 return true;
1967 }
1968 if (lang_matches (&lang_str[1], limit, "sp-hant", 7))
1969 {
1970 /* Southern Ping Chinese; Han (Traditional variant) */
1971 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1972 *count = 1;
1973 return true;
1974 }
1975 if (lang_matches (&lang_str[1], limit, "zh-hans", 7))
1976 {
1977 /* Huizhou Chinese; Han (Simplified variant) */
1978 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1979 *count = 1;
1980 return true;
1981 }
1982 if (lang_matches (&lang_str[1], limit, "zh-hant", 7))
1983 {
1984 /* Huizhou Chinese; Han (Traditional variant) */
1985 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
1986 *count = 1;
1987 return true;
1988 }
1989 if (lang_matches (&lang_str[1], limit, "zo-hans", 7))
1990 {
1991 /* Min Zhong Chinese; Han (Simplified variant) */
1992 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
1993 *count = 1;
1994 return true;
1995 }
1996 if (lang_matches (&lang_str[1], limit, "zo-hant", 7))
1997 {
1998 /* Min Zhong Chinese; Han (Traditional variant) */
1999 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2000 *count = 1;
2001 return true;
2002 }
2003 if (0 == strncmp (&lang_str[1], "do-", 3)
2004 && subtag_matches (lang_str, limit, "-hk", 3))
2005 {
2006 /* Min Dong Chinese; Hong Kong */
2007 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2008 *count = 1;
2009 return true;
2010 }
2011 if (0 == strncmp (&lang_str[1], "do-", 3)
2012 && subtag_matches (lang_str, limit, "-mo", 3))
2013 {
2014 /* Min Dong Chinese; Macao */
2015 unsigned int i;
2016 hb_tag_t possible_tags[] = {
2017 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2018 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2019 };
2020 for (i = 0; i < 2 && i < *count; i++)
2021 tags[i] = possible_tags[i];
2022 *count = i;
2023 return true;
2024 }
2025 if (0 == strncmp (&lang_str[1], "do-", 3)
2026 && subtag_matches (lang_str, limit, "-tw", 3))
2027 {
2028 /* Min Dong Chinese; Taiwan, Province of China */
2029 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2030 *count = 1;
2031 return true;
2032 }
2033 if (0 == strncmp (&lang_str[1], "jy-", 3)
2034 && subtag_matches (lang_str, limit, "-hk", 3))
2035 {
2036 /* Jinyu Chinese; Hong Kong */
2037 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2038 *count = 1;
2039 return true;
2040 }
2041 if (0 == strncmp (&lang_str[1], "jy-", 3)
2042 && subtag_matches (lang_str, limit, "-mo", 3))
2043 {
2044 /* Jinyu Chinese; Macao */
2045 unsigned int i;
2046 hb_tag_t possible_tags[] = {
2047 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2048 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2049 };
2050 for (i = 0; i < 2 && i < *count; i++)
2051 tags[i] = possible_tags[i];
2052 *count = i;
2053 return true;
2054 }
2055 if (0 == strncmp (&lang_str[1], "jy-", 3)
2056 && subtag_matches (lang_str, limit, "-tw", 3))
2057 {
2058 /* Jinyu Chinese; Taiwan, Province of China */
2059 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2060 *count = 1;
2061 return true;
2062 }
2063 if (0 == strncmp (&lang_str[1], "mn-", 3)
2064 && subtag_matches (lang_str, limit, "-hk", 3))
2065 {
2066 /* Mandarin Chinese; Hong Kong */
2067 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2068 *count = 1;
2069 return true;
2070 }
2071 if (0 == strncmp (&lang_str[1], "mn-", 3)
2072 && subtag_matches (lang_str, limit, "-mo", 3))
2073 {
2074 /* Mandarin Chinese; Macao */
2075 unsigned int i;
2076 hb_tag_t possible_tags[] = {
2077 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2078 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2079 };
2080 for (i = 0; i < 2 && i < *count; i++)
2081 tags[i] = possible_tags[i];
2082 *count = i;
2083 return true;
2084 }
2085 if (0 == strncmp (&lang_str[1], "mn-", 3)
2086 && subtag_matches (lang_str, limit, "-tw", 3))
2087 {
2088 /* Mandarin Chinese; Taiwan, Province of China */
2089 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2090 *count = 1;
2091 return true;
2092 }
2093 if (0 == strncmp (&lang_str[1], "np-", 3)
2094 && subtag_matches (lang_str, limit, "-hk", 3))
2095 {
2096 /* Northern Ping Chinese; Hong Kong */
2097 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2098 *count = 1;
2099 return true;
2100 }
2101 if (0 == strncmp (&lang_str[1], "np-", 3)
2102 && subtag_matches (lang_str, limit, "-mo", 3))
2103 {
2104 /* Northern Ping Chinese; Macao */
2105 unsigned int i;
2106 hb_tag_t possible_tags[] = {
2107 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2108 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2109 };
2110 for (i = 0; i < 2 && i < *count; i++)
2111 tags[i] = possible_tags[i];
2112 *count = i;
2113 return true;
2114 }
2115 if (0 == strncmp (&lang_str[1], "np-", 3)
2116 && subtag_matches (lang_str, limit, "-tw", 3))
2117 {
2118 /* Northern Ping Chinese; Taiwan, Province of China */
2119 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2120 *count = 1;
2121 return true;
2122 }
2123 if (0 == strncmp (&lang_str[1], "px-", 3)
2124 && subtag_matches (lang_str, limit, "-hk", 3))
2125 {
2126 /* Pu-Xian Chinese; Hong Kong */
2127 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2128 *count = 1;
2129 return true;
2130 }
2131 if (0 == strncmp (&lang_str[1], "px-", 3)
2132 && subtag_matches (lang_str, limit, "-mo", 3))
2133 {
2134 /* Pu-Xian Chinese; Macao */
2135 unsigned int i;
2136 hb_tag_t possible_tags[] = {
2137 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2138 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2139 };
2140 for (i = 0; i < 2 && i < *count; i++)
2141 tags[i] = possible_tags[i];
2142 *count = i;
2143 return true;
2144 }
2145 if (0 == strncmp (&lang_str[1], "px-", 3)
2146 && subtag_matches (lang_str, limit, "-tw", 3))
2147 {
2148 /* Pu-Xian Chinese; Taiwan, Province of China */
2149 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2150 *count = 1;
2151 return true;
2152 }
2153 if (0 == strncmp (&lang_str[1], "sp-", 3)
2154 && subtag_matches (lang_str, limit, "-hk", 3))
2155 {
2156 /* Southern Ping Chinese; Hong Kong */
2157 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2158 *count = 1;
2159 return true;
2160 }
2161 if (0 == strncmp (&lang_str[1], "sp-", 3)
2162 && subtag_matches (lang_str, limit, "-mo", 3))
2163 {
2164 /* Southern Ping Chinese; Macao */
2165 unsigned int i;
2166 hb_tag_t possible_tags[] = {
2167 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2168 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2169 };
2170 for (i = 0; i < 2 && i < *count; i++)
2171 tags[i] = possible_tags[i];
2172 *count = i;
2173 return true;
2174 }
2175 if (0 == strncmp (&lang_str[1], "sp-", 3)
2176 && subtag_matches (lang_str, limit, "-tw", 3))
2177 {
2178 /* Southern Ping Chinese; Taiwan, Province of China */
2179 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2180 *count = 1;
2181 return true;
2182 }
2183 if (0 == strncmp (&lang_str[1], "zh-", 3)
2184 && subtag_matches (lang_str, limit, "-hk", 3))
2185 {
2186 /* Huizhou Chinese; Hong Kong */
2187 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2188 *count = 1;
2189 return true;
2190 }
2191 if (0 == strncmp (&lang_str[1], "zh-", 3)
2192 && subtag_matches (lang_str, limit, "-mo", 3))
2193 {
2194 /* Huizhou Chinese; Macao */
2195 unsigned int i;
2196 hb_tag_t possible_tags[] = {
2197 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2198 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2199 };
2200 for (i = 0; i < 2 && i < *count; i++)
2201 tags[i] = possible_tags[i];
2202 *count = i;
2203 return true;
2204 }
2205 if (0 == strncmp (&lang_str[1], "zh-", 3)
2206 && subtag_matches (lang_str, limit, "-tw", 3))
2207 {
2208 /* Huizhou Chinese; Taiwan, Province of China */
2209 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2210 *count = 1;
2211 return true;
2212 }
2213 if (0 == strncmp (&lang_str[1], "zo-", 3)
2214 && subtag_matches (lang_str, limit, "-hk", 3))
2215 {
2216 /* Min Zhong Chinese; Hong Kong */
2217 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2218 *count = 1;
2219 return true;
2220 }
2221 if (0 == strncmp (&lang_str[1], "zo-", 3)
2222 && subtag_matches (lang_str, limit, "-mo", 3))
2223 {
2224 /* Min Zhong Chinese; Macao */
2225 unsigned int i;
2226 hb_tag_t possible_tags[] = {
2227 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2228 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2229 };
2230 for (i = 0; i < 2 && i < *count; i++)
2231 tags[i] = possible_tags[i];
2232 *count = i;
2233 return true;
2234 }
2235 if (0 == strncmp (&lang_str[1], "zo-", 3)
2236 && subtag_matches (lang_str, limit, "-tw", 3))
2237 {
2238 /* Min Zhong Chinese; Taiwan, Province of China */
2239 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2240 *count = 1;
2241 return true;
2242 }
2243 break;
2244 case 'g':
2245 if (lang_matches (&lang_str[1], limit, "an-hant-hk", 10))
2246 {
2247 /* Gan Chinese; Han (Traditional variant); Hong Kong */
2248 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2249 *count = 1;
2250 return true;
2251 }
2252 if (lang_matches (&lang_str[1], limit, "an-hant-mo", 10))
2253 {
2254 /* Gan Chinese; Han (Traditional variant); Macao */
2255 unsigned int i;
2256 hb_tag_t possible_tags[] = {
2257 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2258 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2259 };
2260 for (i = 0; i < 2 && i < *count; i++)
2261 tags[i] = possible_tags[i];
2262 *count = i;
2263 return true;
2264 }
2265 if (lang_matches (&lang_str[1], limit, "an-hans", 7))
2266 {
2267 /* Gan Chinese; Han (Simplified variant) */
2268 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2269 *count = 1;
2270 return true;
2271 }
2272 if (lang_matches (&lang_str[1], limit, "an-hant", 7))
2273 {
2274 /* Gan Chinese; Han (Traditional variant) */
2275 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2276 *count = 1;
2277 return true;
2278 }
2279 if (lang_matches (&lang_str[1], limit, "a-latg", 6))
2280 {
2281 /* Irish; Latin (Gaelic variant) */
2282 tags[0] = HB_TAG('I','R','T',' '); /* Irish Traditional */
2283 *count = 1;
2284 return true;
2285 }
2286 if (0 == strncmp (&lang_str[1], "an-", 3)
2287 && subtag_matches (lang_str, limit, "-hk", 3))
2288 {
2289 /* Gan Chinese; Hong Kong */
2290 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2291 *count = 1;
2292 return true;
2293 }
2294 if (0 == strncmp (&lang_str[1], "an-", 3)
2295 && subtag_matches (lang_str, limit, "-mo", 3))
2296 {
2297 /* Gan Chinese; Macao */
2298 unsigned int i;
2299 hb_tag_t possible_tags[] = {
2300 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2301 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2302 };
2303 for (i = 0; i < 2 && i < *count; i++)
2304 tags[i] = possible_tags[i];
2305 *count = i;
2306 return true;
2307 }
2308 if (0 == strncmp (&lang_str[1], "an-", 3)
2309 && subtag_matches (lang_str, limit, "-tw", 3))
2310 {
2311 /* Gan Chinese; Taiwan, Province of China */
2312 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2313 *count = 1;
2314 return true;
2315 }
2316 break;
2317 case 'h':
2318 if (lang_matches (&lang_str[1], limit, "ak-hant-hk", 10))
2319 {
2320 /* Hakka Chinese; Han (Traditional variant); Hong Kong */
2321 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2322 *count = 1;
2323 return true;
2324 }
2325 if (lang_matches (&lang_str[1], limit, "ak-hant-mo", 10))
2326 {
2327 /* Hakka Chinese; Han (Traditional variant); Macao */
2328 unsigned int i;
2329 hb_tag_t possible_tags[] = {
2330 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2331 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2332 };
2333 for (i = 0; i < 2 && i < *count; i++)
2334 tags[i] = possible_tags[i];
2335 *count = i;
2336 return true;
2337 }
2338 if (lang_matches (&lang_str[1], limit, "sn-hant-hk", 10))
2339 {
2340 /* Xiang Chinese; Han (Traditional variant); Hong Kong */
2341 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2342 *count = 1;
2343 return true;
2344 }
2345 if (lang_matches (&lang_str[1], limit, "sn-hant-mo", 10))
2346 {
2347 /* Xiang Chinese; Han (Traditional variant); Macao */
2348 unsigned int i;
2349 hb_tag_t possible_tags[] = {
2350 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2351 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2352 };
2353 for (i = 0; i < 2 && i < *count; i++)
2354 tags[i] = possible_tags[i];
2355 *count = i;
2356 return true;
2357 }
2358 if (lang_matches (&lang_str[1], limit, "ak-hans", 7))
2359 {
2360 /* Hakka Chinese; Han (Simplified variant) */
2361 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2362 *count = 1;
2363 return true;
2364 }
2365 if (lang_matches (&lang_str[1], limit, "ak-hant", 7))
2366 {
2367 /* Hakka Chinese; Han (Traditional variant) */
2368 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2369 *count = 1;
2370 return true;
2371 }
2372 if (lang_matches (&lang_str[1], limit, "sn-hans", 7))
2373 {
2374 /* Xiang Chinese; Han (Simplified variant) */
2375 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2376 *count = 1;
2377 return true;
2378 }
2379 if (lang_matches (&lang_str[1], limit, "sn-hant", 7))
2380 {
2381 /* Xiang Chinese; Han (Traditional variant) */
2382 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2383 *count = 1;
2384 return true;
2385 }
2386 if (0 == strncmp (&lang_str[1], "ak-", 3)
2387 && subtag_matches (lang_str, limit, "-hk", 3))
2388 {
2389 /* Hakka Chinese; Hong Kong */
2390 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2391 *count = 1;
2392 return true;
2393 }
2394 if (0 == strncmp (&lang_str[1], "ak-", 3)
2395 && subtag_matches (lang_str, limit, "-mo", 3))
2396 {
2397 /* Hakka Chinese; Macao */
2398 unsigned int i;
2399 hb_tag_t possible_tags[] = {
2400 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2401 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2402 };
2403 for (i = 0; i < 2 && i < *count; i++)
2404 tags[i] = possible_tags[i];
2405 *count = i;
2406 return true;
2407 }
2408 if (0 == strncmp (&lang_str[1], "ak-", 3)
2409 && subtag_matches (lang_str, limit, "-tw", 3))
2410 {
2411 /* Hakka Chinese; Taiwan, Province of China */
2412 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2413 *count = 1;
2414 return true;
2415 }
2416 if (0 == strncmp (&lang_str[1], "sn-", 3)
2417 && subtag_matches (lang_str, limit, "-hk", 3))
2418 {
2419 /* Xiang Chinese; Hong Kong */
2420 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2421 *count = 1;
2422 return true;
2423 }
2424 if (0 == strncmp (&lang_str[1], "sn-", 3)
2425 && subtag_matches (lang_str, limit, "-mo", 3))
2426 {
2427 /* Xiang Chinese; Macao */
2428 unsigned int i;
2429 hb_tag_t possible_tags[] = {
2430 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2431 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2432 };
2433 for (i = 0; i < 2 && i < *count; i++)
2434 tags[i] = possible_tags[i];
2435 *count = i;
2436 return true;
2437 }
2438 if (0 == strncmp (&lang_str[1], "sn-", 3)
2439 && subtag_matches (lang_str, limit, "-tw", 3))
2440 {
2441 /* Xiang Chinese; Taiwan, Province of China */
2442 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2443 *count = 1;
2444 return true;
2445 }
2446 break;
2447 case 'i':
2448 if (0 == strcmp (&lang_str[1], "-navajo"))
2449 {
2450 /* Navajo (retired code) */
2451 unsigned int i;
2452 hb_tag_t possible_tags[] = {
2453 HB_TAG('N','A','V',' '), /* Navajo */
2454 HB_TAG('A','T','H',' '), /* Athapaskan */
2455 };
2456 for (i = 0; i < 2 && i < *count; i++)
2457 tags[i] = possible_tags[i];
2458 *count = i;
2459 return true;
2460 }
2461 if (0 == strcmp (&lang_str[1], "-hak"))
2462 {
2463 /* Hakka (retired code) */
2464 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2465 *count = 1;
2466 return true;
2467 }
2468 if (0 == strcmp (&lang_str[1], "-lux"))
2469 {
2470 /* Luxembourgish (retired code) */
2471 tags[0] = HB_TAG('L','T','Z',' '); /* Luxembourgish */
2472 *count = 1;
2473 return true;
2474 }
2475 break;
2476 case 'l':
2477 if (lang_matches (&lang_str[1], limit, "zh-hans", 7))
2478 {
2479 /* Literary Chinese; Han (Simplified variant) */
2480 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2481 *count = 1;
2482 return true;
2483 }
2484 break;
2485 case 'm':
2486 if (lang_matches (&lang_str[1], limit, "np-hant-hk", 10))
2487 {
2488 /* Min Bei Chinese; Han (Traditional variant); Hong Kong */
2489 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2490 *count = 1;
2491 return true;
2492 }
2493 if (lang_matches (&lang_str[1], limit, "np-hant-mo", 10))
2494 {
2495 /* Min Bei Chinese; Han (Traditional variant); Macao */
2496 unsigned int i;
2497 hb_tag_t possible_tags[] = {
2498 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2499 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2500 };
2501 for (i = 0; i < 2 && i < *count; i++)
2502 tags[i] = possible_tags[i];
2503 *count = i;
2504 return true;
2505 }
2506 if (lang_matches (&lang_str[1], limit, "np-hans", 7))
2507 {
2508 /* Min Bei Chinese; Han (Simplified variant) */
2509 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2510 *count = 1;
2511 return true;
2512 }
2513 if (lang_matches (&lang_str[1], limit, "np-hant", 7))
2514 {
2515 /* Min Bei Chinese; Han (Traditional variant) */
2516 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2517 *count = 1;
2518 return true;
2519 }
2520 if (0 == strncmp (&lang_str[1], "np-", 3)
2521 && subtag_matches (lang_str, limit, "-hk", 3))
2522 {
2523 /* Min Bei Chinese; Hong Kong */
2524 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2525 *count = 1;
2526 return true;
2527 }
2528 if (0 == strncmp (&lang_str[1], "np-", 3)
2529 && subtag_matches (lang_str, limit, "-mo", 3))
2530 {
2531 /* Min Bei Chinese; Macao */
2532 unsigned int i;
2533 hb_tag_t possible_tags[] = {
2534 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2535 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2536 };
2537 for (i = 0; i < 2 && i < *count; i++)
2538 tags[i] = possible_tags[i];
2539 *count = i;
2540 return true;
2541 }
2542 if (0 == strncmp (&lang_str[1], "np-", 3)
2543 && subtag_matches (lang_str, limit, "-tw", 3))
2544 {
2545 /* Min Bei Chinese; Taiwan, Province of China */
2546 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2547 *count = 1;
2548 return true;
2549 }
2550 if (0 == strncmp (&lang_str[1], "nw-", 3)
2551 && subtag_matches (lang_str, limit, "-th", 3))
2552 {
2553 /* Mon; Thailand */
2554 tags[0] = HB_TAG('M','O','N','T'); /* Thailand Mon */
2555 *count = 1;
2556 return true;
2557 }
2558 break;
2559 case 'n':
2560 if (lang_matches (&lang_str[1], limit, "an-hant-hk", 10))
2561 {
2562 /* Min Nan Chinese; Han (Traditional variant); Hong Kong */
2563 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2564 *count = 1;
2565 return true;
2566 }
2567 if (lang_matches (&lang_str[1], limit, "an-hant-mo", 10))
2568 {
2569 /* Min Nan Chinese; Han (Traditional variant); Macao */
2570 unsigned int i;
2571 hb_tag_t possible_tags[] = {
2572 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2573 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2574 };
2575 for (i = 0; i < 2 && i < *count; i++)
2576 tags[i] = possible_tags[i];
2577 *count = i;
2578 return true;
2579 }
2580 if (lang_matches (&lang_str[1], limit, "an-hans", 7))
2581 {
2582 /* Min Nan Chinese; Han (Simplified variant) */
2583 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2584 *count = 1;
2585 return true;
2586 }
2587 if (lang_matches (&lang_str[1], limit, "an-hant", 7))
2588 {
2589 /* Min Nan Chinese; Han (Traditional variant) */
2590 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2591 *count = 1;
2592 return true;
2593 }
2594 if (0 == strncmp (&lang_str[1], "an-", 3)
2595 && subtag_matches (lang_str, limit, "-hk", 3))
2596 {
2597 /* Min Nan Chinese; Hong Kong */
2598 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2599 *count = 1;
2600 return true;
2601 }
2602 if (0 == strncmp (&lang_str[1], "an-", 3)
2603 && subtag_matches (lang_str, limit, "-mo", 3))
2604 {
2605 /* Min Nan Chinese; Macao */
2606 unsigned int i;
2607 hb_tag_t possible_tags[] = {
2608 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2609 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2610 };
2611 for (i = 0; i < 2 && i < *count; i++)
2612 tags[i] = possible_tags[i];
2613 *count = i;
2614 return true;
2615 }
2616 if (0 == strncmp (&lang_str[1], "an-", 3)
2617 && subtag_matches (lang_str, limit, "-tw", 3))
2618 {
2619 /* Min Nan Chinese; Taiwan, Province of China */
2620 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2621 *count = 1;
2622 return true;
2623 }
2624 if (0 == strcmp (&lang_str[1], "o-bok"))
2625 {
2626 /* Norwegian Bokmal (retired code) */
2627 tags[0] = HB_TAG('N','O','R',' '); /* Norwegian */
2628 *count = 1;
2629 return true;
2630 }
2631 if (0 == strcmp (&lang_str[1], "o-nyn"))
2632 {
2633 /* Norwegian Nynorsk (retired code) */
2634 tags[0] = HB_TAG('N','Y','N',' '); /* Norwegian Nynorsk (Nynorsk, Norwegian) */
2635 *count = 1;
2636 return true;
2637 }
2638 break;
2639 case 'r':
2640 if (0 == strncmp (&lang_str[1], "o-", 2)
2641 && subtag_matches (lang_str, limit, "-md", 3))
2642 {
2643 /* Romanian; Moldova */
2644 unsigned int i;
2645 hb_tag_t possible_tags[] = {
2646 HB_TAG('M','O','L',' '), /* Moldavian */
2647 HB_TAG('R','O','M',' '), /* Romanian */
2648 };
2649 for (i = 0; i < 2 && i < *count; i++)
2650 tags[i] = possible_tags[i];
2651 *count = i;
2652 return true;
2653 }
2654 break;
2655 case 'w':
2656 if (lang_matches (&lang_str[1], limit, "uu-hant-hk", 10))
2657 {
2658 /* Wu Chinese; Han (Traditional variant); Hong Kong */
2659 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2660 *count = 1;
2661 return true;
2662 }
2663 if (lang_matches (&lang_str[1], limit, "uu-hant-mo", 10))
2664 {
2665 /* Wu Chinese; Han (Traditional variant); Macao */
2666 unsigned int i;
2667 hb_tag_t possible_tags[] = {
2668 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2669 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2670 };
2671 for (i = 0; i < 2 && i < *count; i++)
2672 tags[i] = possible_tags[i];
2673 *count = i;
2674 return true;
2675 }
2676 if (lang_matches (&lang_str[1], limit, "uu-hans", 7))
2677 {
2678 /* Wu Chinese; Han (Simplified variant) */
2679 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2680 *count = 1;
2681 return true;
2682 }
2683 if (lang_matches (&lang_str[1], limit, "uu-hant", 7))
2684 {
2685 /* Wu Chinese; Han (Traditional variant) */
2686 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2687 *count = 1;
2688 return true;
2689 }
2690 if (0 == strncmp (&lang_str[1], "uu-", 3)
2691 && subtag_matches (lang_str, limit, "-hk", 3))
2692 {
2693 /* Wu Chinese; Hong Kong */
2694 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2695 *count = 1;
2696 return true;
2697 }
2698 if (0 == strncmp (&lang_str[1], "uu-", 3)
2699 && subtag_matches (lang_str, limit, "-mo", 3))
2700 {
2701 /* Wu Chinese; Macao */
2702 unsigned int i;
2703 hb_tag_t possible_tags[] = {
2704 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2705 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2706 };
2707 for (i = 0; i < 2 && i < *count; i++)
2708 tags[i] = possible_tags[i];
2709 *count = i;
2710 return true;
2711 }
2712 if (0 == strncmp (&lang_str[1], "uu-", 3)
2713 && subtag_matches (lang_str, limit, "-tw", 3))
2714 {
2715 /* Wu Chinese; Taiwan, Province of China */
2716 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2717 *count = 1;
2718 return true;
2719 }
2720 break;
2721 case 'y':
2722 if (lang_matches (&lang_str[1], limit, "ue-hans", 7))
2723 {
2724 /* Yue Chinese; Han (Simplified variant) */
2725 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2726 *count = 1;
2727 return true;
2728 }
2729 break;
2730 case 'z':
2731 if (lang_matches (&lang_str[1], limit, "h-hant-hk", 9))
2732 {
2733 /* Chinese [macrolanguage]; Han (Traditional variant); Hong Kong */
2734 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2735 *count = 1;
2736 return true;
2737 }
2738 if (lang_matches (&lang_str[1], limit, "h-hant-mo", 9))
2739 {
2740 /* Chinese [macrolanguage]; Han (Traditional variant); Macao */
2741 unsigned int i;
2742 hb_tag_t possible_tags[] = {
2743 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2744 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2745 };
2746 for (i = 0; i < 2 && i < *count; i++)
2747 tags[i] = possible_tags[i];
2748 *count = i;
2749 return true;
2750 }
2751 if (0 == strcmp (&lang_str[1], "h-min-nan"))
2752 {
2753 /* Minnan, Hokkien, Amoy, Taiwanese, Southern Min, Southern Fujian, Hoklo, Southern Fukien, Ho-lo (retired code) */
2754 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2755 *count = 1;
2756 return true;
2757 }
2758 if (lang_matches (&lang_str[1], limit, "h-hans", 6))
2759 {
2760 /* Chinese [macrolanguage]; Han (Simplified variant) */
2761 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2762 *count = 1;
2763 return true;
2764 }
2765 if (lang_matches (&lang_str[1], limit, "h-hant", 6))
2766 {
2767 /* Chinese [macrolanguage]; Han (Traditional variant) */
2768 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2769 *count = 1;
2770 return true;
2771 }
2772 if (0 == strcmp (&lang_str[1], "h-min"))
2773 {
2774 /* Min, Fuzhou, Hokkien, Amoy, or Taiwanese (retired code) */
2775 tags[0] = HB_TAG('Z','H','S',' '); /* Chinese, Simplified */
2776 *count = 1;
2777 return true;
2778 }
2779 if (0 == strncmp (&lang_str[1], "h-", 2)
2780 && subtag_matches (lang_str, limit, "-hk", 3))
2781 {
2782 /* Chinese [macrolanguage]; Hong Kong */
2783 tags[0] = HB_TAG('Z','H','H',' '); /* Chinese, Traditional, Hong Kong SAR */
2784 *count = 1;
2785 return true;
2786 }
2787 if (0 == strncmp (&lang_str[1], "h-", 2)
2788 && subtag_matches (lang_str, limit, "-mo", 3))
2789 {
2790 /* Chinese [macrolanguage]; Macao */
2791 unsigned int i;
2792 hb_tag_t possible_tags[] = {
2793 HB_TAG('Z','H','T','M'), /* Chinese, Traditional, Macao SAR */
2794 HB_TAG('Z','H','H',' '), /* Chinese, Traditional, Hong Kong SAR */
2795 };
2796 for (i = 0; i < 2 && i < *count; i++)
2797 tags[i] = possible_tags[i];
2798 *count = i;
2799 return true;
2800 }
2801 if (0 == strncmp (&lang_str[1], "h-", 2)
2802 && subtag_matches (lang_str, limit, "-tw", 3))
2803 {
2804 /* Chinese [macrolanguage]; Taiwan, Province of China */
2805 tags[0] = HB_TAG('Z','H','T',' '); /* Chinese, Traditional */
2806 *count = 1;
2807 return true;
2808 }
2809 break;
2810 }
2811 return false;
2812 }
2813
2814 /**
2815 * hb_ot_ambiguous_tag_to_language
2816 * @tag: A language tag.
2817 *
2818 * Converts @tag to a BCP 47 language tag if it is ambiguous (it corresponds to
2819 * many language tags) and the best tag is not the alphabetically first, or if
2820 * the best tag consists of multiple subtags, or if the best tag does not appear
2821 * in #ot_languages.
2822 *
2823 * Return value: The #hb_language_t corresponding to the BCP 47 language tag,
2824 * or #HB_LANGUAGE_INVALID if @tag is not ambiguous.
2825 **/
2826 static inline hb_language_t
hb_ot_ambiguous_tag_to_language(hb_tag_t tag)2827 hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
2828 {
2829 switch (tag)
2830 {
2831 case HB_TAG('A','L','T',' '): /* Altai */
2832 return hb_language_from_string ("alt", -1); /* Southern Altai */
2833 case HB_TAG('A','P','P','H'): /* Phonetic transcription—Americanist conventions */
2834 return hb_language_from_string ("und-fonnapa", -1); /* Undetermined; North American Phonetic Alphabet */
2835 case HB_TAG('A','R','A',' '): /* Arabic */
2836 return hb_language_from_string ("ar", -1); /* Arabic [macrolanguage] */
2837 case HB_TAG('A','R','K',' '): /* Rakhine */
2838 return hb_language_from_string ("rki", -1); /* Rakhine */
2839 case HB_TAG('A','T','H',' '): /* Athapaskan */
2840 return hb_language_from_string ("ath", -1); /* Athapascan [collection] */
2841 case HB_TAG('B','B','R',' '): /* Berber */
2842 return hb_language_from_string ("ber", -1); /* Berber [collection] */
2843 case HB_TAG('B','I','K',' '): /* Bikol */
2844 return hb_language_from_string ("bik", -1); /* Bikol [macrolanguage] */
2845 case HB_TAG('B','T','K',' '): /* Batak */
2846 return hb_language_from_string ("btk", -1); /* Batak [collection] */
2847 case HB_TAG('C','P','P',' '): /* Creoles */
2848 return hb_language_from_string ("crp", -1); /* Creoles and pidgins [collection] */
2849 case HB_TAG('C','R','R',' '): /* Carrier */
2850 return hb_language_from_string ("crx", -1); /* Carrier */
2851 case HB_TAG('D','G','R',' '): /* Dogri (macrolanguage) */
2852 return hb_language_from_string ("doi", -1); /* Dogri [macrolanguage] */
2853 case HB_TAG('D','N','K',' '): /* Dinka */
2854 return hb_language_from_string ("din", -1); /* Dinka [macrolanguage] */
2855 case HB_TAG('D','R','I',' '): /* Dari */
2856 return hb_language_from_string ("prs", -1); /* Dari */
2857 case HB_TAG('D','Z','N',' '): /* Dzongkha */
2858 return hb_language_from_string ("dz", -1); /* Dzongkha */
2859 case HB_TAG('E','T','I',' '): /* Estonian */
2860 return hb_language_from_string ("et", -1); /* Estonian [macrolanguage] */
2861 case HB_TAG('F','A','R',' '): /* Persian */
2862 return hb_language_from_string ("fa", -1); /* Persian [macrolanguage] */
2863 case HB_TAG('G','O','N',' '): /* Gondi */
2864 return hb_language_from_string ("gon", -1); /* Gondi [macrolanguage] */
2865 case HB_TAG('H','M','A',' '): /* High Mari */
2866 return hb_language_from_string ("mrj", -1); /* Western Mari */
2867 case HB_TAG('H','M','N',' '): /* Hmong */
2868 return hb_language_from_string ("hmn", -1); /* Hmong [macrolanguage] */
2869 case HB_TAG('H','N','D',' '): /* Hindko */
2870 return hb_language_from_string ("hnd", -1); /* Southern Hindko */
2871 case HB_TAG('H','Y','E',' '): /* Armenian */
2872 return hb_language_from_string ("hyw", -1); /* Western Armenian */
2873 case HB_TAG('I','B','A',' '): /* Iban */
2874 return hb_language_from_string ("iba", -1); /* Iban */
2875 case HB_TAG('I','J','O',' '): /* Ijo */
2876 return hb_language_from_string ("ijo", -1); /* Ijo [collection] */
2877 case HB_TAG('I','N','U',' '): /* Inuktitut */
2878 return hb_language_from_string ("iu", -1); /* Inuktitut [macrolanguage] */
2879 case HB_TAG('I','P','K',' '): /* Inupiat */
2880 return hb_language_from_string ("ik", -1); /* Inupiaq [macrolanguage] */
2881 case HB_TAG('I','P','P','H'): /* Phonetic transcription—IPA conventions */
2882 return hb_language_from_string ("und-fonipa", -1); /* Undetermined; International Phonetic Alphabet */
2883 case HB_TAG('I','R','T',' '): /* Irish Traditional */
2884 return hb_language_from_string ("ga-Latg", -1); /* Irish; Latin (Gaelic variant) */
2885 case HB_TAG('J','I','I',' '): /* Yiddish */
2886 return hb_language_from_string ("yi", -1); /* Yiddish [macrolanguage] */
2887 case HB_TAG('K','A','L',' '): /* Kalenjin */
2888 return hb_language_from_string ("kln", -1); /* Kalenjin [macrolanguage] */
2889 case HB_TAG('K','G','E',' '): /* Khutsuri Georgian */
2890 return hb_language_from_string ("und-Geok", -1); /* Undetermined; Khutsuri (Asomtavruli and Nuskhuri) */
2891 case HB_TAG('K','N','R',' '): /* Kanuri */
2892 return hb_language_from_string ("kr", -1); /* Kanuri [macrolanguage] */
2893 case HB_TAG('K','O','H',' '): /* Korean Old Hangul */
2894 return hb_language_from_string ("okm", -1); /* Middle Korean (10th-16th cent.) */
2895 case HB_TAG('K','O','K',' '): /* Konkani */
2896 return hb_language_from_string ("kok", -1); /* Konkani [macrolanguage] */
2897 case HB_TAG('K','O','M',' '): /* Komi */
2898 return hb_language_from_string ("kv", -1); /* Komi [macrolanguage] */
2899 case HB_TAG('K','P','L',' '): /* Kpelle */
2900 return hb_language_from_string ("kpe", -1); /* Kpelle [macrolanguage] */
2901 case HB_TAG('K','R','N',' '): /* Karen */
2902 return hb_language_from_string ("kar", -1); /* Karen [collection] */
2903 case HB_TAG('K','U','I',' '): /* Kui */
2904 return hb_language_from_string ("uki", -1); /* Kui (India) */
2905 case HB_TAG('K','U','R',' '): /* Kurdish */
2906 return hb_language_from_string ("ku", -1); /* Kurdish [macrolanguage] */
2907 case HB_TAG('L','M','A',' '): /* Low Mari */
2908 return hb_language_from_string ("mhr", -1); /* Eastern Mari */
2909 case HB_TAG('L','U','H',' '): /* Luyia */
2910 return hb_language_from_string ("luy", -1); /* Luyia [macrolanguage] */
2911 case HB_TAG('L','V','I',' '): /* Latvian */
2912 return hb_language_from_string ("lv", -1); /* Latvian [macrolanguage] */
2913 case HB_TAG('M','A','W',' '): /* Marwari */
2914 return hb_language_from_string ("mwr", -1); /* Marwari [macrolanguage] */
2915 case HB_TAG('M','L','G',' '): /* Malagasy */
2916 return hb_language_from_string ("mg", -1); /* Malagasy [macrolanguage] */
2917 case HB_TAG('M','L','Y',' '): /* Malay */
2918 return hb_language_from_string ("ms", -1); /* Malay [macrolanguage] */
2919 case HB_TAG('M','N','G',' '): /* Mongolian */
2920 return hb_language_from_string ("mn", -1); /* Mongolian [macrolanguage] */
2921 case HB_TAG('M','N','K',' '): /* Maninka */
2922 return hb_language_from_string ("man", -1); /* Mandingo [macrolanguage] */
2923 case HB_TAG('M','O','L',' '): /* Moldavian */
2924 return hb_language_from_string ("ro-MD", -1); /* Romanian; Moldova */
2925 case HB_TAG('M','O','N','T'): /* Thailand Mon */
2926 return hb_language_from_string ("mnw-TH", -1); /* Mon; Thailand */
2927 case HB_TAG('M','Y','N',' '): /* Mayan */
2928 return hb_language_from_string ("myn", -1); /* Mayan [collection] */
2929 case HB_TAG('N','A','H',' '): /* Nahuatl */
2930 return hb_language_from_string ("nah", -1); /* Nahuatl [collection] */
2931 case HB_TAG('N','E','P',' '): /* Nepali */
2932 return hb_language_from_string ("ne", -1); /* Nepali [macrolanguage] */
2933 case HB_TAG('N','I','S',' '): /* Nisi */
2934 return hb_language_from_string ("njz", -1); /* Nyishi */
2935 case HB_TAG('N','O','R',' '): /* Norwegian */
2936 return hb_language_from_string ("no", -1); /* Norwegian [macrolanguage] */
2937 case HB_TAG('O','J','B',' '): /* Ojibway */
2938 return hb_language_from_string ("oj", -1); /* Ojibwa [macrolanguage] */
2939 case HB_TAG('O','R','O',' '): /* Oromo */
2940 return hb_language_from_string ("om", -1); /* Oromo [macrolanguage] */
2941 case HB_TAG('P','A','S',' '): /* Pashto */
2942 return hb_language_from_string ("ps", -1); /* Pashto [macrolanguage] */
2943 case HB_TAG('P','G','R',' '): /* Polytonic Greek */
2944 return hb_language_from_string ("el-polyton", -1); /* Modern Greek (1453-); Polytonic Greek */
2945 case HB_TAG('P','R','O',' '): /* Provençal / Old Provençal */
2946 return hb_language_from_string ("pro", -1); /* Old Provençal (to 1500) */
2947 case HB_TAG('Q','U','H',' '): /* Quechua (Bolivia) */
2948 return hb_language_from_string ("quh", -1); /* South Bolivian Quechua */
2949 case HB_TAG('Q','U','Z',' '): /* Quechua */
2950 return hb_language_from_string ("qu", -1); /* Quechua [macrolanguage] */
2951 case HB_TAG('Q','V','I',' '): /* Quechua (Ecuador) */
2952 return hb_language_from_string ("qvi", -1); /* Imbabura Highland Quichua */
2953 case HB_TAG('Q','W','H',' '): /* Quechua (Peru) */
2954 return hb_language_from_string ("qwh", -1); /* Huaylas Ancash Quechua */
2955 case HB_TAG('R','A','J',' '): /* Rajasthani */
2956 return hb_language_from_string ("raj", -1); /* Rajasthani [macrolanguage] */
2957 case HB_TAG('R','O','M',' '): /* Romanian */
2958 return hb_language_from_string ("ro", -1); /* Romanian */
2959 case HB_TAG('R','O','Y',' '): /* Romany */
2960 return hb_language_from_string ("rom", -1); /* Romany [macrolanguage] */
2961 case HB_TAG('S','Q','I',' '): /* Albanian */
2962 return hb_language_from_string ("sq", -1); /* Albanian [macrolanguage] */
2963 case HB_TAG('S','R','B',' '): /* Serbian */
2964 return hb_language_from_string ("sr", -1); /* Serbian */
2965 case HB_TAG('S','X','T',' '): /* Sutu */
2966 return hb_language_from_string ("xnj", -1); /* Ngoni (Tanzania) */
2967 case HB_TAG('S','Y','R',' '): /* Syriac */
2968 return hb_language_from_string ("syr", -1); /* Syriac [macrolanguage] */
2969 case HB_TAG('S','Y','R','E'): /* Syriac, Estrangela script-variant (equivalent to ISO 15924 'Syre') */
2970 return hb_language_from_string ("und-Syre", -1); /* Undetermined; Syriac (Estrangelo variant) */
2971 case HB_TAG('S','Y','R','J'): /* Syriac, Western script-variant (equivalent to ISO 15924 'Syrj') */
2972 return hb_language_from_string ("und-Syrj", -1); /* Undetermined; Syriac (Western variant) */
2973 case HB_TAG('S','Y','R','N'): /* Syriac, Eastern script-variant (equivalent to ISO 15924 'Syrn') */
2974 return hb_language_from_string ("und-Syrn", -1); /* Undetermined; Syriac (Eastern variant) */
2975 case HB_TAG('T','M','H',' '): /* Tamashek */
2976 return hb_language_from_string ("tmh", -1); /* Tamashek [macrolanguage] */
2977 case HB_TAG('T','O','D',' '): /* Todo */
2978 return hb_language_from_string ("xwo", -1); /* Written Oirat */
2979 case HB_TAG('Z','H','H',' '): /* Chinese, Traditional, Hong Kong SAR */
2980 return hb_language_from_string ("zh-HK", -1); /* Chinese [macrolanguage]; Hong Kong */
2981 case HB_TAG('Z','H','S',' '): /* Chinese, Simplified */
2982 return hb_language_from_string ("zh-Hans", -1); /* Chinese [macrolanguage]; Han (Simplified variant) */
2983 case HB_TAG('Z','H','T',' '): /* Chinese, Traditional */
2984 return hb_language_from_string ("zh-Hant", -1); /* Chinese [macrolanguage]; Han (Traditional variant) */
2985 case HB_TAG('Z','H','T','M'): /* Chinese, Traditional, Macao SAR */
2986 return hb_language_from_string ("zh-MO", -1); /* Chinese [macrolanguage]; Macao */
2987 case HB_TAG('Z','Z','A',' '): /* Zazaki */
2988 return hb_language_from_string ("zza", -1); /* Zazaki [macrolanguage] */
2989 default:
2990 return HB_LANGUAGE_INVALID;
2991 }
2992 }
2993
2994 #endif /* HB_OT_TAG_TABLE_HH */
2995
2996 /* == End of generated table == */
2997