[FREETYPE] Update to v2.6.1. CORE-10378
[reactos.git] / reactos / lib / 3rdparty / freetype / src / autofit / afranges.c
1 /***************************************************************************/
2 /* */
3 /* afranges.c */
4 /* */
5 /* Auto-fitter Unicode script ranges (body). */
6 /* */
7 /* Copyright 2013-2015 by */
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
9 /* */
10 /* This file is part of the FreeType project, and may only be used, */
11 /* modified, and distributed under the terms of the FreeType project */
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13 /* this file you indicate that you have read the license and */
14 /* understand and accept it fully. */
15 /* */
16 /***************************************************************************/
17
18
19 #include "afranges.h"
20
21 /*
22 * The algorithm for assigning properties and styles to the `glyph_styles'
23 * array is as follows (cf. the implementation in
24 * `af_face_globals_compute_style_coverage').
25 *
26 * Walk over all scripts (as listed in `afscript.h').
27 *
28 * For a given script, walk over all styles (as listed in `afstyles.h').
29 * The order of styles is important and should be as follows.
30 *
31 * - First come styles based on OpenType features (small caps, for
32 * example). Since features rely on glyph indices, thus completely
33 * bypassing character codes, no properties are assigned.
34 *
35 * - Next comes the default style, using the character ranges as defined
36 * below. This also assigns properties.
37 *
38 * Note that there also exist fallback scripts, mainly covering
39 * superscript and subscript glyphs of a script that are not present as
40 * OpenType features. Fallback scripts are defined below, also
41 * assigning properties; they are applied after the corresponding
42 * script.
43 *
44 */
45
46
47 /* XXX Check base character ranges again: */
48 /* Right now, they are quickly derived by visual inspection. */
49 /* I can imagine that fine-tuning is necessary. */
50
51 /* for the auto-hinter, a `non-base character' is something that should */
52 /* not be affected by blue zones, regardless of whether this is a */
53 /* spacing or no-spacing glyph */
54
55 /* the `ta_xxxx_nonbase_uniranges' ranges must be strict subsets */
56 /* of the corresponding `ta_xxxx_uniranges' ranges */
57
58
59 const AF_Script_UniRangeRec af_arab_uniranges[] =
60 {
61 AF_UNIRANGE_REC( 0x0600UL, 0x06FFUL ), /* Arabic */
62 AF_UNIRANGE_REC( 0x0750UL, 0x07FFUL ), /* Arabic Supplement */
63 AF_UNIRANGE_REC( 0x08A0UL, 0x08FFUL ), /* Arabic Extended-A */
64 AF_UNIRANGE_REC( 0xFB50UL, 0xFDFFUL ), /* Arabic Presentation Forms-A */
65 AF_UNIRANGE_REC( 0xFE70UL, 0xFEFFUL ), /* Arabic Presentation Forms-B */
66 AF_UNIRANGE_REC( 0x1EE00UL, 0x1EEFFUL ), /* Arabic Mathematical Alphabetic Symbols */
67 AF_UNIRANGE_REC( 0UL, 0UL )
68 };
69
70 const AF_Script_UniRangeRec af_arab_nonbase_uniranges[] =
71 {
72 AF_UNIRANGE_REC( 0x0600UL, 0x0605UL ),
73 AF_UNIRANGE_REC( 0x0610UL, 0x061AUL ),
74 AF_UNIRANGE_REC( 0x064BUL, 0x065FUL ),
75 AF_UNIRANGE_REC( 0x0670UL, 0x0670UL ),
76 AF_UNIRANGE_REC( 0x06D6UL, 0x06DCUL ),
77 AF_UNIRANGE_REC( 0x06DFUL, 0x06E4UL ),
78 AF_UNIRANGE_REC( 0x06E7UL, 0x06E8UL ),
79 AF_UNIRANGE_REC( 0x06EAUL, 0x06EDUL ),
80 AF_UNIRANGE_REC( 0x08E3UL, 0x08FFUL ),
81 AF_UNIRANGE_REC( 0xFBB2UL, 0xFBC1UL ),
82 AF_UNIRANGE_REC( 0xFE70UL, 0xFE70UL ),
83 AF_UNIRANGE_REC( 0xFE72UL, 0xFE72UL ),
84 AF_UNIRANGE_REC( 0xFE74UL, 0xFE74UL ),
85 AF_UNIRANGE_REC( 0xFE76UL, 0xFE76UL ),
86 AF_UNIRANGE_REC( 0xFE78UL, 0xFE78UL ),
87 AF_UNIRANGE_REC( 0xFE7AUL, 0xFE7AUL ),
88 AF_UNIRANGE_REC( 0xFE7CUL, 0xFE7CUL ),
89 AF_UNIRANGE_REC( 0xFE7EUL, 0xFE7EUL ),
90 AF_UNIRANGE_REC( 0UL, 0UL )
91 };
92
93
94 const AF_Script_UniRangeRec af_cyrl_uniranges[] =
95 {
96 AF_UNIRANGE_REC( 0x0400UL, 0x04FFUL ), /* Cyrillic */
97 AF_UNIRANGE_REC( 0x0500UL, 0x052FUL ), /* Cyrillic Supplement */
98 AF_UNIRANGE_REC( 0x2DE0UL, 0x2DFFUL ), /* Cyrillic Extended-A */
99 AF_UNIRANGE_REC( 0xA640UL, 0xA69FUL ), /* Cyrillic Extended-B */
100 AF_UNIRANGE_REC( 0UL, 0UL )
101 };
102
103 const AF_Script_UniRangeRec af_cyrl_nonbase_uniranges[] =
104 {
105 AF_UNIRANGE_REC( 0x0483UL, 0x0489UL ),
106 AF_UNIRANGE_REC( 0x2DE0UL, 0x2DFFUL ),
107 AF_UNIRANGE_REC( 0xA66FUL, 0xA67FUL ),
108 AF_UNIRANGE_REC( 0xA69EUL, 0xA69FUL ),
109 AF_UNIRANGE_REC( 0UL, 0UL )
110 };
111
112
113 /* There are some characters in the Devanagari Unicode block that are */
114 /* generic to Indic scripts; we omit them so that their presence doesn't */
115 /* trigger Devanagari. */
116
117 const AF_Script_UniRangeRec af_deva_uniranges[] =
118 {
119 AF_UNIRANGE_REC( 0x0900UL, 0x093BUL ), /* Devanagari */
120 /* omitting U+093C nukta */
121 AF_UNIRANGE_REC( 0x093DUL, 0x0950UL ), /* ... continued */
122 /* omitting U+0951 udatta, U+0952 anudatta */
123 AF_UNIRANGE_REC( 0x0953UL, 0x0963UL ), /* ... continued */
124 /* omitting U+0964 danda, U+0965 double danda */
125 AF_UNIRANGE_REC( 0x0966UL, 0x097FUL ), /* ... continued */
126 AF_UNIRANGE_REC( 0x20B9UL, 0x20B9UL ), /* (new) Rupee sign */
127 AF_UNIRANGE_REC( 0xA8E0UL, 0xA8FFUL ), /* Devanagari Extended */
128 AF_UNIRANGE_REC( 0UL, 0UL )
129 };
130
131 const AF_Script_UniRangeRec af_deva_nonbase_uniranges[] =
132 {
133 AF_UNIRANGE_REC( 0x0900UL, 0x0902UL ),
134 AF_UNIRANGE_REC( 0x093AUL, 0x093AUL ),
135 AF_UNIRANGE_REC( 0x0941UL, 0x0948UL ),
136 AF_UNIRANGE_REC( 0x094DUL, 0x094DUL ),
137 AF_UNIRANGE_REC( 0x0953UL, 0x0957UL ),
138 AF_UNIRANGE_REC( 0x0962UL, 0x0963UL ),
139 AF_UNIRANGE_REC( 0xA8E0UL, 0xA8F1UL ),
140 AF_UNIRANGE_REC( 0UL, 0UL )
141 };
142
143
144 const AF_Script_UniRangeRec af_grek_uniranges[] =
145 {
146 AF_UNIRANGE_REC( 0x0370UL, 0x03FFUL ), /* Greek and Coptic */
147 AF_UNIRANGE_REC( 0x1F00UL, 0x1FFFUL ), /* Greek Extended */
148 AF_UNIRANGE_REC( 0UL, 0UL )
149 };
150
151 const AF_Script_UniRangeRec af_grek_nonbase_uniranges[] =
152 {
153 AF_UNIRANGE_REC( 0x037AUL, 0x037AUL ),
154 AF_UNIRANGE_REC( 0x0384UL, 0x0385UL ),
155 AF_UNIRANGE_REC( 0x1FBDUL, 0x1FC1UL ),
156 AF_UNIRANGE_REC( 0x1FCDUL, 0x1FCFUL ),
157 AF_UNIRANGE_REC( 0x1FDDUL, 0x1FDFUL ),
158 AF_UNIRANGE_REC( 0x1FEDUL, 0x1FEFUL ),
159 AF_UNIRANGE_REC( 0x1FFDUL, 0x1FFEUL ),
160 AF_UNIRANGE_REC( 0UL, 0UL )
161 };
162
163
164 const AF_Script_UniRangeRec af_hebr_uniranges[] =
165 {
166 AF_UNIRANGE_REC( 0x0590UL, 0x05FFUL ), /* Hebrew */
167 AF_UNIRANGE_REC( 0xFB1DUL, 0xFB4FUL ), /* Alphab. Present. Forms (Hebrew) */
168 AF_UNIRANGE_REC( 0UL, 0UL )
169 };
170
171 const AF_Script_UniRangeRec af_hebr_nonbase_uniranges[] =
172 {
173 AF_UNIRANGE_REC( 0x0591UL, 0x05BFUL ),
174 AF_UNIRANGE_REC( 0x05C1UL, 0x05C2UL ),
175 AF_UNIRANGE_REC( 0x05C4UL, 0x05C5UL ),
176 AF_UNIRANGE_REC( 0x05C7UL, 0x05C7UL ),
177 AF_UNIRANGE_REC( 0xFB1EUL, 0xFB1EUL ),
178 AF_UNIRANGE_REC( 0UL, 0UL )
179 };
180
181
182 const AF_Script_UniRangeRec af_lao_uniranges[] =
183 {
184 AF_UNIRANGE_REC( 0x0E80UL, 0x0EFFUL ), /* Lao */
185 AF_UNIRANGE_REC( 0UL, 0UL )
186 };
187
188 const AF_Script_UniRangeRec af_lao_nonbase_uniranges[] =
189 {
190 AF_UNIRANGE_REC( 0x0EB1UL, 0x0EB1UL ),
191 AF_UNIRANGE_REC( 0x0EB4UL, 0x0EBCUL ),
192 AF_UNIRANGE_REC( 0x0EC8UL, 0x0ECDUL ),
193 AF_UNIRANGE_REC( 0UL, 0UL )
194 };
195
196
197 const AF_Script_UniRangeRec af_latn_uniranges[] =
198 {
199 AF_UNIRANGE_REC( 0x0020UL, 0x007FUL ), /* Basic Latin (no control chars) */
200 AF_UNIRANGE_REC( 0x00A0UL, 0x00A9UL ), /* Latin-1 Supplement (no control chars) */
201 AF_UNIRANGE_REC( 0x00ABUL, 0x00B1UL ), /* ... continued */
202 AF_UNIRANGE_REC( 0x00B4UL, 0x00B8UL ), /* ... continued */
203 AF_UNIRANGE_REC( 0x00BBUL, 0x00FFUL ), /* ... continued */
204 AF_UNIRANGE_REC( 0x0100UL, 0x017FUL ), /* Latin Extended-A */
205 AF_UNIRANGE_REC( 0x0180UL, 0x024FUL ), /* Latin Extended-B */
206 AF_UNIRANGE_REC( 0x0250UL, 0x02AFUL ), /* IPA Extensions */
207 AF_UNIRANGE_REC( 0x02B9UL, 0x02DFUL ), /* Spacing Modifier Letters */
208 AF_UNIRANGE_REC( 0x02E5UL, 0x02FFUL ), /* ... continued */
209 AF_UNIRANGE_REC( 0x0300UL, 0x036FUL ), /* Combining Diacritical Marks */
210 AF_UNIRANGE_REC( 0x1AB0UL, 0x1ABEUL ), /* Combining Diacritical Marks Extended */
211 AF_UNIRANGE_REC( 0x1D00UL, 0x1D2BUL ), /* Phonetic Extensions */
212 AF_UNIRANGE_REC( 0x1D6BUL, 0x1D77UL ), /* ... continued */
213 AF_UNIRANGE_REC( 0x1D79UL, 0x1D7FUL ), /* ... continued */
214 AF_UNIRANGE_REC( 0x1D80UL, 0x1D9AUL ), /* Phonetic Extensions Supplement */
215 AF_UNIRANGE_REC( 0x1DC0UL, 0x1DFFUL ), /* Combining Diacritical Marks Supplement */
216 AF_UNIRANGE_REC( 0x1E00UL, 0x1EFFUL ), /* Latin Extended Additional */
217 AF_UNIRANGE_REC( 0x2000UL, 0x206FUL ), /* General Punctuation */
218 AF_UNIRANGE_REC( 0x20A0UL, 0x20B8UL ), /* Currency Symbols ... */
219 AF_UNIRANGE_REC( 0x20BAUL, 0x20CFUL ), /* ... except new Rupee sign */
220 AF_UNIRANGE_REC( 0x2150UL, 0x218FUL ), /* Number Forms */
221 AF_UNIRANGE_REC( 0x2C60UL, 0x2C7BUL ), /* Latin Extended-C */
222 AF_UNIRANGE_REC( 0x2C7EUL, 0x2C7FUL ), /* ... continued */
223 AF_UNIRANGE_REC( 0x2E00UL, 0x2E7FUL ), /* Supplemental Punctuation */
224 AF_UNIRANGE_REC( 0xA720UL, 0xA76FUL ), /* Latin Extended-D */
225 AF_UNIRANGE_REC( 0xA771UL, 0xA7F7UL ), /* ... continued */
226 AF_UNIRANGE_REC( 0xA7FAUL, 0xA7FFUL ), /* ... continued */
227 AF_UNIRANGE_REC( 0xAB30UL, 0xAB5BUL ), /* Latin Extended-E */
228 AF_UNIRANGE_REC( 0xAB60UL, 0xAB6FUL ), /* ... continued */
229 AF_UNIRANGE_REC( 0xFB00UL, 0xFB06UL ), /* Alphab. Present. Forms (Latin Ligs) */
230 AF_UNIRANGE_REC( 0x1D400UL, 0x1D7FFUL ), /* Mathematical Alphanumeric Symbols */
231 AF_UNIRANGE_REC( 0UL, 0UL )
232 };
233
234 const AF_Script_UniRangeRec af_latn_nonbase_uniranges[] =
235 {
236 AF_UNIRANGE_REC( 0x005EUL, 0x0060UL ),
237 AF_UNIRANGE_REC( 0x007EUL, 0x007EUL ),
238 AF_UNIRANGE_REC( 0x00A8UL, 0x00A9UL ),
239 AF_UNIRANGE_REC( 0x00AEUL, 0x00B0UL ),
240 AF_UNIRANGE_REC( 0x00B4UL, 0x00B4UL ),
241 AF_UNIRANGE_REC( 0x00B8UL, 0x00B8UL ),
242 AF_UNIRANGE_REC( 0x00BCUL, 0x00BEUL ),
243 AF_UNIRANGE_REC( 0x02B9UL, 0x02DFUL ),
244 AF_UNIRANGE_REC( 0x02E5UL, 0x02FFUL ),
245 AF_UNIRANGE_REC( 0x0300UL, 0x036FUL ),
246 AF_UNIRANGE_REC( 0x1AB0UL, 0x1ABEUL ),
247 AF_UNIRANGE_REC( 0x1DC0UL, 0x1DFFUL ),
248 AF_UNIRANGE_REC( 0x2017UL, 0x2017UL ),
249 AF_UNIRANGE_REC( 0x203EUL, 0x203EUL ),
250 AF_UNIRANGE_REC( 0xA788UL, 0xA788UL ),
251 AF_UNIRANGE_REC( 0xA7F8UL, 0xA7FAUL ),
252 AF_UNIRANGE_REC( 0UL, 0UL )
253 };
254
255
256 const AF_Script_UniRangeRec af_latb_uniranges[] =
257 {
258 AF_UNIRANGE_REC( 0x1D62UL, 0x1D6AUL ), /* some small subscript letters */
259 AF_UNIRANGE_REC( 0x2080UL, 0x209CUL ), /* subscript digits and letters */
260 AF_UNIRANGE_REC( 0x2C7CUL, 0x2C7CUL ), /* latin subscript small letter j */
261 AF_UNIRANGE_REC( 0UL, 0UL )
262 };
263
264 const AF_Script_UniRangeRec af_latb_nonbase_uniranges[] =
265 {
266 AF_UNIRANGE_REC( 0UL, 0UL )
267 };
268
269
270 const AF_Script_UniRangeRec af_latp_uniranges[] =
271 {
272 AF_UNIRANGE_REC( 0x00AAUL, 0x00AAUL ), /* feminine ordinal indicator */
273 AF_UNIRANGE_REC( 0x00B2UL, 0x00B3UL ), /* superscript two and three */
274 AF_UNIRANGE_REC( 0x00B9UL, 0x00BAUL ), /* superscript one, masc. ord. indic. */
275 AF_UNIRANGE_REC( 0x02B0UL, 0x02B8UL ), /* some latin superscript mod. letters */
276 AF_UNIRANGE_REC( 0x02E0UL, 0x02E4UL ), /* some IPA modifier letters */
277 AF_UNIRANGE_REC( 0x1D2CUL, 0x1D61UL ), /* latin superscript modifier letters */
278 AF_UNIRANGE_REC( 0x1D78UL, 0x1D78UL ), /* modifier letter cyrillic en */
279 AF_UNIRANGE_REC( 0x1D9BUL, 0x1DBFUL ), /* more modifier letters */
280 AF_UNIRANGE_REC( 0x2070UL, 0x207FUL ), /* superscript digits and letters */
281 AF_UNIRANGE_REC( 0x2C7DUL, 0x2C7DUL ), /* modifier letter capital v */
282 AF_UNIRANGE_REC( 0xA770UL, 0xA770UL ), /* modifier letter us */
283 AF_UNIRANGE_REC( 0xA7F8UL, 0xA7F9UL ), /* more modifier letters */
284 AF_UNIRANGE_REC( 0xAB5CUL, 0xAB5FUL ), /* more modifier letters */
285 AF_UNIRANGE_REC( 0UL, 0UL )
286 };
287
288 const AF_Script_UniRangeRec af_latp_nonbase_uniranges[] =
289 {
290 AF_UNIRANGE_REC( 0UL, 0UL )
291 };
292
293
294 const AF_Script_UniRangeRec af_none_uniranges[] =
295 {
296 AF_UNIRANGE_REC( 0UL, 0UL )
297 };
298
299 const AF_Script_UniRangeRec af_none_nonbase_uniranges[] =
300 {
301 AF_UNIRANGE_REC( 0UL, 0UL )
302 };
303
304
305 const AF_Script_UniRangeRec af_telu_uniranges[] =
306 {
307 AF_UNIRANGE_REC( 0x0C00UL, 0x0C7FUL ), /* Telugu */
308 AF_UNIRANGE_REC( 0UL, 0UL )
309 };
310
311 const AF_Script_UniRangeRec af_telu_nonbase_uniranges[] =
312 {
313 AF_UNIRANGE_REC( 0x0C00UL, 0x0C00UL ),
314 AF_UNIRANGE_REC( 0x0C3EUL, 0x0C40UL ),
315 AF_UNIRANGE_REC( 0x0C46UL, 0x0C56UL ),
316 AF_UNIRANGE_REC( 0x0C62UL, 0x0C63UL ),
317 AF_UNIRANGE_REC( 0UL, 0UL )
318 };
319
320
321 const AF_Script_UniRangeRec af_thai_uniranges[] =
322 {
323 AF_UNIRANGE_REC( 0x0E00UL, 0x0E7FUL ), /* Thai */
324 AF_UNIRANGE_REC( 0UL, 0UL )
325 };
326
327 const AF_Script_UniRangeRec af_thai_nonbase_uniranges[] =
328 {
329 AF_UNIRANGE_REC( 0x0E31UL, 0x0E31UL ),
330 AF_UNIRANGE_REC( 0x0E34UL, 0x0E3AUL ),
331 AF_UNIRANGE_REC( 0x0E47UL, 0x0E4EUL ),
332 AF_UNIRANGE_REC( 0UL, 0UL )
333 };
334
335
336 #ifdef AF_CONFIG_OPTION_INDIC
337
338 const AF_Script_UniRangeRec af_beng_uniranges[] =
339 {
340 AF_UNIRANGE_REC( 0x0980UL, 0x09FFUL ), /* Bengali */
341 AF_UNIRANGE_REC( 0UL, 0UL )
342 };
343
344 const AF_Script_UniRangeRec af_beng_nonbase_uniranges[] =
345 {
346 AF_UNIRANGE_REC( 0x0981UL, 0x0981UL ),
347 AF_UNIRANGE_REC( 0x09BCUL, 0x09BCUL ),
348 AF_UNIRANGE_REC( 0x09C1UL, 0x09C4UL ),
349 AF_UNIRANGE_REC( 0x09CDUL, 0x09CDUL ),
350 AF_UNIRANGE_REC( 0x09E2UL, 0x09E3UL ),
351 AF_UNIRANGE_REC( 0UL, 0UL )
352 };
353
354
355 const AF_Script_UniRangeRec af_gujr_uniranges[] =
356 {
357 AF_UNIRANGE_REC( 0x0A80UL, 0x0AFFUL ), /* Gujarati */
358 AF_UNIRANGE_REC( 0UL, 0UL )
359 };
360
361 const AF_Script_UniRangeRec af_gujr_nonbase_uniranges[] =
362 {
363 AF_UNIRANGE_REC( 0x0A81UL, 0x0A82UL ),
364 AF_UNIRANGE_REC( 0x0ABCUL, 0x0ABCUL ),
365 AF_UNIRANGE_REC( 0x0AC1UL, 0x0AC8UL ),
366 AF_UNIRANGE_REC( 0x0ACDUL, 0x0ACDUL ),
367 AF_UNIRANGE_REC( 0x0AE2UL, 0x0AE3UL ),
368 AF_UNIRANGE_REC( 0UL, 0UL )
369 };
370
371
372 const AF_Script_UniRangeRec af_guru_uniranges[] =
373 {
374 AF_UNIRANGE_REC( 0x0A00UL, 0x0A7FUL ), /* Gurmukhi */
375 AF_UNIRANGE_REC( 0UL, 0UL )
376 };
377
378 const AF_Script_UniRangeRec af_guru_nonbase_uniranges[] =
379 {
380 AF_UNIRANGE_REC( 0x0A01UL, 0x0A02UL ),
381 AF_UNIRANGE_REC( 0x0A3CUL, 0x0A3EUL ),
382 AF_UNIRANGE_REC( 0x0A41UL, 0x0A51UL ),
383 AF_UNIRANGE_REC( 0x0A70UL, 0x0A71UL ),
384 AF_UNIRANGE_REC( 0x0A75UL, 0x0A75UL ),
385 AF_UNIRANGE_REC( 0UL, 0UL )
386 };
387
388
389 const AF_Script_UniRangeRec af_knda_uniranges[] =
390 {
391 AF_UNIRANGE_REC( 0x0C80UL, 0x0CFFUL ), /* Kannada */
392 AF_UNIRANGE_REC( 0UL, 0UL )
393 };
394
395 const AF_Script_UniRangeRec af_knda_nonbase_uniranges[] =
396 {
397 AF_UNIRANGE_REC( 0x0C81UL, 0x0C81UL ),
398 AF_UNIRANGE_REC( 0x0CBCUL, 0x0CBCUL ),
399 AF_UNIRANGE_REC( 0x0CBFUL, 0x0CBFUL ),
400 AF_UNIRANGE_REC( 0x0CC6UL, 0x0CC6UL ),
401 AF_UNIRANGE_REC( 0x0CCCUL, 0x0CCDUL ),
402 AF_UNIRANGE_REC( 0x0CE2UL, 0x0CE3UL ),
403 AF_UNIRANGE_REC( 0UL, 0UL )
404 };
405
406
407 const AF_Script_UniRangeRec af_limb_uniranges[] =
408 {
409 AF_UNIRANGE_REC( 0x1900UL, 0x194FUL ), /* Limbu */
410 AF_UNIRANGE_REC( 0UL, 0UL )
411 };
412
413 const AF_Script_UniRangeRec af_limb_nonbase_uniranges[] =
414 {
415 AF_UNIRANGE_REC( 0x1920UL, 0x1922UL ),
416 AF_UNIRANGE_REC( 0x1927UL, 0x1934UL ),
417 AF_UNIRANGE_REC( 0x1937UL, 0x193BUL ),
418 AF_UNIRANGE_REC( 0UL, 0UL )
419 };
420
421
422 const AF_Script_UniRangeRec af_mlym_uniranges[] =
423 {
424 AF_UNIRANGE_REC( 0x0D00UL, 0x0D7FUL ), /* Malayalam */
425 AF_UNIRANGE_REC( 0UL, 0UL )
426 };
427
428 const AF_Script_UniRangeRec af_mlym_nonbase_uniranges[] =
429 {
430 AF_UNIRANGE_REC( 0x0D01UL, 0x0D01UL ),
431 AF_UNIRANGE_REC( 0x0D4DUL, 0x0D4EUL ),
432 AF_UNIRANGE_REC( 0x0D62UL, 0x0D63UL ),
433 AF_UNIRANGE_REC( 0UL, 0UL )
434 };
435
436
437 const AF_Script_UniRangeRec af_orya_uniranges[] =
438 {
439 AF_UNIRANGE_REC( 0x0B00UL, 0x0B7FUL ), /* Oriya */
440 AF_UNIRANGE_REC( 0UL, 0UL )
441 };
442
443 const AF_Script_UniRangeRec af_orya_nonbase_uniranges[] =
444 {
445 AF_UNIRANGE_REC( 0x0B01UL, 0x0B02UL ),
446 AF_UNIRANGE_REC( 0x0B3CUL, 0x0B3CUL ),
447 AF_UNIRANGE_REC( 0x0B3FUL, 0x0B3FUL ),
448 AF_UNIRANGE_REC( 0x0B41UL, 0x0B44UL ),
449 AF_UNIRANGE_REC( 0x0B4DUL, 0x0B56UL ),
450 AF_UNIRANGE_REC( 0x0B62UL, 0x0B63UL ),
451 AF_UNIRANGE_REC( 0UL, 0UL )
452 };
453
454
455 const AF_Script_UniRangeRec af_sinh_uniranges[] =
456 {
457 AF_UNIRANGE_REC( 0x0D80UL, 0x0DFFUL ), /* Sinhala */
458 AF_UNIRANGE_REC( 0UL, 0UL )
459 };
460
461 const AF_Script_UniRangeRec af_sinh_nonbase_uniranges[] =
462 {
463 AF_UNIRANGE_REC( 0x0DCAUL, 0x0DCAUL ),
464 AF_UNIRANGE_REC( 0x0DD2UL, 0x0DD6UL ),
465 AF_UNIRANGE_REC( 0UL, 0UL )
466 };
467
468
469 const AF_Script_UniRangeRec af_sund_uniranges[] =
470 {
471 AF_UNIRANGE_REC( 0x1B80UL, 0x1BBFUL ), /* Sundanese */
472 AF_UNIRANGE_REC( 0x1CC0UL, 0x1CCFUL ), /* Sundanese Supplement */
473 AF_UNIRANGE_REC( 0UL, 0UL )
474 };
475
476 const AF_Script_UniRangeRec af_sund_nonbase_uniranges[] =
477 {
478 AF_UNIRANGE_REC( 0x1B80UL, 0x1B82UL ),
479 AF_UNIRANGE_REC( 0x1BA1UL, 0x1BADUL ),
480 AF_UNIRANGE_REC( 0UL, 0UL )
481 };
482
483
484 const AF_Script_UniRangeRec af_sylo_uniranges[] =
485 {
486 AF_UNIRANGE_REC( 0xA800UL, 0xA82FUL ), /* Syloti Nagri */
487 AF_UNIRANGE_REC( 0UL, 0UL )
488 };
489
490 const AF_Script_UniRangeRec af_sylo_nonbase_uniranges[] =
491 {
492 AF_UNIRANGE_REC( 0xA802UL, 0xA802UL ),
493 AF_UNIRANGE_REC( 0xA806UL, 0xA806UL ),
494 AF_UNIRANGE_REC( 0xA80BUL, 0xA80BUL ),
495 AF_UNIRANGE_REC( 0xA825UL, 0xA826UL ),
496 AF_UNIRANGE_REC( 0UL, 0UL )
497 };
498
499
500 const AF_Script_UniRangeRec af_taml_uniranges[] =
501 {
502 AF_UNIRANGE_REC( 0x0B80UL, 0x0BFFUL ), /* Tamil */
503 AF_UNIRANGE_REC( 0UL, 0UL )
504 };
505
506 const AF_Script_UniRangeRec af_taml_nonbase_uniranges[] =
507 {
508 AF_UNIRANGE_REC( 0x0B82UL, 0x0B82UL ),
509 AF_UNIRANGE_REC( 0x0BC0UL, 0x0BC2UL ),
510 AF_UNIRANGE_REC( 0x0BCDUL, 0x0BCDUL ),
511 AF_UNIRANGE_REC( 0UL, 0UL )
512 };
513
514
515 const AF_Script_UniRangeRec af_tibt_uniranges[] =
516 {
517 AF_UNIRANGE_REC( 0x0F00UL, 0x0FFFUL ), /* Tibetan */
518 AF_UNIRANGE_REC( 0UL, 0UL )
519 };
520
521 const AF_Script_UniRangeRec af_tibt_nonbase_uniranges[] =
522 {
523 AF_UNIRANGE_REC( 0x0F18UL, 0x0F19UL ),
524 AF_UNIRANGE_REC( 0x0F35UL, 0x0F35UL ),
525 AF_UNIRANGE_REC( 0x0F37UL, 0x0F37UL ),
526 AF_UNIRANGE_REC( 0x0F39UL, 0x0F39UL ),
527 AF_UNIRANGE_REC( 0x0F3EUL, 0x0F3FUL ),
528 AF_UNIRANGE_REC( 0x0F71UL, 0x0F7EUL ),
529 AF_UNIRANGE_REC( 0x0F80UL, 0x0F84UL ),
530 AF_UNIRANGE_REC( 0x0F86UL, 0x0F87UL ),
531 AF_UNIRANGE_REC( 0x0F8DUL, 0x0FBCUL ),
532 AF_UNIRANGE_REC( 0UL, 0UL )
533 };
534
535 #endif /* !AF_CONFIG_OPTION_INDIC */
536
537 #ifdef AF_CONFIG_OPTION_CJK
538
539 /* this corresponds to Unicode 6.0 */
540
541 const AF_Script_UniRangeRec af_hani_uniranges[] =
542 {
543 AF_UNIRANGE_REC( 0x1100UL, 0x11FFUL ), /* Hangul Jamo */
544 AF_UNIRANGE_REC( 0x2E80UL, 0x2EFFUL ), /* CJK Radicals Supplement */
545 AF_UNIRANGE_REC( 0x2F00UL, 0x2FDFUL ), /* Kangxi Radicals */
546 AF_UNIRANGE_REC( 0x2FF0UL, 0x2FFFUL ), /* Ideographic Description Characters */
547 AF_UNIRANGE_REC( 0x3000UL, 0x303FUL ), /* CJK Symbols and Punctuation */
548 AF_UNIRANGE_REC( 0x3040UL, 0x309FUL ), /* Hiragana */
549 AF_UNIRANGE_REC( 0x30A0UL, 0x30FFUL ), /* Katakana */
550 AF_UNIRANGE_REC( 0x3100UL, 0x312FUL ), /* Bopomofo */
551 AF_UNIRANGE_REC( 0x3130UL, 0x318FUL ), /* Hangul Compatibility Jamo */
552 AF_UNIRANGE_REC( 0x3190UL, 0x319FUL ), /* Kanbun */
553 AF_UNIRANGE_REC( 0x31A0UL, 0x31BFUL ), /* Bopomofo Extended */
554 AF_UNIRANGE_REC( 0x31C0UL, 0x31EFUL ), /* CJK Strokes */
555 AF_UNIRANGE_REC( 0x31F0UL, 0x31FFUL ), /* Katakana Phonetic Extensions */
556 AF_UNIRANGE_REC( 0x3300UL, 0x33FFUL ), /* CJK Compatibility */
557 AF_UNIRANGE_REC( 0x3400UL, 0x4DBFUL ), /* CJK Unified Ideographs Extension A */
558 AF_UNIRANGE_REC( 0x4DC0UL, 0x4DFFUL ), /* Yijing Hexagram Symbols */
559 AF_UNIRANGE_REC( 0x4E00UL, 0x9FFFUL ), /* CJK Unified Ideographs */
560 AF_UNIRANGE_REC( 0xA960UL, 0xA97FUL ), /* Hangul Jamo Extended-A */
561 AF_UNIRANGE_REC( 0xAC00UL, 0xD7AFUL ), /* Hangul Syllables */
562 AF_UNIRANGE_REC( 0xD7B0UL, 0xD7FFUL ), /* Hangul Jamo Extended-B */
563 AF_UNIRANGE_REC( 0xF900UL, 0xFAFFUL ), /* CJK Compatibility Ideographs */
564 AF_UNIRANGE_REC( 0xFE10UL, 0xFE1FUL ), /* Vertical forms */
565 AF_UNIRANGE_REC( 0xFE30UL, 0xFE4FUL ), /* CJK Compatibility Forms */
566 AF_UNIRANGE_REC( 0xFF00UL, 0xFFEFUL ), /* Halfwidth and Fullwidth Forms */
567 AF_UNIRANGE_REC( 0x1B000UL, 0x1B0FFUL ), /* Kana Supplement */
568 AF_UNIRANGE_REC( 0x1D300UL, 0x1D35FUL ), /* Tai Xuan Hing Symbols */
569 AF_UNIRANGE_REC( 0x20000UL, 0x2A6DFUL ), /* CJK Unified Ideographs Extension B */
570 AF_UNIRANGE_REC( 0x2A700UL, 0x2B73FUL ), /* CJK Unified Ideographs Extension C */
571 AF_UNIRANGE_REC( 0x2B740UL, 0x2B81FUL ), /* CJK Unified Ideographs Extension D */
572 AF_UNIRANGE_REC( 0x2F800UL, 0x2FA1FUL ), /* CJK Compatibility Ideographs Supplement */
573 AF_UNIRANGE_REC( 0UL, 0UL )
574 };
575
576 const AF_Script_UniRangeRec af_hani_nonbase_uniranges[] =
577 {
578 AF_UNIRANGE_REC( 0x302AUL, 0x302FUL ),
579 AF_UNIRANGE_REC( 0x3190UL, 0x319FUL ),
580 AF_UNIRANGE_REC( 0UL, 0UL )
581 };
582
583 #endif /* !AF_CONFIG_OPTION_CJK */
584
585 /* END */