/* This file has been generated by the Perl script `afblue.pl', */
/* using data from file `afblue.dat'.                           */

/***************************************************************************/
/*                                                                         */
/*  afblue.h                                                               */
/*                                                                         */
/*    Auto-fitter data for blue strings (specification).                   */
/*                                                                         */
/*  Copyright 2013-2018 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.                                        */
/*                                                                         */
/***************************************************************************/


#ifndef AFBLUE_H_
#define AFBLUE_H_


FT_BEGIN_HEADER


  /* an auxiliary macro to decode a UTF-8 character -- since we only use */
  /* hard-coded, self-converted data, no error checking is performed     */
#define GET_UTF8_CHAR( ch, p )                      \
          do                                        \
          {                                         \
            ch = (unsigned char)*p++;               \
            if ( ch >= 0x80 )                       \
            {                                       \
              FT_UInt  len_;                        \
                                                    \
                                                    \
              if ( ch < 0xE0 )                      \
              {                                     \
                len_ = 1;                           \
                ch  &= 0x1F;                        \
              }                                     \
              else if ( ch < 0xF0 )                 \
              {                                     \
                len_ = 2;                           \
                ch  &= 0x0F;                        \
              }                                     \
              else                                  \
              {                                     \
                len_ = 3;                           \
                ch  &= 0x07;                        \
              }                                     \
                                                    \
              for ( ; len_ > 0; len_-- )            \
                ch = ( ch << 6 ) | ( *p++ & 0x3F ); \
            }                                       \
          } while ( 0 )


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                    B L U E   S T R I N G S                    *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  /* At the bottommost level, we define strings for finding blue zones. */


#define AF_BLUE_STRING_MAX_LEN  51

  /* The AF_Blue_String enumeration values are offsets into the */
  /* `af_blue_strings' array.                                   */

  typedef enum  AF_Blue_String_
  {
    AF_BLUE_STRING_ADLAM_CAPITAL_TOP = 0,
    AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM = 30,
    AF_BLUE_STRING_ADLAM_SMALL_TOP = 40,
    AF_BLUE_STRING_ADLAM_SMALL_BOTTOM = 65,
    AF_BLUE_STRING_ARABIC_TOP = 105,
    AF_BLUE_STRING_ARABIC_BOTTOM = 123,
    AF_BLUE_STRING_ARABIC_JOIN = 138,
    AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP = 141,
    AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM = 165,
    AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER = 189,
    AF_BLUE_STRING_ARMENIAN_SMALL_TOP = 210,
    AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM = 234,
    AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER = 258,
    AF_BLUE_STRING_AVESTAN_TOP = 282,
    AF_BLUE_STRING_AVESTAN_BOTTOM = 302,
    AF_BLUE_STRING_BAMUM_TOP = 312,
    AF_BLUE_STRING_BAMUM_BOTTOM = 344,
    AF_BLUE_STRING_BENGALI_BASE = 376,
    AF_BLUE_STRING_BENGALI_TOP = 408,
    AF_BLUE_STRING_BENGALI_HEAD = 436,
    AF_BLUE_STRING_BUHID_TOP = 468,
    AF_BLUE_STRING_BUHID_LARGE = 476,
    AF_BLUE_STRING_BUHID_SMALL = 488,
    AF_BLUE_STRING_BUHID_BOTTOM = 504,
    AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP = 532,
    AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM = 564,
    AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP = 596,
    AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM = 628,
    AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP = 660,
    AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM = 688,
    AF_BLUE_STRING_CARIAN_TOP = 720,
    AF_BLUE_STRING_CARIAN_BOTTOM = 760,
    AF_BLUE_STRING_CHAKMA_TOP = 795,
    AF_BLUE_STRING_CHAKMA_BOTTOM = 820,
    AF_BLUE_STRING_CHAKMA_DESCENDER = 845,
    AF_BLUE_STRING_CHEROKEE_CAPITAL = 910,
    AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER = 942,
    AF_BLUE_STRING_CHEROKEE_SMALL = 974,
    AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER = 1006,
    AF_BLUE_STRING_COPTIC_CAPITAL_TOP = 1022,
    AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM = 1054,
    AF_BLUE_STRING_COPTIC_SMALL_TOP = 1086,
    AF_BLUE_STRING_COPTIC_SMALL_BOTTOM = 1118,
    AF_BLUE_STRING_CYPRIOT_TOP = 1150,
    AF_BLUE_STRING_CYPRIOT_BOTTOM = 1190,
    AF_BLUE_STRING_CYPRIOT_SMALL = 1225,
    AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 1240,
    AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 1264,
    AF_BLUE_STRING_CYRILLIC_SMALL = 1288,
    AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 1312,
    AF_BLUE_STRING_DESERET_CAPITAL_TOP = 1321,
    AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM = 1346,
    AF_BLUE_STRING_DESERET_SMALL_TOP = 1371,
    AF_BLUE_STRING_DESERET_SMALL_BOTTOM = 1396,
    AF_BLUE_STRING_DEVANAGARI_BASE = 1421,
    AF_BLUE_STRING_DEVANAGARI_TOP = 1453,
    AF_BLUE_STRING_DEVANAGARI_HEAD = 1485,
    AF_BLUE_STRING_DEVANAGARI_BOTTOM = 1517,
    AF_BLUE_STRING_ETHIOPIC_TOP = 1525,
    AF_BLUE_STRING_ETHIOPIC_BOTTOM = 1557,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 1589,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 1621,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 1653,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 1685,
    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 1717,
    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 1749,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 1781,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 1813,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 1845,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 1877,
    AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP = 1909,
    AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM = 1941,
    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1973,
    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 2005,
    AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 2037,
    AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 2069,
    AF_BLUE_STRING_GOTHIC_TOP = 2101,
    AF_BLUE_STRING_GOTHIC_BOTTOM = 2141,
    AF_BLUE_STRING_GREEK_CAPITAL_TOP = 2161,
    AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 2182,
    AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 2200,
    AF_BLUE_STRING_GREEK_SMALL = 2218,
    AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 2242,
    AF_BLUE_STRING_GUJARATI_TOP = 2266,
    AF_BLUE_STRING_GUJARATI_BOTTOM = 2298,
    AF_BLUE_STRING_GUJARATI_ASCENDER = 2330,
    AF_BLUE_STRING_GUJARATI_DESCENDER = 2380,
    AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 2413,
    AF_BLUE_STRING_GURMUKHI_BASE = 2433,
    AF_BLUE_STRING_GURMUKHI_HEAD = 2465,
    AF_BLUE_STRING_GURMUKHI_TOP = 2497,
    AF_BLUE_STRING_GURMUKHI_BOTTOM = 2529,
    AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 2561,
    AF_BLUE_STRING_HEBREW_TOP = 2581,
    AF_BLUE_STRING_HEBREW_BOTTOM = 2605,
    AF_BLUE_STRING_HEBREW_DESCENDER = 2623,
    AF_BLUE_STRING_KANNADA_TOP = 2638,
    AF_BLUE_STRING_KANNADA_BOTTOM = 2682,
    AF_BLUE_STRING_KAYAH_LI_TOP = 2714,
    AF_BLUE_STRING_KAYAH_LI_BOTTOM = 2738,
    AF_BLUE_STRING_KAYAH_LI_ASCENDER = 2758,
    AF_BLUE_STRING_KAYAH_LI_DESCENDER = 2766,
    AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER = 2778,
    AF_BLUE_STRING_KHMER_TOP = 2799,
    AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 2823,
    AF_BLUE_STRING_KHMER_BOTTOM = 2863,
    AF_BLUE_STRING_KHMER_DESCENDER = 2895,
    AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 2929,
    AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 3016,
    AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 3024,
    AF_BLUE_STRING_LAO_TOP = 3032,
    AF_BLUE_STRING_LAO_BOTTOM = 3064,
    AF_BLUE_STRING_LAO_ASCENDER = 3096,
    AF_BLUE_STRING_LAO_LARGE_ASCENDER = 3112,
    AF_BLUE_STRING_LAO_DESCENDER = 3124,
    AF_BLUE_STRING_LATIN_CAPITAL_TOP = 3148,
    AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 3164,
    AF_BLUE_STRING_LATIN_SMALL_F_TOP = 3180,
    AF_BLUE_STRING_LATIN_SMALL_TOP = 3194,
    AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 3210,
    AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 3226,
    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 3236,
    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 3256,
    AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 3276,
    AF_BLUE_STRING_LATIN_SUBS_SMALL = 3296,
    AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 3332,
    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 3352,
    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 3383,
    AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 3412,
    AF_BLUE_STRING_LATIN_SUPS_SMALL = 3438,
    AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 3463,
    AF_BLUE_STRING_LISU_TOP = 3474,
    AF_BLUE_STRING_LISU_BOTTOM = 3506,
    AF_BLUE_STRING_MALAYALAM_TOP = 3538,
    AF_BLUE_STRING_MALAYALAM_BOTTOM = 3582,
    AF_BLUE_STRING_MYANMAR_TOP = 3614,
    AF_BLUE_STRING_MYANMAR_BOTTOM = 3646,
    AF_BLUE_STRING_MYANMAR_ASCENDER = 3678,
    AF_BLUE_STRING_MYANMAR_DESCENDER = 3706,
    AF_BLUE_STRING_NKO_TOP = 3738,
    AF_BLUE_STRING_NKO_BOTTOM = 3762,
    AF_BLUE_STRING_NKO_SMALL_TOP = 3777,
    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3786,
    AF_BLUE_STRING_OL_CHIKI = 3798,
    AF_BLUE_STRING_OLD_TURKIC_TOP = 3822,
    AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3837,
    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3857,
    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3897,
    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3927,
    AF_BLUE_STRING_OSAGE_SMALL_TOP = 3942,
    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 3982,
    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 4022,
    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 4047,
    AF_BLUE_STRING_OSMANYA_TOP = 4062,
    AF_BLUE_STRING_OSMANYA_BOTTOM = 4102,
    AF_BLUE_STRING_SAURASHTRA_TOP = 4142,
    AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4174,
    AF_BLUE_STRING_SHAVIAN_TOP = 4194,
    AF_BLUE_STRING_SHAVIAN_BOTTOM = 4204,
    AF_BLUE_STRING_SHAVIAN_DESCENDER = 4229,
    AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4239,
    AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4274,
    AF_BLUE_STRING_SINHALA_TOP = 4289,
    AF_BLUE_STRING_SINHALA_BOTTOM = 4321,
    AF_BLUE_STRING_SINHALA_DESCENDER = 4353,
    AF_BLUE_STRING_SUNDANESE_TOP = 4397,
    AF_BLUE_STRING_SUNDANESE_BOTTOM = 4421,
    AF_BLUE_STRING_SUNDANESE_DESCENDER = 4453,
    AF_BLUE_STRING_TAI_VIET_TOP = 4461,
    AF_BLUE_STRING_TAI_VIET_BOTTOM = 4481,
    AF_BLUE_STRING_TAMIL_TOP = 4493,
    AF_BLUE_STRING_TAMIL_BOTTOM = 4525,
    AF_BLUE_STRING_TELUGU_TOP = 4557,
    AF_BLUE_STRING_TELUGU_BOTTOM = 4585,
    AF_BLUE_STRING_THAI_TOP = 4613,
    AF_BLUE_STRING_THAI_BOTTOM = 4637,
    AF_BLUE_STRING_THAI_ASCENDER = 4665,
    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4677,
    AF_BLUE_STRING_THAI_DESCENDER = 4689,
    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4705,
    AF_BLUE_STRING_THAI_DIGIT_TOP = 4713,
    AF_BLUE_STRING_TIFINAGH = 4725,
    AF_BLUE_STRING_VAI_TOP = 4757,
    AF_BLUE_STRING_VAI_BOTTOM = 4789,
    af_blue_1_1 = 4820,
#ifdef AF_CONFIG_OPTION_CJK
    AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1,
    AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 203,
    af_blue_1_1_1 = af_blue_1_1 + 404,
#ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
    AF_BLUE_STRING_CJK_LEFT = af_blue_1_1_1 + 1,
    AF_BLUE_STRING_CJK_RIGHT = af_blue_1_1_1 + 204,
    af_blue_1_1_2 = af_blue_1_1_1 + 405,
#else
    af_blue_1_1_2 = af_blue_1_1_1 + 0,
#endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */
    af_blue_1_2 = af_blue_1_1_2 + 0,
#else
    af_blue_1_2 = af_blue_1_1 + 0,
#endif /* AF_CONFIG_OPTION_CJK                */


    AF_BLUE_STRING_MAX   /* do not remove */

  } AF_Blue_String;


  FT_LOCAL_ARRAY( char )
  af_blue_strings[];


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                 B L U E   S T R I N G S E T S                 *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  /* The next level is to group blue strings into style-specific sets. */


  /* Properties are specific to a writing system.  We assume that a given  */
  /* blue string can't be used in more than a single writing system, which */
  /* is a safe bet.                                                        */
#define AF_BLUE_PROPERTY_LATIN_TOP       ( 1U << 0 )  /* must have value 1 */
#define AF_BLUE_PROPERTY_LATIN_SUB_TOP   ( 1U << 1 )
#define AF_BLUE_PROPERTY_LATIN_NEUTRAL   ( 1U << 2 )
#define AF_BLUE_PROPERTY_LATIN_X_HEIGHT  ( 1U << 3 )
#define AF_BLUE_PROPERTY_LATIN_LONG      ( 1U << 4 )

#define AF_BLUE_PROPERTY_CJK_TOP    ( 1U << 0 )       /* must have value 1 */
#define AF_BLUE_PROPERTY_CJK_HORIZ  ( 1U << 1 )       /* must have value 2 */
#define AF_BLUE_PROPERTY_CJK_RIGHT  AF_BLUE_PROPERTY_CJK_TOP


#define AF_BLUE_STRINGSET_MAX_LEN  8

  /* The AF_Blue_Stringset enumeration values are offsets into the */
  /* `af_blue_stringsets' array.                                   */

  typedef enum  AF_Blue_Stringset_
  {
    AF_BLUE_STRINGSET_ADLM = 0,
    AF_BLUE_STRINGSET_ARAB = 5,
    AF_BLUE_STRINGSET_ARMN = 9,
    AF_BLUE_STRINGSET_AVST = 16,
    AF_BLUE_STRINGSET_BAMU = 19,
    AF_BLUE_STRINGSET_BENG = 22,
    AF_BLUE_STRINGSET_BUHD = 27,
    AF_BLUE_STRINGSET_CAKM = 32,
    AF_BLUE_STRINGSET_CANS = 36,
    AF_BLUE_STRINGSET_CARI = 43,
    AF_BLUE_STRINGSET_CHER = 46,
    AF_BLUE_STRINGSET_COPT = 53,
    AF_BLUE_STRINGSET_CPRT = 58,
    AF_BLUE_STRINGSET_CYRL = 63,
    AF_BLUE_STRINGSET_DEVA = 69,
    AF_BLUE_STRINGSET_DSRT = 75,
    AF_BLUE_STRINGSET_ETHI = 80,
    AF_BLUE_STRINGSET_GEOR = 83,
    AF_BLUE_STRINGSET_GEOK = 90,
    AF_BLUE_STRINGSET_GLAG = 97,
    AF_BLUE_STRINGSET_GOTH = 102,
    AF_BLUE_STRINGSET_GREK = 105,
    AF_BLUE_STRINGSET_GUJR = 112,
    AF_BLUE_STRINGSET_GURU = 118,
    AF_BLUE_STRINGSET_HEBR = 124,
    AF_BLUE_STRINGSET_KALI = 128,
    AF_BLUE_STRINGSET_KHMR = 134,
    AF_BLUE_STRINGSET_KHMS = 140,
    AF_BLUE_STRINGSET_KNDA = 143,
    AF_BLUE_STRINGSET_LAO = 146,
    AF_BLUE_STRINGSET_LATN = 152,
    AF_BLUE_STRINGSET_LATB = 159,
    AF_BLUE_STRINGSET_LATP = 166,
    AF_BLUE_STRINGSET_LISU = 173,
    AF_BLUE_STRINGSET_MLYM = 176,
    AF_BLUE_STRINGSET_MYMR = 179,
    AF_BLUE_STRINGSET_NKOO = 184,
    AF_BLUE_STRINGSET_NONE = 189,
    AF_BLUE_STRINGSET_OLCK = 190,
    AF_BLUE_STRINGSET_ORKH = 193,
    AF_BLUE_STRINGSET_OSGE = 196,
    AF_BLUE_STRINGSET_OSMA = 204,
    AF_BLUE_STRINGSET_SAUR = 207,
    AF_BLUE_STRINGSET_SHAW = 210,
    AF_BLUE_STRINGSET_SINH = 216,
    AF_BLUE_STRINGSET_SUND = 220,
    AF_BLUE_STRINGSET_TAML = 224,
    AF_BLUE_STRINGSET_TAVT = 227,
    AF_BLUE_STRINGSET_TELU = 230,
    AF_BLUE_STRINGSET_TFNG = 233,
    AF_BLUE_STRINGSET_THAI = 236,
    AF_BLUE_STRINGSET_VAII = 244,
    af_blue_2_1 = 247,
#ifdef AF_CONFIG_OPTION_CJK
    AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0,
    af_blue_2_1_1 = af_blue_2_1 + 2,
#ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
    af_blue_2_1_2 = af_blue_2_1_1 + 2,
#else
    af_blue_2_1_2 = af_blue_2_1_1 + 0,
#endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */
    af_blue_2_2 = af_blue_2_1_2 + 1,
#else
    af_blue_2_2 = af_blue_2_1 + 0,
#endif /* AF_CONFIG_OPTION_CJK                */


    AF_BLUE_STRINGSET_MAX   /* do not remove */

  } AF_Blue_Stringset;


  typedef struct  AF_Blue_StringRec_
  {
    AF_Blue_String  string;
    FT_UShort       properties;

  } AF_Blue_StringRec;


  FT_LOCAL_ARRAY( AF_Blue_StringRec )
  af_blue_stringsets[];

/* */

FT_END_HEADER


#endif /* AFBLUE_H_ */


/* END */
