1ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* This file has been generated by the Perl script `afblue.pl', */ 2ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* using data from file `afblue.dat'. */ 3ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 4ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/***************************************************************************/ 5ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* */ 6ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* afblue.h */ 7ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* */ 8ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* Auto-fitter data for blue strings (specification). */ 9ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* */ 109c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod/* Copyright 2013, 2014 by */ 11ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 12ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* */ 13ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* This file is part of the FreeType project, and may only be used, */ 14ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* modified, and distributed under the terms of the FreeType project */ 15ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 16ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* this file you indicate that you have read the license and */ 17ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* understand and accept it fully. */ 18ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* */ 19ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/***************************************************************************/ 20ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 21ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 22ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#ifndef __AFBLUE_H__ 23ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#define __AFBLUE_H__ 24ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 25ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 26ec0bab5697bb31ba980810145f62e3799946ec60Victoria LeaseFT_BEGIN_HEADER 27ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 28ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 29ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* an auxiliary macro to decode a UTF-8 character -- since we only use */ 30ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* hard-coded, self-converted data, no error checking is performed */ 31ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#define GET_UTF8_CHAR( ch, p ) \ 32ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease ch = (unsigned char)*p++; \ 33ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease if ( ch >= 0x80 ) \ 34ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease { \ 35ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UInt len; \ 36ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease \ 37ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease \ 38ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease if ( ch < 0xE0 ) \ 39ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease { \ 40ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease len = 1; \ 41ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease ch &= 0x1F; \ 42ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } \ 43ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease else if ( ch < 0xF0 ) \ 44ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease { \ 45ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease len = 2; \ 46ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease ch &= 0x0F; \ 47ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } \ 48ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease else \ 49ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease { \ 50ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease len = 3; \ 51ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease ch &= 0x07; \ 52ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } \ 53ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease \ 54ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease for ( ; len > 0; len-- ) \ 55ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease ch = ( ch << 6 ) | ( *p++ & 0x3F ); \ 56ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } 57ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 58ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 59ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /*************************************************************************/ 60ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /*************************************************************************/ 61ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /***** *****/ 62ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /***** B L U E S T R I N G S *****/ 63ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /***** *****/ 64ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /*************************************************************************/ 65ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /*************************************************************************/ 66ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 67ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* At the bottommost level, we define strings for finding blue zones. */ 68ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 69ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 709c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod#define AF_BLUE_STRING_MAX_LEN 51 71ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 72ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* The AF_Blue_String enumeration values are offsets into the */ 73ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* `af_blue_strings' array. */ 74ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 75ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease typedef enum AF_Blue_String_ 76ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease { 779c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP = 0, 789c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM = 17, 799c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_CYRILLIC_SMALL = 34, 809c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER = 51, 819c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_DEVANAGARI_BASE = 58, 829c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_DEVANAGARI_TOP = 83, 839c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_DEVANAGARI_HEAD = 108, 849c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_DEVANAGARI_BOTTOM = 133, 859c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_GREEK_CAPITAL_TOP = 140, 869c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 155, 879c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 168, 889c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_GREEK_SMALL = 181, 899c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 198, 909c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_HEBREW_TOP = 215, 919c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_HEBREW_BOTTOM = 232, 929c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_HEBREW_DESCENDER = 245, 939c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_LATIN_CAPITAL_TOP = 256, 949c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 265, 959c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_LATIN_SMALL_F_TOP = 274, 969c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_LATIN_SMALL = 282, 979c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 290, 989c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_1_1 = 295, 99ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#ifdef AF_CONFIG_OPTION_CJK 1009c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1, 1019c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 153, 102ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease af_blue_1_1_1 = af_blue_1_1 + 304, 103ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT 1049c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_CJK_LEFT = af_blue_1_1_1 + 1, 1059c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRING_CJK_RIGHT = af_blue_1_1_1 + 153, 1069c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_1_1_2 = af_blue_1_1_1 + 304, 107ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#else 1089c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_1_1_2 = af_blue_1_1_1 + 0, 109ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */ 1109c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_1_2 = af_blue_1_1_2 + 0, 111ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#else 1129c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_1_2 = af_blue_1_1 + 0, 113ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#endif /* AF_CONFIG_OPTION_CJK */ 114ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 115ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 116ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease AF_BLUE_STRING_MAX /* do not remove */ 117ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 118ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } AF_Blue_String; 119ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 120ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 121ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_LOCAL_ARRAY( char ) 122ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease af_blue_strings[]; 123ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 124ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 125ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /*************************************************************************/ 126ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /*************************************************************************/ 127ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /***** *****/ 128ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /***** B L U E S T R I N G S E T S *****/ 129ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /***** *****/ 130ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /*************************************************************************/ 131ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /*************************************************************************/ 132ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 1339c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod /* The next level is to group blue strings into style-specific sets. */ 134ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 135ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 136ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* Properties are specific to a writing system. We assume that a given */ 137ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* blue string can't be used in more than a single writing system, which */ 138ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* is a safe bet. */ 1399c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod#define AF_BLUE_PROPERTY_LATIN_TOP ( 1 << 0 ) /* must have value 1 */ 1409c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod#define AF_BLUE_PROPERTY_LATIN_NEUTRAL ( 1 << 1 ) 1419c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod#define AF_BLUE_PROPERTY_LATIN_X_HEIGHT ( 1 << 2 ) 1429c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod#define AF_BLUE_PROPERTY_LATIN_LONG ( 1 << 3 ) 143ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 1449c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod#define AF_BLUE_PROPERTY_CJK_TOP ( 1 << 0 ) /* must have value 1 */ 1459c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod#define AF_BLUE_PROPERTY_CJK_HORIZ ( 1 << 1 ) /* must have value 2 */ 146ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#define AF_BLUE_PROPERTY_CJK_RIGHT AF_BLUE_PROPERTY_CJK_TOP 147ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 148ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 1499c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod#define AF_BLUE_STRINGSET_MAX_LEN 7 150ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 151ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* The AF_Blue_Stringset enumeration values are offsets into the */ 152ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* `af_blue_stringsets' array. */ 153ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 154ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease typedef enum AF_Blue_Stringset_ 155ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease { 1569c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRINGSET_CYRL = 0, 1579c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRINGSET_DEVA = 6, 1589c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRINGSET_GREK = 12, 1599c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRINGSET_HEBR = 19, 1609c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod AF_BLUE_STRINGSET_LATN = 23, 1619c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_2_1 = 30, 162ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#ifdef AF_CONFIG_OPTION_CJK 163ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0, 1649c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_2_1_1 = af_blue_2_1 + 2, 165ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT 1669c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_2_1_2 = af_blue_2_1_1 + 2, 167ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#else 1689c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_2_1_2 = af_blue_2_1_1 + 0, 169ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */ 1709c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_2_2 = af_blue_2_1_2 + 1, 171ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#else 1729c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod af_blue_2_2 = af_blue_2_1 + 0, 173ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#endif /* AF_CONFIG_OPTION_CJK */ 174ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 175ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 176ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease AF_BLUE_STRINGSET_MAX /* do not remove */ 177ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 178ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } AF_Blue_Stringset; 179ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 180ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 181ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease typedef struct AF_Blue_StringRec_ 182ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease { 183ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease AF_Blue_String string; 184ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_UShort properties; 185ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 186ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } AF_Blue_StringRec; 187ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 188ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 189ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease FT_LOCAL_ARRAY( AF_Blue_StringRec ) 190ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease af_blue_stringsets[]; 191ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 192ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* */ 193ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 194ec0bab5697bb31ba980810145f62e3799946ec60Victoria LeaseFT_END_HEADER 195ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 196ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 197ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#endif /* __AFBLUE_H__ */ 198ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 199ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 200ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/* END */ 201