tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

afranges.c (37170B)


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