/* 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-2017 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_BENGALI_BASE = 282,
    AF_BLUE_STRING_BENGALI_TOP = 314,
    AF_BLUE_STRING_BENGALI_HEAD = 342,
    AF_BLUE_STRING_CHEROKEE_CAPITAL = 374,
    AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER = 406,
    AF_BLUE_STRING_CHEROKEE_SMALL = 438,
    AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER = 470,
    AF_BLUE_STRING_CYPRIOT_TOP = 486,
    AF_BLUE_STRING_CYPRIOT_BOTTOM = 526,
    AF_BLUE_STRING_CYPRIOT_SMALL = 561,
    AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 576,
    AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 600,
    AF_BLUE_STRING_CYRILLIC_SMALL = 624,
    AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 648,
    AF_BLUE_STRING_DESERET_CAPITAL_TOP = 657,
    AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM = 682,
    AF_BLUE_STRING_DESERET_SMALL_TOP = 707,
    AF_BLUE_STRING_DESERET_SMALL_BOTTOM = 732,
    AF_BLUE_STRING_DEVANAGARI_BASE = 757,
    AF_BLUE_STRING_DEVANAGARI_TOP = 789,
    AF_BLUE_STRING_DEVANAGARI_HEAD = 821,
    AF_BLUE_STRING_DEVANAGARI_BOTTOM = 853,
    AF_BLUE_STRING_ETHIOPIC_TOP = 861,
    AF_BLUE_STRING_ETHIOPIC_BOTTOM = 893,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 925,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 957,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 989,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 1021,
    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 1053,
    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 1085,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 1117,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 1149,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 1181,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 1213,
    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1245,
    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 1277,
    AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 1309,
    AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 1341,
    AF_BLUE_STRING_GREEK_CAPITAL_TOP = 1373,
    AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 1394,
    AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 1412,
    AF_BLUE_STRING_GREEK_SMALL = 1430,
    AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 1454,
    AF_BLUE_STRING_GUJARATI_TOP = 1478,
    AF_BLUE_STRING_GUJARATI_BOTTOM = 1510,
    AF_BLUE_STRING_GUJARATI_ASCENDER = 1542,
    AF_BLUE_STRING_GUJARATI_DESCENDER = 1592,
    AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 1625,
    AF_BLUE_STRING_GURMUKHI_BASE = 1645,
    AF_BLUE_STRING_GURMUKHI_HEAD = 1677,
    AF_BLUE_STRING_GURMUKHI_TOP = 1709,
    AF_BLUE_STRING_GURMUKHI_BOTTOM = 1741,
    AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 1773,
    AF_BLUE_STRING_HEBREW_TOP = 1793,
    AF_BLUE_STRING_HEBREW_BOTTOM = 1817,
    AF_BLUE_STRING_HEBREW_DESCENDER = 1835,
    AF_BLUE_STRING_KANNADA_TOP = 1850,
    AF_BLUE_STRING_KANNADA_BOTTOM = 1894,
    AF_BLUE_STRING_KHMER_TOP = 1926,
    AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 1950,
    AF_BLUE_STRING_KHMER_BOTTOM = 1990,
    AF_BLUE_STRING_KHMER_DESCENDER = 2022,
    AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 2056,
    AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 2143,
    AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 2151,
    AF_BLUE_STRING_LAO_TOP = 2159,
    AF_BLUE_STRING_LAO_BOTTOM = 2191,
    AF_BLUE_STRING_LAO_ASCENDER = 2223,
    AF_BLUE_STRING_LAO_LARGE_ASCENDER = 2239,
    AF_BLUE_STRING_LAO_DESCENDER = 2251,
    AF_BLUE_STRING_LATIN_CAPITAL_TOP = 2275,
    AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 2291,
    AF_BLUE_STRING_LATIN_SMALL_F_TOP = 2307,
    AF_BLUE_STRING_LATIN_SMALL_TOP = 2321,
    AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 2337,
    AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 2353,
    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 2363,
    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 2383,
    AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 2403,
    AF_BLUE_STRING_LATIN_SUBS_SMALL = 2423,
    AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 2459,
    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 2479,
    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 2510,
    AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 2539,
    AF_BLUE_STRING_LATIN_SUPS_SMALL = 2565,
    AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 2590,
    AF_BLUE_STRING_LISU_TOP = 2601,
    AF_BLUE_STRING_LISU_BOTTOM = 2633,
    AF_BLUE_STRING_MALAYALAM_TOP = 2665,
    AF_BLUE_STRING_MALAYALAM_BOTTOM = 2709,
    AF_BLUE_STRING_MYANMAR_TOP = 2741,
    AF_BLUE_STRING_MYANMAR_BOTTOM = 2773,
    AF_BLUE_STRING_MYANMAR_ASCENDER = 2805,
    AF_BLUE_STRING_MYANMAR_DESCENDER = 2833,
    AF_BLUE_STRING_NKO_TOP = 2865,
    AF_BLUE_STRING_NKO_BOTTOM = 2889,
    AF_BLUE_STRING_NKO_SMALL_TOP = 2904,
    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 2913,
    AF_BLUE_STRING_OL_CHIKI = 2925,
    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 2949,
    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 2989,
    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3019,
    AF_BLUE_STRING_OSAGE_SMALL_TOP = 3034,
    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 3074,
    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 3114,
    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 3139,
    AF_BLUE_STRING_SINHALA_TOP = 3154,
    AF_BLUE_STRING_SINHALA_BOTTOM = 3186,
    AF_BLUE_STRING_SINHALA_DESCENDER = 3218,
    AF_BLUE_STRING_TAI_VIET_TOP = 3262,
    AF_BLUE_STRING_TAI_VIET_BOTTOM = 3282,
    AF_BLUE_STRING_TAMIL_TOP = 3294,
    AF_BLUE_STRING_TAMIL_BOTTOM = 3326,
    AF_BLUE_STRING_TELUGU_TOP = 3358,
    AF_BLUE_STRING_TELUGU_BOTTOM = 3386,
    AF_BLUE_STRING_THAI_TOP = 3414,
    AF_BLUE_STRING_THAI_BOTTOM = 3438,
    AF_BLUE_STRING_THAI_ASCENDER = 3466,
    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 3478,
    AF_BLUE_STRING_THAI_DESCENDER = 3490,
    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 3506,
    AF_BLUE_STRING_THAI_DIGIT_TOP = 3514,
    AF_BLUE_STRING_TIFINAGH = 3526,
    af_blue_1_1 = 3557,
#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_BENG = 16,
    AF_BLUE_STRINGSET_CHER = 21,
    AF_BLUE_STRINGSET_CPRT = 28,
    AF_BLUE_STRINGSET_CYRL = 33,
    AF_BLUE_STRINGSET_DEVA = 39,
    AF_BLUE_STRINGSET_DSRT = 45,
    AF_BLUE_STRINGSET_ETHI = 50,
    AF_BLUE_STRINGSET_GEOR = 53,
    AF_BLUE_STRINGSET_GEOK = 58,
    AF_BLUE_STRINGSET_GLAG = 65,
    AF_BLUE_STRINGSET_GREK = 70,
    AF_BLUE_STRINGSET_GUJR = 77,
    AF_BLUE_STRINGSET_GURU = 83,
    AF_BLUE_STRINGSET_HEBR = 89,
    AF_BLUE_STRINGSET_KNDA = 93,
    AF_BLUE_STRINGSET_KHMR = 96,
    AF_BLUE_STRINGSET_KHMS = 102,
    AF_BLUE_STRINGSET_LAO = 105,
    AF_BLUE_STRINGSET_LATN = 111,
    AF_BLUE_STRINGSET_LATB = 118,
    AF_BLUE_STRINGSET_LATP = 125,
    AF_BLUE_STRINGSET_LISU = 132,
    AF_BLUE_STRINGSET_MLYM = 135,
    AF_BLUE_STRINGSET_MYMR = 138,
    AF_BLUE_STRINGSET_NKOO = 143,
    AF_BLUE_STRINGSET_NONE = 148,
    AF_BLUE_STRINGSET_OLCK = 149,
    AF_BLUE_STRINGSET_OSGE = 152,
    AF_BLUE_STRINGSET_SINH = 160,
    AF_BLUE_STRINGSET_TAML = 164,
    AF_BLUE_STRINGSET_TAVT = 167,
    AF_BLUE_STRINGSET_TELU = 170,
    AF_BLUE_STRINGSET_THAI = 173,
    AF_BLUE_STRINGSET_TFNG = 181,
    af_blue_2_1 = 184,
#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 */
