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