31#define GET_UTF8_CHAR( ch, p ) \
34 ch = (unsigned char)*p++; \
45 else if ( ch < 0xF0 ) \
56 for ( ; len_ > 0; len_-- ) \
57 ch = ( ch << 6 ) | ( *p++ & 0x3F ); \
73#define AF_BLUE_STRING_MAX_LEN 51
263#ifdef AF_CONFIG_OPTION_CJK
267#ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
268 AF_BLUE_STRING_CJK_LEFT = af_blue_1_1_1 + 1,
269 AF_BLUE_STRING_CJK_RIGHT = af_blue_1_1_1 + 204,
270 af_blue_1_1_2 = af_blue_1_1_1 + 405,
272 af_blue_1_1_2 = af_blue_1_1_1 + 0,
303#define AF_BLUE_PROPERTY_LATIN_TOP ( 1U << 0 )
304#define AF_BLUE_PROPERTY_LATIN_SUB_TOP ( 1U << 1 )
305#define AF_BLUE_PROPERTY_LATIN_NEUTRAL ( 1U << 2 )
306#define AF_BLUE_PROPERTY_LATIN_X_HEIGHT ( 1U << 3 )
307#define AF_BLUE_PROPERTY_LATIN_LONG ( 1U << 4 )
309#define AF_BLUE_PROPERTY_CJK_TOP ( 1U << 0 )
310#define AF_BLUE_PROPERTY_CJK_HORIZ ( 1U << 1 )
311#define AF_BLUE_PROPERTY_CJK_RIGHT AF_BLUE_PROPERTY_CJK_TOP
314#define AF_BLUE_STRINGSET_MAX_LEN 8
374#ifdef AF_CONFIG_OPTION_CJK
377#ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
378 af_blue_2_1_2 = af_blue_2_1_1 + 2,
380 af_blue_2_1_2 = af_blue_2_1_1 + 0,
@ AF_BLUE_STRING_KHMER_TOP
@ AF_BLUE_STRING_CARIAN_TOP
@ AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP
@ AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER
@ AF_BLUE_STRING_LATIN_SMALL_BOTTOM
@ AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER
@ AF_BLUE_STRING_LAO_ASCENDER
@ AF_BLUE_STRING_GREEK_SMALL_BETA_TOP
@ AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM
@ AF_BLUE_STRING_DEVANAGARI_TOP
@ AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM
@ AF_BLUE_STRING_THAI_LARGE_DESCENDER
@ AF_BLUE_STRING_GREEK_CAPITAL_TOP
@ AF_BLUE_STRING_DEVANAGARI_HEAD
@ AF_BLUE_STRING_LATIN_CAPITAL_TOP
@ AF_BLUE_STRING_KAYAH_LI_TOP
@ AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM
@ AF_BLUE_STRING_HEBREW_TOP
@ AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP
@ AF_BLUE_STRING_KANNADA_TOP
@ AF_BLUE_STRING_SHAVIAN_BOTTOM
@ AF_BLUE_STRING_ETHIOPIC_BOTTOM
@ AF_BLUE_STRING_BENGALI_TOP
@ AF_BLUE_STRING_DESERET_CAPITAL_TOP
@ AF_BLUE_STRING_OSMANYA_TOP
@ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER
@ AF_BLUE_STRING_SHAVIAN_SMALL_TOP
@ AF_BLUE_STRING_CHAKMA_DESCENDER
@ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM
@ AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM
@ AF_BLUE_STRING_OSAGE_SMALL_BOTTOM
@ AF_BLUE_STRING_NKO_SMALL_TOP
@ AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP
@ AF_BLUE_STRING_MALAYALAM_TOP
@ AF_BLUE_STRING_SINHALA_DESCENDER
@ AF_BLUE_STRING_THAI_DIGIT_TOP
@ AF_BLUE_STRING_NKO_BOTTOM
@ AF_BLUE_STRING_LISU_TOP
@ AF_BLUE_STRING_HEBREW_BOTTOM
@ AF_BLUE_STRING_TAMIL_TOP
@ AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM
@ AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP
@ AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP
@ AF_BLUE_STRING_GUJARATI_BOTTOM
@ AF_BLUE_STRING_LATIN_SMALL_TOP
@ AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP
@ AF_BLUE_STRING_TIFINAGH
@ AF_BLUE_STRING_BUHID_TOP
@ AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER
@ AF_BLUE_STRING_KHMER_DESCENDER
@ AF_BLUE_STRING_OSAGE_SMALL_TOP
@ AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP
@ AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM
@ AF_BLUE_STRING_GURMUKHI_DIGIT_TOP
@ AF_BLUE_STRING_THAI_DESCENDER
@ AF_BLUE_STRING_CHEROKEE_CAPITAL
@ AF_BLUE_STRING_SINHALA_BOTTOM
@ AF_BLUE_STRING_GURMUKHI_BOTTOM
@ AF_BLUE_STRING_THAI_LARGE_ASCENDER
@ AF_BLUE_STRING_CARIAN_BOTTOM
@ AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP
@ AF_BLUE_STRING_GURMUKHI_BASE
@ AF_BLUE_STRING_GURMUKHI_TOP
@ AF_BLUE_STRING_ADLAM_SMALL_TOP
@ AF_BLUE_STRING_CYPRIOT_TOP
@ AF_BLUE_STRING_OL_CHIKI
@ AF_BLUE_STRING_KAYAH_LI_ASCENDER
@ AF_BLUE_STRING_SAURASHTRA_BOTTOM
@ AF_BLUE_STRING_LISU_BOTTOM
@ AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP
@ AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER
@ AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER
@ AF_BLUE_STRING_TAI_VIET_TOP
@ AF_BLUE_STRING_AVESTAN_TOP
@ AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM
@ AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM
@ AF_BLUE_STRING_ETHIOPIC_TOP
@ AF_BLUE_STRING_MYANMAR_BOTTOM
@ AF_BLUE_STRING_MYANMAR_ASCENDER
@ AF_BLUE_STRING_SHAVIAN_TOP
@ AF_BLUE_STRING_SUNDANESE_BOTTOM
@ AF_BLUE_STRING_TAI_VIET_BOTTOM
@ AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM
@ AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM
@ AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER
@ AF_BLUE_STRING_THAI_TOP
@ AF_BLUE_STRING_TAMIL_BOTTOM
@ AF_BLUE_STRING_LAO_LARGE_ASCENDER
@ AF_BLUE_STRING_ARABIC_TOP
@ AF_BLUE_STRING_OSAGE_CAPITAL_TOP
@ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER
@ AF_BLUE_STRING_BUHID_SMALL
@ AF_BLUE_STRING_ARMENIAN_SMALL_TOP
@ AF_BLUE_STRING_SHAVIAN_DESCENDER
@ AF_BLUE_STRING_GUJARATI_DIGIT_TOP
@ AF_BLUE_STRING_CYPRIOT_SMALL
@ AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP
@ AF_BLUE_STRING_COPTIC_CAPITAL_TOP
@ AF_BLUE_STRING_CHAKMA_BOTTOM
@ AF_BLUE_STRING_GUJARATI_TOP
@ AF_BLUE_STRING_SUNDANESE_DESCENDER
@ AF_BLUE_STRING_THAI_BOTTOM
@ AF_BLUE_STRING_LATIN_SUBS_SMALL
@ AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM
@ AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP
@ AF_BLUE_STRING_DESERET_SMALL_BOTTOM
@ AF_BLUE_STRING_THAI_ASCENDER
@ AF_BLUE_STRING_LAO_BOTTOM
@ AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM
@ AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER
@ AF_BLUE_STRING_GOTHIC_BOTTOM
@ AF_BLUE_STRING_BUHID_LARGE
@ AF_BLUE_STRING_CHEROKEE_SMALL
@ AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER
@ AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP
@ AF_BLUE_STRING_ADLAM_CAPITAL_TOP
@ AF_BLUE_STRING_NKO_SMALL_BOTTOM
@ AF_BLUE_STRING_LATIN_SUPS_SMALL
@ AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM
@ AF_BLUE_STRING_OLD_TURKIC_TOP
@ AF_BLUE_STRING_GUJARATI_ASCENDER
@ AF_BLUE_STRING_KAYAH_LI_DESCENDER
@ AF_BLUE_STRING_GURMUKHI_HEAD
@ AF_BLUE_STRING_MYANMAR_DESCENDER
@ AF_BLUE_STRING_DESERET_SMALL_TOP
@ AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP
@ AF_BLUE_STRING_VAI_BOTTOM
@ AF_BLUE_STRING_DEVANAGARI_BOTTOM
@ AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER
@ AF_BLUE_STRING_BAMUM_BOTTOM
@ AF_BLUE_STRING_CYRILLIC_SMALL
@ AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER
@ AF_BLUE_STRING_LATIN_SMALL_DESCENDER
@ AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP
@ AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM
@ AF_BLUE_STRING_KHMER_BOTTOM
@ AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM
@ AF_BLUE_STRING_KHMER_LARGE_DESCENDER
@ AF_BLUE_STRING_MALAYALAM_BOTTOM
@ AF_BLUE_STRING_CYPRIOT_BOTTOM
@ AF_BLUE_STRING_BAMUM_TOP
@ AF_BLUE_STRING_SAURASHTRA_TOP
@ AF_BLUE_STRING_OLD_TURKIC_BOTTOM
@ AF_BLUE_STRING_KANNADA_BOTTOM
@ AF_BLUE_STRING_BUHID_BOTTOM
@ AF_BLUE_STRING_ARABIC_JOIN
@ AF_BLUE_STRING_GOTHIC_TOP
@ AF_BLUE_STRING_OSAGE_SMALL_DESCENDER
@ AF_BLUE_STRING_GREEK_SMALL_DESCENDER
@ AF_BLUE_STRING_CHAKMA_TOP
@ AF_BLUE_STRING_DEVANAGARI_BASE
@ AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM
@ AF_BLUE_STRING_OSMANYA_BOTTOM
@ AF_BLUE_STRING_TELUGU_TOP
@ AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP
@ AF_BLUE_STRING_COPTIC_SMALL_TOP
@ AF_BLUE_STRING_COPTIC_SMALL_BOTTOM
@ AF_BLUE_STRING_LAO_DESCENDER
@ AF_BLUE_STRING_BENGALI_BASE
@ AF_BLUE_STRING_MYANMAR_TOP
@ AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM
@ AF_BLUE_STRING_AVESTAN_BOTTOM
@ AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM
@ AF_BLUE_STRING_SINHALA_TOP
@ AF_BLUE_STRING_KAYAH_LI_BOTTOM
@ AF_BLUE_STRING_HEBREW_DESCENDER
@ AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER
@ AF_BLUE_STRING_GREEK_SMALL
@ AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM
@ AF_BLUE_STRING_BENGALI_HEAD
@ AF_BLUE_STRING_OSAGE_SMALL_ASCENDER
@ AF_BLUE_STRING_ARABIC_BOTTOM
@ AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP
@ AF_BLUE_STRING_LATIN_SMALL_F_TOP
@ AF_BLUE_STRING_ADLAM_SMALL_BOTTOM
@ AF_BLUE_STRING_SUNDANESE_TOP
@ AF_BLUE_STRING_TELUGU_BOTTOM
@ AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM
@ AF_BLUE_STRING_GUJARATI_DESCENDER
struct AF_Blue_StringRec_ AF_Blue_StringRec
enum AF_Blue_String_ AF_Blue_String
enum AF_Blue_Stringset_ AF_Blue_Stringset
#define FT_LOCAL_ARRAY(x)