/* 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_CYRILLIC_CAPITAL_TOP = 486,
    AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 510,
    AF_BLUE_STRING_CYRILLIC_SMALL = 534,
    AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 558,
    AF_BLUE_STRING_DESERET_CAPITAL_TOP = 567,
    AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM = 592,
    AF_BLUE_STRING_DESERET_SMALL_TOP = 617,
    AF_BLUE_STRING_DESERET_SMALL_BOTTOM = 642,
    AF_BLUE_STRING_DEVANAGARI_BASE = 667,
    AF_BLUE_STRING_DEVANAGARI_TOP = 699,
    AF_BLUE_STRING_DEVANAGARI_HEAD = 731,
    AF_BLUE_STRING_DEVANAGARI_BOTTOM = 763,
    AF_BLUE_STRING_ETHIOPIC_TOP = 771,
    AF_BLUE_STRING_ETHIOPIC_BOTTOM = 803,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP = 835,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM = 867,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER = 899,
    AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER = 931,
    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP = 963,
    AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM = 995,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP = 1027,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 1059,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 1091,
    AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 1123,
    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1155,
    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 1187,
    AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 1219,
    AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 1251,
    AF_BLUE_STRING_GREEK_CAPITAL_TOP = 1283,
    AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 1304,
    AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 1322,
    AF_BLUE_STRING_GREEK_SMALL = 1340,
    AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 1364,
    AF_BLUE_STRING_GUJARATI_TOP = 1388,
    AF_BLUE_STRING_GUJARATI_BOTTOM = 1420,
    AF_BLUE_STRING_GUJARATI_ASCENDER = 1452,
    AF_BLUE_STRING_GUJARATI_DESCENDER = 1502,
    AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 1535,
    AF_BLUE_STRING_GURMUKHI_BASE = 1555,
    AF_BLUE_STRING_GURMUKHI_HEAD = 1587,
    AF_BLUE_STRING_GURMUKHI_TOP = 1619,
    AF_BLUE_STRING_GURMUKHI_BOTTOM = 1651,
    AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 1683,
    AF_BLUE_STRING_HEBREW_TOP = 1703,
    AF_BLUE_STRING_HEBREW_BOTTOM = 1727,
    AF_BLUE_STRING_HEBREW_DESCENDER = 1745,
    AF_BLUE_STRING_KANNADA_TOP = 1760,
    AF_BLUE_STRING_KANNADA_BOTTOM = 1804,
    AF_BLUE_STRING_KHMER_TOP = 1836,
    AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 1860,
    AF_BLUE_STRING_KHMER_BOTTOM = 1900,
    AF_BLUE_STRING_KHMER_DESCENDER = 1932,
    AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 1966,
    AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 2053,
    AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 2061,
    AF_BLUE_STRING_LAO_TOP = 2069,
    AF_BLUE_STRING_LAO_BOTTOM = 2101,
    AF_BLUE_STRING_LAO_ASCENDER = 2133,
    AF_BLUE_STRING_LAO_LARGE_ASCENDER = 2149,
    AF_BLUE_STRING_LAO_DESCENDER = 2161,
    AF_BLUE_STRING_LATIN_CAPITAL_TOP = 2185,
    AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 2201,
    AF_BLUE_STRING_LATIN_SMALL_F_TOP = 2217,
    AF_BLUE_STRING_LATIN_SMALL_TOP = 2231,
    AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 2247,
    AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 2263,
    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 2273,
    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 2293,
    AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 2313,
    AF_BLUE_STRING_LATIN_SUBS_SMALL = 2333,
    AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 2369,
    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 2389,
    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 2420,
    AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 2449,
    AF_BLUE_STRING_LATIN_SUPS_SMALL = 2475,
    AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 2500,
    AF_BLUE_STRING_LISU_TOP = 2511,
    AF_BLUE_STRING_LISU_BOTTOM = 2543,
    AF_BLUE_STRING_MALAYALAM_TOP = 2575,
    AF_BLUE_STRING_MALAYALAM_BOTTOM = 2619,
    AF_BLUE_STRING_MYANMAR_TOP = 2651,
    AF_BLUE_STRING_MYANMAR_BOTTOM = 2683,
    AF_BLUE_STRING_MYANMAR_ASCENDER = 2715,
    AF_BLUE_STRING_MYANMAR_DESCENDER = 2743,
    AF_BLUE_STRING_NKO_TOP = 2775,
    AF_BLUE_STRING_NKO_BOTTOM = 2799,
    AF_BLUE_STRING_NKO_SMALL_TOP = 2814,
    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 2823,
    AF_BLUE_STRING_OL_CHIKI = 2835,
    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 2859,
    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 2899,
    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 2929,
    AF_BLUE_STRING_OSAGE_SMALL_TOP = 2944,
    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 2984,
    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 3024,
    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 3049,
    AF_BLUE_STRING_SINHALA_TOP = 3064,
    AF_BLUE_STRING_SINHALA_BOTTOM = 3096,
    AF_BLUE_STRING_SINHALA_DESCENDER = 3128,
    AF_BLUE_STRING_TAI_VIET_TOP = 3172,
    AF_BLUE_STRING_TAI_VIET_BOTTOM = 3192,
    AF_BLUE_STRING_TAMIL_TOP = 3204,
    AF_BLUE_STRING_TAMIL_BOTTOM = 3236,
    AF_BLUE_STRING_TELUGU_TOP = 3268,
    AF_BLUE_STRING_TELUGU_BOTTOM = 3296,
    AF_BLUE_STRING_THAI_TOP = 3324,
    AF_BLUE_STRING_THAI_BOTTOM = 3348,
    AF_BLUE_STRING_THAI_ASCENDER = 3376,
    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 3388,
    AF_BLUE_STRING_THAI_DESCENDER = 3400,
    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 3416,
    AF_BLUE_STRING_THAI_DIGIT_TOP = 3424,
    AF_BLUE_STRING_TIFINAGH = 3436,
    af_blue_1_1 = 3467,
#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_CYRL = 28,
    AF_BLUE_STRINGSET_DEVA = 34,
    AF_BLUE_STRINGSET_DSRT = 40,
    AF_BLUE_STRINGSET_ETHI = 45,
    AF_BLUE_STRINGSET_GEOR = 48,
    AF_BLUE_STRINGSET_GEOK = 53,
    AF_BLUE_STRINGSET_GLAG = 60,
    AF_BLUE_STRINGSET_GREK = 65,
    AF_BLUE_STRINGSET_GUJR = 72,
    AF_BLUE_STRINGSET_GURU = 78,
    AF_BLUE_STRINGSET_HEBR = 84,
    AF_BLUE_STRINGSET_KNDA = 88,
    AF_BLUE_STRINGSET_KHMR = 91,
    AF_BLUE_STRINGSET_KHMS = 97,
    AF_BLUE_STRINGSET_LAO = 100,
    AF_BLUE_STRINGSET_LATN = 106,
    AF_BLUE_STRINGSET_LATB = 113,
    AF_BLUE_STRINGSET_LATP = 120,
    AF_BLUE_STRINGSET_LISU = 127,
    AF_BLUE_STRINGSET_MLYM = 130,
    AF_BLUE_STRINGSET_MYMR = 133,
    AF_BLUE_STRINGSET_NKOO = 138,
    AF_BLUE_STRINGSET_NONE = 143,
    AF_BLUE_STRINGSET_OLCK = 144,
    AF_BLUE_STRINGSET_OSGE = 147,
    AF_BLUE_STRINGSET_SINH = 155,
    AF_BLUE_STRINGSET_TAML = 159,
    AF_BLUE_STRINGSET_TAVT = 162,
    AF_BLUE_STRINGSET_TELU = 165,
    AF_BLUE_STRINGSET_THAI = 168,
    AF_BLUE_STRINGSET_TFNG = 176,
    af_blue_2_1 = 179,
#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 */
