/***************************************************************************/
/*                                                                         */
/*  afranges.c                                                             */
/*                                                                         */
/*    Auto-fitter Unicode script ranges (body).                            */
/*                                                                         */
/*  Copyright 2013-2015 by                                                 */
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
/*                                                                         */
/*  This file is part of the FreeType project, and may only be used,       */
/*  modified, and distributed under the terms of the FreeType project      */
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/***************************************************************************/


#include "afranges.h"

  /*
   * The algorithm for assigning properties and styles to the `glyph_styles'
   * array is as follows (cf. the implementation in
   * `af_face_globals_compute_style_coverage').
   *
   *   Walk over all scripts (as listed in `afscript.h').
   *
   *   For a given script, walk over all styles (as listed in `afstyles.h').
   *   The order of styles is important and should be as follows.
   *
   *   - First come styles based on OpenType features (small caps, for
   *     example).  Since features rely on glyph indices, thus completely
   *     bypassing character codes, no properties are assigned.
   *
   *   - Next comes the default style, using the character ranges as defined
   *     below.  This also assigns properties.
   *
   *   Note that there also exist fallback scripts, mainly covering
   *   superscript and subscript glyphs of a script that are not present as
   *   OpenType features.  Fallback scripts are defined below, also
   *   assigning properties; they are applied after the corresponding
   *   script.
   *
   */


  /* XXX Check base character ranges again:                        */
  /*     Right now, they are quickly derived by visual inspection. */
  /*     I can imagine that fine-tuning is necessary.              */

  /* for the auto-hinter, a `non-base character' is something that should */
  /* not be affected by blue zones, regardless of whether this is a       */
  /* spacing or no-spacing glyph                                          */

  /* the `ta_xxxx_nonbase_uniranges' ranges must be strict subsets */
  /* of the corresponding `ta_xxxx_uniranges' ranges               */


  const AF_Script_UniRangeRec  af_arab_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0600UL,  0x06FFUL ),  /* Arabic                                 */
    AF_UNIRANGE_REC(  0x0750UL,  0x07FFUL ),  /* Arabic Supplement                      */
    AF_UNIRANGE_REC(  0x08A0UL,  0x08FFUL ),  /* Arabic Extended-A                      */
    AF_UNIRANGE_REC(  0xFB50UL,  0xFDFFUL ),  /* Arabic Presentation Forms-A            */
    AF_UNIRANGE_REC(  0xFE70UL,  0xFEFFUL ),  /* Arabic Presentation Forms-B            */
    AF_UNIRANGE_REC( 0x1EE00UL, 0x1EEFFUL ),  /* Arabic Mathematical Alphabetic Symbols */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_arab_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0600UL,  0x0605UL ),
    AF_UNIRANGE_REC(  0x0610UL,  0x061AUL ),
    AF_UNIRANGE_REC(  0x064BUL,  0x065FUL ),
    AF_UNIRANGE_REC(  0x0670UL,  0x0670UL ),
    AF_UNIRANGE_REC(  0x06D6UL,  0x06DCUL ),
    AF_UNIRANGE_REC(  0x06DFUL,  0x06E4UL ),
    AF_UNIRANGE_REC(  0x06E7UL,  0x06E8UL ),
    AF_UNIRANGE_REC(  0x06EAUL,  0x06EDUL ),
    AF_UNIRANGE_REC(  0x08E3UL,  0x08FFUL ),
    AF_UNIRANGE_REC(  0xFBB2UL,  0xFBC1UL ),
    AF_UNIRANGE_REC(  0xFE70UL,  0xFE70UL ),
    AF_UNIRANGE_REC(  0xFE72UL,  0xFE72UL ),
    AF_UNIRANGE_REC(  0xFE74UL,  0xFE74UL ),
    AF_UNIRANGE_REC(  0xFE76UL,  0xFE76UL ),
    AF_UNIRANGE_REC(  0xFE78UL,  0xFE78UL ),
    AF_UNIRANGE_REC(  0xFE7AUL,  0xFE7AUL ),
    AF_UNIRANGE_REC(  0xFE7CUL,  0xFE7CUL ),
    AF_UNIRANGE_REC(  0xFE7EUL,  0xFE7EUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_cyrl_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0400UL,  0x04FFUL ),  /* Cyrillic            */
    AF_UNIRANGE_REC(  0x0500UL,  0x052FUL ),  /* Cyrillic Supplement */
    AF_UNIRANGE_REC(  0x2DE0UL,  0x2DFFUL ),  /* Cyrillic Extended-A */
    AF_UNIRANGE_REC(  0xA640UL,  0xA69FUL ),  /* Cyrillic Extended-B */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_cyrl_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0483UL,  0x0489UL ),
    AF_UNIRANGE_REC(  0x2DE0UL,  0x2DFFUL ),
    AF_UNIRANGE_REC(  0xA66FUL,  0xA67FUL ),
    AF_UNIRANGE_REC(  0xA69EUL,  0xA69FUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  /* There are some characters in the Devanagari Unicode block that are    */
  /* generic to Indic scripts; we omit them so that their presence doesn't */
  /* trigger Devanagari.                                                   */

  const AF_Script_UniRangeRec  af_deva_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0900UL,  0x093BUL ),  /* Devanagari          */
    /* omitting U+093C nukta */
    AF_UNIRANGE_REC(  0x093DUL,  0x0950UL ),  /* ... continued       */
    /* omitting U+0951 udatta, U+0952 anudatta */
    AF_UNIRANGE_REC(  0x0953UL,  0x0963UL ),  /* ... continued       */
    /* omitting U+0964 danda, U+0965 double danda */
    AF_UNIRANGE_REC(  0x0966UL,  0x097FUL ),  /* ... continued       */
    AF_UNIRANGE_REC(  0x20B9UL,  0x20B9UL ),  /* (new) Rupee sign    */
    AF_UNIRANGE_REC(  0xA8E0UL,  0xA8FFUL ),  /* Devanagari Extended */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_deva_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0900UL,  0x0902UL ),
    AF_UNIRANGE_REC(  0x093AUL,  0x093AUL ),
    AF_UNIRANGE_REC(  0x0941UL,  0x0948UL ),
    AF_UNIRANGE_REC(  0x094DUL,  0x094DUL ),
    AF_UNIRANGE_REC(  0x0953UL,  0x0957UL ),
    AF_UNIRANGE_REC(  0x0962UL,  0x0963UL ),
    AF_UNIRANGE_REC(  0xA8E0UL,  0xA8F1UL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_grek_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0370UL,  0x03FFUL ),  /* Greek and Coptic */
    AF_UNIRANGE_REC(  0x1F00UL,  0x1FFFUL ),  /* Greek Extended   */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_grek_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x037AUL,  0x037AUL ),
    AF_UNIRANGE_REC(  0x0384UL,  0x0385UL ),
    AF_UNIRANGE_REC(  0x1FBDUL,  0x1FC1UL ),
    AF_UNIRANGE_REC(  0x1FCDUL,  0x1FCFUL ),
    AF_UNIRANGE_REC(  0x1FDDUL,  0x1FDFUL ),
    AF_UNIRANGE_REC(  0x1FEDUL,  0x1FEFUL ),
    AF_UNIRANGE_REC(  0x1FFDUL,  0x1FFEUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_hebr_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0590UL,  0x05FFUL ),  /* Hebrew                          */
    AF_UNIRANGE_REC(  0xFB1DUL,  0xFB4FUL ),  /* Alphab. Present. Forms (Hebrew) */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_hebr_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0591UL,  0x05BFUL ),
    AF_UNIRANGE_REC(  0x05C1UL,  0x05C2UL ),
    AF_UNIRANGE_REC(  0x05C4UL,  0x05C5UL ),
    AF_UNIRANGE_REC(  0x05C7UL,  0x05C7UL ),
    AF_UNIRANGE_REC(  0xFB1EUL,  0xFB1EUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_lao_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0E80UL,  0x0EFFUL ),  /* Lao */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_lao_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0EB1UL,  0x0EB1UL ),
    AF_UNIRANGE_REC(  0x0EB4UL,  0x0EBCUL ),
    AF_UNIRANGE_REC(  0x0EC8UL,  0x0ECDUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_latn_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0020UL,  0x007FUL ),  /* Basic Latin (no control chars)         */
    AF_UNIRANGE_REC(  0x00A0UL,  0x00A9UL ),  /* Latin-1 Supplement (no control chars)  */
    AF_UNIRANGE_REC(  0x00ABUL,  0x00B1UL ),  /* ... continued                          */
    AF_UNIRANGE_REC(  0x00B4UL,  0x00B8UL ),  /* ... continued                          */
    AF_UNIRANGE_REC(  0x00BBUL,  0x00FFUL ),  /* ... continued                          */
    AF_UNIRANGE_REC(  0x0100UL,  0x017FUL ),  /* Latin Extended-A                       */
    AF_UNIRANGE_REC(  0x0180UL,  0x024FUL ),  /* Latin Extended-B                       */
    AF_UNIRANGE_REC(  0x0250UL,  0x02AFUL ),  /* IPA Extensions                         */
    AF_UNIRANGE_REC(  0x02B9UL,  0x02DFUL ),  /* Spacing Modifier Letters               */
    AF_UNIRANGE_REC(  0x02E5UL,  0x02FFUL ),  /* ... continued                          */
    AF_UNIRANGE_REC(  0x0300UL,  0x036FUL ),  /* Combining Diacritical Marks            */
    AF_UNIRANGE_REC(  0x1AB0UL,  0x1ABEUL ),  /* Combining Diacritical Marks Extended   */
    AF_UNIRANGE_REC(  0x1D00UL,  0x1D2BUL ),  /* Phonetic Extensions                    */
    AF_UNIRANGE_REC(  0x1D6BUL,  0x1D77UL ),  /* ... continued                          */
    AF_UNIRANGE_REC(  0x1D79UL,  0x1D7FUL ),  /* ... continued                          */
    AF_UNIRANGE_REC(  0x1D80UL,  0x1D9AUL ),  /* Phonetic Extensions Supplement         */
    AF_UNIRANGE_REC(  0x1DC0UL,  0x1DFFUL ),  /* Combining Diacritical Marks Supplement */
    AF_UNIRANGE_REC(  0x1E00UL,  0x1EFFUL ),  /* Latin Extended Additional              */
    AF_UNIRANGE_REC(  0x2000UL,  0x206FUL ),  /* General Punctuation                    */
    AF_UNIRANGE_REC(  0x20A0UL,  0x20B8UL ),  /* Currency Symbols ...                   */
    AF_UNIRANGE_REC(  0x20BAUL,  0x20CFUL ),  /* ... except new Rupee sign              */
    AF_UNIRANGE_REC(  0x2150UL,  0x218FUL ),  /* Number Forms                           */
    AF_UNIRANGE_REC(  0x2C60UL,  0x2C7BUL ),  /* Latin Extended-C                       */
    AF_UNIRANGE_REC(  0x2C7EUL,  0x2C7FUL ),  /* ... continued                          */
    AF_UNIRANGE_REC(  0x2E00UL,  0x2E7FUL ),  /* Supplemental Punctuation               */
    AF_UNIRANGE_REC(  0xA720UL,  0xA76FUL ),  /* Latin Extended-D                       */
    AF_UNIRANGE_REC(  0xA771UL,  0xA7F7UL ),  /* ... continued                          */
    AF_UNIRANGE_REC(  0xA7FAUL,  0xA7FFUL ),  /* ... continued                          */
    AF_UNIRANGE_REC(  0xAB30UL,  0xAB5BUL ),  /* Latin Extended-E                       */
    AF_UNIRANGE_REC(  0xAB60UL,  0xAB6FUL ),  /* ... continued                          */
    AF_UNIRANGE_REC(  0xFB00UL,  0xFB06UL ),  /* Alphab. Present. Forms (Latin Ligs)    */
    AF_UNIRANGE_REC( 0x1D400UL, 0x1D7FFUL ),  /* Mathematical Alphanumeric Symbols      */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_latn_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x005EUL,  0x0060UL ),
    AF_UNIRANGE_REC(  0x007EUL,  0x007EUL ),
    AF_UNIRANGE_REC(  0x00A8UL,  0x00A9UL ),
    AF_UNIRANGE_REC(  0x00AEUL,  0x00B0UL ),
    AF_UNIRANGE_REC(  0x00B4UL,  0x00B4UL ),
    AF_UNIRANGE_REC(  0x00B8UL,  0x00B8UL ),
    AF_UNIRANGE_REC(  0x00BCUL,  0x00BEUL ),
    AF_UNIRANGE_REC(  0x02B9UL,  0x02DFUL ),
    AF_UNIRANGE_REC(  0x02E5UL,  0x02FFUL ),
    AF_UNIRANGE_REC(  0x0300UL,  0x036FUL ),
    AF_UNIRANGE_REC(  0x1AB0UL,  0x1ABEUL ),
    AF_UNIRANGE_REC(  0x1DC0UL,  0x1DFFUL ),
    AF_UNIRANGE_REC(  0x2017UL,  0x2017UL ),
    AF_UNIRANGE_REC(  0x203EUL,  0x203EUL ),
    AF_UNIRANGE_REC(  0xA788UL,  0xA788UL ),
    AF_UNIRANGE_REC(  0xA7F8UL,  0xA7FAUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec af_latb_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x1D62UL,  0x1D6AUL ),  /* some small subscript letters   */
    AF_UNIRANGE_REC(  0x2080UL,  0x209CUL ),  /* subscript digits and letters   */
    AF_UNIRANGE_REC(  0x2C7CUL,  0x2C7CUL ),  /* latin subscript small letter j */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec af_latb_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC( 0UL, 0UL )
  };


  const AF_Script_UniRangeRec af_latp_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x00AAUL,  0x00AAUL ),  /* feminine ordinal indicator          */
    AF_UNIRANGE_REC(  0x00B2UL,  0x00B3UL ),  /* superscript two and three           */
    AF_UNIRANGE_REC(  0x00B9UL,  0x00BAUL ),  /* superscript one, masc. ord. indic.  */
    AF_UNIRANGE_REC(  0x02B0UL,  0x02B8UL ),  /* some latin superscript mod. letters */
    AF_UNIRANGE_REC(  0x02E0UL,  0x02E4UL ),  /* some IPA modifier letters           */
    AF_UNIRANGE_REC(  0x1D2CUL,  0x1D61UL ),  /* latin superscript modifier letters  */
    AF_UNIRANGE_REC(  0x1D78UL,  0x1D78UL ),  /* modifier letter cyrillic en         */
    AF_UNIRANGE_REC(  0x1D9BUL,  0x1DBFUL ),  /* more modifier letters               */
    AF_UNIRANGE_REC(  0x2070UL,  0x207FUL ),  /* superscript digits and letters      */
    AF_UNIRANGE_REC(  0x2C7DUL,  0x2C7DUL ),  /* modifier letter capital v           */
    AF_UNIRANGE_REC(  0xA770UL,  0xA770UL ),  /* modifier letter us                  */
    AF_UNIRANGE_REC(  0xA7F8UL,  0xA7F9UL ),  /* more modifier letters               */
    AF_UNIRANGE_REC(  0xAB5CUL,  0xAB5FUL ),  /* more modifier letters               */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec af_latp_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC( 0UL, 0UL )
  };


  const AF_Script_UniRangeRec  af_none_uniranges[] =
  {
    AF_UNIRANGE_REC( 0UL, 0UL )
  };

  const AF_Script_UniRangeRec  af_none_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC( 0UL, 0UL )
  };


  const AF_Script_UniRangeRec  af_telu_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0C00UL,  0x0C7FUL ),  /* Telugu */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_telu_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0C00UL,  0x0C00UL ),
    AF_UNIRANGE_REC(  0x0C3EUL,  0x0C40UL ),
    AF_UNIRANGE_REC(  0x0C46UL,  0x0C56UL ),
    AF_UNIRANGE_REC(  0x0C62UL,  0x0C63UL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_thai_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0E00UL,  0x0E7FUL ),  /* Thai */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_thai_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0E31UL,  0x0E31UL ),
    AF_UNIRANGE_REC(  0x0E34UL,  0x0E3AUL ),
    AF_UNIRANGE_REC(  0x0E47UL,  0x0E4EUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


#ifdef AF_CONFIG_OPTION_INDIC

  const AF_Script_UniRangeRec  af_beng_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0980UL,  0x09FFUL ),  /* Bengali */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_beng_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0981UL,  0x0981UL ),
    AF_UNIRANGE_REC(  0x09BCUL,  0x09BCUL ),
    AF_UNIRANGE_REC(  0x09C1UL,  0x09C4UL ),
    AF_UNIRANGE_REC(  0x09CDUL,  0x09CDUL ),
    AF_UNIRANGE_REC(  0x09E2UL,  0x09E3UL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_gujr_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0A80UL,  0x0AFFUL ),  /* Gujarati */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_gujr_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0A81UL,  0x0A82UL ),
    AF_UNIRANGE_REC(  0x0ABCUL,  0x0ABCUL ),
    AF_UNIRANGE_REC(  0x0AC1UL,  0x0AC8UL ),
    AF_UNIRANGE_REC(  0x0ACDUL,  0x0ACDUL ),
    AF_UNIRANGE_REC(  0x0AE2UL,  0x0AE3UL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_guru_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0A00UL,  0x0A7FUL ),  /* Gurmukhi */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_guru_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0A01UL,  0x0A02UL ),
    AF_UNIRANGE_REC(  0x0A3CUL,  0x0A3EUL ),
    AF_UNIRANGE_REC(  0x0A41UL,  0x0A51UL ),
    AF_UNIRANGE_REC(  0x0A70UL,  0x0A71UL ),
    AF_UNIRANGE_REC(  0x0A75UL,  0x0A75UL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_knda_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0C80UL,  0x0CFFUL ),  /* Kannada */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_knda_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0C81UL,  0x0C81UL ),
    AF_UNIRANGE_REC(  0x0CBCUL,  0x0CBCUL ),
    AF_UNIRANGE_REC(  0x0CBFUL,  0x0CBFUL ),
    AF_UNIRANGE_REC(  0x0CC6UL,  0x0CC6UL ),
    AF_UNIRANGE_REC(  0x0CCCUL,  0x0CCDUL ),
    AF_UNIRANGE_REC(  0x0CE2UL,  0x0CE3UL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_limb_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x1900UL,  0x194FUL ),  /* Limbu */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_limb_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x1920UL,  0x1922UL ),
    AF_UNIRANGE_REC(  0x1927UL,  0x1934UL ),
    AF_UNIRANGE_REC(  0x1937UL,  0x193BUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_mlym_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0D00UL,  0x0D7FUL ),  /* Malayalam */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_mlym_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0D01UL,  0x0D01UL ),
    AF_UNIRANGE_REC(  0x0D4DUL,  0x0D4EUL ),
    AF_UNIRANGE_REC(  0x0D62UL,  0x0D63UL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_orya_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0B00UL,  0x0B7FUL ),  /* Oriya */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_orya_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0B01UL,  0x0B02UL ),
    AF_UNIRANGE_REC(  0x0B3CUL,  0x0B3CUL ),
    AF_UNIRANGE_REC(  0x0B3FUL,  0x0B3FUL ),
    AF_UNIRANGE_REC(  0x0B41UL,  0x0B44UL ),
    AF_UNIRANGE_REC(  0x0B4DUL,  0x0B56UL ),
    AF_UNIRANGE_REC(  0x0B62UL,  0x0B63UL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_sinh_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0D80UL,  0x0DFFUL ),  /* Sinhala */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_sinh_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0DCAUL,  0x0DCAUL ),
    AF_UNIRANGE_REC(  0x0DD2UL,  0x0DD6UL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_sund_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x1B80UL,  0x1BBFUL ),  /* Sundanese            */
    AF_UNIRANGE_REC(  0x1CC0UL,  0x1CCFUL ),  /* Sundanese Supplement */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_sund_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x1B80UL,  0x1B82UL ),
    AF_UNIRANGE_REC(  0x1BA1UL,  0x1BADUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_sylo_uniranges[] =
  {
    AF_UNIRANGE_REC(  0xA800UL,  0xA82FUL ),  /* Syloti Nagri */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_sylo_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0xA802UL,  0xA802UL ),
    AF_UNIRANGE_REC(  0xA806UL,  0xA806UL ),
    AF_UNIRANGE_REC(  0xA80BUL,  0xA80BUL ),
    AF_UNIRANGE_REC(  0xA825UL,  0xA826UL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_taml_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0B80UL,  0x0BFFUL ),  /* Tamil */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_taml_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0B82UL,  0x0B82UL ),
    AF_UNIRANGE_REC(  0x0BC0UL,  0x0BC2UL ),
    AF_UNIRANGE_REC(  0x0BCDUL,  0x0BCDUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };


  const AF_Script_UniRangeRec  af_tibt_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0F00UL,  0x0FFFUL ),  /* Tibetan */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_tibt_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x0F18UL,  0x0F19UL ),
    AF_UNIRANGE_REC(  0x0F35UL,  0x0F35UL ),
    AF_UNIRANGE_REC(  0x0F37UL,  0x0F37UL ),
    AF_UNIRANGE_REC(  0x0F39UL,  0x0F39UL ),
    AF_UNIRANGE_REC(  0x0F3EUL,  0x0F3FUL ),
    AF_UNIRANGE_REC(  0x0F71UL,  0x0F7EUL ),
    AF_UNIRANGE_REC(  0x0F80UL,  0x0F84UL ),
    AF_UNIRANGE_REC(  0x0F86UL,  0x0F87UL ),
    AF_UNIRANGE_REC(  0x0F8DUL,  0x0FBCUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

#endif /* !AF_CONFIG_OPTION_INDIC */

#ifdef AF_CONFIG_OPTION_CJK

  /* this corresponds to Unicode 6.0 */

  const AF_Script_UniRangeRec  af_hani_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x1100UL,  0x11FFUL ),  /* Hangul Jamo                             */
    AF_UNIRANGE_REC(  0x2E80UL,  0x2EFFUL ),  /* CJK Radicals Supplement                 */
    AF_UNIRANGE_REC(  0x2F00UL,  0x2FDFUL ),  /* Kangxi Radicals                         */
    AF_UNIRANGE_REC(  0x2FF0UL,  0x2FFFUL ),  /* Ideographic Description Characters      */
    AF_UNIRANGE_REC(  0x3000UL,  0x303FUL ),  /* CJK Symbols and Punctuation             */
    AF_UNIRANGE_REC(  0x3040UL,  0x309FUL ),  /* Hiragana                                */
    AF_UNIRANGE_REC(  0x30A0UL,  0x30FFUL ),  /* Katakana                                */
    AF_UNIRANGE_REC(  0x3100UL,  0x312FUL ),  /* Bopomofo                                */
    AF_UNIRANGE_REC(  0x3130UL,  0x318FUL ),  /* Hangul Compatibility Jamo               */
    AF_UNIRANGE_REC(  0x3190UL,  0x319FUL ),  /* Kanbun                                  */
    AF_UNIRANGE_REC(  0x31A0UL,  0x31BFUL ),  /* Bopomofo Extended                       */
    AF_UNIRANGE_REC(  0x31C0UL,  0x31EFUL ),  /* CJK Strokes                             */
    AF_UNIRANGE_REC(  0x31F0UL,  0x31FFUL ),  /* Katakana Phonetic Extensions            */
    AF_UNIRANGE_REC(  0x3300UL,  0x33FFUL ),  /* CJK Compatibility                       */
    AF_UNIRANGE_REC(  0x3400UL,  0x4DBFUL ),  /* CJK Unified Ideographs Extension A      */
    AF_UNIRANGE_REC(  0x4DC0UL,  0x4DFFUL ),  /* Yijing Hexagram Symbols                 */
    AF_UNIRANGE_REC(  0x4E00UL,  0x9FFFUL ),  /* CJK Unified Ideographs                  */
    AF_UNIRANGE_REC(  0xA960UL,  0xA97FUL ),  /* Hangul Jamo Extended-A                  */
    AF_UNIRANGE_REC(  0xAC00UL,  0xD7AFUL ),  /* Hangul Syllables                        */
    AF_UNIRANGE_REC(  0xD7B0UL,  0xD7FFUL ),  /* Hangul Jamo Extended-B                  */
    AF_UNIRANGE_REC(  0xF900UL,  0xFAFFUL ),  /* CJK Compatibility Ideographs            */
    AF_UNIRANGE_REC(  0xFE10UL,  0xFE1FUL ),  /* Vertical forms                          */
    AF_UNIRANGE_REC(  0xFE30UL,  0xFE4FUL ),  /* CJK Compatibility Forms                 */
    AF_UNIRANGE_REC(  0xFF00UL,  0xFFEFUL ),  /* Halfwidth and Fullwidth Forms           */
    AF_UNIRANGE_REC( 0x1B000UL, 0x1B0FFUL ),  /* Kana Supplement                         */
    AF_UNIRANGE_REC( 0x1D300UL, 0x1D35FUL ),  /* Tai Xuan Hing Symbols                   */
    AF_UNIRANGE_REC( 0x20000UL, 0x2A6DFUL ),  /* CJK Unified Ideographs Extension B      */
    AF_UNIRANGE_REC( 0x2A700UL, 0x2B73FUL ),  /* CJK Unified Ideographs Extension C      */
    AF_UNIRANGE_REC( 0x2B740UL, 0x2B81FUL ),  /* CJK Unified Ideographs Extension D      */
    AF_UNIRANGE_REC( 0x2F800UL, 0x2FA1FUL ),  /* CJK Compatibility Ideographs Supplement */
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

  const AF_Script_UniRangeRec  af_hani_nonbase_uniranges[] =
  {
    AF_UNIRANGE_REC(  0x302AUL,  0x302FUL ),
    AF_UNIRANGE_REC(  0x3190UL,  0x319FUL ),
    AF_UNIRANGE_REC(       0UL,       0UL )
  };

#endif /* !AF_CONFIG_OPTION_CJK */

/* END */
