1 /****************************************************************************
   2  *
   3  * afranges.c
   4  *
   5  *   Auto-fitter Unicode script ranges (body).
   6  *
   7  * Copyright (C) 2013-2019 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_mymr_uniranges[] =
 668   {
 669     AF_UNIRANGE_REC(  0x1000,  0x109F ),    /* Myanmar            */
 670     AF_UNIRANGE_REC(  0xA9E0,  0xA9FF ),    /* Myanmar Extended-B */
 671     AF_UNIRANGE_REC(  0xAA60,  0xAA7F ),    /* Myanmar Extended-A */
 672     AF_UNIRANGE_REC(       0,       0 )
 673   };
 674 
 675   const AF_Script_UniRangeRec  af_mymr_nonbase_uniranges[] =
 676   {
 677     AF_UNIRANGE_REC(  0x102D,  0x1030 ),
 678     AF_UNIRANGE_REC(  0x1032,  0x1037 ),
 679     AF_UNIRANGE_REC(  0x103A,  0x103A ),
 680     AF_UNIRANGE_REC(  0x103D,  0x103E ),
 681     AF_UNIRANGE_REC(  0x1058,  0x1059 ),
 682     AF_UNIRANGE_REC(  0x105E,  0x1060 ),
 683     AF_UNIRANGE_REC(  0x1071,  0x1074 ),
 684     AF_UNIRANGE_REC(  0x1082,  0x1082 ),
 685     AF_UNIRANGE_REC(  0x1085,  0x1086 ),
 686     AF_UNIRANGE_REC(  0x108D,  0x108D ),
 687     AF_UNIRANGE_REC(  0xA9E5,  0xA9E5 ),
 688     AF_UNIRANGE_REC(  0xAA7C,  0xAA7C ),
 689     AF_UNIRANGE_REC(       0,       0 )
 690   };
 691 
 692 
 693   const AF_Script_UniRangeRec  af_nkoo_uniranges[] =
 694   {
 695     AF_UNIRANGE_REC(  0x07C0,  0x07FF ),    /* N'Ko */
 696     AF_UNIRANGE_REC(       0,       0 )
 697   };
 698 
 699   const AF_Script_UniRangeRec  af_nkoo_nonbase_uniranges[] =
 700   {
 701     AF_UNIRANGE_REC(  0x07EB,  0x07F5 ),
 702     AF_UNIRANGE_REC(  0x07FD,  0x07FD ),
 703     AF_UNIRANGE_REC(       0,       0 )
 704   };
 705 
 706 
 707   const AF_Script_UniRangeRec  af_none_uniranges[] =
 708   {
 709     AF_UNIRANGE_REC( 0, 0 )
 710   };
 711 
 712   const AF_Script_UniRangeRec  af_none_nonbase_uniranges[] =
 713   {
 714     AF_UNIRANGE_REC( 0, 0 )
 715   };
 716 
 717 
 718   const AF_Script_UniRangeRec  af_olck_uniranges[] =
 719   {
 720     AF_UNIRANGE_REC(  0x1C50,  0x1C7F ),    /* Ol Chiki */
 721     AF_UNIRANGE_REC(       0,       0 )
 722   };
 723 
 724   const AF_Script_UniRangeRec  af_olck_nonbase_uniranges[] =
 725   {
 726     AF_UNIRANGE_REC( 0, 0 )
 727   };
 728 
 729 
 730   const AF_Script_UniRangeRec  af_orkh_uniranges[] =
 731   {
 732     AF_UNIRANGE_REC( 0x10C00, 0x10C4F ),    /* Old Turkic */
 733     AF_UNIRANGE_REC(       0,       0 )
 734   };
 735 
 736   const AF_Script_UniRangeRec  af_orkh_nonbase_uniranges[] =
 737   {
 738     AF_UNIRANGE_REC( 0, 0 )
 739   };
 740 
 741 
 742   const AF_Script_UniRangeRec  af_osge_uniranges[] =
 743   {
 744     AF_UNIRANGE_REC( 0x104B0, 0x104FF ),    /* Osage */
 745     AF_UNIRANGE_REC(       0,       0 )
 746   };
 747 
 748   const AF_Script_UniRangeRec  af_osge_nonbase_uniranges[] =
 749   {
 750     AF_UNIRANGE_REC( 0, 0 )
 751   };
 752 
 753 
 754   const AF_Script_UniRangeRec  af_osma_uniranges[] =
 755   {
 756     AF_UNIRANGE_REC( 0x10480, 0x104AF ),   /* Osmanya */
 757     AF_UNIRANGE_REC(       0,       0 )
 758   };
 759 
 760   const AF_Script_UniRangeRec  af_osma_nonbase_uniranges[] =
 761   {
 762     AF_UNIRANGE_REC( 0, 0 )
 763   };
 764 
 765 
 766   const AF_Script_UniRangeRec  af_saur_uniranges[] =
 767   {
 768     AF_UNIRANGE_REC(  0xA880,  0xA8DF ),   /* Saurashtra */
 769     AF_UNIRANGE_REC(       0,       0 )
 770   };
 771 
 772   const AF_Script_UniRangeRec  af_saur_nonbase_uniranges[] =
 773   {
 774     AF_UNIRANGE_REC(  0xA880,  0xA881 ),
 775     AF_UNIRANGE_REC(  0xA8B4,  0xA8C5 ),
 776     AF_UNIRANGE_REC(       0,       0 )
 777   };
 778 
 779 
 780   const AF_Script_UniRangeRec  af_shaw_uniranges[] =
 781   {
 782     AF_UNIRANGE_REC( 0x10450, 0x1047F ),   /* Shavian */
 783     AF_UNIRANGE_REC(       0,       0 )
 784   };
 785 
 786   const AF_Script_UniRangeRec  af_shaw_nonbase_uniranges[] =
 787   {
 788     AF_UNIRANGE_REC( 0, 0 )
 789   };
 790 
 791 
 792   const AF_Script_UniRangeRec  af_sinh_uniranges[] =
 793   {
 794     AF_UNIRANGE_REC(  0x0D80,  0x0DFF ),  /* Sinhala */
 795     AF_UNIRANGE_REC(       0,       0 )
 796   };
 797 
 798   const AF_Script_UniRangeRec  af_sinh_nonbase_uniranges[] =
 799   {
 800     AF_UNIRANGE_REC(  0x0DCA,  0x0DCA ),
 801     AF_UNIRANGE_REC(  0x0DD2,  0x0DD6 ),
 802     AF_UNIRANGE_REC(       0,       0 )
 803   };
 804 
 805 
 806   const AF_Script_UniRangeRec  af_sund_uniranges[] =
 807   {
 808     AF_UNIRANGE_REC(  0x1B80,  0x1BBF ), /* Sundanese            */
 809     AF_UNIRANGE_REC(  0x1CC0,  0x1CCF ), /* Sundanese Supplement */
 810     AF_UNIRANGE_REC(       0,       0 )
 811   };
 812 
 813   const AF_Script_UniRangeRec  af_sund_nonbase_uniranges[] =
 814   {
 815     AF_UNIRANGE_REC(  0x1B80,  0x1B82 ),
 816     AF_UNIRANGE_REC(  0x1BA1,  0x1BAD ),
 817     AF_UNIRANGE_REC(       0,       0 )
 818   };
 819 
 820 
 821   const AF_Script_UniRangeRec  af_taml_uniranges[] =
 822   {
 823     AF_UNIRANGE_REC(  0x0B80,  0x0BFF ),  /* Tamil */
 824     AF_UNIRANGE_REC(       0,       0 )
 825   };
 826 
 827   const AF_Script_UniRangeRec  af_taml_nonbase_uniranges[] =
 828   {
 829     AF_UNIRANGE_REC(  0x0B82,  0x0B82 ),
 830     AF_UNIRANGE_REC(  0x0BC0,  0x0BC2 ),
 831     AF_UNIRANGE_REC(  0x0BCD,  0x0BCD ),
 832     AF_UNIRANGE_REC(       0,       0 )
 833   };
 834 
 835 
 836   const AF_Script_UniRangeRec  af_tavt_uniranges[] =
 837   {
 838     AF_UNIRANGE_REC(  0xAA80,  0xAADF ),   /* Tai Viet */
 839     AF_UNIRANGE_REC(       0,       0 )
 840   };
 841 
 842   const AF_Script_UniRangeRec  af_tavt_nonbase_uniranges[] =
 843   {
 844     AF_UNIRANGE_REC(  0xAAB0,  0xAAB0 ),
 845     AF_UNIRANGE_REC(  0xAAB2,  0xAAB4 ),
 846     AF_UNIRANGE_REC(  0xAAB7,  0xAAB8 ),
 847     AF_UNIRANGE_REC(  0xAABE,  0xAABF ),
 848     AF_UNIRANGE_REC(  0xAAC1,  0xAAC1 ),
 849     AF_UNIRANGE_REC(       0,       0 )
 850   };
 851 
 852 
 853   const AF_Script_UniRangeRec  af_telu_uniranges[] =
 854   {
 855     AF_UNIRANGE_REC(  0x0C00,  0x0C7F ),  /* Telugu */
 856     AF_UNIRANGE_REC(       0,       0 )
 857   };
 858 
 859   const AF_Script_UniRangeRec  af_telu_nonbase_uniranges[] =
 860   {
 861     AF_UNIRANGE_REC(  0x0C00,  0x0C00 ),
 862     AF_UNIRANGE_REC(  0x0C04,  0x0C04 ),
 863     AF_UNIRANGE_REC(  0x0C3E,  0x0C40 ),
 864     AF_UNIRANGE_REC(  0x0C46,  0x0C56 ),
 865     AF_UNIRANGE_REC(  0x0C62,  0x0C63 ),
 866     AF_UNIRANGE_REC(       0,       0 )
 867   };
 868 
 869 
 870   const AF_Script_UniRangeRec  af_thai_uniranges[] =
 871   {
 872     AF_UNIRANGE_REC(  0x0E00,  0x0E7F ),  /* Thai */
 873     AF_UNIRANGE_REC(       0,       0 )
 874   };
 875 
 876   const AF_Script_UniRangeRec  af_thai_nonbase_uniranges[] =
 877   {
 878     AF_UNIRANGE_REC(  0x0E31,  0x0E31 ),
 879     AF_UNIRANGE_REC(  0x0E34,  0x0E3A ),
 880     AF_UNIRANGE_REC(  0x0E47,  0x0E4E ),
 881     AF_UNIRANGE_REC(       0,       0 )
 882   };
 883 
 884 
 885   const AF_Script_UniRangeRec  af_tfng_uniranges[] =
 886   {
 887     AF_UNIRANGE_REC(  0x2D30,  0x2D7F ),   /* Tifinagh */
 888     AF_UNIRANGE_REC(       0,       0 )
 889   };
 890 
 891   const AF_Script_UniRangeRec  af_tfng_nonbase_uniranges[] =
 892   {
 893     AF_UNIRANGE_REC( 0, 0 )
 894   };
 895 
 896 
 897   const AF_Script_UniRangeRec  af_vaii_uniranges[] =
 898   {
 899     AF_UNIRANGE_REC(  0xA500,  0xA63F ),   /* Vai */
 900     AF_UNIRANGE_REC(       0,       0 )
 901   };
 902 
 903   const AF_Script_UniRangeRec  af_vaii_nonbase_uniranges[] =
 904   {
 905     AF_UNIRANGE_REC( 0, 0 )
 906   };
 907 
 908 
 909 #ifdef AF_CONFIG_OPTION_INDIC
 910 
 911   const AF_Script_UniRangeRec  af_limb_uniranges[] =
 912   {
 913     AF_UNIRANGE_REC(  0x1900,  0x194F ),  /* Limbu */
 914     AF_UNIRANGE_REC(       0,       0 )
 915   };
 916 
 917   const AF_Script_UniRangeRec  af_limb_nonbase_uniranges[] =
 918   {
 919     AF_UNIRANGE_REC(  0x1920,  0x1922 ),
 920     AF_UNIRANGE_REC(  0x1927,  0x1934 ),
 921     AF_UNIRANGE_REC(  0x1937,  0x193B ),
 922     AF_UNIRANGE_REC(       0,       0 )
 923   };
 924 
 925 
 926   const AF_Script_UniRangeRec  af_orya_uniranges[] =
 927   {
 928     AF_UNIRANGE_REC(  0x0B00,  0x0B7F ),  /* Oriya */
 929     AF_UNIRANGE_REC(       0,       0 )
 930   };
 931 
 932   const AF_Script_UniRangeRec  af_orya_nonbase_uniranges[] =
 933   {
 934     AF_UNIRANGE_REC(  0x0B01,  0x0B02 ),
 935     AF_UNIRANGE_REC(  0x0B3C,  0x0B3C ),
 936     AF_UNIRANGE_REC(  0x0B3F,  0x0B3F ),
 937     AF_UNIRANGE_REC(  0x0B41,  0x0B44 ),
 938     AF_UNIRANGE_REC(  0x0B4D,  0x0B56 ),
 939     AF_UNIRANGE_REC(  0x0B62,  0x0B63 ),
 940     AF_UNIRANGE_REC(       0,       0 )
 941   };
 942 
 943 
 944   const AF_Script_UniRangeRec  af_sylo_uniranges[] =
 945   {
 946     AF_UNIRANGE_REC(  0xA800,  0xA82F ),  /* Syloti Nagri */
 947     AF_UNIRANGE_REC(       0,       0 )
 948   };
 949 
 950   const AF_Script_UniRangeRec  af_sylo_nonbase_uniranges[] =
 951   {
 952     AF_UNIRANGE_REC(  0xA802,  0xA802 ),
 953     AF_UNIRANGE_REC(  0xA806,  0xA806 ),
 954     AF_UNIRANGE_REC(  0xA80B,  0xA80B ),
 955     AF_UNIRANGE_REC(  0xA825,  0xA826 ),
 956     AF_UNIRANGE_REC(       0,       0 )
 957   };
 958 
 959 
 960   const AF_Script_UniRangeRec  af_tibt_uniranges[] =
 961   {
 962     AF_UNIRANGE_REC(  0x0F00,  0x0FFF ),  /* Tibetan */
 963     AF_UNIRANGE_REC(       0,       0 )
 964   };
 965 
 966   const AF_Script_UniRangeRec  af_tibt_nonbase_uniranges[] =
 967   {
 968     AF_UNIRANGE_REC(  0x0F18,  0x0F19 ),
 969     AF_UNIRANGE_REC(  0x0F35,  0x0F35 ),
 970     AF_UNIRANGE_REC(  0x0F37,  0x0F37 ),
 971     AF_UNIRANGE_REC(  0x0F39,  0x0F39 ),
 972     AF_UNIRANGE_REC(  0x0F3E,  0x0F3F ),
 973     AF_UNIRANGE_REC(  0x0F71,  0x0F7E ),
 974     AF_UNIRANGE_REC(  0x0F80,  0x0F84 ),
 975     AF_UNIRANGE_REC(  0x0F86,  0x0F87 ),
 976     AF_UNIRANGE_REC(  0x0F8D,  0x0FBC ),
 977     AF_UNIRANGE_REC(       0,       0 )
 978   };
 979 
 980 #endif /* !AF_CONFIG_OPTION_INDIC */
 981 
 982 #ifdef AF_CONFIG_OPTION_CJK
 983 
 984   /* this corresponds to Unicode 6.0 */
 985 
 986   const AF_Script_UniRangeRec  af_hani_uniranges[] =
 987   {
 988     AF_UNIRANGE_REC(  0x1100,  0x11FF ),  /* Hangul Jamo                             */
 989     AF_UNIRANGE_REC(  0x2E80,  0x2EFF ),  /* CJK Radicals Supplement                 */
 990     AF_UNIRANGE_REC(  0x2F00,  0x2FDF ),  /* Kangxi Radicals                         */
 991     AF_UNIRANGE_REC(  0x2FF0,  0x2FFF ),  /* Ideographic Description Characters      */
 992     AF_UNIRANGE_REC(  0x3000,  0x303F ),  /* CJK Symbols and Punctuation             */
 993     AF_UNIRANGE_REC(  0x3040,  0x309F ),  /* Hiragana                                */
 994     AF_UNIRANGE_REC(  0x30A0,  0x30FF ),  /* Katakana                                */
 995     AF_UNIRANGE_REC(  0x3100,  0x312F ),  /* Bopomofo                                */
 996     AF_UNIRANGE_REC(  0x3130,  0x318F ),  /* Hangul Compatibility Jamo               */
 997     AF_UNIRANGE_REC(  0x3190,  0x319F ),  /* Kanbun                                  */
 998     AF_UNIRANGE_REC(  0x31A0,  0x31BF ),  /* Bopomofo Extended                       */
 999     AF_UNIRANGE_REC(  0x31C0,  0x31EF ),  /* CJK Strokes                             */
1000     AF_UNIRANGE_REC(  0x31F0,  0x31FF ),  /* Katakana Phonetic Extensions            */
1001     AF_UNIRANGE_REC(  0x3300,  0x33FF ),  /* CJK Compatibility                       */
1002     AF_UNIRANGE_REC(  0x3400,  0x4DBF ),  /* CJK Unified Ideographs Extension A      */
1003     AF_UNIRANGE_REC(  0x4DC0,  0x4DFF ),  /* Yijing Hexagram Symbols                 */
1004     AF_UNIRANGE_REC(  0x4E00,  0x9FFF ),  /* CJK Unified Ideographs                  */
1005     AF_UNIRANGE_REC(  0xA960,  0xA97F ),  /* Hangul Jamo Extended-A                  */
1006     AF_UNIRANGE_REC(  0xAC00,  0xD7AF ),  /* Hangul Syllables                        */
1007     AF_UNIRANGE_REC(  0xD7B0,  0xD7FF ),  /* Hangul Jamo Extended-B                  */
1008     AF_UNIRANGE_REC(  0xF900,  0xFAFF ),  /* CJK Compatibility Ideographs            */
1009     AF_UNIRANGE_REC(  0xFE10,  0xFE1F ),  /* Vertical forms                          */
1010     AF_UNIRANGE_REC(  0xFE30,  0xFE4F ),  /* CJK Compatibility Forms                 */
1011     AF_UNIRANGE_REC(  0xFF00,  0xFFEF ),  /* Halfwidth and Fullwidth Forms           */
1012     AF_UNIRANGE_REC( 0x1B000, 0x1B0FF ),  /* Kana Supplement                         */
1013     AF_UNIRANGE_REC( 0x1B100, 0x1B12F ),  /* Kana Extended-A                         */
1014     AF_UNIRANGE_REC( 0x1D300, 0x1D35F ),  /* Tai Xuan Hing Symbols                   */
1015     AF_UNIRANGE_REC( 0x20000, 0x2A6DF ),  /* CJK Unified Ideographs Extension B      */
1016     AF_UNIRANGE_REC( 0x2A700, 0x2B73F ),  /* CJK Unified Ideographs Extension C      */
1017     AF_UNIRANGE_REC( 0x2B740, 0x2B81F ),  /* CJK Unified Ideographs Extension D      */
1018     AF_UNIRANGE_REC( 0x2B820, 0x2CEAF ),  /* CJK Unified Ideographs Extension E      */
1019     AF_UNIRANGE_REC( 0x2CEB0, 0x2EBEF ),  /* CJK Unified Ideographs Extension F      */
1020     AF_UNIRANGE_REC( 0x2F800, 0x2FA1F ),  /* CJK Compatibility Ideographs Supplement */
1021     AF_UNIRANGE_REC(       0,       0 )
1022   };
1023 
1024   const AF_Script_UniRangeRec  af_hani_nonbase_uniranges[] =
1025   {
1026     AF_UNIRANGE_REC(  0x302A,  0x302F ),
1027     AF_UNIRANGE_REC(  0x3190,  0x319F ),
1028     AF_UNIRANGE_REC(       0,       0 )
1029   };
1030 
1031 #endif /* !AF_CONFIG_OPTION_CJK */
1032 
1033 /* END */