Update copyright year.
[ttfautohint.git] / lib / taranges.c
blob0ed5f8bf78817ee141f37a039cc2fb741557131c
1 /* taranges.c */
3 /*
4 * Copyright (C) 2014-2020 by Werner Lemberg.
6 * This file is part of the ttfautohint library, and may only be used,
7 * modified, and distributed under the terms given in `COPYING'. By
8 * continuing to use, modify, or distribute this file you indicate that you
9 * have read `COPYING' and understand and accept it fully.
11 * The file `COPYING' mentioned in the previous paragraph is distributed
12 * with the ttfautohint library.
16 /* originally file `afranges.c' (2014-Jan-11) from FreeType */
18 /* heavily modified 2014 by Werner Lemberg <wl@gnu.org> */
20 #include "taranges.h"
23 * This file gets also processed with the `taranges.sed' script to produce
24 * documentation of character ranges. To make this simple approach work,
25 * don't change the formatting in this file!
27 * - Everything before the first `const' keyword (starting a line) gets
28 * removed.
30 * - The line containing `none_uniranges' and everything after it gets
31 * removed, too.
33 * - Comments after a `TA_UNIRANGE_REC' entry are used for character range
34 * documentation within a table.
36 * - Comments indented by two spaces are also used within a table.
38 * - Other comments are inserted into the documentation as-is (after
39 * stripping off the comment characters).
44 * The algorithm for assigning properties and styles to the `glyph_styles'
45 * array is as follows (cf. the implementation in
46 * `ta_face_globals_compute_style_coverage').
48 * Walk over all scripts (as listed in `tascript.h').
50 * For a given script, walk over all styles (as listed in `tastyles.h').
51 * The order of styles is important and should be as follows.
53 * - First come styles based on OpenType features (small caps, for
54 * example). Since features rely on glyph indices, thus completely
55 * bypassing character codes, no properties are assigned.
57 * - Next comes the default style, using the character ranges as defined
58 * below. This also assigns properties.
60 * Note that there also exist fallback scripts, mainly covering
61 * superscript and subscript glyphs of a script that are not present as
62 * OpenType features. Fallback scripts are defined below, also
63 * assigning properties; they are applied after the corresponding
64 * script.
69 /* XXX Check base character ranges again: */
70 /* Right now, they are quickly derived by visual inspection. */
71 /* I can imagine that fine-tuning is necessary. */
73 /* for the auto-hinter, a `non-base character' is something that should */
74 /* not be affected by blue zones, regardless of whether this is a */
75 /* spacing or no-spacing glyph */
77 /* the `ta_xxxx_nonbase_uniranges' ranges must be strict subsets */
78 /* of the corresponding `ta_xxxx_uniranges' ranges */
81 const TA_Script_UniRangeRec ta_adlm_uniranges[] =
83 TA_UNIRANGE_REC(0x1E900, 0x1E95F), /* Adlam */
84 TA_UNIRANGE_REC( 0, 0)
87 const TA_Script_UniRangeRec ta_adlm_nonbase_uniranges[] =
89 TA_UNIRANGE_REC(0x1D944, 0x1E94A),
90 TA_UNIRANGE_REC( 0, 0)
94 const TA_Script_UniRangeRec ta_arab_uniranges[] =
96 TA_UNIRANGE_REC( 0x0600, 0x06FF), /* Arabic */
97 TA_UNIRANGE_REC( 0x0750, 0x07FF), /* Arabic Supplement */
98 TA_UNIRANGE_REC( 0x08A0, 0x08FF), /* Arabic Extended-A */
99 TA_UNIRANGE_REC( 0xFB50, 0xFDFF), /* Arabic Presentation Forms-A */
100 TA_UNIRANGE_REC( 0xFE70, 0xFEFF), /* Arabic Presentation Forms-B */
101 TA_UNIRANGE_REC(0x1EE00, 0x1EEFF), /* Arabic Mathematical Alphabetic Symbols */
102 TA_UNIRANGE_REC( 0, 0)
105 const TA_Script_UniRangeRec ta_arab_nonbase_uniranges[] =
107 TA_UNIRANGE_REC(0x0600, 0x0605),
108 TA_UNIRANGE_REC(0x0610, 0x061A),
109 TA_UNIRANGE_REC(0x064B, 0x065F),
110 TA_UNIRANGE_REC(0x0670, 0x0670),
111 TA_UNIRANGE_REC(0x06D6, 0x06DC),
112 TA_UNIRANGE_REC(0x06DF, 0x06E4),
113 TA_UNIRANGE_REC(0x06E7, 0x06E8),
114 TA_UNIRANGE_REC(0x06EA, 0x06ED),
115 TA_UNIRANGE_REC(0x08D3, 0x08FF),
116 TA_UNIRANGE_REC(0xFBB2, 0xFBC1),
117 TA_UNIRANGE_REC(0xFE70, 0xFE70),
118 TA_UNIRANGE_REC(0xFE72, 0xFE72),
119 TA_UNIRANGE_REC(0xFE74, 0xFE74),
120 TA_UNIRANGE_REC(0xFE76, 0xFE76),
121 TA_UNIRANGE_REC(0xFE78, 0xFE78),
122 TA_UNIRANGE_REC(0xFE7A, 0xFE7A),
123 TA_UNIRANGE_REC(0xFE7C, 0xFE7C),
124 TA_UNIRANGE_REC(0xFE7E, 0xFE7E),
125 TA_UNIRANGE_REC( 0, 0)
129 const TA_Script_UniRangeRec ta_armn_uniranges[] =
131 TA_UNIRANGE_REC(0x0530, 0x058F), /* Armenian */
132 TA_UNIRANGE_REC(0xFB13, 0xFB17), /* Alphab. Present. Forms (Armenian) */
133 TA_UNIRANGE_REC( 0, 0)
136 const TA_Script_UniRangeRec ta_armn_nonbase_uniranges[] =
138 TA_UNIRANGE_REC(0x0559, 0x055F),
139 TA_UNIRANGE_REC( 0, 0)
143 const TA_Script_UniRangeRec ta_avst_uniranges[] =
145 TA_UNIRANGE_REC(0x10B00, 0x10B3F), /* Avestan */
146 TA_UNIRANGE_REC( 0, 0)
149 const TA_Script_UniRangeRec ta_avst_nonbase_uniranges[] =
151 TA_UNIRANGE_REC(0x10B39, 0x10B3F),
152 TA_UNIRANGE_REC( 0, 0)
156 const TA_Script_UniRangeRec ta_bamu_uniranges[] =
158 TA_UNIRANGE_REC( 0xA6A0, 0xA6FF), /* Bamum */
159 #if 0
160 /* The characters in the Bamum supplement are pictograms, */
161 /* not (directly) related to the syllabic Bamum script */
162 TA_UNIRANGE_REC(0x16800, 0x16A3F), /* Bamum Supplement */
163 #endif
164 TA_UNIRANGE_REC( 0, 0)
167 const TA_Script_UniRangeRec ta_bamu_nonbase_uniranges[] =
169 TA_UNIRANGE_REC(0xA6F0, 0xA6F1),
170 TA_UNIRANGE_REC( 0, 0)
174 const TA_Script_UniRangeRec ta_beng_uniranges[] =
176 TA_UNIRANGE_REC(0x0980, 0x09FF), /* Bengali */
177 TA_UNIRANGE_REC( 0, 0)
180 const TA_Script_UniRangeRec ta_beng_nonbase_uniranges[] =
182 TA_UNIRANGE_REC(0x0981, 0x0981),
183 TA_UNIRANGE_REC(0x09BC, 0x09BC),
184 TA_UNIRANGE_REC(0x09C1, 0x09C4),
185 TA_UNIRANGE_REC(0x09CD, 0x09CD),
186 TA_UNIRANGE_REC(0x09E2, 0x09E3),
187 TA_UNIRANGE_REC(0x09FE, 0x09FE),
188 TA_UNIRANGE_REC( 0, 0)
192 const TA_Script_UniRangeRec ta_buhd_uniranges[] =
194 TA_UNIRANGE_REC(0x1740, 0x175F), /* Buhid */
195 TA_UNIRANGE_REC( 0, 0)
198 const TA_Script_UniRangeRec ta_buhd_nonbase_uniranges[] =
200 TA_UNIRANGE_REC(0x1752, 0x1753),
201 TA_UNIRANGE_REC( 0, 0)
205 const TA_Script_UniRangeRec ta_cakm_uniranges[] =
207 TA_UNIRANGE_REC(0x11100, 0x1114F), /* Chakma */
208 TA_UNIRANGE_REC( 0, 0)
211 const TA_Script_UniRangeRec ta_cakm_nonbase_uniranges[] =
213 TA_UNIRANGE_REC(0x11100, 0x11102),
214 TA_UNIRANGE_REC(0x11127, 0x11134),
215 TA_UNIRANGE_REC(0x11146, 0x11146),
216 TA_UNIRANGE_REC( 0, 0)
220 const TA_Script_UniRangeRec ta_cans_uniranges[] =
222 TA_UNIRANGE_REC(0x1400, 0x167F), /* Unified Canadian Aboriginal Syllabics */
223 TA_UNIRANGE_REC(0x18B0, 0x18FF), /* Unified Canadian Aboriginal Syllabics Extended */
224 TA_UNIRANGE_REC( 0, 0)
227 const TA_Script_UniRangeRec ta_cans_nonbase_uniranges[] =
229 TA_UNIRANGE_REC(0, 0)
233 const TA_Script_UniRangeRec ta_cari_uniranges[] =
235 TA_UNIRANGE_REC(0x102A0, 0x102DF), /* Carian */
236 TA_UNIRANGE_REC( 0, 0)
239 const TA_Script_UniRangeRec ta_cari_nonbase_uniranges[] =
241 TA_UNIRANGE_REC(0, 0)
245 const TA_Script_UniRangeRec ta_cher_uniranges[] =
247 TA_UNIRANGE_REC(0x13A0, 0x13FF), /* Cherokee */
248 TA_UNIRANGE_REC(0xAB70, 0xABBF), /* Cherokee Supplement */
249 TA_UNIRANGE_REC( 0, 0)
252 const TA_Script_UniRangeRec ta_cher_nonbase_uniranges[] =
254 TA_UNIRANGE_REC(0, 0)
258 const TA_Script_UniRangeRec ta_copt_uniranges[] =
260 TA_UNIRANGE_REC(0x2C80, 0x2CFF), /* Coptic */
261 TA_UNIRANGE_REC( 0, 0)
264 const TA_Script_UniRangeRec ta_copt_nonbase_uniranges[] =
266 TA_UNIRANGE_REC(0x2CEF, 0x2CF1),
267 TA_UNIRANGE_REC( 0, 0)
271 const TA_Script_UniRangeRec ta_cprt_uniranges[] =
273 TA_UNIRANGE_REC(0x10800, 0x1083F), /* Cypriot */
274 TA_UNIRANGE_REC( 0, 0)
277 const TA_Script_UniRangeRec ta_cprt_nonbase_uniranges[] =
279 TA_UNIRANGE_REC(0, 0)
283 const TA_Script_UniRangeRec ta_cyrl_uniranges[] =
285 TA_UNIRANGE_REC(0x0400, 0x04FF), /* Cyrillic */
286 TA_UNIRANGE_REC(0x0500, 0x052F), /* Cyrillic Supplement */
287 TA_UNIRANGE_REC(0x2DE0, 0x2DFF), /* Cyrillic Extended-A */
288 TA_UNIRANGE_REC(0xA640, 0xA69F), /* Cyrillic Extended-B */
289 TA_UNIRANGE_REC( 0, 0)
292 const TA_Script_UniRangeRec ta_cyrl_nonbase_uniranges[] =
294 TA_UNIRANGE_REC(0x0483, 0x0489),
295 TA_UNIRANGE_REC(0x2DE0, 0x2DFF),
296 TA_UNIRANGE_REC(0xA66F, 0xA67F),
297 TA_UNIRANGE_REC(0xA69E, 0xA69F),
298 TA_UNIRANGE_REC( 0, 0)
302 /* There are some characters in the Devanagari Unicode block that are */
303 /* generic to Indic scripts; we omit them so that their presence doesn't */
304 /* trigger Devanagari. */
306 const TA_Script_UniRangeRec ta_deva_uniranges[] =
308 TA_UNIRANGE_REC(0x0900, 0x093B), /* Devanagari */
309 /* omitting U+093C nukta */
310 TA_UNIRANGE_REC(0x093D, 0x0950), /* ... continued */
311 /* omitting U+0951 udatta, U+0952 anudatta */
312 TA_UNIRANGE_REC(0x0953, 0x0963), /* ... continued */
313 /* omitting U+0964 danda, U+0965 double danda */
314 TA_UNIRANGE_REC(0x0966, 0x097F), /* ... continued */
315 TA_UNIRANGE_REC(0x20B9, 0x20B9), /* (new) Rupee sign */
316 TA_UNIRANGE_REC(0xA8E0, 0xA8FF), /* Devanagari Extended */
317 TA_UNIRANGE_REC( 0, 0)
320 const TA_Script_UniRangeRec ta_deva_nonbase_uniranges[] =
322 TA_UNIRANGE_REC(0x0900, 0x0902),
323 TA_UNIRANGE_REC(0x093A, 0x093A),
324 TA_UNIRANGE_REC(0x0941, 0x0948),
325 TA_UNIRANGE_REC(0x094D, 0x094D),
326 TA_UNIRANGE_REC(0x0953, 0x0957),
327 TA_UNIRANGE_REC(0x0962, 0x0963),
328 TA_UNIRANGE_REC(0xA8E0, 0xA8F1),
329 TA_UNIRANGE_REC(0xA8FF, 0xA8FF),
330 TA_UNIRANGE_REC( 0, 0)
334 const TA_Script_UniRangeRec ta_dsrt_uniranges[] =
336 TA_UNIRANGE_REC(0x10400, 0x1044F), /* Deseret */
337 TA_UNIRANGE_REC( 0, 0)
340 const TA_Script_UniRangeRec ta_dsrt_nonbase_uniranges[] =
342 TA_UNIRANGE_REC(0, 0)
346 const TA_Script_UniRangeRec ta_ethi_uniranges[] =
348 TA_UNIRANGE_REC(0x1200, 0x137F), /* Ethiopic */
349 TA_UNIRANGE_REC(0x1380, 0x139F), /* Ethiopic Supplement */
350 TA_UNIRANGE_REC(0x2D80, 0x2DDF), /* Ethiopic Extended */
351 TA_UNIRANGE_REC(0xAB00, 0xAB2F), /* Ethiopic Extended-A */
352 TA_UNIRANGE_REC( 0, 0)
355 const TA_Script_UniRangeRec ta_ethi_nonbase_uniranges[] =
357 TA_UNIRANGE_REC(0x135D, 0x135F),
358 TA_UNIRANGE_REC( 0, 0)
362 const TA_Script_UniRangeRec ta_geor_uniranges[] =
364 TA_UNIRANGE_REC(0x10D0, 0x10FF), /* Georgian (Mkhedruli) */
365 TA_UNIRANGE_REC(0x1C90, 0x1CBF), /* Georgian Extended (Mtavruli) */
366 TA_UNIRANGE_REC( 0, 0)
369 const TA_Script_UniRangeRec ta_geor_nonbase_uniranges[] =
371 TA_UNIRANGE_REC(0, 0)
375 const TA_Script_UniRangeRec ta_geok_uniranges[] =
377 /* Khutsuri */
378 TA_UNIRANGE_REC(0x10A0, 0x10CD), /* Georgian (Asomtavruli) */
379 TA_UNIRANGE_REC(0x2D00, 0x2D2D), /* Georgian Supplement (Nuskhuri) */
380 TA_UNIRANGE_REC( 0, 0)
383 const TA_Script_UniRangeRec ta_geok_nonbase_uniranges[] =
385 TA_UNIRANGE_REC(0, 0)
389 const TA_Script_UniRangeRec ta_glag_uniranges[] =
391 TA_UNIRANGE_REC( 0x2C00, 0x2C5F), /* Glagolitic */
392 TA_UNIRANGE_REC(0x1E000, 0x1E02F), /* Glagolitic Supplement */
393 TA_UNIRANGE_REC( 0, 0)
396 const TA_Script_UniRangeRec ta_glag_nonbase_uniranges[] =
398 TA_UNIRANGE_REC(0x1E000, 0x1E02F),
399 TA_UNIRANGE_REC( 0, 0)
403 const TA_Script_UniRangeRec ta_goth_uniranges[] =
405 TA_UNIRANGE_REC(0x10330, 0x1034F), /* Gothic */
406 TA_UNIRANGE_REC( 0, 0)
409 const TA_Script_UniRangeRec ta_goth_nonbase_uniranges[] =
411 TA_UNIRANGE_REC(0, 0)
415 const TA_Script_UniRangeRec ta_grek_uniranges[] =
417 TA_UNIRANGE_REC(0x0370, 0x03FF), /* Greek and Coptic */
418 TA_UNIRANGE_REC(0x1F00, 0x1FFF), /* Greek Extended */
419 TA_UNIRANGE_REC( 0, 0)
422 const TA_Script_UniRangeRec ta_grek_nonbase_uniranges[] =
424 TA_UNIRANGE_REC(0x037A, 0x037A),
425 TA_UNIRANGE_REC(0x0384, 0x0385),
426 TA_UNIRANGE_REC(0x1FBD, 0x1FC1),
427 TA_UNIRANGE_REC(0x1FCD, 0x1FCF),
428 TA_UNIRANGE_REC(0x1FDD, 0x1FDF),
429 TA_UNIRANGE_REC(0x1FED, 0x1FEF),
430 TA_UNIRANGE_REC(0x1FFD, 0x1FFE),
431 TA_UNIRANGE_REC( 0, 0)
435 const TA_Script_UniRangeRec ta_gujr_uniranges[] =
437 TA_UNIRANGE_REC(0x0A80, 0x0AFF), /* Gujarati */
438 TA_UNIRANGE_REC( 0, 0)
441 const TA_Script_UniRangeRec ta_gujr_nonbase_uniranges[] =
443 TA_UNIRANGE_REC(0x0A81, 0x0A82),
444 TA_UNIRANGE_REC(0x0ABC, 0x0ABC),
445 TA_UNIRANGE_REC(0x0AC1, 0x0AC8),
446 TA_UNIRANGE_REC(0x0ACD, 0x0ACD),
447 TA_UNIRANGE_REC(0x0AE2, 0x0AE3),
448 TA_UNIRANGE_REC(0x0AFA, 0x0AFF),
449 TA_UNIRANGE_REC( 0, 0)
453 const TA_Script_UniRangeRec ta_guru_uniranges[] =
455 TA_UNIRANGE_REC(0x0A00, 0x0A7F), /* Gurmukhi */
456 TA_UNIRANGE_REC( 0, 0)
459 const TA_Script_UniRangeRec ta_guru_nonbase_uniranges[] =
461 TA_UNIRANGE_REC(0x0A01, 0x0A02),
462 TA_UNIRANGE_REC(0x0A3C, 0x0A3C),
463 TA_UNIRANGE_REC(0x0A41, 0x0A51),
464 TA_UNIRANGE_REC(0x0A70, 0x0A71),
465 TA_UNIRANGE_REC(0x0A75, 0x0A75),
466 TA_UNIRANGE_REC( 0, 0)
470 const TA_Script_UniRangeRec ta_hebr_uniranges[] =
472 TA_UNIRANGE_REC(0x0590, 0x05FF), /* Hebrew */
473 TA_UNIRANGE_REC(0xFB1D, 0xFB4F), /* Alphab. Present. Forms (Hebrew) */
474 TA_UNIRANGE_REC( 0, 0)
477 const TA_Script_UniRangeRec ta_hebr_nonbase_uniranges[] =
479 TA_UNIRANGE_REC(0x0591, 0x05BF),
480 TA_UNIRANGE_REC(0x05C1, 0x05C2),
481 TA_UNIRANGE_REC(0x05C4, 0x05C5),
482 TA_UNIRANGE_REC(0x05C7, 0x05C7),
483 TA_UNIRANGE_REC(0xFB1E, 0xFB1E),
484 TA_UNIRANGE_REC( 0, 0)
488 const TA_Script_UniRangeRec ta_kali_uniranges[] =
490 TA_UNIRANGE_REC(0xA900, 0xA92F), /* Kayah Li */
491 TA_UNIRANGE_REC( 0, 0)
494 const TA_Script_UniRangeRec ta_kali_nonbase_uniranges[] =
496 TA_UNIRANGE_REC(0xA926, 0xA92D),
497 TA_UNIRANGE_REC( 0, 0)
501 const TA_Script_UniRangeRec ta_knda_uniranges[] =
503 TA_UNIRANGE_REC(0x0C80, 0x0CFF), /* Kannada */
504 TA_UNIRANGE_REC( 0, 0)
507 const TA_Script_UniRangeRec ta_knda_nonbase_uniranges[] =
509 TA_UNIRANGE_REC(0x0C81, 0x0C81),
510 TA_UNIRANGE_REC(0x0CBC, 0x0CBC),
511 TA_UNIRANGE_REC(0x0CBF, 0x0CBF),
512 TA_UNIRANGE_REC(0x0CC6, 0x0CC6),
513 TA_UNIRANGE_REC(0x0CCC, 0x0CCD),
514 TA_UNIRANGE_REC(0x0CE2, 0x0CE3),
515 TA_UNIRANGE_REC( 0, 0)
519 const TA_Script_UniRangeRec ta_khmr_uniranges[] =
521 TA_UNIRANGE_REC(0x1780, 0x17FF), /* Khmer */
522 TA_UNIRANGE_REC( 0, 0)
525 const TA_Script_UniRangeRec ta_khmr_nonbase_uniranges[] =
527 TA_UNIRANGE_REC(0x17B7, 0x17BD),
528 TA_UNIRANGE_REC(0x17C6, 0x17C6),
529 TA_UNIRANGE_REC(0x17C9, 0x17D3),
530 TA_UNIRANGE_REC(0x17DD, 0x17DD),
531 TA_UNIRANGE_REC( 0, 0)
535 const TA_Script_UniRangeRec ta_khms_uniranges[] =
537 TA_UNIRANGE_REC(0x19E0, 0x19FF), /* Khmer Symbols */
538 TA_UNIRANGE_REC( 0, 0)
541 const TA_Script_UniRangeRec ta_khms_nonbase_uniranges[] =
543 TA_UNIRANGE_REC(0, 0)
547 const TA_Script_UniRangeRec ta_lao_uniranges[] =
549 TA_UNIRANGE_REC(0x0E80, 0x0EFF), /* Lao */
550 TA_UNIRANGE_REC( 0, 0)
553 const TA_Script_UniRangeRec ta_lao_nonbase_uniranges[] =
555 TA_UNIRANGE_REC(0x0EB1, 0x0EB1),
556 TA_UNIRANGE_REC(0x0EB4, 0x0EBC),
557 TA_UNIRANGE_REC(0x0EC8, 0x0ECD),
558 TA_UNIRANGE_REC( 0, 0)
562 const TA_Script_UniRangeRec ta_latn_uniranges[] =
564 TA_UNIRANGE_REC( 0x0020, 0x007F), /* Basic Latin (no control chars) */
565 TA_UNIRANGE_REC( 0x00A0, 0x00A9), /* Latin-1 Supplement (no control chars) */
566 TA_UNIRANGE_REC( 0x00AB, 0x00B1), /* ... continued */
567 TA_UNIRANGE_REC( 0x00B4, 0x00B8), /* ... continued */
568 TA_UNIRANGE_REC( 0x00BB, 0x00FF), /* ... continued */
569 TA_UNIRANGE_REC( 0x0100, 0x017F), /* Latin Extended-A */
570 TA_UNIRANGE_REC( 0x0180, 0x024F), /* Latin Extended-B */
571 TA_UNIRANGE_REC( 0x0250, 0x02AF), /* IPA Extensions */
572 TA_UNIRANGE_REC( 0x02B9, 0x02DF), /* Spacing Modifier Letters */
573 TA_UNIRANGE_REC( 0x02E5, 0x02FF), /* ... continued */
574 TA_UNIRANGE_REC( 0x0300, 0x036F), /* Combining Diacritical Marks */
575 TA_UNIRANGE_REC( 0x1AB0, 0x1ABE), /* Combining Diacritical Marks Extended */
576 TA_UNIRANGE_REC( 0x1D00, 0x1D2B), /* Phonetic Extensions */
577 TA_UNIRANGE_REC( 0x1D6B, 0x1D77), /* ... continued */
578 TA_UNIRANGE_REC( 0x1D79, 0x1D7F), /* ... continued */
579 TA_UNIRANGE_REC( 0x1D80, 0x1D9A), /* Phonetic Extensions Supplement */
580 TA_UNIRANGE_REC( 0x1DC0, 0x1DFF), /* Combining Diacritical Marks Supplement */
581 TA_UNIRANGE_REC( 0x1E00, 0x1EFF), /* Latin Extended Additional */
582 TA_UNIRANGE_REC( 0x2000, 0x206F), /* General Punctuation */
583 TA_UNIRANGE_REC( 0x20A0, 0x20B8), /* Currency Symbols ... */
584 TA_UNIRANGE_REC( 0x20BA, 0x20CF), /* ... except new Rupee sign */
585 TA_UNIRANGE_REC( 0x2150, 0x218F), /* Number Forms */
586 TA_UNIRANGE_REC( 0x2C60, 0x2C7B), /* Latin Extended-C */
587 TA_UNIRANGE_REC( 0x2C7E, 0x2C7F), /* ... continued */
588 TA_UNIRANGE_REC( 0x2E00, 0x2E7F), /* Supplemental Punctuation */
589 TA_UNIRANGE_REC( 0xA720, 0xA76F), /* Latin Extended-D */
590 TA_UNIRANGE_REC( 0xA771, 0xA7F7), /* ... continued */
591 TA_UNIRANGE_REC( 0xA7FA, 0xA7FF), /* ... continued */
592 TA_UNIRANGE_REC( 0xAB30, 0xAB5B), /* Latin Extended-E */
593 TA_UNIRANGE_REC( 0xAB60, 0xAB6F), /* ... continued */
594 TA_UNIRANGE_REC( 0xFB00, 0xFB06), /* Alphab. Present. Forms (Latin Ligs) */
595 TA_UNIRANGE_REC(0x1D400, 0x1D7FF), /* Mathematical Alphanumeric Symbols */
596 TA_UNIRANGE_REC( 0, 0)
599 const TA_Script_UniRangeRec ta_latn_nonbase_uniranges[] =
601 TA_UNIRANGE_REC(0x005E, 0x0060),
602 TA_UNIRANGE_REC(0x007E, 0x007E),
603 TA_UNIRANGE_REC(0x00A8, 0x00A9),
604 TA_UNIRANGE_REC(0x00AE, 0x00B0),
605 TA_UNIRANGE_REC(0x00B4, 0x00B4),
606 TA_UNIRANGE_REC(0x00B8, 0x00B8),
607 TA_UNIRANGE_REC(0x00BC, 0x00BE),
608 TA_UNIRANGE_REC(0x02B9, 0x02DF),
609 TA_UNIRANGE_REC(0x02E5, 0x02FF),
610 TA_UNIRANGE_REC(0x0300, 0x036F),
611 TA_UNIRANGE_REC(0x1AB0, 0x1ABE),
612 TA_UNIRANGE_REC(0x1DC0, 0x1DFF),
613 TA_UNIRANGE_REC(0x2017, 0x2017),
614 TA_UNIRANGE_REC(0x203E, 0x203E),
615 TA_UNIRANGE_REC(0xA788, 0xA788),
616 TA_UNIRANGE_REC(0xA7F8, 0xA7FA),
617 TA_UNIRANGE_REC( 0, 0)
621 const TA_Script_UniRangeRec ta_latb_uniranges[] =
623 TA_UNIRANGE_REC(0x1D62, 0x1D6A), /* some small subscript letters */
624 TA_UNIRANGE_REC(0x2080, 0x209C), /* subscript digits and letters */
625 TA_UNIRANGE_REC(0x2C7C, 0x2C7C), /* latin subscript small letter j */
626 TA_UNIRANGE_REC( 0, 0)
629 const TA_Script_UniRangeRec ta_latb_nonbase_uniranges[] =
631 TA_UNIRANGE_REC(0, 0)
635 const TA_Script_UniRangeRec ta_latp_uniranges[] =
637 TA_UNIRANGE_REC(0x00AA, 0x00AA), /* feminine ordinal indicator */
638 TA_UNIRANGE_REC(0x00B2, 0x00B3), /* superscript two and three */
639 TA_UNIRANGE_REC(0x00B9, 0x00BA), /* superscript one, masc. ord. indic. */
640 TA_UNIRANGE_REC(0x02B0, 0x02B8), /* some latin superscript mod. letters */
641 TA_UNIRANGE_REC(0x02E0, 0x02E4), /* some IPA modifier letters */
642 TA_UNIRANGE_REC(0x1D2C, 0x1D61), /* latin superscript modifier letters */
643 TA_UNIRANGE_REC(0x1D78, 0x1D78), /* modifier letter cyrillic en */
644 TA_UNIRANGE_REC(0x1D9B, 0x1DBF), /* more modifier letters */
645 TA_UNIRANGE_REC(0x2070, 0x207F), /* superscript digits and letters */
646 TA_UNIRANGE_REC(0x2C7D, 0x2C7D), /* modifier letter capital v */
647 TA_UNIRANGE_REC(0xA770, 0xA770), /* modifier letter us */
648 TA_UNIRANGE_REC(0xA7F8, 0xA7F9), /* more modifier letters */
649 TA_UNIRANGE_REC(0xAB5C, 0xAB5F), /* more modifier letters */
650 TA_UNIRANGE_REC( 0, 0)
653 const TA_Script_UniRangeRec ta_latp_nonbase_uniranges[] =
655 TA_UNIRANGE_REC(0, 0)
659 const TA_Script_UniRangeRec ta_lisu_uniranges[] =
661 TA_UNIRANGE_REC(0xA4D0, 0xA4FF), /* Lisu */
662 TA_UNIRANGE_REC( 0, 0)
665 const TA_Script_UniRangeRec ta_lisu_nonbase_uniranges[] =
667 TA_UNIRANGE_REC(0, 0)
671 const TA_Script_UniRangeRec ta_mlym_uniranges[] =
673 TA_UNIRANGE_REC(0x0D00, 0x0D7F), /* Malayalam */
674 TA_UNIRANGE_REC( 0, 0)
677 const TA_Script_UniRangeRec ta_mlym_nonbase_uniranges[] =
679 TA_UNIRANGE_REC(0x0D00, 0x0D01),
680 TA_UNIRANGE_REC(0x0D3B, 0x0D3C),
681 TA_UNIRANGE_REC(0x0D4D, 0x0D4E),
682 TA_UNIRANGE_REC(0x0D62, 0x0D63),
683 TA_UNIRANGE_REC( 0, 0)
687 const TA_Script_UniRangeRec ta_mong_uniranges[] =
689 TA_UNIRANGE_REC( 0x1800, 0x18AF), /* Mongolian */
690 TA_UNIRANGE_REC(0x11660, 0x1167F), /* Mongolian Supplement */
691 TA_UNIRANGE_REC( 0, 0)
694 const TA_Script_UniRangeRec ta_mong_nonbase_uniranges[] =
696 TA_UNIRANGE_REC(0x1885, 0x1886),
697 TA_UNIRANGE_REC(0x18A9, 0x18A9),
698 TA_UNIRANGE_REC( 0, 0)
702 const TA_Script_UniRangeRec ta_mymr_uniranges[] =
704 TA_UNIRANGE_REC(0x1000, 0x109F), /* Myanmar */
705 TA_UNIRANGE_REC(0xA9E0, 0xA9FF), /* Myanmar Extended-B */
706 TA_UNIRANGE_REC(0xAA60, 0xAA7F), /* Myanmar Extended-A */
707 TA_UNIRANGE_REC( 0, 0)
710 const TA_Script_UniRangeRec ta_mymr_nonbase_uniranges[] =
712 TA_UNIRANGE_REC(0x102D, 0x1030),
713 TA_UNIRANGE_REC(0x1032, 0x1037),
714 TA_UNIRANGE_REC(0x103A, 0x103A),
715 TA_UNIRANGE_REC(0x103D, 0x103E),
716 TA_UNIRANGE_REC(0x1058, 0x1059),
717 TA_UNIRANGE_REC(0x105E, 0x1060),
718 TA_UNIRANGE_REC(0x1071, 0x1074),
719 TA_UNIRANGE_REC(0x1082, 0x1082),
720 TA_UNIRANGE_REC(0x1085, 0x1086),
721 TA_UNIRANGE_REC(0x108D, 0x108D),
722 TA_UNIRANGE_REC(0xA9E5, 0xA9E5),
723 TA_UNIRANGE_REC(0xAA7C, 0xAA7C),
724 TA_UNIRANGE_REC( 0, 0)
728 const TA_Script_UniRangeRec ta_nkoo_uniranges[] =
730 TA_UNIRANGE_REC(0x07C0, 0x07FF), /* N'Ko */
731 TA_UNIRANGE_REC( 0, 0)
734 const TA_Script_UniRangeRec ta_nkoo_nonbase_uniranges[] =
736 TA_UNIRANGE_REC(0x07EB, 0x07F5),
737 TA_UNIRANGE_REC(0x07FD, 0x07FD),
738 TA_UNIRANGE_REC( 0, 0)
742 const TA_Script_UniRangeRec ta_olck_uniranges[] =
744 TA_UNIRANGE_REC(0x1C50, 0x1C7F), /* Ol Chiki */
745 TA_UNIRANGE_REC( 0, 0)
748 const TA_Script_UniRangeRec ta_olck_nonbase_uniranges[] =
750 TA_UNIRANGE_REC(0, 0)
754 const TA_Script_UniRangeRec ta_orkh_uniranges[] =
756 TA_UNIRANGE_REC(0x10C00, 0x10C4F), /* Old Turkic */
757 TA_UNIRANGE_REC( 0, 0)
760 const TA_Script_UniRangeRec ta_orkh_nonbase_uniranges[] =
762 TA_UNIRANGE_REC(0, 0)
766 const TA_Script_UniRangeRec ta_osge_uniranges[] =
768 TA_UNIRANGE_REC(0x104B0, 0x104FF), /* Osage */
769 TA_UNIRANGE_REC( 0, 0)
772 const TA_Script_UniRangeRec ta_osge_nonbase_uniranges[] =
774 TA_UNIRANGE_REC(0, 0)
778 const TA_Script_UniRangeRec ta_osma_uniranges[] =
780 TA_UNIRANGE_REC(0x10480, 0x104AF), /* Osmanya */
781 TA_UNIRANGE_REC( 0, 0)
784 const TA_Script_UniRangeRec ta_osma_nonbase_uniranges[] =
786 TA_UNIRANGE_REC(0, 0)
790 const TA_Script_UniRangeRec ta_saur_uniranges[] =
792 TA_UNIRANGE_REC(0xA880, 0xA8DF), /* Saurashtra */
793 TA_UNIRANGE_REC( 0, 0)
796 const TA_Script_UniRangeRec ta_saur_nonbase_uniranges[] =
798 TA_UNIRANGE_REC(0xA880, 0xA881),
799 TA_UNIRANGE_REC(0xA8B4, 0xA8C5),
800 TA_UNIRANGE_REC( 0, 0)
804 const TA_Script_UniRangeRec ta_shaw_uniranges[] =
806 TA_UNIRANGE_REC(0x10450, 0x1047F), /* Shavian */
807 TA_UNIRANGE_REC( 0, 0)
810 const TA_Script_UniRangeRec ta_shaw_nonbase_uniranges[] =
812 TA_UNIRANGE_REC(0, 0)
816 const TA_Script_UniRangeRec ta_sinh_uniranges[] =
818 TA_UNIRANGE_REC(0x0D80, 0x0DFF), /* Sinhala */
819 TA_UNIRANGE_REC( 0, 0)
822 const TA_Script_UniRangeRec ta_sinh_nonbase_uniranges[] =
824 TA_UNIRANGE_REC(0x0DCA, 0x0DCA),
825 TA_UNIRANGE_REC(0x0DD2, 0x0DD6),
826 TA_UNIRANGE_REC( 0, 0)
830 const TA_Script_UniRangeRec ta_sund_uniranges[] =
832 TA_UNIRANGE_REC(0x1B80, 0x1BBF), /* Sundanese */
833 TA_UNIRANGE_REC(0x1CC0, 0x1CCF), /* Sundanese Supplement */
834 TA_UNIRANGE_REC( 0, 0)
837 const TA_Script_UniRangeRec ta_sund_nonbase_uniranges[] =
839 TA_UNIRANGE_REC(0x1B80, 0x1B82),
840 TA_UNIRANGE_REC(0x1BA1, 0x1BAD),
841 TA_UNIRANGE_REC( 0, 0)
845 const TA_Script_UniRangeRec ta_taml_uniranges[] =
847 TA_UNIRANGE_REC(0x0B80, 0x0BFF), /* Tamil */
848 TA_UNIRANGE_REC( 0, 0)
851 const TA_Script_UniRangeRec ta_taml_nonbase_uniranges[] =
853 TA_UNIRANGE_REC(0x0B82, 0x0B82),
854 TA_UNIRANGE_REC(0x0BC0, 0x0BC2),
855 TA_UNIRANGE_REC(0x0BCD, 0x0BCD),
856 TA_UNIRANGE_REC( 0, 0)
860 const TA_Script_UniRangeRec ta_tavt_uniranges[] =
862 TA_UNIRANGE_REC(0xAA80, 0xAADF), /* Tai Viet */
863 TA_UNIRANGE_REC( 0, 0)
866 const TA_Script_UniRangeRec ta_tavt_nonbase_uniranges[] =
868 TA_UNIRANGE_REC(0xAAB0, 0xAAB0),
869 TA_UNIRANGE_REC(0xAAB2, 0xAAB4),
870 TA_UNIRANGE_REC(0xAAB7, 0xAAB8),
871 TA_UNIRANGE_REC(0xAABE, 0xAABF),
872 TA_UNIRANGE_REC(0xAAC1, 0xAAC1),
873 TA_UNIRANGE_REC( 0, 0)
877 const TA_Script_UniRangeRec ta_telu_uniranges[] =
879 TA_UNIRANGE_REC(0x0C00, 0x0C7F), /* Telugu */
880 TA_UNIRANGE_REC( 0, 0)
883 const TA_Script_UniRangeRec ta_telu_nonbase_uniranges[] =
885 TA_UNIRANGE_REC(0x0C00, 0x0C00),
886 TA_UNIRANGE_REC(0x0C04, 0x0C04),
887 TA_UNIRANGE_REC(0x0C3E, 0x0C40),
888 TA_UNIRANGE_REC(0x0C46, 0x0C56),
889 TA_UNIRANGE_REC(0x0C62, 0x0C63),
890 TA_UNIRANGE_REC( 0, 0)
894 const TA_Script_UniRangeRec ta_thai_uniranges[] =
896 TA_UNIRANGE_REC(0x0E00, 0x0E7F), /* Thai */
897 TA_UNIRANGE_REC( 0, 0)
900 const TA_Script_UniRangeRec ta_thai_nonbase_uniranges[] =
902 TA_UNIRANGE_REC(0x0E31, 0x0E31),
903 TA_UNIRANGE_REC(0x0E34, 0x0E3A),
904 TA_UNIRANGE_REC(0x0E47, 0x0E4E),
905 TA_UNIRANGE_REC( 0, 0)
909 const TA_Script_UniRangeRec ta_tfng_uniranges[] =
911 TA_UNIRANGE_REC(0x2D30, 0x2D7F), /* Tifinagh */
912 TA_UNIRANGE_REC( 0, 0)
915 const TA_Script_UniRangeRec ta_tfng_nonbase_uniranges[] =
917 TA_UNIRANGE_REC(0, 0)
921 const TA_Script_UniRangeRec ta_vaii_uniranges[] =
923 TA_UNIRANGE_REC(0xA500, 0xA63F), /* Vai */
924 TA_UNIRANGE_REC( 0, 0)
927 const TA_Script_UniRangeRec ta_vaii_nonbase_uniranges[] =
929 TA_UNIRANGE_REC(0, 0)
933 const TA_Script_UniRangeRec ta_none_uniranges[] =
935 TA_UNIRANGE_REC(0, 0)
938 const TA_Script_UniRangeRec ta_none_nonbase_uniranges[] =
940 TA_UNIRANGE_REC(0, 0)
943 /* end of taranges.c */