Home | History | Annotate | Download | only in autofit
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  afranges.c                                                             */
      4 /*                                                                         */
      5 /*    Auto-fitter Unicode script ranges (body).                            */
      6 /*                                                                         */
      7 /*  Copyright 2013-2018 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(  0x08E3,  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(       0,       0 )
    167   };
    168 
    169 
    170   const AF_Script_UniRangeRec  af_buhd_uniranges[] =
    171   {
    172     AF_UNIRANGE_REC(  0x1740,  0x175F ),   /* Buhid */
    173     AF_UNIRANGE_REC(       0,       0 )
    174   };
    175 
    176   const AF_Script_UniRangeRec  af_buhd_nonbase_uniranges[] =
    177   {
    178     AF_UNIRANGE_REC(  0x1752,  0x1753 ),
    179     AF_UNIRANGE_REC(       0,       0 )
    180   };
    181 
    182 
    183   const AF_Script_UniRangeRec  af_cakm_uniranges[] =
    184   {
    185     AF_UNIRANGE_REC( 0x11100, 0x1114F ),   /* Chakma */
    186     AF_UNIRANGE_REC(       0,       0 )
    187   };
    188 
    189   const AF_Script_UniRangeRec  af_cakm_nonbase_uniranges[] =
    190   {
    191     AF_UNIRANGE_REC( 0x11100, 0x11102 ),
    192     AF_UNIRANGE_REC( 0x11127, 0x11134 ),
    193     AF_UNIRANGE_REC(       0,       0 )
    194   };
    195 
    196 
    197   const AF_Script_UniRangeRec  af_cans_uniranges[] =
    198   {
    199     AF_UNIRANGE_REC(  0x1400,  0x167F ), /* Unified Canadian Aboriginal Syllabics          */
    200     AF_UNIRANGE_REC(  0x18B0,  0x18FF ), /* Unified Canadian Aboriginal Syllabics Extended */
    201     AF_UNIRANGE_REC(       0,       0 )
    202   };
    203 
    204   const AF_Script_UniRangeRec  af_cans_nonbase_uniranges[] =
    205   {
    206     AF_UNIRANGE_REC( 0, 0 )
    207   };
    208 
    209 
    210   const AF_Script_UniRangeRec  af_cari_uniranges[] =
    211   {
    212     AF_UNIRANGE_REC( 0x102A0, 0x102DF ),   /* Carian */
    213     AF_UNIRANGE_REC(       0,       0 )
    214   };
    215 
    216   const AF_Script_UniRangeRec  af_cari_nonbase_uniranges[] =
    217   {
    218     AF_UNIRANGE_REC( 0, 0 )
    219   };
    220 
    221 
    222   const AF_Script_UniRangeRec  af_cher_uniranges[] =
    223   {
    224     AF_UNIRANGE_REC(  0x13A0,  0x13FF ),  /* Cherokee            */
    225     AF_UNIRANGE_REC(  0xAB70,  0xABBF ),  /* Cherokee Supplement */
    226     AF_UNIRANGE_REC(       0,       0 )
    227   };
    228 
    229   const AF_Script_UniRangeRec  af_cher_nonbase_uniranges[] =
    230   {
    231     AF_UNIRANGE_REC( 0, 0 )
    232   };
    233 
    234 
    235   const AF_Script_UniRangeRec  af_copt_uniranges[] =
    236   {
    237     AF_UNIRANGE_REC(  0x2C80,  0x2CFF ),   /* Coptic */
    238     AF_UNIRANGE_REC(       0,       0 )
    239   };
    240 
    241   const AF_Script_UniRangeRec  af_copt_nonbase_uniranges[] =
    242   {
    243     AF_UNIRANGE_REC(  0x2CEF,  0x2CF1 ),
    244     AF_UNIRANGE_REC(       0,       0 )
    245   };
    246 
    247 
    248   const AF_Script_UniRangeRec  af_cprt_uniranges[] =
    249   {
    250     AF_UNIRANGE_REC( 0x10800, 0x1083F ),   /* Cypriot */
    251     AF_UNIRANGE_REC(       0,       0 )
    252   };
    253 
    254   const AF_Script_UniRangeRec  af_cprt_nonbase_uniranges[] =
    255   {
    256     AF_UNIRANGE_REC( 0, 0 )
    257   };
    258 
    259 
    260   const AF_Script_UniRangeRec  af_cyrl_uniranges[] =
    261   {
    262     AF_UNIRANGE_REC(  0x0400,  0x04FF ),  /* Cyrillic            */
    263     AF_UNIRANGE_REC(  0x0500,  0x052F ),  /* Cyrillic Supplement */
    264     AF_UNIRANGE_REC(  0x2DE0,  0x2DFF ),  /* Cyrillic Extended-A */
    265     AF_UNIRANGE_REC(  0xA640,  0xA69F ),  /* Cyrillic Extended-B */
    266     AF_UNIRANGE_REC(  0x1C80,  0x1C8F ),  /* Cyrillic Extended-C */
    267     AF_UNIRANGE_REC(       0,       0 )
    268   };
    269 
    270   const AF_Script_UniRangeRec  af_cyrl_nonbase_uniranges[] =
    271   {
    272     AF_UNIRANGE_REC(  0x0483,  0x0489 ),
    273     AF_UNIRANGE_REC(  0x2DE0,  0x2DFF ),
    274     AF_UNIRANGE_REC(  0xA66F,  0xA67F ),
    275     AF_UNIRANGE_REC(  0xA69E,  0xA69F ),
    276     AF_UNIRANGE_REC(       0,       0 )
    277   };
    278 
    279 
    280   /* There are some characters in the Devanagari Unicode block that are    */
    281   /* generic to Indic scripts; we omit them so that their presence doesn't */
    282   /* trigger Devanagari.                                                   */
    283 
    284   const AF_Script_UniRangeRec  af_deva_uniranges[] =
    285   {
    286     AF_UNIRANGE_REC(  0x0900,  0x093B ),  /* Devanagari          */
    287     /* omitting U+093C nukta */
    288     AF_UNIRANGE_REC(  0x093D,  0x0950 ),  /* ... continued       */
    289     /* omitting U+0951 udatta, U+0952 anudatta */
    290     AF_UNIRANGE_REC(  0x0953,  0x0963 ),  /* ... continued       */
    291     /* omitting U+0964 danda, U+0965 double danda */
    292     AF_UNIRANGE_REC(  0x0966,  0x097F ),  /* ... continued       */
    293     AF_UNIRANGE_REC(  0x20B9,  0x20B9 ),  /* (new) Rupee sign    */
    294     AF_UNIRANGE_REC(  0xA8E0,  0xA8FF ),  /* Devanagari Extended */
    295     AF_UNIRANGE_REC(       0,       0 )
    296   };
    297 
    298   const AF_Script_UniRangeRec  af_deva_nonbase_uniranges[] =
    299   {
    300     AF_UNIRANGE_REC(  0x0900,  0x0902 ),
    301     AF_UNIRANGE_REC(  0x093A,  0x093A ),
    302     AF_UNIRANGE_REC(  0x0941,  0x0948 ),
    303     AF_UNIRANGE_REC(  0x094D,  0x094D ),
    304     AF_UNIRANGE_REC(  0x0953,  0x0957 ),
    305     AF_UNIRANGE_REC(  0x0962,  0x0963 ),
    306     AF_UNIRANGE_REC(  0xA8E0,  0xA8F1 ),
    307     AF_UNIRANGE_REC(       0,       0 )
    308   };
    309 
    310 
    311   const AF_Script_UniRangeRec  af_dsrt_uniranges[] =
    312   {
    313     AF_UNIRANGE_REC( 0x10400, 0x1044F ),  /* Deseret */
    314     AF_UNIRANGE_REC(       0,       0 )
    315   };
    316 
    317   const AF_Script_UniRangeRec  af_dsrt_nonbase_uniranges[] =
    318   {
    319     AF_UNIRANGE_REC( 0, 0 )
    320   };
    321 
    322 
    323   const AF_Script_UniRangeRec  af_ethi_uniranges[] =
    324   {
    325     AF_UNIRANGE_REC(  0x1200,  0x137F ),  /* Ethiopic            */
    326     AF_UNIRANGE_REC(  0x1380,  0x139F ),  /* Ethiopic Supplement */
    327     AF_UNIRANGE_REC(  0x2D80,  0x2DDF ),  /* Ethiopic Extended   */
    328     AF_UNIRANGE_REC(  0xAB00,  0xAB2F ),  /* Ethiopic Extended-A */
    329     AF_UNIRANGE_REC(       0,       0 )
    330   };
    331 
    332   const AF_Script_UniRangeRec  af_ethi_nonbase_uniranges[] =
    333   {
    334     AF_UNIRANGE_REC(  0x135D,  0x135F ),
    335     AF_UNIRANGE_REC(       0,       0 )
    336   };
    337 
    338 
    339   const AF_Script_UniRangeRec  af_geor_uniranges[] =
    340   {
    341     AF_UNIRANGE_REC(  0x10D0,  0x10FF ),  /* Georgian (Mkhedruli) */
    342 #if 0
    343     /* the following range is proposed for inclusion in Unicode */
    344     AF_UNIRANGE_REC(  0x1C90,  0x1CBF ),  /* Georgian (Mtavruli)  */
    345 #endif
    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 (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(       0,       0 )
    429   };
    430 
    431 
    432   const AF_Script_UniRangeRec  af_guru_uniranges[] =
    433   {
    434     AF_UNIRANGE_REC(  0x0A00,  0x0A7F ),  /* Gurmukhi */
    435     AF_UNIRANGE_REC(       0,       0 )
    436   };
    437 
    438   const AF_Script_UniRangeRec  af_guru_nonbase_uniranges[] =
    439   {
    440     AF_UNIRANGE_REC(  0x0A01,  0x0A02 ),
    441     AF_UNIRANGE_REC(  0x0A3C,  0x0A3C ),
    442     AF_UNIRANGE_REC(  0x0A41,  0x0A51 ),
    443     AF_UNIRANGE_REC(  0x0A70,  0x0A71 ),
    444     AF_UNIRANGE_REC(  0x0A75,  0x0A75 ),
    445     AF_UNIRANGE_REC(       0,       0 )
    446   };
    447 
    448 
    449   const AF_Script_UniRangeRec  af_hebr_uniranges[] =
    450   {
    451     AF_UNIRANGE_REC(  0x0590,  0x05FF ),  /* Hebrew                          */
    452     AF_UNIRANGE_REC(  0xFB1D,  0xFB4F ),  /* Alphab. Present. Forms (Hebrew) */
    453     AF_UNIRANGE_REC(       0,       0 )
    454   };
    455 
    456   const AF_Script_UniRangeRec  af_hebr_nonbase_uniranges[] =
    457   {
    458     AF_UNIRANGE_REC(  0x0591,  0x05BF ),
    459     AF_UNIRANGE_REC(  0x05C1,  0x05C2 ),
    460     AF_UNIRANGE_REC(  0x05C4,  0x05C5 ),
    461     AF_UNIRANGE_REC(  0x05C7,  0x05C7 ),
    462     AF_UNIRANGE_REC(  0xFB1E,  0xFB1E ),
    463     AF_UNIRANGE_REC(       0,       0 )
    464   };
    465 
    466 
    467   const AF_Script_UniRangeRec  af_kali_uniranges[] =
    468   {
    469     AF_UNIRANGE_REC(  0xA900,  0xA92F ),   /* Kayah Li */
    470     AF_UNIRANGE_REC(       0,       0 )
    471   };
    472 
    473   const AF_Script_UniRangeRec  af_kali_nonbase_uniranges[] =
    474   {
    475     AF_UNIRANGE_REC(  0xA926,  0xA92D ),
    476     AF_UNIRANGE_REC(       0,       0 )
    477   };
    478 
    479 
    480   const AF_Script_UniRangeRec  af_knda_uniranges[] =
    481   {
    482     AF_UNIRANGE_REC(  0x0C80,  0x0CFF ),  /* Kannada */
    483     AF_UNIRANGE_REC(       0,       0 )
    484   };
    485 
    486   const AF_Script_UniRangeRec  af_knda_nonbase_uniranges[] =
    487   {
    488     AF_UNIRANGE_REC(  0x0C81,  0x0C81 ),
    489     AF_UNIRANGE_REC(  0x0CBC,  0x0CBC ),
    490     AF_UNIRANGE_REC(  0x0CBF,  0x0CBF ),
    491     AF_UNIRANGE_REC(  0x0CC6,  0x0CC6 ),
    492     AF_UNIRANGE_REC(  0x0CCC,  0x0CCD ),
    493     AF_UNIRANGE_REC(  0x0CE2,  0x0CE3 ),
    494     AF_UNIRANGE_REC(       0,       0 )
    495   };
    496 
    497 
    498   const AF_Script_UniRangeRec  af_khmr_uniranges[] =
    499   {
    500     AF_UNIRANGE_REC(  0x1780,  0x17FF ),  /* Khmer */
    501     AF_UNIRANGE_REC(       0,       0 )
    502   };
    503 
    504   const AF_Script_UniRangeRec  af_khmr_nonbase_uniranges[] =
    505   {
    506     AF_UNIRANGE_REC(  0x17B7,  0x17BD ),
    507     AF_UNIRANGE_REC(  0x17C6,  0x17C6 ),
    508     AF_UNIRANGE_REC(  0x17C9,  0x17D3 ),
    509     AF_UNIRANGE_REC(  0x17DD,  0x17DD ),
    510     AF_UNIRANGE_REC(       0,       0 )
    511   };
    512 
    513 
    514   const AF_Script_UniRangeRec  af_khms_uniranges[] =
    515   {
    516     AF_UNIRANGE_REC(  0x19E0,  0x19FF ),  /* Khmer Symbols */
    517     AF_UNIRANGE_REC(       0,       0 )
    518   };
    519 
    520   const AF_Script_UniRangeRec  af_khms_nonbase_uniranges[] =
    521   {
    522     AF_UNIRANGE_REC( 0, 0 )
    523   };
    524 
    525 
    526   const AF_Script_UniRangeRec  af_lao_uniranges[] =
    527   {
    528     AF_UNIRANGE_REC(  0x0E80,  0x0EFF ),  /* Lao */
    529     AF_UNIRANGE_REC(       0,       0 )
    530   };
    531 
    532   const AF_Script_UniRangeRec  af_lao_nonbase_uniranges[] =
    533   {
    534     AF_UNIRANGE_REC(  0x0EB1,  0x0EB1 ),
    535     AF_UNIRANGE_REC(  0x0EB4,  0x0EBC ),
    536     AF_UNIRANGE_REC(  0x0EC8,  0x0ECD ),
    537     AF_UNIRANGE_REC(       0,       0 )
    538   };
    539 
    540 
    541   const AF_Script_UniRangeRec  af_latn_uniranges[] =
    542   {
    543     AF_UNIRANGE_REC(  0x0020,  0x007F ),  /* Basic Latin (no control chars)         */
    544     AF_UNIRANGE_REC(  0x00A0,  0x00A9 ),  /* Latin-1 Supplement (no control chars)  */
    545     AF_UNIRANGE_REC(  0x00AB,  0x00B1 ),  /* ... continued                          */
    546     AF_UNIRANGE_REC(  0x00B4,  0x00B8 ),  /* ... continued                          */
    547     AF_UNIRANGE_REC(  0x00BB,  0x00FF ),  /* ... continued                          */
    548     AF_UNIRANGE_REC(  0x0100,  0x017F ),  /* Latin Extended-A                       */
    549     AF_UNIRANGE_REC(  0x0180,  0x024F ),  /* Latin Extended-B                       */
    550     AF_UNIRANGE_REC(  0x0250,  0x02AF ),  /* IPA Extensions                         */
    551     AF_UNIRANGE_REC(  0x02B9,  0x02DF ),  /* Spacing Modifier Letters               */
    552     AF_UNIRANGE_REC(  0x02E5,  0x02FF ),  /* ... continued                          */
    553     AF_UNIRANGE_REC(  0x0300,  0x036F ),  /* Combining Diacritical Marks            */
    554     AF_UNIRANGE_REC(  0x1AB0,  0x1ABE ),  /* Combining Diacritical Marks Extended   */
    555     AF_UNIRANGE_REC(  0x1D00,  0x1D2B ),  /* Phonetic Extensions                    */
    556     AF_UNIRANGE_REC(  0x1D6B,  0x1D77 ),  /* ... continued                          */
    557     AF_UNIRANGE_REC(  0x1D79,  0x1D7F ),  /* ... continued                          */
    558     AF_UNIRANGE_REC(  0x1D80,  0x1D9A ),  /* Phonetic Extensions Supplement         */
    559     AF_UNIRANGE_REC(  0x1DC0,  0x1DFF ),  /* Combining Diacritical Marks Supplement */
    560     AF_UNIRANGE_REC(  0x1E00,  0x1EFF ),  /* Latin Extended Additional              */
    561     AF_UNIRANGE_REC(  0x2000,  0x206F ),  /* General Punctuation                    */
    562     AF_UNIRANGE_REC(  0x20A0,  0x20B8 ),  /* Currency Symbols ...                   */
    563     AF_UNIRANGE_REC(  0x20BA,  0x20CF ),  /* ... except new Rupee sign              */
    564     AF_UNIRANGE_REC(  0x2150,  0x218F ),  /* Number Forms                           */
    565     AF_UNIRANGE_REC(  0x2C60,  0x2C7B ),  /* Latin Extended-C                       */
    566     AF_UNIRANGE_REC(  0x2C7E,  0x2C7F ),  /* ... continued                          */
    567     AF_UNIRANGE_REC(  0x2E00,  0x2E7F ),  /* Supplemental Punctuation               */
    568     AF_UNIRANGE_REC(  0xA720,  0xA76F ),  /* Latin Extended-D                       */
    569     AF_UNIRANGE_REC(  0xA771,  0xA7F7 ),  /* ... continued                          */
    570     AF_UNIRANGE_REC(  0xA7FA,  0xA7FF ),  /* ... continued                          */
    571     AF_UNIRANGE_REC(  0xAB30,  0xAB5B ),  /* Latin Extended-E                       */
    572     AF_UNIRANGE_REC(  0xAB60,  0xAB6F ),  /* ... continued                          */
    573     AF_UNIRANGE_REC(  0xFB00,  0xFB06 ),  /* Alphab. Present. Forms (Latin Ligs)    */
    574     AF_UNIRANGE_REC( 0x1D400, 0x1D7FF ),  /* Mathematical Alphanumeric Symbols      */
    575     AF_UNIRANGE_REC(       0,       0 )
    576   };
    577 
    578   const AF_Script_UniRangeRec  af_latn_nonbase_uniranges[] =
    579   {
    580     AF_UNIRANGE_REC(  0x005E,  0x0060 ),
    581     AF_UNIRANGE_REC(  0x007E,  0x007E ),
    582     AF_UNIRANGE_REC(  0x00A8,  0x00A9 ),
    583     AF_UNIRANGE_REC(  0x00AE,  0x00B0 ),
    584     AF_UNIRANGE_REC(  0x00B4,  0x00B4 ),
    585     AF_UNIRANGE_REC(  0x00B8,  0x00B8 ),
    586     AF_UNIRANGE_REC(  0x00BC,  0x00BE ),
    587     AF_UNIRANGE_REC(  0x02B9,  0x02DF ),
    588     AF_UNIRANGE_REC(  0x02E5,  0x02FF ),
    589     AF_UNIRANGE_REC(  0x0300,  0x036F ),
    590     AF_UNIRANGE_REC(  0x1AB0,  0x1ABE ),
    591     AF_UNIRANGE_REC(  0x1DC0,  0x1DFF ),
    592     AF_UNIRANGE_REC(  0x2017,  0x2017 ),
    593     AF_UNIRANGE_REC(  0x203E,  0x203E ),
    594     AF_UNIRANGE_REC(  0xA788,  0xA788 ),
    595     AF_UNIRANGE_REC(  0xA7F8,  0xA7FA ),
    596     AF_UNIRANGE_REC(       0,       0 )
    597   };
    598 
    599 
    600   const AF_Script_UniRangeRec  af_latb_uniranges[] =
    601   {
    602     AF_UNIRANGE_REC(  0x1D62,  0x1D6A ),  /* some small subscript letters   */
    603     AF_UNIRANGE_REC(  0x2080,  0x209C ),  /* subscript digits and letters   */
    604     AF_UNIRANGE_REC(  0x2C7C,  0x2C7C ),  /* latin subscript small letter j */
    605     AF_UNIRANGE_REC(       0,       0 )
    606   };
    607 
    608   const AF_Script_UniRangeRec  af_latb_nonbase_uniranges[] =
    609   {
    610     AF_UNIRANGE_REC( 0, 0 )
    611   };
    612 
    613 
    614   const AF_Script_UniRangeRec  af_latp_uniranges[] =
    615   {
    616     AF_UNIRANGE_REC(  0x00AA,  0x00AA ),  /* feminine ordinal indicator          */
    617     AF_UNIRANGE_REC(  0x00B2,  0x00B3 ),  /* superscript two and three           */
    618     AF_UNIRANGE_REC(  0x00B9,  0x00BA ),  /* superscript one, masc. ord. indic.  */
    619     AF_UNIRANGE_REC(  0x02B0,  0x02B8 ),  /* some latin superscript mod. letters */
    620     AF_UNIRANGE_REC(  0x02E0,  0x02E4 ),  /* some IPA modifier letters           */
    621     AF_UNIRANGE_REC(  0x1D2C,  0x1D61 ),  /* latin superscript modifier letters  */
    622     AF_UNIRANGE_REC(  0x1D78,  0x1D78 ),  /* modifier letter cyrillic en         */
    623     AF_UNIRANGE_REC(  0x1D9B,  0x1DBF ),  /* more modifier letters               */
    624     AF_UNIRANGE_REC(  0x2070,  0x207F ),  /* superscript digits and letters      */
    625     AF_UNIRANGE_REC(  0x2C7D,  0x2C7D ),  /* modifier letter capital v           */
    626     AF_UNIRANGE_REC(  0xA770,  0xA770 ),  /* modifier letter us                  */
    627     AF_UNIRANGE_REC(  0xA7F8,  0xA7F9 ),  /* more modifier letters               */
    628     AF_UNIRANGE_REC(  0xAB5C,  0xAB5F ),  /* more modifier letters               */
    629     AF_UNIRANGE_REC(       0,       0 )
    630   };
    631 
    632   const AF_Script_UniRangeRec  af_latp_nonbase_uniranges[] =
    633   {
    634     AF_UNIRANGE_REC( 0, 0 )
    635   };
    636 
    637 
    638   const AF_Script_UniRangeRec  af_lisu_uniranges[] =
    639   {
    640     AF_UNIRANGE_REC(  0xA4D0,  0xA4FF ),    /* Lisu */
    641     AF_UNIRANGE_REC(       0,       0 )
    642   };
    643 
    644   const AF_Script_UniRangeRec  af_lisu_nonbase_uniranges[] =
    645   {
    646     AF_UNIRANGE_REC( 0, 0 )
    647   };
    648 
    649 
    650   const AF_Script_UniRangeRec  af_mlym_uniranges[] =
    651   {
    652     AF_UNIRANGE_REC(  0x0D00,  0x0D7F ),  /* Malayalam */
    653     AF_UNIRANGE_REC(       0,       0 )
    654   };
    655 
    656   const AF_Script_UniRangeRec  af_mlym_nonbase_uniranges[] =
    657   {
    658     AF_UNIRANGE_REC(  0x0D01,  0x0D01 ),
    659     AF_UNIRANGE_REC(  0x0D4D,  0x0D4E ),
    660     AF_UNIRANGE_REC(  0x0D62,  0x0D63 ),
    661     AF_UNIRANGE_REC(       0,       0 )
    662   };
    663 
    664 
    665   const AF_Script_UniRangeRec  af_mymr_uniranges[] =
    666   {
    667     AF_UNIRANGE_REC(  0x1000,  0x109F ),    /* Myanmar            */
    668     AF_UNIRANGE_REC(  0xA9E0,  0xA9FF ),    /* Myanmar Extended-B */
    669     AF_UNIRANGE_REC(  0xAA60,  0xAA7F ),    /* Myanmar Extended-A */
    670     AF_UNIRANGE_REC(       0,       0 )
    671   };
    672 
    673   const AF_Script_UniRangeRec  af_mymr_nonbase_uniranges[] =
    674   {
    675     AF_UNIRANGE_REC(  0x102D,  0x1030 ),
    676     AF_UNIRANGE_REC(  0x1032,  0x1037 ),
    677     AF_UNIRANGE_REC(  0x103A,  0x103A ),
    678     AF_UNIRANGE_REC(  0x103D,  0x103E ),
    679     AF_UNIRANGE_REC(  0x1058,  0x1059 ),
    680     AF_UNIRANGE_REC(  0x105E,  0x1060 ),
    681     AF_UNIRANGE_REC(  0x1071,  0x1074 ),
    682     AF_UNIRANGE_REC(  0x1082,  0x1082 ),
    683     AF_UNIRANGE_REC(  0x1085,  0x1086 ),
    684     AF_UNIRANGE_REC(  0x108D,  0x108D ),
    685     AF_UNIRANGE_REC(  0xA9E5,  0xA9E5 ),
    686     AF_UNIRANGE_REC(  0xAA7C,  0xAA7C ),
    687     AF_UNIRANGE_REC(       0,       0 )
    688   };
    689 
    690 
    691   const AF_Script_UniRangeRec  af_nkoo_uniranges[] =
    692   {
    693     AF_UNIRANGE_REC(  0x07C0,  0x07FF ),    /* N'Ko */
    694     AF_UNIRANGE_REC(       0,       0 )
    695   };
    696 
    697   const AF_Script_UniRangeRec  af_nkoo_nonbase_uniranges[] =
    698   {
    699     AF_UNIRANGE_REC(  0x07EB,  0x07F5 ),
    700     AF_UNIRANGE_REC(       0,       0 )
    701   };
    702 
    703 
    704   const AF_Script_UniRangeRec  af_none_uniranges[] =
    705   {
    706     AF_UNIRANGE_REC( 0, 0 )
    707   };
    708 
    709   const AF_Script_UniRangeRec  af_none_nonbase_uniranges[] =
    710   {
    711     AF_UNIRANGE_REC( 0, 0 )
    712   };
    713 
    714 
    715   const AF_Script_UniRangeRec  af_olck_uniranges[] =
    716   {
    717     AF_UNIRANGE_REC(  0x1C50,  0x1C7F ),    /* Ol Chiki */
    718     AF_UNIRANGE_REC(       0,       0 )
    719   };
    720 
    721   const AF_Script_UniRangeRec  af_olck_nonbase_uniranges[] =
    722   {
    723     AF_UNIRANGE_REC( 0, 0 )
    724   };
    725 
    726 
    727   const AF_Script_UniRangeRec  af_orkh_uniranges[] =
    728   {
    729     AF_UNIRANGE_REC( 0x10C00, 0x10C4F ),    /* Old Turkic */
    730     AF_UNIRANGE_REC(       0,       0 )
    731   };
    732 
    733   const AF_Script_UniRangeRec  af_orkh_nonbase_uniranges[] =
    734   {
    735     AF_UNIRANGE_REC( 0, 0 )
    736   };
    737 
    738 
    739   const AF_Script_UniRangeRec  af_osge_uniranges[] =
    740   {
    741     AF_UNIRANGE_REC( 0x104B0, 0x104FF ),    /* Osage */
    742     AF_UNIRANGE_REC(       0,       0 )
    743   };
    744 
    745   const AF_Script_UniRangeRec  af_osge_nonbase_uniranges[] =
    746   {
    747     AF_UNIRANGE_REC( 0, 0 )
    748   };
    749 
    750 
    751   const AF_Script_UniRangeRec  af_osma_uniranges[] =
    752   {
    753     AF_UNIRANGE_REC( 0x10480, 0x104AF ),   /* Osmanya */
    754     AF_UNIRANGE_REC(       0,       0 )
    755   };
    756 
    757   const AF_Script_UniRangeRec  af_osma_nonbase_uniranges[] =
    758   {
    759     AF_UNIRANGE_REC( 0, 0 )
    760   };
    761 
    762 
    763   const AF_Script_UniRangeRec  af_saur_uniranges[] =
    764   {
    765     AF_UNIRANGE_REC(  0xA880,  0xA8DF ),   /* Saurashtra */
    766     AF_UNIRANGE_REC(       0,       0 )
    767   };
    768 
    769   const AF_Script_UniRangeRec  af_saur_nonbase_uniranges[] =
    770   {
    771     AF_UNIRANGE_REC(  0xA880,  0xA881 ),
    772     AF_UNIRANGE_REC(  0xA8B4,  0xA8C5 ),
    773     AF_UNIRANGE_REC(       0,       0 )
    774   };
    775 
    776 
    777   const AF_Script_UniRangeRec  af_shaw_uniranges[] =
    778   {
    779     AF_UNIRANGE_REC( 0x10450, 0x1047F ),   /* Shavian */
    780     AF_UNIRANGE_REC(       0,       0 )
    781   };
    782 
    783   const AF_Script_UniRangeRec  af_shaw_nonbase_uniranges[] =
    784   {
    785     AF_UNIRANGE_REC( 0, 0 )
    786   };
    787 
    788 
    789   const AF_Script_UniRangeRec  af_sinh_uniranges[] =
    790   {
    791     AF_UNIRANGE_REC(  0x0D80,  0x0DFF ),  /* Sinhala */
    792     AF_UNIRANGE_REC(       0,       0 )
    793   };
    794 
    795   const AF_Script_UniRangeRec  af_sinh_nonbase_uniranges[] =
    796   {
    797     AF_UNIRANGE_REC(  0x0DCA,  0x0DCA ),
    798     AF_UNIRANGE_REC(  0x0DD2,  0x0DD6 ),
    799     AF_UNIRANGE_REC(       0,       0 )
    800   };
    801 
    802 
    803   const AF_Script_UniRangeRec  af_sund_uniranges[] =
    804   {
    805     AF_UNIRANGE_REC(  0x1B80,  0x1BBF ), /* Sundanese            */
    806     AF_UNIRANGE_REC(  0x1CC0,  0x1CCF ), /* Sundanese Supplement */
    807     AF_UNIRANGE_REC(       0,       0 )
    808   };
    809 
    810   const AF_Script_UniRangeRec  af_sund_nonbase_uniranges[] =
    811   {
    812     AF_UNIRANGE_REC(  0x1B80,  0x1B82 ),
    813     AF_UNIRANGE_REC(  0x1BA1,  0x1BAD ),
    814     AF_UNIRANGE_REC(       0,       0 )
    815   };
    816 
    817 
    818   const AF_Script_UniRangeRec  af_taml_uniranges[] =
    819   {
    820     AF_UNIRANGE_REC(  0x0B80,  0x0BFF ),  /* Tamil */
    821     AF_UNIRANGE_REC(       0,       0 )
    822   };
    823 
    824   const AF_Script_UniRangeRec  af_taml_nonbase_uniranges[] =
    825   {
    826     AF_UNIRANGE_REC(  0x0B82,  0x0B82 ),
    827     AF_UNIRANGE_REC(  0x0BC0,  0x0BC2 ),
    828     AF_UNIRANGE_REC(  0x0BCD,  0x0BCD ),
    829     AF_UNIRANGE_REC(       0,       0 )
    830   };
    831 
    832 
    833   const AF_Script_UniRangeRec  af_tavt_uniranges[] =
    834   {
    835     AF_UNIRANGE_REC(  0xAA80,  0xAADF ),   /* Tai Viet */
    836     AF_UNIRANGE_REC(       0,       0 )
    837   };
    838 
    839   const AF_Script_UniRangeRec  af_tavt_nonbase_uniranges[] =
    840   {
    841     AF_UNIRANGE_REC(  0xAAB0,  0xAAB0 ),
    842     AF_UNIRANGE_REC(  0xAAB2,  0xAAB4 ),
    843     AF_UNIRANGE_REC(  0xAAB7,  0xAAB8 ),
    844     AF_UNIRANGE_REC(  0xAABE,  0xAABF ),
    845     AF_UNIRANGE_REC(  0xAAC1,  0xAAC1 ),
    846     AF_UNIRANGE_REC(       0,       0 )
    847   };
    848 
    849 
    850   const AF_Script_UniRangeRec  af_telu_uniranges[] =
    851   {
    852     AF_UNIRANGE_REC(  0x0C00,  0x0C7F ),  /* Telugu */
    853     AF_UNIRANGE_REC(       0,       0 )
    854   };
    855 
    856   const AF_Script_UniRangeRec  af_telu_nonbase_uniranges[] =
    857   {
    858     AF_UNIRANGE_REC(  0x0C00,  0x0C00 ),
    859     AF_UNIRANGE_REC(  0x0C3E,  0x0C40 ),
    860     AF_UNIRANGE_REC(  0x0C46,  0x0C56 ),
    861     AF_UNIRANGE_REC(  0x0C62,  0x0C63 ),
    862     AF_UNIRANGE_REC(       0,       0 )
    863   };
    864 
    865 
    866   const AF_Script_UniRangeRec  af_thai_uniranges[] =
    867   {
    868     AF_UNIRANGE_REC(  0x0E00,  0x0E7F ),  /* Thai */
    869     AF_UNIRANGE_REC(       0,       0 )
    870   };
    871 
    872   const AF_Script_UniRangeRec  af_thai_nonbase_uniranges[] =
    873   {
    874     AF_UNIRANGE_REC(  0x0E31,  0x0E31 ),
    875     AF_UNIRANGE_REC(  0x0E34,  0x0E3A ),
    876     AF_UNIRANGE_REC(  0x0E47,  0x0E4E ),
    877     AF_UNIRANGE_REC(       0,       0 )
    878   };
    879 
    880 
    881   const AF_Script_UniRangeRec  af_tfng_uniranges[] =
    882   {
    883     AF_UNIRANGE_REC(  0x2D30,  0x2D7F ),   /* Tifinagh */
    884     AF_UNIRANGE_REC(       0,       0 )
    885   };
    886 
    887   const AF_Script_UniRangeRec  af_tfng_nonbase_uniranges[] =
    888   {
    889     AF_UNIRANGE_REC( 0, 0 )
    890   };
    891 
    892 
    893   const AF_Script_UniRangeRec  af_vaii_uniranges[] =
    894   {
    895     AF_UNIRANGE_REC(  0xA500,  0xA63F ),   /* Vai */
    896     AF_UNIRANGE_REC(       0,       0 )
    897   };
    898 
    899   const AF_Script_UniRangeRec  af_vaii_nonbase_uniranges[] =
    900   {
    901     AF_UNIRANGE_REC( 0, 0 )
    902   };
    903 
    904 
    905 #ifdef AF_CONFIG_OPTION_INDIC
    906 
    907   const AF_Script_UniRangeRec  af_limb_uniranges[] =
    908   {
    909     AF_UNIRANGE_REC(  0x1900,  0x194F ),  /* Limbu */
    910     AF_UNIRANGE_REC(       0,       0 )
    911   };
    912 
    913   const AF_Script_UniRangeRec  af_limb_nonbase_uniranges[] =
    914   {
    915     AF_UNIRANGE_REC(  0x1920,  0x1922 ),
    916     AF_UNIRANGE_REC(  0x1927,  0x1934 ),
    917     AF_UNIRANGE_REC(  0x1937,  0x193B ),
    918     AF_UNIRANGE_REC(       0,       0 )
    919   };
    920 
    921 
    922   const AF_Script_UniRangeRec  af_orya_uniranges[] =
    923   {
    924     AF_UNIRANGE_REC(  0x0B00,  0x0B7F ),  /* Oriya */
    925     AF_UNIRANGE_REC(       0,       0 )
    926   };
    927 
    928   const AF_Script_UniRangeRec  af_orya_nonbase_uniranges[] =
    929   {
    930     AF_UNIRANGE_REC(  0x0B01,  0x0B02 ),
    931     AF_UNIRANGE_REC(  0x0B3C,  0x0B3C ),
    932     AF_UNIRANGE_REC(  0x0B3F,  0x0B3F ),
    933     AF_UNIRANGE_REC(  0x0B41,  0x0B44 ),
    934     AF_UNIRANGE_REC(  0x0B4D,  0x0B56 ),
    935     AF_UNIRANGE_REC(  0x0B62,  0x0B63 ),
    936     AF_UNIRANGE_REC(       0,       0 )
    937   };
    938 
    939 
    940   const AF_Script_UniRangeRec  af_sylo_uniranges[] =
    941   {
    942     AF_UNIRANGE_REC(  0xA800,  0xA82F ),  /* Syloti Nagri */
    943     AF_UNIRANGE_REC(       0,       0 )
    944   };
    945 
    946   const AF_Script_UniRangeRec  af_sylo_nonbase_uniranges[] =
    947   {
    948     AF_UNIRANGE_REC(  0xA802,  0xA802 ),
    949     AF_UNIRANGE_REC(  0xA806,  0xA806 ),
    950     AF_UNIRANGE_REC(  0xA80B,  0xA80B ),
    951     AF_UNIRANGE_REC(  0xA825,  0xA826 ),
    952     AF_UNIRANGE_REC(       0,       0 )
    953   };
    954 
    955 
    956   const AF_Script_UniRangeRec  af_tibt_uniranges[] =
    957   {
    958     AF_UNIRANGE_REC(  0x0F00,  0x0FFF ),  /* Tibetan */
    959     AF_UNIRANGE_REC(       0,       0 )
    960   };
    961 
    962   const AF_Script_UniRangeRec  af_tibt_nonbase_uniranges[] =
    963   {
    964     AF_UNIRANGE_REC(  0x0F18,  0x0F19 ),
    965     AF_UNIRANGE_REC(  0x0F35,  0x0F35 ),
    966     AF_UNIRANGE_REC(  0x0F37,  0x0F37 ),
    967     AF_UNIRANGE_REC(  0x0F39,  0x0F39 ),
    968     AF_UNIRANGE_REC(  0x0F3E,  0x0F3F ),
    969     AF_UNIRANGE_REC(  0x0F71,  0x0F7E ),
    970     AF_UNIRANGE_REC(  0x0F80,  0x0F84 ),
    971     AF_UNIRANGE_REC(  0x0F86,  0x0F87 ),
    972     AF_UNIRANGE_REC(  0x0F8D,  0x0FBC ),
    973     AF_UNIRANGE_REC(       0,       0 )
    974   };
    975 
    976 #endif /* !AF_CONFIG_OPTION_INDIC */
    977 
    978 #ifdef AF_CONFIG_OPTION_CJK
    979 
    980   /* this corresponds to Unicode 6.0 */
    981 
    982   const AF_Script_UniRangeRec  af_hani_uniranges[] =
    983   {
    984     AF_UNIRANGE_REC(  0x1100,  0x11FF ),  /* Hangul Jamo                             */
    985     AF_UNIRANGE_REC(  0x2E80,  0x2EFF ),  /* CJK Radicals Supplement                 */
    986     AF_UNIRANGE_REC(  0x2F00,  0x2FDF ),  /* Kangxi Radicals                         */
    987     AF_UNIRANGE_REC(  0x2FF0,  0x2FFF ),  /* Ideographic Description Characters      */
    988     AF_UNIRANGE_REC(  0x3000,  0x303F ),  /* CJK Symbols and Punctuation             */
    989     AF_UNIRANGE_REC(  0x3040,  0x309F ),  /* Hiragana                                */
    990     AF_UNIRANGE_REC(  0x30A0,  0x30FF ),  /* Katakana                                */
    991     AF_UNIRANGE_REC(  0x3100,  0x312F ),  /* Bopomofo                                */
    992     AF_UNIRANGE_REC(  0x3130,  0x318F ),  /* Hangul Compatibility Jamo               */
    993     AF_UNIRANGE_REC(  0x3190,  0x319F ),  /* Kanbun                                  */
    994     AF_UNIRANGE_REC(  0x31A0,  0x31BF ),  /* Bopomofo Extended                       */
    995     AF_UNIRANGE_REC(  0x31C0,  0x31EF ),  /* CJK Strokes                             */
    996     AF_UNIRANGE_REC(  0x31F0,  0x31FF ),  /* Katakana Phonetic Extensions            */
    997     AF_UNIRANGE_REC(  0x3300,  0x33FF ),  /* CJK Compatibility                       */
    998     AF_UNIRANGE_REC(  0x3400,  0x4DBF ),  /* CJK Unified Ideographs Extension A      */
    999     AF_UNIRANGE_REC(  0x4DC0,  0x4DFF ),  /* Yijing Hexagram Symbols                 */
   1000     AF_UNIRANGE_REC(  0x4E00,  0x9FFF ),  /* CJK Unified Ideographs                  */
   1001     AF_UNIRANGE_REC(  0xA960,  0xA97F ),  /* Hangul Jamo Extended-A                  */
   1002     AF_UNIRANGE_REC(  0xAC00,  0xD7AF ),  /* Hangul Syllables                        */
   1003     AF_UNIRANGE_REC(  0xD7B0,  0xD7FF ),  /* Hangul Jamo Extended-B                  */
   1004     AF_UNIRANGE_REC(  0xF900,  0xFAFF ),  /* CJK Compatibility Ideographs            */
   1005     AF_UNIRANGE_REC(  0xFE10,  0xFE1F ),  /* Vertical forms                          */
   1006     AF_UNIRANGE_REC(  0xFE30,  0xFE4F ),  /* CJK Compatibility Forms                 */
   1007     AF_UNIRANGE_REC(  0xFF00,  0xFFEF ),  /* Halfwidth and Fullwidth Forms           */
   1008     AF_UNIRANGE_REC( 0x1B000, 0x1B0FF ),  /* Kana Supplement                         */
   1009     AF_UNIRANGE_REC( 0x1D300, 0x1D35F ),  /* Tai Xuan Hing Symbols                   */
   1010     AF_UNIRANGE_REC( 0x20000, 0x2A6DF ),  /* CJK Unified Ideographs Extension B      */
   1011     AF_UNIRANGE_REC( 0x2A700, 0x2B73F ),  /* CJK Unified Ideographs Extension C      */
   1012     AF_UNIRANGE_REC( 0x2B740, 0x2B81F ),  /* CJK Unified Ideographs Extension D      */
   1013     AF_UNIRANGE_REC( 0x2F800, 0x2FA1F ),  /* CJK Compatibility Ideographs Supplement */
   1014     AF_UNIRANGE_REC(       0,       0 )
   1015   };
   1016 
   1017   const AF_Script_UniRangeRec  af_hani_nonbase_uniranges[] =
   1018   {
   1019     AF_UNIRANGE_REC(  0x302A,  0x302F ),
   1020     AF_UNIRANGE_REC(  0x3190,  0x319F ),
   1021     AF_UNIRANGE_REC(       0,       0 )
   1022   };
   1023 
   1024 #endif /* !AF_CONFIG_OPTION_CJK */
   1025 
   1026 /* END */
   1027