| 1 | /**************************************************************************** | 
| 2 |  * | 
| 3 |  * afranges.c | 
| 4 |  * | 
| 5 |  *   Auto-fitter Unicode script ranges (body). | 
| 6 |  * | 
| 7 |  * Copyright (C) 2013-2023 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 `af_xxxx_nonbase_uniranges' ranges must be strict subsets */ | 
| 56 |   /* of the corresponding `af_xxxx_uniranges' ranges               */ | 
| 57 |  | 
| 58 |  | 
| 59 |   const AF_Script_UniRangeRec  af_adlm_uniranges[] = | 
| 60 |   { | 
| 61 |     AF_UNIRANGE_REC( 0x1E900, 0x1E95F ),   /* Adlam */ | 
| 62 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 63 |   }; | 
| 64 |  | 
| 65 |   const AF_Script_UniRangeRec  af_adlm_nonbase_uniranges[] = | 
| 66 |   { | 
| 67 |     AF_UNIRANGE_REC( 0x1D944, 0x1E94A ), | 
| 68 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 69 |   }; | 
| 70 |  | 
| 71 |  | 
| 72 |   const AF_Script_UniRangeRec  af_arab_uniranges[] = | 
| 73 |   { | 
| 74 |     AF_UNIRANGE_REC(  0x0600,  0x06FF ),  /* Arabic                                 */ | 
| 75 |     AF_UNIRANGE_REC(  0x0750,  0x07FF ),  /* Arabic Supplement                      */ | 
| 76 |     AF_UNIRANGE_REC(  0x08A0,  0x08FF ),  /* Arabic Extended-A                      */ | 
| 77 |     AF_UNIRANGE_REC(  0xFB50,  0xFDFF ),  /* Arabic Presentation Forms-A            */ | 
| 78 |     AF_UNIRANGE_REC(  0xFE70,  0xFEFF ),  /* Arabic Presentation Forms-B            */ | 
| 79 |     AF_UNIRANGE_REC( 0x1EE00, 0x1EEFF ),  /* Arabic Mathematical Alphabetic Symbols */ | 
| 80 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 81 |   }; | 
| 82 |  | 
| 83 |   const AF_Script_UniRangeRec  af_arab_nonbase_uniranges[] = | 
| 84 |   { | 
| 85 |     AF_UNIRANGE_REC(  0x0600,  0x0605 ), | 
| 86 |     AF_UNIRANGE_REC(  0x0610,  0x061A ), | 
| 87 |     AF_UNIRANGE_REC(  0x064B,  0x065F ), | 
| 88 |     AF_UNIRANGE_REC(  0x0670,  0x0670 ), | 
| 89 |     AF_UNIRANGE_REC(  0x06D6,  0x06DC ), | 
| 90 |     AF_UNIRANGE_REC(  0x06DF,  0x06E4 ), | 
| 91 |     AF_UNIRANGE_REC(  0x06E7,  0x06E8 ), | 
| 92 |     AF_UNIRANGE_REC(  0x06EA,  0x06ED ), | 
| 93 |     AF_UNIRANGE_REC(  0x08D4,  0x08E1 ), | 
| 94 |     AF_UNIRANGE_REC(  0x08D3,  0x08FF ), | 
| 95 |     AF_UNIRANGE_REC(  0xFBB2,  0xFBC1 ), | 
| 96 |     AF_UNIRANGE_REC(  0xFE70,  0xFE70 ), | 
| 97 |     AF_UNIRANGE_REC(  0xFE72,  0xFE72 ), | 
| 98 |     AF_UNIRANGE_REC(  0xFE74,  0xFE74 ), | 
| 99 |     AF_UNIRANGE_REC(  0xFE76,  0xFE76 ), | 
| 100 |     AF_UNIRANGE_REC(  0xFE78,  0xFE78 ), | 
| 101 |     AF_UNIRANGE_REC(  0xFE7A,  0xFE7A ), | 
| 102 |     AF_UNIRANGE_REC(  0xFE7C,  0xFE7C ), | 
| 103 |     AF_UNIRANGE_REC(  0xFE7E,  0xFE7E ), | 
| 104 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 105 |   }; | 
| 106 |  | 
| 107 |  | 
| 108 |   const AF_Script_UniRangeRec  af_armn_uniranges[] = | 
| 109 |   { | 
| 110 |     AF_UNIRANGE_REC(  0x0530,  0x058F ),  /* Armenian                          */ | 
| 111 |     AF_UNIRANGE_REC(  0xFB13,  0xFB17 ),  /* Alphab. Present. Forms (Armenian) */ | 
| 112 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 113 |   }; | 
| 114 |  | 
| 115 |   const AF_Script_UniRangeRec  af_armn_nonbase_uniranges[] = | 
| 116 |   { | 
| 117 |     AF_UNIRANGE_REC(  0x0559,  0x055F ), | 
| 118 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 119 |   }; | 
| 120 |  | 
| 121 |  | 
| 122 |   const AF_Script_UniRangeRec  af_avst_uniranges[] = | 
| 123 |   { | 
| 124 |     AF_UNIRANGE_REC( 0x10B00,  0x10B3F ),  /* Avestan */ | 
| 125 |     AF_UNIRANGE_REC(       0,        0 ) | 
| 126 |   }; | 
| 127 |  | 
| 128 |   const AF_Script_UniRangeRec  af_avst_nonbase_uniranges[] = | 
| 129 |   { | 
| 130 |     AF_UNIRANGE_REC( 0x10B39,  0x10B3F ), | 
| 131 |     AF_UNIRANGE_REC(       0,        0 ) | 
| 132 |   }; | 
| 133 |  | 
| 134 |  | 
| 135 |   const AF_Script_UniRangeRec  af_bamu_uniranges[] = | 
| 136 |   { | 
| 137 |     AF_UNIRANGE_REC( 0xA6A0,   0xA6FF ),   /* Bamum */ | 
| 138 | #if 0 | 
| 139 |     /* The characters in the Bamum supplement are pictograms, */ | 
| 140 |     /* not (directly) related to the syllabic Bamum script    */ | 
| 141 |     AF_UNIRANGE_REC( 0x16800, 0x16A3F ),   /* Bamum Supplement */ | 
| 142 | #endif | 
| 143 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 144 |   }; | 
| 145 |  | 
| 146 |   const AF_Script_UniRangeRec  af_bamu_nonbase_uniranges[] = | 
| 147 |   { | 
| 148 |     AF_UNIRANGE_REC(  0xA6F0,  0xA6F1 ), | 
| 149 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 150 |   }; | 
| 151 |  | 
| 152 |  | 
| 153 |   const AF_Script_UniRangeRec  af_beng_uniranges[] = | 
| 154 |   { | 
| 155 |     AF_UNIRANGE_REC(  0x0980,  0x09FF ),  /* Bengali */ | 
| 156 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 157 |   }; | 
| 158 |  | 
| 159 |   const AF_Script_UniRangeRec  af_beng_nonbase_uniranges[] = | 
| 160 |   { | 
| 161 |     AF_UNIRANGE_REC(  0x0981,  0x0981 ), | 
| 162 |     AF_UNIRANGE_REC(  0x09BC,  0x09BC ), | 
| 163 |     AF_UNIRANGE_REC(  0x09C1,  0x09C4 ), | 
| 164 |     AF_UNIRANGE_REC(  0x09CD,  0x09CD ), | 
| 165 |     AF_UNIRANGE_REC(  0x09E2,  0x09E3 ), | 
| 166 |     AF_UNIRANGE_REC(  0x09FE,  0x09FE ), | 
| 167 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 168 |   }; | 
| 169 |  | 
| 170 |  | 
| 171 |   const AF_Script_UniRangeRec  af_buhd_uniranges[] = | 
| 172 |   { | 
| 173 |     AF_UNIRANGE_REC(  0x1740,  0x175F ),   /* Buhid */ | 
| 174 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 175 |   }; | 
| 176 |  | 
| 177 |   const AF_Script_UniRangeRec  af_buhd_nonbase_uniranges[] = | 
| 178 |   { | 
| 179 |     AF_UNIRANGE_REC(  0x1752,  0x1753 ), | 
| 180 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 181 |   }; | 
| 182 |  | 
| 183 |  | 
| 184 |   const AF_Script_UniRangeRec  af_cakm_uniranges[] = | 
| 185 |   { | 
| 186 |     AF_UNIRANGE_REC( 0x11100, 0x1114F ),   /* Chakma */ | 
| 187 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 188 |   }; | 
| 189 |  | 
| 190 |   const AF_Script_UniRangeRec  af_cakm_nonbase_uniranges[] = | 
| 191 |   { | 
| 192 |     AF_UNIRANGE_REC( 0x11100, 0x11102 ), | 
| 193 |     AF_UNIRANGE_REC( 0x11127, 0x11134 ), | 
| 194 |     AF_UNIRANGE_REC( 0x11146, 0x11146 ), | 
| 195 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 196 |   }; | 
| 197 |  | 
| 198 |  | 
| 199 |   const AF_Script_UniRangeRec  af_cans_uniranges[] = | 
| 200 |   { | 
| 201 |     AF_UNIRANGE_REC(  0x1400,  0x167F ), /* Unified Canadian Aboriginal Syllabics          */ | 
| 202 |     AF_UNIRANGE_REC(  0x18B0,  0x18FF ), /* Unified Canadian Aboriginal Syllabics Extended */ | 
| 203 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 204 |   }; | 
| 205 |  | 
| 206 |   const AF_Script_UniRangeRec  af_cans_nonbase_uniranges[] = | 
| 207 |   { | 
| 208 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 209 |   }; | 
| 210 |  | 
| 211 |  | 
| 212 |   const AF_Script_UniRangeRec  af_cari_uniranges[] = | 
| 213 |   { | 
| 214 |     AF_UNIRANGE_REC( 0x102A0, 0x102DF ),   /* Carian */ | 
| 215 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 216 |   }; | 
| 217 |  | 
| 218 |   const AF_Script_UniRangeRec  af_cari_nonbase_uniranges[] = | 
| 219 |   { | 
| 220 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 221 |   }; | 
| 222 |  | 
| 223 |  | 
| 224 |   const AF_Script_UniRangeRec  af_cher_uniranges[] = | 
| 225 |   { | 
| 226 |     AF_UNIRANGE_REC(  0x13A0,  0x13FF ),  /* Cherokee            */ | 
| 227 |     AF_UNIRANGE_REC(  0xAB70,  0xABBF ),  /* Cherokee Supplement */ | 
| 228 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 229 |   }; | 
| 230 |  | 
| 231 |   const AF_Script_UniRangeRec  af_cher_nonbase_uniranges[] = | 
| 232 |   { | 
| 233 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 234 |   }; | 
| 235 |  | 
| 236 |  | 
| 237 |   const AF_Script_UniRangeRec  af_copt_uniranges[] = | 
| 238 |   { | 
| 239 |     AF_UNIRANGE_REC(  0x2C80,  0x2CFF ),   /* Coptic */ | 
| 240 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 241 |   }; | 
| 242 |  | 
| 243 |   const AF_Script_UniRangeRec  af_copt_nonbase_uniranges[] = | 
| 244 |   { | 
| 245 |     AF_UNIRANGE_REC(  0x2CEF,  0x2CF1 ), | 
| 246 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 247 |   }; | 
| 248 |  | 
| 249 |  | 
| 250 |   const AF_Script_UniRangeRec  af_cprt_uniranges[] = | 
| 251 |   { | 
| 252 |     AF_UNIRANGE_REC( 0x10800, 0x1083F ),   /* Cypriot */ | 
| 253 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 254 |   }; | 
| 255 |  | 
| 256 |   const AF_Script_UniRangeRec  af_cprt_nonbase_uniranges[] = | 
| 257 |   { | 
| 258 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 259 |   }; | 
| 260 |  | 
| 261 |  | 
| 262 |   const AF_Script_UniRangeRec  af_cyrl_uniranges[] = | 
| 263 |   { | 
| 264 |     AF_UNIRANGE_REC(  0x0400,  0x04FF ),  /* Cyrillic            */ | 
| 265 |     AF_UNIRANGE_REC(  0x0500,  0x052F ),  /* Cyrillic Supplement */ | 
| 266 |     AF_UNIRANGE_REC(  0x2DE0,  0x2DFF ),  /* Cyrillic Extended-A */ | 
| 267 |     AF_UNIRANGE_REC(  0xA640,  0xA69F ),  /* Cyrillic Extended-B */ | 
| 268 |     AF_UNIRANGE_REC(  0x1C80,  0x1C8F ),  /* Cyrillic Extended-C */ | 
| 269 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 270 |   }; | 
| 271 |  | 
| 272 |   const AF_Script_UniRangeRec  af_cyrl_nonbase_uniranges[] = | 
| 273 |   { | 
| 274 |     AF_UNIRANGE_REC(  0x0483,  0x0489 ), | 
| 275 |     AF_UNIRANGE_REC(  0x2DE0,  0x2DFF ), | 
| 276 |     AF_UNIRANGE_REC(  0xA66F,  0xA67F ), | 
| 277 |     AF_UNIRANGE_REC(  0xA69E,  0xA69F ), | 
| 278 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 279 |   }; | 
| 280 |  | 
| 281 |  | 
| 282 |   /* There are some characters in the Devanagari Unicode block that are    */ | 
| 283 |   /* generic to Indic scripts; we omit them so that their presence doesn't */ | 
| 284 |   /* trigger Devanagari.                                                   */ | 
| 285 |  | 
| 286 |   const AF_Script_UniRangeRec  af_deva_uniranges[] = | 
| 287 |   { | 
| 288 |     AF_UNIRANGE_REC(  0x0900,  0x093B ),  /* Devanagari          */ | 
| 289 |     /* omitting U+093C nukta */ | 
| 290 |     AF_UNIRANGE_REC(  0x093D,  0x0950 ),  /* ... continued       */ | 
| 291 |     /* omitting U+0951 udatta, U+0952 anudatta */ | 
| 292 |     AF_UNIRANGE_REC(  0x0953,  0x0963 ),  /* ... continued       */ | 
| 293 |     /* omitting U+0964 danda, U+0965 double danda */ | 
| 294 |     AF_UNIRANGE_REC(  0x0966,  0x097F ),  /* ... continued       */ | 
| 295 |     AF_UNIRANGE_REC(  0x20B9,  0x20B9 ),  /* (new) Rupee sign    */ | 
| 296 |     AF_UNIRANGE_REC(  0xA8E0,  0xA8FF ),  /* Devanagari Extended */ | 
| 297 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 298 |   }; | 
| 299 |  | 
| 300 |   const AF_Script_UniRangeRec  af_deva_nonbase_uniranges[] = | 
| 301 |   { | 
| 302 |     AF_UNIRANGE_REC(  0x0900,  0x0902 ), | 
| 303 |     AF_UNIRANGE_REC(  0x093A,  0x093A ), | 
| 304 |     AF_UNIRANGE_REC(  0x0941,  0x0948 ), | 
| 305 |     AF_UNIRANGE_REC(  0x094D,  0x094D ), | 
| 306 |     AF_UNIRANGE_REC(  0x0953,  0x0957 ), | 
| 307 |     AF_UNIRANGE_REC(  0x0962,  0x0963 ), | 
| 308 |     AF_UNIRANGE_REC(  0xA8E0,  0xA8F1 ), | 
| 309 |     AF_UNIRANGE_REC(  0xA8FF,  0xA8FF ), | 
| 310 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 311 |   }; | 
| 312 |  | 
| 313 |  | 
| 314 |   const AF_Script_UniRangeRec  af_dsrt_uniranges[] = | 
| 315 |   { | 
| 316 |     AF_UNIRANGE_REC( 0x10400, 0x1044F ),  /* Deseret */ | 
| 317 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 318 |   }; | 
| 319 |  | 
| 320 |   const AF_Script_UniRangeRec  af_dsrt_nonbase_uniranges[] = | 
| 321 |   { | 
| 322 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 323 |   }; | 
| 324 |  | 
| 325 |  | 
| 326 |   const AF_Script_UniRangeRec  af_ethi_uniranges[] = | 
| 327 |   { | 
| 328 |     AF_UNIRANGE_REC(  0x1200,  0x137F ),  /* Ethiopic            */ | 
| 329 |     AF_UNIRANGE_REC(  0x1380,  0x139F ),  /* Ethiopic Supplement */ | 
| 330 |     AF_UNIRANGE_REC(  0x2D80,  0x2DDF ),  /* Ethiopic Extended   */ | 
| 331 |     AF_UNIRANGE_REC(  0xAB00,  0xAB2F ),  /* Ethiopic Extended-A */ | 
| 332 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 333 |   }; | 
| 334 |  | 
| 335 |   const AF_Script_UniRangeRec  af_ethi_nonbase_uniranges[] = | 
| 336 |   { | 
| 337 |     AF_UNIRANGE_REC(  0x135D,  0x135F ), | 
| 338 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 339 |   }; | 
| 340 |  | 
| 341 |  | 
| 342 |   const AF_Script_UniRangeRec  af_geor_uniranges[] = | 
| 343 |   { | 
| 344 |     AF_UNIRANGE_REC(  0x10D0,  0x10FF ),  /* Georgian (Mkhedruli)          */ | 
| 345 |     AF_UNIRANGE_REC(  0x1C90,  0x1CBF ),  /* Georgian Extended (Mtavruli)  */ | 
| 346 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 347 |   }; | 
| 348 |  | 
| 349 |   const AF_Script_UniRangeRec  af_geor_nonbase_uniranges[] = | 
| 350 |   { | 
| 351 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 352 |   }; | 
| 353 |  | 
| 354 |  | 
| 355 |   const AF_Script_UniRangeRec  af_geok_uniranges[] = | 
| 356 |   { | 
| 357 |     /* Khutsuri */ | 
| 358 |     AF_UNIRANGE_REC(  0x10A0,  0x10CD ),  /* Georgian (Asomtavruli)         */ | 
| 359 |     AF_UNIRANGE_REC(  0x2D00,  0x2D2D ),  /* Georgian Supplement (Nuskhuri) */ | 
| 360 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 361 |   }; | 
| 362 |  | 
| 363 |   const AF_Script_UniRangeRec  af_geok_nonbase_uniranges[] = | 
| 364 |   { | 
| 365 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 366 |   }; | 
| 367 |  | 
| 368 |  | 
| 369 |   const AF_Script_UniRangeRec  af_glag_uniranges[] = | 
| 370 |   { | 
| 371 |     AF_UNIRANGE_REC(  0x2C00,  0x2C5F ),  /* Glagolitic */ | 
| 372 |     AF_UNIRANGE_REC( 0x1E000, 0x1E02F ),  /* Glagolitic Supplement */ | 
| 373 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 374 |   }; | 
| 375 |  | 
| 376 |   const AF_Script_UniRangeRec  af_glag_nonbase_uniranges[] = | 
| 377 |   { | 
| 378 |     AF_UNIRANGE_REC( 0x1E000, 0x1E02F ), | 
| 379 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 380 |   }; | 
| 381 |  | 
| 382 |  | 
| 383 |   const AF_Script_UniRangeRec  af_goth_uniranges[] = | 
| 384 |   { | 
| 385 |     AF_UNIRANGE_REC( 0x10330, 0x1034F ),   /* Gothic */ | 
| 386 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 387 |   }; | 
| 388 |  | 
| 389 |   const AF_Script_UniRangeRec  af_goth_nonbase_uniranges[] = | 
| 390 |   { | 
| 391 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 392 |   }; | 
| 393 |  | 
| 394 |  | 
| 395 |   const AF_Script_UniRangeRec  af_grek_uniranges[] = | 
| 396 |   { | 
| 397 |     AF_UNIRANGE_REC(  0x0370,  0x03FF ),  /* Greek and Coptic */ | 
| 398 |     AF_UNIRANGE_REC(  0x1F00,  0x1FFF ),  /* Greek Extended   */ | 
| 399 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 400 |   }; | 
| 401 |  | 
| 402 |   const AF_Script_UniRangeRec  af_grek_nonbase_uniranges[] = | 
| 403 |   { | 
| 404 |     AF_UNIRANGE_REC(  0x037A,  0x037A ), | 
| 405 |     AF_UNIRANGE_REC(  0x0384,  0x0385 ), | 
| 406 |     AF_UNIRANGE_REC(  0x1FBD,  0x1FC1 ), | 
| 407 |     AF_UNIRANGE_REC(  0x1FCD,  0x1FCF ), | 
| 408 |     AF_UNIRANGE_REC(  0x1FDD,  0x1FDF ), | 
| 409 |     AF_UNIRANGE_REC(  0x1FED,  0x1FEF ), | 
| 410 |     AF_UNIRANGE_REC(  0x1FFD,  0x1FFE ), | 
| 411 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 412 |   }; | 
| 413 |  | 
| 414 |  | 
| 415 |   const AF_Script_UniRangeRec  af_gujr_uniranges[] = | 
| 416 |   { | 
| 417 |     AF_UNIRANGE_REC(  0x0A80,  0x0AFF ),  /* Gujarati */ | 
| 418 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 419 |   }; | 
| 420 |  | 
| 421 |   const AF_Script_UniRangeRec  af_gujr_nonbase_uniranges[] = | 
| 422 |   { | 
| 423 |     AF_UNIRANGE_REC(  0x0A81,  0x0A82 ), | 
| 424 |     AF_UNIRANGE_REC(  0x0ABC,  0x0ABC ), | 
| 425 |     AF_UNIRANGE_REC(  0x0AC1,  0x0AC8 ), | 
| 426 |     AF_UNIRANGE_REC(  0x0ACD,  0x0ACD ), | 
| 427 |     AF_UNIRANGE_REC(  0x0AE2,  0x0AE3 ), | 
| 428 |     AF_UNIRANGE_REC(  0x0AFA,  0x0AFF ), | 
| 429 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 430 |   }; | 
| 431 |  | 
| 432 |  | 
| 433 |   const AF_Script_UniRangeRec  af_guru_uniranges[] = | 
| 434 |   { | 
| 435 |     AF_UNIRANGE_REC(  0x0A00,  0x0A7F ),  /* Gurmukhi */ | 
| 436 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 437 |   }; | 
| 438 |  | 
| 439 |   const AF_Script_UniRangeRec  af_guru_nonbase_uniranges[] = | 
| 440 |   { | 
| 441 |     AF_UNIRANGE_REC(  0x0A01,  0x0A02 ), | 
| 442 |     AF_UNIRANGE_REC(  0x0A3C,  0x0A3C ), | 
| 443 |     AF_UNIRANGE_REC(  0x0A41,  0x0A51 ), | 
| 444 |     AF_UNIRANGE_REC(  0x0A70,  0x0A71 ), | 
| 445 |     AF_UNIRANGE_REC(  0x0A75,  0x0A75 ), | 
| 446 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 447 |   }; | 
| 448 |  | 
| 449 |  | 
| 450 |   const AF_Script_UniRangeRec  af_hebr_uniranges[] = | 
| 451 |   { | 
| 452 |     AF_UNIRANGE_REC(  0x0590,  0x05FF ),  /* Hebrew                          */ | 
| 453 |     AF_UNIRANGE_REC(  0xFB1D,  0xFB4F ),  /* Alphab. Present. Forms (Hebrew) */ | 
| 454 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 455 |   }; | 
| 456 |  | 
| 457 |   const AF_Script_UniRangeRec  af_hebr_nonbase_uniranges[] = | 
| 458 |   { | 
| 459 |     AF_UNIRANGE_REC(  0x0591,  0x05BF ), | 
| 460 |     AF_UNIRANGE_REC(  0x05C1,  0x05C2 ), | 
| 461 |     AF_UNIRANGE_REC(  0x05C4,  0x05C5 ), | 
| 462 |     AF_UNIRANGE_REC(  0x05C7,  0x05C7 ), | 
| 463 |     AF_UNIRANGE_REC(  0xFB1E,  0xFB1E ), | 
| 464 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 465 |   }; | 
| 466 |  | 
| 467 |  | 
| 468 |   const AF_Script_UniRangeRec  af_kali_uniranges[] = | 
| 469 |   { | 
| 470 |     AF_UNIRANGE_REC(  0xA900,  0xA92F ),   /* Kayah Li */ | 
| 471 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 472 |   }; | 
| 473 |  | 
| 474 |   const AF_Script_UniRangeRec  af_kali_nonbase_uniranges[] = | 
| 475 |   { | 
| 476 |     AF_UNIRANGE_REC(  0xA926,  0xA92D ), | 
| 477 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 478 |   }; | 
| 479 |  | 
| 480 |  | 
| 481 |   const AF_Script_UniRangeRec  af_knda_uniranges[] = | 
| 482 |   { | 
| 483 |     AF_UNIRANGE_REC(  0x0C80,  0x0CFF ),  /* Kannada */ | 
| 484 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 485 |   }; | 
| 486 |  | 
| 487 |   const AF_Script_UniRangeRec  af_knda_nonbase_uniranges[] = | 
| 488 |   { | 
| 489 |     AF_UNIRANGE_REC(  0x0C81,  0x0C81 ), | 
| 490 |     AF_UNIRANGE_REC(  0x0CBC,  0x0CBC ), | 
| 491 |     AF_UNIRANGE_REC(  0x0CBF,  0x0CBF ), | 
| 492 |     AF_UNIRANGE_REC(  0x0CC6,  0x0CC6 ), | 
| 493 |     AF_UNIRANGE_REC(  0x0CCC,  0x0CCD ), | 
| 494 |     AF_UNIRANGE_REC(  0x0CE2,  0x0CE3 ), | 
| 495 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 496 |   }; | 
| 497 |  | 
| 498 |  | 
| 499 |   const AF_Script_UniRangeRec  af_khmr_uniranges[] = | 
| 500 |   { | 
| 501 |     AF_UNIRANGE_REC(  0x1780,  0x17FF ),  /* Khmer */ | 
| 502 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 503 |   }; | 
| 504 |  | 
| 505 |   const AF_Script_UniRangeRec  af_khmr_nonbase_uniranges[] = | 
| 506 |   { | 
| 507 |     AF_UNIRANGE_REC(  0x17B7,  0x17BD ), | 
| 508 |     AF_UNIRANGE_REC(  0x17C6,  0x17C6 ), | 
| 509 |     AF_UNIRANGE_REC(  0x17C9,  0x17D3 ), | 
| 510 |     AF_UNIRANGE_REC(  0x17DD,  0x17DD ), | 
| 511 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 512 |   }; | 
| 513 |  | 
| 514 |  | 
| 515 |   const AF_Script_UniRangeRec  af_khms_uniranges[] = | 
| 516 |   { | 
| 517 |     AF_UNIRANGE_REC(  0x19E0,  0x19FF ),  /* Khmer Symbols */ | 
| 518 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 519 |   }; | 
| 520 |  | 
| 521 |   const AF_Script_UniRangeRec  af_khms_nonbase_uniranges[] = | 
| 522 |   { | 
| 523 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 524 |   }; | 
| 525 |  | 
| 526 |  | 
| 527 |   const AF_Script_UniRangeRec  af_lao_uniranges[] = | 
| 528 |   { | 
| 529 |     AF_UNIRANGE_REC(  0x0E80,  0x0EFF ),  /* Lao */ | 
| 530 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 531 |   }; | 
| 532 |  | 
| 533 |   const AF_Script_UniRangeRec  af_lao_nonbase_uniranges[] = | 
| 534 |   { | 
| 535 |     AF_UNIRANGE_REC(  0x0EB1,  0x0EB1 ), | 
| 536 |     AF_UNIRANGE_REC(  0x0EB4,  0x0EBC ), | 
| 537 |     AF_UNIRANGE_REC(  0x0EC8,  0x0ECD ), | 
| 538 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 539 |   }; | 
| 540 |  | 
| 541 |  | 
| 542 |   const AF_Script_UniRangeRec  af_latn_uniranges[] = | 
| 543 |   { | 
| 544 |     AF_UNIRANGE_REC(  0x0020,  0x007F ),  /* Basic Latin (no control chars)         */ | 
| 545 |     AF_UNIRANGE_REC(  0x00A0,  0x00A9 ),  /* Latin-1 Supplement (no control chars)  */ | 
| 546 |     AF_UNIRANGE_REC(  0x00AB,  0x00B1 ),  /* ... continued                          */ | 
| 547 |     AF_UNIRANGE_REC(  0x00B4,  0x00B8 ),  /* ... continued                          */ | 
| 548 |     AF_UNIRANGE_REC(  0x00BB,  0x00FF ),  /* ... continued                          */ | 
| 549 |     AF_UNIRANGE_REC(  0x0100,  0x017F ),  /* Latin Extended-A                       */ | 
| 550 |     AF_UNIRANGE_REC(  0x0180,  0x024F ),  /* Latin Extended-B                       */ | 
| 551 |     AF_UNIRANGE_REC(  0x0250,  0x02AF ),  /* IPA Extensions                         */ | 
| 552 |     AF_UNIRANGE_REC(  0x02B9,  0x02DF ),  /* Spacing Modifier Letters               */ | 
| 553 |     AF_UNIRANGE_REC(  0x02E5,  0x02FF ),  /* ... continued                          */ | 
| 554 |     AF_UNIRANGE_REC(  0x0300,  0x036F ),  /* Combining Diacritical Marks            */ | 
| 555 |     AF_UNIRANGE_REC(  0x1AB0,  0x1ABE ),  /* Combining Diacritical Marks Extended   */ | 
| 556 |     AF_UNIRANGE_REC(  0x1D00,  0x1D2B ),  /* Phonetic Extensions                    */ | 
| 557 |     AF_UNIRANGE_REC(  0x1D6B,  0x1D77 ),  /* ... continued                          */ | 
| 558 |     AF_UNIRANGE_REC(  0x1D79,  0x1D7F ),  /* ... continued                          */ | 
| 559 |     AF_UNIRANGE_REC(  0x1D80,  0x1D9A ),  /* Phonetic Extensions Supplement         */ | 
| 560 |     AF_UNIRANGE_REC(  0x1DC0,  0x1DFF ),  /* Combining Diacritical Marks Supplement */ | 
| 561 |     AF_UNIRANGE_REC(  0x1E00,  0x1EFF ),  /* Latin Extended Additional              */ | 
| 562 |     AF_UNIRANGE_REC(  0x2000,  0x206F ),  /* General Punctuation                    */ | 
| 563 |     AF_UNIRANGE_REC(  0x20A0,  0x20B8 ),  /* Currency Symbols ...                   */ | 
| 564 |     AF_UNIRANGE_REC(  0x20BA,  0x20CF ),  /* ... except new Rupee sign              */ | 
| 565 |     AF_UNIRANGE_REC(  0x2150,  0x218F ),  /* Number Forms                           */ | 
| 566 |     AF_UNIRANGE_REC(  0x2C60,  0x2C7B ),  /* Latin Extended-C                       */ | 
| 567 |     AF_UNIRANGE_REC(  0x2C7E,  0x2C7F ),  /* ... continued                          */ | 
| 568 |     AF_UNIRANGE_REC(  0x2E00,  0x2E7F ),  /* Supplemental Punctuation               */ | 
| 569 |     AF_UNIRANGE_REC(  0xA720,  0xA76F ),  /* Latin Extended-D                       */ | 
| 570 |     AF_UNIRANGE_REC(  0xA771,  0xA7F7 ),  /* ... continued                          */ | 
| 571 |     AF_UNIRANGE_REC(  0xA7FA,  0xA7FF ),  /* ... continued                          */ | 
| 572 |     AF_UNIRANGE_REC(  0xAB30,  0xAB5B ),  /* Latin Extended-E                       */ | 
| 573 |     AF_UNIRANGE_REC(  0xAB60,  0xAB6F ),  /* ... continued                          */ | 
| 574 |     AF_UNIRANGE_REC(  0xFB00,  0xFB06 ),  /* Alphab. Present. Forms (Latin Ligs)    */ | 
| 575 |     AF_UNIRANGE_REC( 0x1D400, 0x1D7FF ),  /* Mathematical Alphanumeric Symbols      */ | 
| 576 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 577 |   }; | 
| 578 |  | 
| 579 |   const AF_Script_UniRangeRec  af_latn_nonbase_uniranges[] = | 
| 580 |   { | 
| 581 |     AF_UNIRANGE_REC(  0x005E,  0x0060 ), | 
| 582 |     AF_UNIRANGE_REC(  0x007E,  0x007E ), | 
| 583 |     AF_UNIRANGE_REC(  0x00A8,  0x00A9 ), | 
| 584 |     AF_UNIRANGE_REC(  0x00AE,  0x00B0 ), | 
| 585 |     AF_UNIRANGE_REC(  0x00B4,  0x00B4 ), | 
| 586 |     AF_UNIRANGE_REC(  0x00B8,  0x00B8 ), | 
| 587 |     AF_UNIRANGE_REC(  0x00BC,  0x00BE ), | 
| 588 |     AF_UNIRANGE_REC(  0x02B9,  0x02DF ), | 
| 589 |     AF_UNIRANGE_REC(  0x02E5,  0x02FF ), | 
| 590 |     AF_UNIRANGE_REC(  0x0300,  0x036F ), | 
| 591 |     AF_UNIRANGE_REC(  0x1AB0,  0x1ABE ), | 
| 592 |     AF_UNIRANGE_REC(  0x1DC0,  0x1DFF ), | 
| 593 |     AF_UNIRANGE_REC(  0x2017,  0x2017 ), | 
| 594 |     AF_UNIRANGE_REC(  0x203E,  0x203E ), | 
| 595 |     AF_UNIRANGE_REC(  0xA788,  0xA788 ), | 
| 596 |     AF_UNIRANGE_REC(  0xA7F8,  0xA7FA ), | 
| 597 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 598 |   }; | 
| 599 |  | 
| 600 |  | 
| 601 |   const AF_Script_UniRangeRec  af_latb_uniranges[] = | 
| 602 |   { | 
| 603 |     AF_UNIRANGE_REC(  0x1D62,  0x1D6A ),  /* some small subscript letters   */ | 
| 604 |     AF_UNIRANGE_REC(  0x2080,  0x209C ),  /* subscript digits and letters   */ | 
| 605 |     AF_UNIRANGE_REC(  0x2C7C,  0x2C7C ),  /* latin subscript small letter j */ | 
| 606 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 607 |   }; | 
| 608 |  | 
| 609 |   const AF_Script_UniRangeRec  af_latb_nonbase_uniranges[] = | 
| 610 |   { | 
| 611 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 612 |   }; | 
| 613 |  | 
| 614 |  | 
| 615 |   const AF_Script_UniRangeRec  af_latp_uniranges[] = | 
| 616 |   { | 
| 617 |     AF_UNIRANGE_REC(  0x00AA,  0x00AA ),  /* feminine ordinal indicator          */ | 
| 618 |     AF_UNIRANGE_REC(  0x00B2,  0x00B3 ),  /* superscript two and three           */ | 
| 619 |     AF_UNIRANGE_REC(  0x00B9,  0x00BA ),  /* superscript one, masc. ord. indic.  */ | 
| 620 |     AF_UNIRANGE_REC(  0x02B0,  0x02B8 ),  /* some latin superscript mod. letters */ | 
| 621 |     AF_UNIRANGE_REC(  0x02E0,  0x02E4 ),  /* some IPA modifier letters           */ | 
| 622 |     AF_UNIRANGE_REC(  0x1D2C,  0x1D61 ),  /* latin superscript modifier letters  */ | 
| 623 |     AF_UNIRANGE_REC(  0x1D78,  0x1D78 ),  /* modifier letter cyrillic en         */ | 
| 624 |     AF_UNIRANGE_REC(  0x1D9B,  0x1DBF ),  /* more modifier letters               */ | 
| 625 |     AF_UNIRANGE_REC(  0x2070,  0x207F ),  /* superscript digits and letters      */ | 
| 626 |     AF_UNIRANGE_REC(  0x2C7D,  0x2C7D ),  /* modifier letter capital v           */ | 
| 627 |     AF_UNIRANGE_REC(  0xA770,  0xA770 ),  /* modifier letter us                  */ | 
| 628 |     AF_UNIRANGE_REC(  0xA7F8,  0xA7F9 ),  /* more modifier letters               */ | 
| 629 |     AF_UNIRANGE_REC(  0xAB5C,  0xAB5F ),  /* more modifier letters               */ | 
| 630 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 631 |   }; | 
| 632 |  | 
| 633 |   const AF_Script_UniRangeRec  af_latp_nonbase_uniranges[] = | 
| 634 |   { | 
| 635 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 636 |   }; | 
| 637 |  | 
| 638 |  | 
| 639 |   const AF_Script_UniRangeRec  af_lisu_uniranges[] = | 
| 640 |   { | 
| 641 |     AF_UNIRANGE_REC(  0xA4D0,  0xA4FF ),    /* Lisu */ | 
| 642 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 643 |   }; | 
| 644 |  | 
| 645 |   const AF_Script_UniRangeRec  af_lisu_nonbase_uniranges[] = | 
| 646 |   { | 
| 647 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 648 |   }; | 
| 649 |  | 
| 650 |  | 
| 651 |   const AF_Script_UniRangeRec  af_mlym_uniranges[] = | 
| 652 |   { | 
| 653 |     AF_UNIRANGE_REC(  0x0D00,  0x0D7F ),  /* Malayalam */ | 
| 654 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 655 |   }; | 
| 656 |  | 
| 657 |   const AF_Script_UniRangeRec  af_mlym_nonbase_uniranges[] = | 
| 658 |   { | 
| 659 |     AF_UNIRANGE_REC(  0x0D00,  0x0D01 ), | 
| 660 |     AF_UNIRANGE_REC(  0x0D3B,  0x0D3C ), | 
| 661 |     AF_UNIRANGE_REC(  0x0D4D,  0x0D4E ), | 
| 662 |     AF_UNIRANGE_REC(  0x0D62,  0x0D63 ), | 
| 663 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 664 |   }; | 
| 665 |  | 
| 666 |  | 
| 667 |   const AF_Script_UniRangeRec  af_medf_uniranges[] = | 
| 668 |   { | 
| 669 |     AF_UNIRANGE_REC( 0x16E40, 0x16E9F ),  /* Medefaidrin */ | 
| 670 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 671 |   }; | 
| 672 |  | 
| 673 |   const AF_Script_UniRangeRec  af_medf_nonbase_uniranges[] = | 
| 674 |   { | 
| 675 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 676 |   }; | 
| 677 |  | 
| 678 |  | 
| 679 |   const AF_Script_UniRangeRec  af_mong_uniranges[] = | 
| 680 |   { | 
| 681 |     AF_UNIRANGE_REC(  0x1800,  0x18AF ),  /* Mongolian            */ | 
| 682 |     AF_UNIRANGE_REC( 0x11660, 0x1167F ),  /* Mongolian Supplement */ | 
| 683 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 684 |   }; | 
| 685 |  | 
| 686 |   const AF_Script_UniRangeRec  af_mong_nonbase_uniranges[] = | 
| 687 |   { | 
| 688 |     AF_UNIRANGE_REC(  0x1885,  0x1886 ), | 
| 689 |     AF_UNIRANGE_REC(  0x18A9,  0x18A9 ), | 
| 690 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 691 |   }; | 
| 692 |  | 
| 693 |  | 
| 694 |   const AF_Script_UniRangeRec  af_mymr_uniranges[] = | 
| 695 |   { | 
| 696 |     AF_UNIRANGE_REC(  0x1000,  0x109F ),    /* Myanmar            */ | 
| 697 |     AF_UNIRANGE_REC(  0xA9E0,  0xA9FF ),    /* Myanmar Extended-B */ | 
| 698 |     AF_UNIRANGE_REC(  0xAA60,  0xAA7F ),    /* Myanmar Extended-A */ | 
| 699 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 700 |   }; | 
| 701 |  | 
| 702 |   const AF_Script_UniRangeRec  af_mymr_nonbase_uniranges[] = | 
| 703 |   { | 
| 704 |     AF_UNIRANGE_REC(  0x102D,  0x1030 ), | 
| 705 |     AF_UNIRANGE_REC(  0x1032,  0x1037 ), | 
| 706 |     AF_UNIRANGE_REC(  0x103A,  0x103A ), | 
| 707 |     AF_UNIRANGE_REC(  0x103D,  0x103E ), | 
| 708 |     AF_UNIRANGE_REC(  0x1058,  0x1059 ), | 
| 709 |     AF_UNIRANGE_REC(  0x105E,  0x1060 ), | 
| 710 |     AF_UNIRANGE_REC(  0x1071,  0x1074 ), | 
| 711 |     AF_UNIRANGE_REC(  0x1082,  0x1082 ), | 
| 712 |     AF_UNIRANGE_REC(  0x1085,  0x1086 ), | 
| 713 |     AF_UNIRANGE_REC(  0x108D,  0x108D ), | 
| 714 |     AF_UNIRANGE_REC(  0xA9E5,  0xA9E5 ), | 
| 715 |     AF_UNIRANGE_REC(  0xAA7C,  0xAA7C ), | 
| 716 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 717 |   }; | 
| 718 |  | 
| 719 |  | 
| 720 |   const AF_Script_UniRangeRec  af_nkoo_uniranges[] = | 
| 721 |   { | 
| 722 |     AF_UNIRANGE_REC(  0x07C0,  0x07FF ),    /* N'Ko */ | 
| 723 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 724 |   }; | 
| 725 |  | 
| 726 |   const AF_Script_UniRangeRec  af_nkoo_nonbase_uniranges[] = | 
| 727 |   { | 
| 728 |     AF_UNIRANGE_REC(  0x07EB,  0x07F5 ), | 
| 729 |     AF_UNIRANGE_REC(  0x07FD,  0x07FD ), | 
| 730 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 731 |   }; | 
| 732 |  | 
| 733 |  | 
| 734 |   const AF_Script_UniRangeRec  af_none_uniranges[] = | 
| 735 |   { | 
| 736 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 737 |   }; | 
| 738 |  | 
| 739 |   const AF_Script_UniRangeRec  af_none_nonbase_uniranges[] = | 
| 740 |   { | 
| 741 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 742 |   }; | 
| 743 |  | 
| 744 |  | 
| 745 |   const AF_Script_UniRangeRec  af_olck_uniranges[] = | 
| 746 |   { | 
| 747 |     AF_UNIRANGE_REC(  0x1C50,  0x1C7F ),    /* Ol Chiki */ | 
| 748 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 749 |   }; | 
| 750 |  | 
| 751 |   const AF_Script_UniRangeRec  af_olck_nonbase_uniranges[] = | 
| 752 |   { | 
| 753 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 754 |   }; | 
| 755 |  | 
| 756 |  | 
| 757 |   const AF_Script_UniRangeRec  af_orkh_uniranges[] = | 
| 758 |   { | 
| 759 |     AF_UNIRANGE_REC( 0x10C00, 0x10C4F ),    /* Old Turkic */ | 
| 760 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 761 |   }; | 
| 762 |  | 
| 763 |   const AF_Script_UniRangeRec  af_orkh_nonbase_uniranges[] = | 
| 764 |   { | 
| 765 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 766 |   }; | 
| 767 |  | 
| 768 |  | 
| 769 |   const AF_Script_UniRangeRec  af_osge_uniranges[] = | 
| 770 |   { | 
| 771 |     AF_UNIRANGE_REC( 0x104B0, 0x104FF ),    /* Osage */ | 
| 772 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 773 |   }; | 
| 774 |  | 
| 775 |   const AF_Script_UniRangeRec  af_osge_nonbase_uniranges[] = | 
| 776 |   { | 
| 777 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 778 |   }; | 
| 779 |  | 
| 780 |  | 
| 781 |   const AF_Script_UniRangeRec  af_osma_uniranges[] = | 
| 782 |   { | 
| 783 |     AF_UNIRANGE_REC( 0x10480, 0x104AF ),   /* Osmanya */ | 
| 784 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 785 |   }; | 
| 786 |  | 
| 787 |   const AF_Script_UniRangeRec  af_osma_nonbase_uniranges[] = | 
| 788 |   { | 
| 789 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 790 |   }; | 
| 791 |  | 
| 792 |  | 
| 793 |   const AF_Script_UniRangeRec  af_rohg_uniranges[] = | 
| 794 |   { | 
| 795 |     AF_UNIRANGE_REC( 0x10D00, 0x10D3F ),   /* Hanifi Rohingya */ | 
| 796 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 797 |   }; | 
| 798 |  | 
| 799 |   const AF_Script_UniRangeRec  af_rohg_nonbase_uniranges[] = | 
| 800 |   { | 
| 801 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 802 |   }; | 
| 803 |  | 
| 804 |  | 
| 805 |   const AF_Script_UniRangeRec  af_saur_uniranges[] = | 
| 806 |   { | 
| 807 |     AF_UNIRANGE_REC(  0xA880,  0xA8DF ),   /* Saurashtra */ | 
| 808 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 809 |   }; | 
| 810 |  | 
| 811 |   const AF_Script_UniRangeRec  af_saur_nonbase_uniranges[] = | 
| 812 |   { | 
| 813 |     AF_UNIRANGE_REC(  0xA880,  0xA881 ), | 
| 814 |     AF_UNIRANGE_REC(  0xA8B4,  0xA8C5 ), | 
| 815 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 816 |   }; | 
| 817 |  | 
| 818 |  | 
| 819 |   const AF_Script_UniRangeRec  af_shaw_uniranges[] = | 
| 820 |   { | 
| 821 |     AF_UNIRANGE_REC( 0x10450, 0x1047F ),   /* Shavian */ | 
| 822 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 823 |   }; | 
| 824 |  | 
| 825 |   const AF_Script_UniRangeRec  af_shaw_nonbase_uniranges[] = | 
| 826 |   { | 
| 827 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 828 |   }; | 
| 829 |  | 
| 830 |  | 
| 831 |   const AF_Script_UniRangeRec  af_sinh_uniranges[] = | 
| 832 |   { | 
| 833 |     AF_UNIRANGE_REC(  0x0D80,  0x0DFF ),  /* Sinhala */ | 
| 834 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 835 |   }; | 
| 836 |  | 
| 837 |   const AF_Script_UniRangeRec  af_sinh_nonbase_uniranges[] = | 
| 838 |   { | 
| 839 |     AF_UNIRANGE_REC(  0x0DCA,  0x0DCA ), | 
| 840 |     AF_UNIRANGE_REC(  0x0DD2,  0x0DD6 ), | 
| 841 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 842 |   }; | 
| 843 |  | 
| 844 |  | 
| 845 |   const AF_Script_UniRangeRec  af_sund_uniranges[] = | 
| 846 |   { | 
| 847 |     AF_UNIRANGE_REC(  0x1B80,  0x1BBF ), /* Sundanese            */ | 
| 848 |     AF_UNIRANGE_REC(  0x1CC0,  0x1CCF ), /* Sundanese Supplement */ | 
| 849 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 850 |   }; | 
| 851 |  | 
| 852 |   const AF_Script_UniRangeRec  af_sund_nonbase_uniranges[] = | 
| 853 |   { | 
| 854 |     AF_UNIRANGE_REC(  0x1B80,  0x1B82 ), | 
| 855 |     AF_UNIRANGE_REC(  0x1BA1,  0x1BAD ), | 
| 856 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 857 |   }; | 
| 858 |  | 
| 859 |  | 
| 860 |   const AF_Script_UniRangeRec  af_taml_uniranges[] = | 
| 861 |   { | 
| 862 |     AF_UNIRANGE_REC(  0x0B80,  0x0BFF ),  /* Tamil */ | 
| 863 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 864 |   }; | 
| 865 |  | 
| 866 |   const AF_Script_UniRangeRec  af_taml_nonbase_uniranges[] = | 
| 867 |   { | 
| 868 |     AF_UNIRANGE_REC(  0x0B82,  0x0B82 ), | 
| 869 |     AF_UNIRANGE_REC(  0x0BC0,  0x0BC2 ), | 
| 870 |     AF_UNIRANGE_REC(  0x0BCD,  0x0BCD ), | 
| 871 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 872 |   }; | 
| 873 |  | 
| 874 |  | 
| 875 |   const AF_Script_UniRangeRec  af_tavt_uniranges[] = | 
| 876 |   { | 
| 877 |     AF_UNIRANGE_REC(  0xAA80,  0xAADF ),   /* Tai Viet */ | 
| 878 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 879 |   }; | 
| 880 |  | 
| 881 |   const AF_Script_UniRangeRec  af_tavt_nonbase_uniranges[] = | 
| 882 |   { | 
| 883 |     AF_UNIRANGE_REC(  0xAAB0,  0xAAB0 ), | 
| 884 |     AF_UNIRANGE_REC(  0xAAB2,  0xAAB4 ), | 
| 885 |     AF_UNIRANGE_REC(  0xAAB7,  0xAAB8 ), | 
| 886 |     AF_UNIRANGE_REC(  0xAABE,  0xAABF ), | 
| 887 |     AF_UNIRANGE_REC(  0xAAC1,  0xAAC1 ), | 
| 888 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 889 |   }; | 
| 890 |  | 
| 891 |  | 
| 892 |   const AF_Script_UniRangeRec  af_telu_uniranges[] = | 
| 893 |   { | 
| 894 |     AF_UNIRANGE_REC(  0x0C00,  0x0C7F ),  /* Telugu */ | 
| 895 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 896 |   }; | 
| 897 |  | 
| 898 |   const AF_Script_UniRangeRec  af_telu_nonbase_uniranges[] = | 
| 899 |   { | 
| 900 |     AF_UNIRANGE_REC(  0x0C00,  0x0C00 ), | 
| 901 |     AF_UNIRANGE_REC(  0x0C04,  0x0C04 ), | 
| 902 |     AF_UNIRANGE_REC(  0x0C3E,  0x0C40 ), | 
| 903 |     AF_UNIRANGE_REC(  0x0C46,  0x0C56 ), | 
| 904 |     AF_UNIRANGE_REC(  0x0C62,  0x0C63 ), | 
| 905 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 906 |   }; | 
| 907 |  | 
| 908 |  | 
| 909 |   const AF_Script_UniRangeRec  af_thai_uniranges[] = | 
| 910 |   { | 
| 911 |     AF_UNIRANGE_REC(  0x0E00,  0x0E7F ),  /* Thai */ | 
| 912 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 913 |   }; | 
| 914 |  | 
| 915 |   const AF_Script_UniRangeRec  af_thai_nonbase_uniranges[] = | 
| 916 |   { | 
| 917 |     AF_UNIRANGE_REC(  0x0E31,  0x0E31 ), | 
| 918 |     AF_UNIRANGE_REC(  0x0E34,  0x0E3A ), | 
| 919 |     AF_UNIRANGE_REC(  0x0E47,  0x0E4E ), | 
| 920 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 921 |   }; | 
| 922 |  | 
| 923 |  | 
| 924 |   const AF_Script_UniRangeRec  af_tfng_uniranges[] = | 
| 925 |   { | 
| 926 |     AF_UNIRANGE_REC(  0x2D30,  0x2D7F ),   /* Tifinagh */ | 
| 927 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 928 |   }; | 
| 929 |  | 
| 930 |   const AF_Script_UniRangeRec  af_tfng_nonbase_uniranges[] = | 
| 931 |   { | 
| 932 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 933 |   }; | 
| 934 |  | 
| 935 |  | 
| 936 |   const AF_Script_UniRangeRec  af_vaii_uniranges[] = | 
| 937 |   { | 
| 938 |     AF_UNIRANGE_REC(  0xA500,  0xA63F ),   /* Vai */ | 
| 939 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 940 |   }; | 
| 941 |  | 
| 942 |   const AF_Script_UniRangeRec  af_vaii_nonbase_uniranges[] = | 
| 943 |   { | 
| 944 |     AF_UNIRANGE_REC( 0, 0 ) | 
| 945 |   }; | 
| 946 |  | 
| 947 |  | 
| 948 | #ifdef AF_CONFIG_OPTION_INDIC | 
| 949 |  | 
| 950 |   const AF_Script_UniRangeRec  af_limb_uniranges[] = | 
| 951 |   { | 
| 952 |     AF_UNIRANGE_REC(  0x1900,  0x194F ),  /* Limbu */ | 
| 953 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 954 |   }; | 
| 955 |  | 
| 956 |   const AF_Script_UniRangeRec  af_limb_nonbase_uniranges[] = | 
| 957 |   { | 
| 958 |     AF_UNIRANGE_REC(  0x1920,  0x1922 ), | 
| 959 |     AF_UNIRANGE_REC(  0x1927,  0x1934 ), | 
| 960 |     AF_UNIRANGE_REC(  0x1937,  0x193B ), | 
| 961 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 962 |   }; | 
| 963 |  | 
| 964 |  | 
| 965 |   const AF_Script_UniRangeRec  af_orya_uniranges[] = | 
| 966 |   { | 
| 967 |     AF_UNIRANGE_REC(  0x0B00,  0x0B7F ),  /* Oriya */ | 
| 968 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 969 |   }; | 
| 970 |  | 
| 971 |   const AF_Script_UniRangeRec  af_orya_nonbase_uniranges[] = | 
| 972 |   { | 
| 973 |     AF_UNIRANGE_REC(  0x0B01,  0x0B02 ), | 
| 974 |     AF_UNIRANGE_REC(  0x0B3C,  0x0B3C ), | 
| 975 |     AF_UNIRANGE_REC(  0x0B3F,  0x0B3F ), | 
| 976 |     AF_UNIRANGE_REC(  0x0B41,  0x0B44 ), | 
| 977 |     AF_UNIRANGE_REC(  0x0B4D,  0x0B56 ), | 
| 978 |     AF_UNIRANGE_REC(  0x0B62,  0x0B63 ), | 
| 979 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 980 |   }; | 
| 981 |  | 
| 982 |  | 
| 983 |   const AF_Script_UniRangeRec  af_sylo_uniranges[] = | 
| 984 |   { | 
| 985 |     AF_UNIRANGE_REC(  0xA800,  0xA82F ),  /* Syloti Nagri */ | 
| 986 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 987 |   }; | 
| 988 |  | 
| 989 |   const AF_Script_UniRangeRec  af_sylo_nonbase_uniranges[] = | 
| 990 |   { | 
| 991 |     AF_UNIRANGE_REC(  0xA802,  0xA802 ), | 
| 992 |     AF_UNIRANGE_REC(  0xA806,  0xA806 ), | 
| 993 |     AF_UNIRANGE_REC(  0xA80B,  0xA80B ), | 
| 994 |     AF_UNIRANGE_REC(  0xA825,  0xA826 ), | 
| 995 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 996 |   }; | 
| 997 |  | 
| 998 |  | 
| 999 |   const AF_Script_UniRangeRec  af_tibt_uniranges[] = | 
| 1000 |   { | 
| 1001 |     AF_UNIRANGE_REC(  0x0F00,  0x0FFF ),  /* Tibetan */ | 
| 1002 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 1003 |   }; | 
| 1004 |  | 
| 1005 |   const AF_Script_UniRangeRec  af_tibt_nonbase_uniranges[] = | 
| 1006 |   { | 
| 1007 |     AF_UNIRANGE_REC(  0x0F18,  0x0F19 ), | 
| 1008 |     AF_UNIRANGE_REC(  0x0F35,  0x0F35 ), | 
| 1009 |     AF_UNIRANGE_REC(  0x0F37,  0x0F37 ), | 
| 1010 |     AF_UNIRANGE_REC(  0x0F39,  0x0F39 ), | 
| 1011 |     AF_UNIRANGE_REC(  0x0F3E,  0x0F3F ), | 
| 1012 |     AF_UNIRANGE_REC(  0x0F71,  0x0F7E ), | 
| 1013 |     AF_UNIRANGE_REC(  0x0F80,  0x0F84 ), | 
| 1014 |     AF_UNIRANGE_REC(  0x0F86,  0x0F87 ), | 
| 1015 |     AF_UNIRANGE_REC(  0x0F8D,  0x0FBC ), | 
| 1016 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 1017 |   }; | 
| 1018 |  | 
| 1019 | #endif /* !AF_CONFIG_OPTION_INDIC */ | 
| 1020 |  | 
| 1021 | #ifdef AF_CONFIG_OPTION_CJK | 
| 1022 |  | 
| 1023 |   /* this corresponds to Unicode 6.0 */ | 
| 1024 |  | 
| 1025 |   const AF_Script_UniRangeRec  af_hani_uniranges[] = | 
| 1026 |   { | 
| 1027 |     AF_UNIRANGE_REC(  0x1100,  0x11FF ),  /* Hangul Jamo                             */ | 
| 1028 |     AF_UNIRANGE_REC(  0x2E80,  0x2EFF ),  /* CJK Radicals Supplement                 */ | 
| 1029 |     AF_UNIRANGE_REC(  0x2F00,  0x2FDF ),  /* Kangxi Radicals                         */ | 
| 1030 |     AF_UNIRANGE_REC(  0x2FF0,  0x2FFF ),  /* Ideographic Description Characters      */ | 
| 1031 |     AF_UNIRANGE_REC(  0x3000,  0x303F ),  /* CJK Symbols and Punctuation             */ | 
| 1032 |     AF_UNIRANGE_REC(  0x3040,  0x309F ),  /* Hiragana                                */ | 
| 1033 |     AF_UNIRANGE_REC(  0x30A0,  0x30FF ),  /* Katakana                                */ | 
| 1034 |     AF_UNIRANGE_REC(  0x3100,  0x312F ),  /* Bopomofo                                */ | 
| 1035 |     AF_UNIRANGE_REC(  0x3130,  0x318F ),  /* Hangul Compatibility Jamo               */ | 
| 1036 |     AF_UNIRANGE_REC(  0x3190,  0x319F ),  /* Kanbun                                  */ | 
| 1037 |     AF_UNIRANGE_REC(  0x31A0,  0x31BF ),  /* Bopomofo Extended                       */ | 
| 1038 |     AF_UNIRANGE_REC(  0x31C0,  0x31EF ),  /* CJK Strokes                             */ | 
| 1039 |     AF_UNIRANGE_REC(  0x31F0,  0x31FF ),  /* Katakana Phonetic Extensions            */ | 
| 1040 |     AF_UNIRANGE_REC(  0x3300,  0x33FF ),  /* CJK Compatibility                       */ | 
| 1041 |     AF_UNIRANGE_REC(  0x3400,  0x4DBF ),  /* CJK Unified Ideographs Extension A      */ | 
| 1042 |     AF_UNIRANGE_REC(  0x4DC0,  0x4DFF ),  /* Yijing Hexagram Symbols                 */ | 
| 1043 |     AF_UNIRANGE_REC(  0x4E00,  0x9FFF ),  /* CJK Unified Ideographs                  */ | 
| 1044 |     AF_UNIRANGE_REC(  0xA960,  0xA97F ),  /* Hangul Jamo Extended-A                  */ | 
| 1045 |     AF_UNIRANGE_REC(  0xAC00,  0xD7AF ),  /* Hangul Syllables                        */ | 
| 1046 |     AF_UNIRANGE_REC(  0xD7B0,  0xD7FF ),  /* Hangul Jamo Extended-B                  */ | 
| 1047 |     AF_UNIRANGE_REC(  0xF900,  0xFAFF ),  /* CJK Compatibility Ideographs            */ | 
| 1048 |     AF_UNIRANGE_REC(  0xFE10,  0xFE1F ),  /* Vertical forms                          */ | 
| 1049 |     AF_UNIRANGE_REC(  0xFE30,  0xFE4F ),  /* CJK Compatibility Forms                 */ | 
| 1050 |     AF_UNIRANGE_REC(  0xFF00,  0xFFEF ),  /* Halfwidth and Fullwidth Forms           */ | 
| 1051 |     AF_UNIRANGE_REC( 0x1B000, 0x1B0FF ),  /* Kana Supplement                         */ | 
| 1052 |     AF_UNIRANGE_REC( 0x1B100, 0x1B12F ),  /* Kana Extended-A                         */ | 
| 1053 |     AF_UNIRANGE_REC( 0x1D300, 0x1D35F ),  /* Tai Xuan Hing Symbols                   */ | 
| 1054 |     AF_UNIRANGE_REC( 0x20000, 0x2A6DF ),  /* CJK Unified Ideographs Extension B      */ | 
| 1055 |     AF_UNIRANGE_REC( 0x2A700, 0x2B73F ),  /* CJK Unified Ideographs Extension C      */ | 
| 1056 |     AF_UNIRANGE_REC( 0x2B740, 0x2B81F ),  /* CJK Unified Ideographs Extension D      */ | 
| 1057 |     AF_UNIRANGE_REC( 0x2B820, 0x2CEAF ),  /* CJK Unified Ideographs Extension E      */ | 
| 1058 |     AF_UNIRANGE_REC( 0x2CEB0, 0x2EBEF ),  /* CJK Unified Ideographs Extension F      */ | 
| 1059 |     AF_UNIRANGE_REC( 0x2F800, 0x2FA1F ),  /* CJK Compatibility Ideographs Supplement */ | 
| 1060 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 1061 |   }; | 
| 1062 |  | 
| 1063 |   const AF_Script_UniRangeRec  af_hani_nonbase_uniranges[] = | 
| 1064 |   { | 
| 1065 |     AF_UNIRANGE_REC(  0x302A,  0x302F ), | 
| 1066 |     AF_UNIRANGE_REC(  0x3190,  0x319F ), | 
| 1067 |     AF_UNIRANGE_REC(       0,       0 ) | 
| 1068 |   }; | 
| 1069 |  | 
| 1070 | #endif /* !AF_CONFIG_OPTION_CJK */ | 
| 1071 |  | 
| 1072 | /* END */ | 
| 1073 |  |