JDK14/Java14源码在线阅读

// afblue.dat
//
//   Auto-fitter data for blue strings.
//
// Copyright (C) 2013-2019 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.


// This file contains data specific to blue zones.  It gets processed by
// a script to simulate `jagged arrays', with enumeration values holding
// offsets into the arrays.
//
// The format of the file is rather simple:  A section starts with three
// labels separated by whitespace and followed by a colon (everything in a
// single line); the first label gives the name of the enumeration template,
// the second the name of the array template, and the third the name of the
// `maximum' template.  The script then fills the corresponding templates
// (indicated by `@' characters around the name).
//
// A section contains one or more data records.  Each data record consists
// of two or more lines.  The first line holds the enumeration name, and the
// remaining lines the corresponding array data.
//
// There are two possible representations for array data.
//
// - A string of characters or character clusters (for example, representing
//   Aksharas, Devanagari syllables) in UTF-8 encoding enclosed in double
//   quotes, using C syntax, where the elements are separated by spaces.
//   There can be only one string per line, thus the starting and ending
//   double quote must be the first and last character in the line,
//   respectively, ignoring whitespace before and after the string.  If
//   there are multiple strings (in multiple lines), they are concatenated
//   to a single string.  In the output, a string gets represented as a
//   series of singles bytes, followed by a zero byte.  The enumeration
//   values simply hold byte offsets to the start of the corresponding
//   strings.
//
//   For strings, the `maximum' template holds the maximum number of
//   non-space characters in all strings.
//
// - Data blocks enclosed in balanced braces, which get copied verbatim and
//   which can span multiple lines.  The opening brace of a block must be
//   the first character of a line (ignoring whitespace), and the closing
//   brace the last (ignoring whitespace also).  The script appends a comma
//   character after each block and counts the number of blocks to set the
//   enumeration values.
//
//   For data blocks, the `maximum' template holds the maximum number of
//   array elements.
//
// A section can contain either strings only or data blocks only.
//
// A comment line starts with `//'; it gets removed.  A preprocessor
// directive line (using the standard syntax of `cpp') starts with `#' and
// gets copied verbatim to both the enumeration and the array.  Whitespace
// outside of a string is insignificant.
//
// Preprocessor directives are ignored while the script computes maximum
// values; this essentially means that the maximum values can easily be too
// large.  Given that the purpose of those values is to create local
// fixed-size arrays at compile time for further processing of the blue zone
// data, this isn't a problem.  Note the final zero byte of a string is not
// counted.  Note also that the count holds the number of UTF-8 encoded
// characters, not bytes.


// The blue zone string data, to be used in the blue stringsets below.

AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:

  AF_BLUE_STRING_ADLAM_CAPITAL_TOP
    "馂 馂 馂 馂 馂 馂"
  AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM
    "馂 馂"
  AF_BLUE_STRING_ADLAM_SMALL_TOP
    "馂が 馂ぎ 馂せ 馂ぜ 馂ぞ"
  AF_BLUE_STRING_ADLAM_SMALL_BOTTOM
    "馂い 馂え 馂ぉ 馂き 馂ご 馂じ 馂ず 馂"

  AF_BLUE_STRING_ARABIC_TOP
    "丕 廿 賱 賰 胤 馗"
  AF_BLUE_STRING_ARABIC_BOTTOM
    "鬲 孬 胤 馗 賰"
  // We don't necessarily have access to medial forms via Unicode in case
  // Arabic presentational forms are missing.  The only character that is
  // guaranteed to have the same vertical position with joining (this is,
  // non-isolated) forms is U+0640, ARABIC TATWEEL, which must join both
  // round and flat curves.
  AF_BLUE_STRING_ARABIC_JOIN
    "賭"

  AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP
    "员 談 諕 諐 圆 猿 源 諘"
  AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM
    "諕 請 源 諆 諊 諐 諒 諘"
  AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER
    "榨 乍 斋 沾 站 謫 粘"
  AF_BLUE_STRING_ARMENIAN_SMALL_TOP
    "铡 盏 謧 战 眨 辗 謤 謪"
  AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM
    "瞻 崭 粘 铡 榨 债 战 謪"
  AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER
    "闸 炸 斋 宅 詹 蘸 謨 謥"

  AF_BLUE_STRING_AVESTAN_TOP
    "饜瑎 饜瑏 饜瑦 饜瑳"
  AF_BLUE_STRING_AVESTAN_BOTTOM
    "饜瑎 饜瑏"

  AF_BLUE_STRING_BAMUM_TOP
    "隁� 隁� 隂� 隂� 隂� 隂� 隂� 隂�"
  AF_BLUE_STRING_BAMUM_BOTTOM
    "隁� 隁� 隁� 隂� 隁� 隁� 隂� 隂�"

  AF_BLUE_STRING_BENGALI_BASE
    "唳� 唳� 唳� 唳� 唳� 唳� 唳� 唳�"
  AF_BLUE_STRING_BENGALI_TOP
    "唳� 唳� 唳� 唳� 唰� 唰� 唰�"
  AF_BLUE_STRING_BENGALI_HEAD
    "唳� 唳� 唳� 唳� 唳� 唳� 唳� 唳�"

  AF_BLUE_STRING_BUHID_TOP
    "釢� 釢�"
  AF_BLUE_STRING_BUHID_LARGE
    "釢� 釢� 釢�"
  AF_BLUE_STRING_BUHID_SMALL
    "釢� 釢� 釢� 釢�"
  AF_BLUE_STRING_BUHID_BOTTOM
    "釢� 釢� 釢� 釢� 釢� 釢� 釢�"

  AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP
    "釛� 釚� 釔� 釖� 釕� 釕� 釘� 釛�"
  AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM
    "釛� 釚� 釖� 釔� 釕� 釖� 釘� 釛�"
  AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP
    "釗� 釗� 釗� 釗� 釗� 釙� 釙� 針�"
  AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM
    "釙� 釗� 釗� 釙� 釗� 釗� 釙� 針�"
  AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP
    "釔� 釞� 幔� 釔� 釖� 幔� 釘�"
  AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM
    "釞� 釛� 釖� 釔� 釘� 釖� 釖� 釗�"

  AF_BLUE_STRING_CARIAN_TOP
    "饜姧 饜姭 饜姮 饜姯 饜姳 饜姾 饜娂 饜娍"
  AF_BLUE_STRING_CARIAN_BOTTOM
    "饜姡 饜姧 饜姺 饜媭 饜姭 饜姼 饜媺"

  AF_BLUE_STRING_CHAKMA_TOP
    "饝剝 饝剠 饝剦 饝剻 饝剹"
  AF_BLUE_STRING_CHAKMA_BOTTOM
    "饝剠 饝剾 饝劃 饝剹 饝創"
  AF_BLUE_STRING_CHAKMA_DESCENDER
    "饝剸饝劤饝劉 饝剺饝劤饝劉 饝剻饝劤饝劉 饝劋饝劤饝劉 饝劌饝劤饝劉"

  AF_BLUE_STRING_CHEROKEE_CAPITAL
    "釓� 釒� 釒� 釓� 釒� 釓� 釒� 釓�"
  AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER
    "戤� 戤� 戤� 戥� 戥� 戤� 戤� 戤�"
  AF_BLUE_STRING_CHEROKEE_SMALL
    "戤� 戥� 戤� 戤� 戤� 戥� 戤� 戤�"
  AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER
    "釓� 戤� 戥� 戥�"

  AF_BLUE_STRING_COPTIC_CAPITAL_TOP
    "獠� 獠� 獠� 獬� 獠� 獠� 獠� 獬�"
  AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM
    "獬� 獬� 獬� 獠� 獠� 獠� 獬� 獠�"
  AF_BLUE_STRING_COPTIC_SMALL_TOP
    "獠� 獠� 獠� 獬� 獠� 獠� 獠� 獬�"
  AF_BLUE_STRING_COPTIC_SMALL_BOTTOM
    "獬� 獬� 獬� 獠� 獠� 獠� 獬� 獬�"

  AF_BLUE_STRING_CYPRIOT_TOP
    "饜爫 饜牂 饜牫 饜牨 饜爡 饜爴 饜牐 饜牔"
  AF_BLUE_STRING_CYPRIOT_BOTTOM
    "饜爟 饜爦 饜牄 饜牐 饜牫 饜牭 饜爯"
  AF_BLUE_STRING_CYPRIOT_SMALL
    "饜爤 饜爮 饜爾"

  AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP
    "袘 袙 袝 袩 袟 袨 小 协"
  AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM
    "袘 袙 袝 楔 袟 袨 小 协"
  AF_BLUE_STRING_CYRILLIC_SMALL
    "褏 锌 薪 褕 械 蟹 芯 褋"
  AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER
    "褉 褍 褎"

  AF_BLUE_STRING_DESERET_CAPITAL_TOP
    "饜悅 饜悇 饜悑 饜悧 饜悜"
  AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM
    "饜悁 饜悅 饜悇 饜悧 饜悰"
  AF_BLUE_STRING_DESERET_SMALL_TOP
    "饜惇 饜惉 饜惓 饜惪 饜惞"
  AF_BLUE_STRING_DESERET_SMALL_BOTTOM
    "饜惃 饜惇 饜惉 饜惪 饜憙"

  AF_BLUE_STRING_DEVANAGARI_BASE
    "啶� 啶� 啶� 啶� 啶� 啶� 啶� 啶�"
  AF_BLUE_STRING_DEVANAGARI_TOP
    "啶� 啶� 啶� 啶� 啶� 啷� 啷� 啷�"
  // note that some fonts have extreme variation in the height of the
  // round head elements; for this reason we also define the `base'
  // blue zone, which must be always present
  AF_BLUE_STRING_DEVANAGARI_HEAD
    "啶� 啶� 啶� 啶� 啶� 啶� 啶� 啶�"
  AF_BLUE_STRING_DEVANAGARI_BOTTOM
    "啷� 啷�"

  AF_BLUE_STRING_ETHIOPIC_TOP
    "釄� 釄� 釈� 釐� 釄� 釅� 釈� 釈�"
  AF_BLUE_STRING_ETHIOPIC_BOTTOM
    "釄� 釄� 釅� 釈� 釄� 釄� 釈� 釋�"

  AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP
    "醿� 醿� 醿� 醿� 醿� 醿� 醿� 醿�"
  AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM
    "醿� 醿� 醿� 醿� 醿� 醿� 醿� 醿�"
  AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER
    "醿� 醿� 醿� 醿� 醿� 醿� 醿� 醿�"
  AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER
    "醿� 醿� 醿� 醿� 醿� 醿� 醿� 醿�"

  AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP
    "醾� 醾� 醾� 醾� 醾� 醾� 醾� 醾�"
  AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM
    "醾� 醾� 醾� 醾� 醾� 醾� 醾� 醾�"

  AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP
    "獯� 獯� 獯� 獯� 獯� 獯� 獯� 獯�"
  AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM
    "獯� 獯� 獯� 獯� 獯� 獯� 獯� 獯�"
  AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER
    "獯� 獯� 獯� 獯� 獯� 獯� 獯� 獯�"
  AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER
    "獯� 獯� 獯� 獯� 獯� 獯� 獯� 獯�"

  AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP
    "岵� 岵� 岵� 岵� 岵� 岵� 岵� 岵�"
  AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM
    "岵� 岵� 岵� 岵� 岵� 岵� 岵� 岵�"

  AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP
    "獍� 獍� 獍� 獍� 獍� 獍� 獍� 獍�"
  AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM
    "獍� 獍� 獍� 獍� 獍� 獍� 獍� 獍�"
  AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP
    "獍� 獗� 獗� 獍� 獍� 獍� 獗� 獍�"
  AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM
    "獍� 獍� 獍� 獗� 獗� 獗� 獍� 獗�"

  AF_BLUE_STRING_GOTHIC_TOP
    "饜尣 饜尪 饜崁 饜崉 饜尨 饜崈 饜崍 饜尵"
  AF_BLUE_STRING_GOTHIC_BOTTOM
    "饜尪 饜尨 饜崈 饜崍"

  AF_BLUE_STRING_GREEK_CAPITAL_TOP
    "螕 螔 螘 螙 螛 螣 惟"
  AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM
    "螔 螖 螙 螢 螛 螣"
  AF_BLUE_STRING_GREEK_SMALL_BETA_TOP
    "尾 胃 未 味 位 尉"
  AF_BLUE_STRING_GREEK_SMALL
    "伪 蔚 喂 慰 蟺 蟽 蟿 蠅"
  AF_BLUE_STRING_GREEK_SMALL_DESCENDER
    "尾 纬 畏 渭 蟻 蠁 蠂 蠄"

  AF_BLUE_STRING_GUJARATI_TOP
    "嗒� 嗒� 嗒� 嗒� 嗒� 嗒� 嗒� 喃�"
  AF_BLUE_STRING_GUJARATI_BOTTOM
    "嗒� 嗒� 嗒� 嗒� 嗒� 嗒� 嗒� 嗒�"
  AF_BLUE_STRING_GUJARATI_ASCENDER
    "嗒� 嗒� 嗒� 喃� 嗒侧珋 嗒多珝嗒氞 嗒溹 嗒膏珋"
  AF_BLUE_STRING_GUJARATI_DESCENDER
    "喃� 喃� 喃� 嗒栢珌 嗒涏珒 嗒涏珓"
  AF_BLUE_STRING_GUJARATI_DIGIT_TOP
    "喃� 喃� 喃� 喃� 喃�"

  AF_BLUE_STRING_GURMUKHI_BASE
    "啜� 啜� 啜� 啜� 啜� 啜� 啜� 啜�"
  AF_BLUE_STRING_GURMUKHI_HEAD
    "啜� 啜� 啜� 啜� 啜� 啜� 啜� 啜�"
  AF_BLUE_STRING_GURMUKHI_TOP
    "啜� 啜� 啜� 啜� 啜� 喋� 啜� 喋�"
  AF_BLUE_STRING_GURMUKHI_BOTTOM
    "啜� 啜� 啜� 啜� 啜� 啜� 啜� 啜�"
  AF_BLUE_STRING_GURMUKHI_DIGIT_TOP
    "喋� 喋� 喋� 喋� 喋�"

  AF_BLUE_STRING_HEBREW_TOP
    "讘 讚 讛 讞 讱 讻 诐 住"
  AF_BLUE_STRING_HEBREW_BOTTOM
    "讘 讟 讻 诐 住 爪"
  AF_BLUE_STRING_HEBREW_DESCENDER
    "拽 讱 谉 祝 抓"

  AF_BLUE_STRING_KANNADA_TOP
    "嗖� 嗖� 嗖� 嗖� 嗖膏簿 嗖ㄠ簿 嗖︵簿 嗖班簿"
  AF_BLUE_STRING_KANNADA_BOTTOM
    "嗖� 嗖� 嗖� 嗖� 喑� 喑� 喑� 喑�"

  AF_BLUE_STRING_KAYAH_LI_TOP
    "辘� 辘� 辘� 辘� 辘� 辘�"
  AF_BLUE_STRING_KAYAH_LI_BOTTOM
    "辘� 辘� 辘� 辘� 辘�"
  AF_BLUE_STRING_KAYAH_LI_ASCENDER
    "辘� 辘�"
  AF_BLUE_STRING_KAYAH_LI_DESCENDER
    "辘� 辘� 辘�"
  AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER
    "辘戧が 辘滉き 辘旉が"

  AF_BLUE_STRING_KHMER_TOP
    "釣� 釣� 釣� 釣� 釣� 釣�"
  AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP
    "釣�釤掅瀫 釣�釤掅瀬 釣�釤掅瀭 釣�釤掅瀽"
  AF_BLUE_STRING_KHMER_BOTTOM
    "釣� 釣� 釣� 釣� 釣� 釣� 釣� 釣�"
  AF_BLUE_STRING_KHMER_DESCENDER
    "釣忈煉釣� 釣氠焵 釣册煉釣� 釣⑨灴"
  AF_BLUE_STRING_KHMER_LARGE_DESCENDER
    "釣撫煉釣忈煉釣氠焹 釣勧煉釣佱煉釣� 釣�釤掅灁釤� 釣呩煉釣氠焵 釣撫煉釣忈灴 釣涐煉釣斸灴"

  AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP
    "岌� 岌�"
  AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM
    "岌� 岌�"

  AF_BLUE_STRING_LAO_TOP
    "嗪� 嗪� 嗪� 嗪� 嗪� 嗪� 嗪� 嗪�"
  AF_BLUE_STRING_LAO_BOTTOM
    "嗪� 嗪� 嗪� 嗪� 嗪� 嗪� 嗪� 嗪�"
  AF_BLUE_STRING_LAO_ASCENDER
    "嗪� 嗪� 嗪� 嗪�"
  AF_BLUE_STRING_LAO_LARGE_ASCENDER
    "嗷� 嗷� 嗷�"
  AF_BLUE_STRING_LAO_DESCENDER
    "嗪� 嗪� 嗪� 嗪� 嗷� 嗪�"

  AF_BLUE_STRING_LATIN_CAPITAL_TOP
    "T H E Z O C Q S"
  AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM
    "H E Z L O C U S"
  AF_BLUE_STRING_LATIN_SMALL_F_TOP
    "f i j k d b h"
  AF_BLUE_STRING_LATIN_SMALL_TOP
    "u v x z o e s c"
  AF_BLUE_STRING_LATIN_SMALL_BOTTOM
    "n r x z o e s c"
  AF_BLUE_STRING_LATIN_SMALL_DESCENDER
    "p q g j y"

  // we assume that both the subscript and superscript ranges
  // don't contain oldstyle digits (actually, most fonts probably
  // have digits only in those ranges)
  AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP
    "鈧� 鈧� 鈧� 鈧� 鈧�"
  AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM
    "鈧� 鈧� 鈧� 鈧� 鈧�"
  AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP
    "岬� 獗� 鈧� 鈧� 鈧�"
  AF_BLUE_STRING_LATIN_SUBS_SMALL
    "鈧� 鈧� 鈧� 鈧� 鈧� 鈧� 岬� 岬� 岬�"
  AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER
    "岬� 岬� 岬� 岬� 鈧�"

  AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP
    "鈦� 鲁 鈦� 鈦� 岬� 岽� 岽� 岽�"
  AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM
    "鈦� 鹿 虏 鲁 岽� 岽� 岽� 岬�"
  AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP
    "岬� 岬� 岬� 拾 什 岫� 鈦�"
  AF_BLUE_STRING_LATIN_SUPS_SMALL
    "岬� 岬� 食 刷 耍 岫� 岫�"
  AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER
    "岬� 矢 岬�"

  AF_BLUE_STRING_LISU_TOP
    "険� 険� 険� 険� 険� 険� 険� 険�"
  AF_BLUE_STRING_LISU_BOTTOM
    "険� 険� 険� 険� 険� 険� 険� 険�"

  AF_BLUE_STRING_MALAYALAM_TOP
    "啻� 啻� 啻� 啻� 啻� 啻� 啻氞祶啻� 啻祶啻�"
  AF_BLUE_STRING_MALAYALAM_BOTTOM
    "啻� 啻� 啻� 啻� 啻� 啻� 啻� 啻�"

  AF_BLUE_STRING_MONGOLIAN_TOP_BASE
    "釥� 釥� 釥� 釥� 帷� 帷� 鈥嶀 鈥� 鈥嶀〕鈥�"
  AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE
    "帷�"

  AF_BLUE_STRING_MYANMAR_TOP
    "醼� 醼� 醼� 醼� 醼� 醽� 醽� 醽�"
  AF_BLUE_STRING_MYANMAR_BOTTOM
    "醼� 醼� 醼� 醼� 醼� 醼� 醽� 醽�"
  AF_BLUE_STRING_MYANMAR_ASCENDER
    "醼� 醼� 醽� 醽� 醽� 醼� 醼�"
  AF_BLUE_STRING_MYANMAR_DESCENDER
    "醼� 醼� 醼� 醼� 醼� 醽� 醽� 醽�"

  AF_BLUE_STRING_NKO_TOP
    "邜 邏 邟 邿 邧 邷 郀 撺"
  AF_BLUE_STRING_NKO_BOTTOM
    "還 邩 摺 郀 撺"
  AF_BLUE_STRING_NKO_SMALL_TOP
    "邚 邲 邒"
  AF_BLUE_STRING_NKO_SMALL_BOTTOM
    "邘 邚 邲 邒"

  AF_BLUE_STRING_OL_CHIKI
    "岜� 岜� 岜� 岜� 岜� 岜�"

  AF_BLUE_STRING_OLD_TURKIC_TOP
    "饜皸 饜皹 饜哀"
  AF_BLUE_STRING_OLD_TURKIC_BOTTOM
    "饜皦 饜皸 饜唉 饜哀"

  AF_BLUE_STRING_OSAGE_CAPITAL_TOP
    "饜捑 饜搷 饜搾 饜摀 饜捇 饜搨 饜挼 饜搯"
  AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM
    "饜挵 饜搷 饜搨 饜捒 饜搸 饜捁"
  AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER
    "饜捈 饜捊 饜捑"
  AF_BLUE_STRING_OSAGE_SMALL_TOP
    "饜摰 饜摱 饜摵 饜摶 饜摑 饜摚 饜摢 饜摦"
  AF_BLUE_STRING_OSAGE_SMALL_BOTTOM
    "饜摌 饜摎 饜摚 饜摰 饜摗 饜摟 饜摢 饜摱"
  AF_BLUE_STRING_OSAGE_SMALL_ASCENDER
    "饜摛 饜摝 饜摳 饜摴 饜摏"
  AF_BLUE_STRING_OSAGE_SMALL_DESCENDER
    "饜摛 饜摜 饜摝"

  AF_BLUE_STRING_OSMANYA_TOP
    "饜拞 饜拤 饜拹 饜拻 饜挊 饜挍 饜挔 饜挘"
  AF_BLUE_STRING_OSMANYA_BOTTOM
    "饜拃 饜拏 饜拞 饜拡 饜拪 饜拻 饜挔 饜挬"

  AF_BLUE_STRING_SAURASHTRA_TOP
    "辎� 辎� 辎� 辎� 辎� 辎� 辎� 辎�"
  AF_BLUE_STRING_SAURASHTRA_BOTTOM
    "辎� 辎� 辎� 辎� 辎�"

  AF_BLUE_STRING_SHAVIAN_TOP
    "饜憰 饜憴"
  AF_BLUE_STRING_SHAVIAN_BOTTOM
    "饜憯 饜憱 饜憲 饜懝 饜懟"
  AF_BLUE_STRING_SHAVIAN_DESCENDER
    "饜憻 饜懀"
  AF_BLUE_STRING_SHAVIAN_SMALL_TOP
    "饜懕 饜懖 饜懗 饜懘 饜懜 饜懞 饜懠"
  AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM
    "饜懘 饜懟 饜懝"

  AF_BLUE_STRING_SINHALA_TOP
    "喽� 喽� 喽� 喽� 喽� 喽� 喽� 喾�"
  AF_BLUE_STRING_SINHALA_BOTTOM
    "喽� 喽� 喽� 喽� 喽� 喽� 喽� 喽�"
  AF_BLUE_STRING_SINHALA_DESCENDER
    "喽� 喽� 喽� 喽� 喽窎 喽窋 喽多窋 喽窋"

  AF_BLUE_STRING_SUNDANESE_TOP
    "岙� 岙� 岙� 岙� 岙� 岙�"
  AF_BLUE_STRING_SUNDANESE_BOTTOM
    "岙� 岙� 岙� 岙� 岙� 岙� 岙� 岙�"
  AF_BLUE_STRING_SUNDANESE_DESCENDER
    "岙� 岢�"

  AF_BLUE_STRING_TAI_VIET_TOP
    "戟� 戟� 戟� 戟� 戟�"
  AF_BLUE_STRING_TAI_VIET_BOTTOM
    "戟� 戟� 戟�"

  AF_BLUE_STRING_TAMIL_TOP
    "喈� 喈� 喈� 喈� 喈� 喈� 喈� 喈�"
  AF_BLUE_STRING_TAMIL_BOTTOM
    "喈� 喈� 喈� 喈� 喈� 喈� 喈� 喈�"

  AF_BLUE_STRING_TELUGU_TOP
    "喟� 喟� 喟� 喟� 喟� 喟� 啾�"
  AF_BLUE_STRING_TELUGU_BOTTOM
    "喟� 喟� 喟� 喟� 喟� 啾� 啾�"

  AF_BLUE_STRING_THAI_TOP
    "喔� 喙� 喙� 喔� 喔� 喔�"
  AF_BLUE_STRING_THAI_BOTTOM
    "喔� 喔� 喔� 喔� 喔� 喔� 喔�"
  AF_BLUE_STRING_THAI_ASCENDER
    "喔� 喔� 喔�"
  AF_BLUE_STRING_THAI_LARGE_ASCENDER
    "喙� 喙� 喙�"
  AF_BLUE_STRING_THAI_DESCENDER
    "喔� 喔� 喔� 喔�"
  AF_BLUE_STRING_THAI_LARGE_DESCENDER
    "喔� 喔�"
  AF_BLUE_STRING_THAI_DIGIT_TOP
    "喙� 喙� 喙�"

  AF_BLUE_STRING_TIFINAGH
    "獾� 獾� 獾� 獾� 獯� 獯� 獯� 獾�"

  AF_BLUE_STRING_VAI_TOP
    "陾� 陿� 陿� 陿� 陽� 陽� 陻� 陼�"
  AF_BLUE_STRING_VAI_BOTTOM
    "陾� 陿� 陿� 陾� 陻� 陼� 陽� 陻�"


#ifdef AF_CONFIG_OPTION_CJK

  AF_BLUE_STRING_CJK_TOP
    "浠� 浠� 浣� 渚� 鍊� 鍒� 鍜� 鍦�"
    " 瀵� 灏� 灏� 甯� 鎴� 鏃� 鏅� 鏈�"
    " 鏉� 鐐� 鑳� 鑸� 瑾� 璇� 杩� 閫�"
    " 榻� |"
    " 鍐� 鍚� 宸� 鎰� 鏃� 鏄� 鏄� 鏅�"
    " 姘� 鐓� 鐜� 鐝� 鐞� 鐢� 缃� 瑕�"
    " 杌� 閭� 閰� 閲� 闁� 闆� 闇� 闈�"
    " 椤�"
  AF_BLUE_STRING_CJK_BOTTOM
    "涓� 涓� 浜� 浠� 浠� 浠� 浣� 渚�"
    " 鍊� 鍊� 鍒� 鍜� 澶� 瀵� 灏� 灏�"
    " 鎴� 鏃� 鏅� 鏈� 鏉� 鐐� 瑕� 瑾�"
    " 璇� |"
    " 涓� 浜� 鍥� 瀹� 鎯� 鎰� 鐞� 鐢�"
    " 鐣� 鐪� 鐫� 缃� 鑰� 鑷� 钁� 瑁�"
    " 杩� 杩� 杩� 閫� 閬� 閬� 閭� 閲�"
    " 闈�"

#ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT

  AF_BLUE_STRING_CJK_LEFT
    " 浜� 浠� 浣� 渚� 鍊� 鍒� 鍜� 鍦�"
    " 濂� 灏� 灏� 灏� 骞� 寰� 鎯� 鏈�"
    " 鏍� 妯� 鐞� 鑳� 瑾� 璇� 杩� 閫�"
    " 閫� |"
    " 鍗� 鍚� 鍚� 鍚� 鍛� 鍝� 鍝� 鍡�"
    " 甯� 甯� 鏀� 鏂� 鏂� 鏄� 鐪� 闁�"
    " 闂� 闄� 闄� 闄� 闄� 闄� 闅� 闅�"
    " 闅�"
  AF_BLUE_STRING_CJK_RIGHT
    "浜� 鍓� 瀛� 灏� 灏� 鎯� 鎯� 鎴�"
    " 鏀� 鏂� 鏂� 鏍� 妯� 姘� 娌� 娌�"
    " 鐒� 鐗� 鐜� 鐝� 鐞� 绗� 缍� 璋�"
    " 璧� |"
    " 渚� 鍒� 鍒� 鍒� 鍔� 鍕� 鍚� 鍡�"
    " 澧� 鎸� 鏄� 鏈� 鏈� 鏋� 鐗� 纭�"
    " 绉� 瑾� 璋� 璨� 璐� 閭� 閮� 闁�"
    " 闂�"

#endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */

#endif /* AF_CONFIG_OPTION_CJK                */


// The blue zone stringsets, as used in the script styles, cf. `afstyles.h'.
//
// The AF_BLUE_PROPERTY_XXX flags are defined in `afblue.h'; here some
// explanations.
//
// A blue zone in general is defined by a reference and an overshoot line.
// During the hinting process, all coordinate values between those two lines
// are set equal to the reference value, provided that the blue zone is not
// wider than 0.75 pixels (otherwise the blue zone gets ignored).  All
// entries must have `AF_BLUE_STRING_MAX' as the final line.
//
// During the glyph analysis, edges are sorted from bottom to top, and then
// sequentially checked, edge by edge, against the blue zones in the order
// given below.
//
//
// latin auto-hinter
// -----------------
//
// Characters in a blue string are automatically classified as having a flat
// (reference) or a round (overshoot) extremum.  The blue zone is then set
// up by the mean values of all flat extrema and all round extrema,
// respectively.  Only horizontal blue zones (i.e., adjusting vertical
// coordinate values) are supported.
//
// Some scripts like Khmer need character composition to get all necessary
// blue zones, since Unicode only provides an abstract data model that
// doesn't represent all possible glyph shapes.  For such character
// clusters, the HarfBuzz library is used to convert them into the
// corresponding glyphs.  The largest glyph element (where `largest' can be
// either `largest ascender' or `largest descender') then defines the
// corresponding flat or round extremum.
//
// For the latin auto-hinter, the overshoot should be larger than the
// reference for top zones, and vice versa for bottom zones.
//
//   LATIN_TOP
//     Take the maximum flat and round coordinate values of the blue string
//     characters for computing the blue zone's reference and overshoot
//     values.
//
//     If not set, take the minimum values.
//
//     Mutually exclusive with `LATIN_SUB_TOP'.
//
//   LATIN_SUB_TOP
//     For all glyphs of a character cluster, compute the maximum flat
//     and round coordinate values of each component, then take the
//     smallest of the maximum values.  The idea is to get the top of
//     subscript glyphs, as used in Khmer, for example.  Note that
//     this mechanism doesn't work for ordinary ligatures.
//
//     This flags indicates a secondary blue zone: It gets removed if
//     there is a non-LATIN_SUB_TOP blue zone at the same coordinate
//     value (after scaling).
//
//     Mutually exclusive with `LATIN_TOP'.
//
//   LATIN_NEUTRAL
//     Ignore round extrema and define the blue zone with flat values only.
//     Both top and bottom of contours can match.  This is useful for
//     scripts like Devanagari where vowel signs attach to the base
//     character and are implemented as components of composite glyphs.
//
//     If not set, both round and flat extrema are taken into account.
//     Additionally, only the top or the bottom of a contour can match,
//     depending on the LATIN_TOP flag.
//
//     Neutral blue zones should always follow non-neutral blue zones.
//
//   LATIN_X_HEIGHT
//     Scale all glyphs vertically from the corresponding script to make the
//     reference line of this blue zone align on the grid.  The scaling
//     takes place before all other blue zones get aligned to the grid.
//     Only one blue character string of a script style can have this flag.
//
//   LATIN_LONG
//     Apply an additional constraint for blue zone values: Don't
//     necessarily use the extremum as-is but a segment of the topmost (or
//     bottommost) contour that is longer than a heuristic threshold, and
//     which is not too far away vertically from the real extremum.  This
//     ensures that small bumps in the outline are ignored (for example, the
//     `vertical serifs' found in many Hebrew glyph designs).
//
//     The segment must be at least EM/25 font units long, and the distance
//     to the extremum must be smaller than EM/4.
//
//
// cjk auto-hinter
// ---------------
//
// Characters in a blue string are *not* automatically classified.  Instead,
// first come the characters used for the overshoot value, then the
// character `|', then the characters used for the reference value
// (everything separated by space characters).  The blue zone is then set up
// by the mean values of all reference values and all overshoot values,
// respectively.  Both horizontal and vertical blue zones (i.e., adjusting
// vertical and horizontal coordinate values, respectively) are supported.
//
// For the cjk auto-hinter, the overshoot should be smaller than the
// reference for top zones, and vice versa for bottom zones.
//
//   CJK_TOP
//     Take the maximum flat and round coordinate values of the blue string
//     characters.  If not set, take the minimum values.
//
//   CJK_RIGHT
//     A synonym for CJK_TOP.  If CJK_HORIZ is set, this flag indicates the
//     right blue zone, taking horizontal maximum values.
//
//   CJK_HORIZ
//     Define a blue zone for horizontal hinting (i.e., vertical blue
//     zones).  If not set, this is a blue zone for vertical hinting.


AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:

  AF_BLUE_STRINGSET_ADLM
    { AF_BLUE_STRING_ADLAM_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM, 0                                 }
    { AF_BLUE_STRING_ADLAM_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
                                           AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_ADLAM_SMALL_BOTTOM,   0                                 }
    { AF_BLUE_STRING_MAX,                  0                                 }

  AF_BLUE_STRINGSET_ARAB
    { AF_BLUE_STRING_ARABIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     }
    { AF_BLUE_STRING_ARABIC_BOTTOM, 0                              }
    { AF_BLUE_STRING_ARABIC_JOIN,   AF_BLUE_PROPERTY_LATIN_NEUTRAL }
    { AF_BLUE_STRING_MAX,           0                              }

  AF_BLUE_STRINGSET_ARMN
    { AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM,  0                                 }
    { AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_ARMENIAN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM,    0                                 }
    { AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,                      0                                 }

  AF_BLUE_STRINGSET_AVST
    { AF_BLUE_STRING_AVESTAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_AVESTAN_BOTTOM, 0                          }
    { AF_BLUE_STRING_MAX,            0                          }

  AF_BLUE_STRINGSET_BAMU
    { AF_BLUE_STRING_BAMUM_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_BAMUM_BOTTOM, 0                          }
    { AF_BLUE_STRING_MAX,          0                          }

  AF_BLUE_STRINGSET_BENG
    { AF_BLUE_STRING_BENGALI_TOP,  AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_BENGALI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_BENGALI_BASE, AF_BLUE_PROPERTY_LATIN_TOP      |
                                   AF_BLUE_PROPERTY_LATIN_NEUTRAL  |
                                   AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_BENGALI_BASE, 0                                 }
    { AF_BLUE_STRING_MAX,          0                                 }

  AF_BLUE_STRINGSET_BUHD
    { AF_BLUE_STRING_BUHID_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_BUHID_LARGE,  AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_BUHID_SMALL,  AF_BLUE_PROPERTY_LATIN_TOP      |
                                   AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_BUHID_BOTTOM, 0                                 }
    { AF_BLUE_STRING_MAX,          0                                 }

  AF_BLUE_STRINGSET_CAKM
    { AF_BLUE_STRING_CHAKMA_TOP,       AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_CHAKMA_BOTTOM,    0                          }
    { AF_BLUE_STRING_CHAKMA_DESCENDER, 0                          }
    { AF_BLUE_STRING_MAX,              0                          }

  AF_BLUE_STRINGSET_CANS
    { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,             AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,          0                                 }
    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
                                                         AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM,    0                                 }
    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,        AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,     0                                 }
    { AF_BLUE_STRING_MAX,                                0                                 }

  AF_BLUE_STRINGSET_CARI
    { AF_BLUE_STRING_CARIAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_CARIAN_BOTTOM, 0                          }
    { AF_BLUE_STRING_MAX,           0                          }

  AF_BLUE_STRINGSET_CHER
    { AF_BLUE_STRING_CHEROKEE_CAPITAL,         AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_CHEROKEE_CAPITAL,         0                                 }
    { AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_CHEROKEE_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_CHEROKEE_SMALL,           0                                 }
    { AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,                      0                                 }

  AF_BLUE_STRINGSET_COPT
    { AF_BLUE_STRING_COPTIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 0                                 }
    { AF_BLUE_STRING_COPTIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_COPTIC_SMALL_BOTTOM,   0                                 }
    { AF_BLUE_STRING_MAX,                   0                                 }

  AF_BLUE_STRINGSET_CPRT
    { AF_BLUE_STRING_CYPRIOT_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_CYPRIOT_BOTTOM, 0                          }
    { AF_BLUE_STRING_CYPRIOT_SMALL,  AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_CYPRIOT_SMALL,  0                          }
    { AF_BLUE_STRING_MAX,            0                          }

  AF_BLUE_STRINGSET_CYRL
    { AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM,  0                                 }
    { AF_BLUE_STRING_CYRILLIC_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_CYRILLIC_SMALL,           0                                 }
    { AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,                      0                                 }

  AF_BLUE_STRINGSET_DEVA
    { AF_BLUE_STRING_DEVANAGARI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_DEVANAGARI_HEAD,   AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_DEVANAGARI_BASE,   AF_BLUE_PROPERTY_LATIN_TOP      |
                                        AF_BLUE_PROPERTY_LATIN_NEUTRAL  |
                                        AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_DEVANAGARI_BASE,   0                                 }
    { AF_BLUE_STRING_DEVANAGARI_BOTTOM, 0                                 }
    { AF_BLUE_STRING_MAX,               0                                 }

  AF_BLUE_STRINGSET_DSRT
    { AF_BLUE_STRING_DESERET_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM, 0                                 }
    { AF_BLUE_STRING_DESERET_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_DESERET_SMALL_BOTTOM,   0                                 }
    { AF_BLUE_STRING_MAX,                    0                                 }

  AF_BLUE_STRINGSET_ETHI
    { AF_BLUE_STRING_ETHIOPIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_ETHIOPIC_BOTTOM, 0                          }
    { AF_BLUE_STRING_MAX,             0                          }

  AF_BLUE_STRINGSET_GEOR
    { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
                                                   AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM,    0                                 }
    { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0                                 }
    { AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP,        AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM,     0                                 }
    { AF_BLUE_STRING_MAX,                          0                                 }

  AF_BLUE_STRINGSET_GEOK
    { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM, 0                                 }
    { AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
                                                  AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM,    0                                 }
    { AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,                         0                                 }

  AF_BLUE_STRINGSET_GLAG
    { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM, 0                                 }
    { AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM,   0                                 }
    { AF_BLUE_STRING_MAX,                       0                                 }

  AF_BLUE_STRINGSET_GOTH
    { AF_BLUE_STRING_GOTHIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_GOTHIC_BOTTOM, 0                          }
    { AF_BLUE_STRING_MAX,           0                          }

  AF_BLUE_STRINGSET_GREK
    { AF_BLUE_STRING_GREEK_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM,  0                                 }
    { AF_BLUE_STRING_GREEK_SMALL_BETA_TOP,  AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_GREEK_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_GREEK_SMALL,           0                                 }
    { AF_BLUE_STRING_GREEK_SMALL_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,                   0                                 }

  AF_BLUE_STRINGSET_GUJR
    { AF_BLUE_STRING_GUJARATI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
                                         AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_GUJARATI_BOTTOM,    0                                 }
    { AF_BLUE_STRING_GUJARATI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_GUJARATI_DESCENDER, 0                                 }
    { AF_BLUE_STRING_GUJARATI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_MAX,                0                                 }

  AF_BLUE_STRINGSET_GURU
    { AF_BLUE_STRING_GURMUKHI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_GURMUKHI_HEAD,      AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_GURMUKHI_BASE,      AF_BLUE_PROPERTY_LATIN_TOP      |
                                         AF_BLUE_PROPERTY_LATIN_NEUTRAL  |
                                         AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_GURMUKHI_BOTTOM,    0                                 }
    { AF_BLUE_STRING_GURMUKHI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_MAX,                0                                 }

  AF_BLUE_STRINGSET_HEBR
    { AF_BLUE_STRING_HEBREW_TOP,       AF_BLUE_PROPERTY_LATIN_TOP  |
                                       AF_BLUE_PROPERTY_LATIN_LONG   }
    { AF_BLUE_STRING_HEBREW_BOTTOM,    0                             }
    { AF_BLUE_STRING_HEBREW_DESCENDER, 0                             }
    { AF_BLUE_STRING_MAX,              0                             }

  AF_BLUE_STRINGSET_KALI
    { AF_BLUE_STRING_KAYAH_LI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_KAYAH_LI_BOTTOM,          0                                 }
    { AF_BLUE_STRING_KAYAH_LI_ASCENDER,        AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_KAYAH_LI_DESCENDER,       0                                 }
    { AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,                      0                                 }

  AF_BLUE_STRINGSET_KHMR
    { AF_BLUE_STRING_KHMER_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP,   AF_BLUE_PROPERTY_LATIN_SUB_TOP    }
    { AF_BLUE_STRING_KHMER_BOTTOM,          0                                 }
    { AF_BLUE_STRING_KHMER_DESCENDER,       0                                 }
    { AF_BLUE_STRING_KHMER_LARGE_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,                   0                                 }

  AF_BLUE_STRINGSET_KHMS
    { AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
                                                  AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0                                 }
    { AF_BLUE_STRING_MAX,                         0                                 }

  AF_BLUE_STRINGSET_KNDA
    { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          }
    { AF_BLUE_STRING_MAX,            0                          }

  AF_BLUE_STRINGSET_LAO
    { AF_BLUE_STRING_LAO_TOP,            AF_BLUE_PROPERTY_LATIN_TOP      |
                                         AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_LAO_BOTTOM,         0                                 }
    { AF_BLUE_STRING_LAO_ASCENDER,       AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_LAO_LARGE_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_LAO_DESCENDER,      0                                 }
    { AF_BLUE_STRING_MAX,                0                                 }

  AF_BLUE_STRINGSET_LATN
    { AF_BLUE_STRING_LATIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM,  0                                 }
    { AF_BLUE_STRING_LATIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_LATIN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_LATIN_SMALL_BOTTOM,    0                                 }
    { AF_BLUE_STRING_LATIN_SMALL_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,                   0                                 }

  AF_BLUE_STRINGSET_LATB
    { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM,  0                                 }
    { AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_LATIN_SUBS_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
                                                 AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_LATIN_SUBS_SMALL,           0                                 }
    { AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,                        0                                 }

  AF_BLUE_STRINGSET_LATP
    { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM,  0                                 }
    { AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_LATIN_SUPS_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
                                                 AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_LATIN_SUPS_SMALL,           0                                 }
    { AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,                        0                                 }

  AF_BLUE_STRINGSET_LISU
    { AF_BLUE_STRING_LISU_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_LISU_BOTTOM, 0                          }
    { AF_BLUE_STRING_MAX,         0                          }

  AF_BLUE_STRINGSET_MLYM
    { AF_BLUE_STRING_MALAYALAM_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_MALAYALAM_BOTTOM, 0                          }
    { AF_BLUE_STRING_MAX,              0                          }

  AF_BLUE_STRINGSET_MONG
    { AF_BLUE_STRING_MONGOLIAN_TOP_BASE,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE, 0                          }
    { AF_BLUE_STRING_MAX,                   0                          }

  AF_BLUE_STRINGSET_MYMR
    { AF_BLUE_STRING_MYANMAR_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
                                        AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_MYANMAR_BOTTOM,    0                                 }
    { AF_BLUE_STRING_MYANMAR_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_MYANMAR_DESCENDER, 0                                 }
    { AF_BLUE_STRING_MAX,               0                                 }

  AF_BLUE_STRINGSET_NKOO
    { AF_BLUE_STRING_NKO_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        }
    { AF_BLUE_STRING_NKO_BOTTOM,       0                                 }
    { AF_BLUE_STRING_NKO_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
                                       AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
    { AF_BLUE_STRING_NKO_SMALL_BOTTOM, 0                                 }
    { AF_BLUE_STRING_MAX,              0                                 }

  AF_BLUE_STRINGSET_NONE
    { AF_BLUE_STRING_MAX, 0 }

  AF_BLUE_STRINGSET_OLCK
    { AF_BLUE_STRING_OL_CHIKI, AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_OL_CHIKI, 0                          }
    { AF_BLUE_STRING_MAX,      0                          }

  AF_BLUE_STRINGSET_ORKH
    { AF_BLUE_STRING_OLD_TURKIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
    { AF_BLUE_STRING_OLD_TURKIC_BOTTOM, 0                          }
    { AF_BLUE_STRING_MAX,               0                          }

  AF_BLUE_STRINGSET_OSGE
    { AF_BLUE_STRING_OSAGE_CAPITAL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP       }
    { AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM,    0                                }
    { AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER, 0                                }

/**代码未完, 请加载全部代码(NowJava.com).**/
展开阅读全文

关注时代Java

关注时代Java