"Fossies" - the Fresh Open Source Software Archive

Member "SDL2_ttf-2.20.2/external/freetype/src/autofit/afblue.dat" (25 May 2022, 48622 Bytes) of package /linux/misc/SDL2_ttf-2.20.2.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) AMPL source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 // afblue.dat
    2 //
    3 //   Auto-fitter data for blue strings.
    4 //
    5 // Copyright (C) 2013-2022 by
    6 // David Turner, Robert Wilhelm, and Werner Lemberg.
    7 //
    8 // This file is part of the FreeType project, and may only be used,
    9 // modified, and distributed under the terms of the FreeType project
   10 // license, LICENSE.TXT.  By continuing to use, modify, or distribute
   11 // this file you indicate that you have read the license and
   12 // understand and accept it fully.
   13 
   14 
   15 // This file contains data specific to blue zones.  It gets processed by
   16 // a script to simulate `jagged arrays', with enumeration values holding
   17 // offsets into the arrays.
   18 //
   19 // The format of the file is rather simple:  A section starts with three
   20 // labels separated by whitespace and followed by a colon (everything in a
   21 // single line); the first label gives the name of the enumeration template,
   22 // the second the name of the array template, and the third the name of the
   23 // `maximum' template.  The script then fills the corresponding templates
   24 // (indicated by `@' characters around the name).
   25 //
   26 // A section contains one or more data records.  Each data record consists
   27 // of two or more lines.  The first line holds the enumeration name, and the
   28 // remaining lines the corresponding array data.
   29 //
   30 // There are two possible representations for array data.
   31 //
   32 // - A string of characters or character clusters (for example, representing
   33 //   Aksharas, Devanagari syllables) in UTF-8 encoding enclosed in double
   34 //   quotes, using C syntax, where the elements are separated by spaces.
   35 //   There can be only one string per line, thus the starting and ending
   36 //   double quote must be the first and last character in the line,
   37 //   respectively, ignoring whitespace before and after the string.  If
   38 //   there are multiple strings (in multiple lines), they are concatenated
   39 //   to a single string.  In the output, a string gets represented as a
   40 //   series of singles bytes, followed by a zero byte.  The enumeration
   41 //   values simply hold byte offsets to the start of the corresponding
   42 //   strings.
   43 //
   44 //   For strings, the `maximum' template holds the maximum number of
   45 //   non-space characters in all strings.
   46 //
   47 // - Data blocks enclosed in balanced braces, which get copied verbatim and
   48 //   which can span multiple lines.  The opening brace of a block must be
   49 //   the first character of a line (ignoring whitespace), and the closing
   50 //   brace the last (ignoring whitespace also).  The script appends a comma
   51 //   character after each block and counts the number of blocks to set the
   52 //   enumeration values.
   53 //
   54 //   For data blocks, the `maximum' template holds the maximum number of
   55 //   array elements.
   56 //
   57 // A section can contain either strings only or data blocks only.
   58 //
   59 // A comment line starts with `//'; it gets removed.  A preprocessor
   60 // directive line (using the standard syntax of `cpp') starts with `#' and
   61 // gets copied verbatim to both the enumeration and the array.  Whitespace
   62 // outside of a string is insignificant.
   63 //
   64 // Preprocessor directives are ignored while the script computes maximum
   65 // values; this essentially means that the maximum values can easily be too
   66 // large.  Given that the purpose of those values is to create local
   67 // fixed-size arrays at compile time for further processing of the blue zone
   68 // data, this isn't a problem.  Note the final zero byte of a string is not
   69 // counted.  Note also that the count holds the number of UTF-8 encoded
   70 // characters, not bytes.
   71 
   72 
   73 // The blue zone string data, to be used in the blue stringsets below.
   74 
   75 AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY AF_BLUE_STRING_MAX_LEN:
   76 
   77   AF_BLUE_STRING_ADLAM_CAPITAL_TOP
   78     "𞤌 𞤅 𞤈 𞤏 𞤔 𞤚"
   79   AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM
   80     "𞤂 𞤖"
   81   AF_BLUE_STRING_ADLAM_SMALL_TOP
   82     "𞤬 𞤮 𞤻 𞤼 𞤾"
   83   AF_BLUE_STRING_ADLAM_SMALL_BOTTOM
   84     "𞤤 𞤨 𞤩 𞤭 𞤴 𞤸 𞤺 𞥀"
   85 
   86   AF_BLUE_STRING_ARABIC_TOP
   87     "ا إ ل ك ط ظ"
   88   AF_BLUE_STRING_ARABIC_BOTTOM
   89     "ت ث ط ظ ك"
   90   // We don't necessarily have access to medial forms via Unicode in case
   91   // Arabic presentational forms are missing.  The only character that is
   92   // guaranteed to have the same vertical position with joining (this is,
   93   // non-isolated) forms is U+0640, ARABIC TATWEEL, which must join both
   94   // round and flat curves.
   95   AF_BLUE_STRING_ARABIC_JOIN
   96     "ـ"
   97 
   98   AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP
   99     "Ա Մ Ւ Ս Բ Գ Դ Օ"
  100   AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM
  101     "Ւ Ո Դ Ճ Շ Ս Տ Օ"
  102   AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER
  103     "ե է ի մ վ ֆ ճ"
  104   AF_BLUE_STRING_ARMENIAN_SMALL_TOP
  105     "ա յ ւ ս գ շ ր օ"
  106   AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM
  107     "հ ո ճ ա ե ծ ս օ"
  108   AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER
  109     "բ ը ի լ ղ պ փ ց"
  110 
  111   AF_BLUE_STRING_AVESTAN_TOP
  112     "𐬀 𐬁 𐬐 𐬛"
  113   AF_BLUE_STRING_AVESTAN_BOTTOM
  114     "𐬀 𐬁"
  115 
  116   AF_BLUE_STRING_BAMUM_TOP
  117     "ꚧ ꚨ ꛛ ꛉ ꛁ ꛈ ꛫ ꛯ"
  118   AF_BLUE_STRING_BAMUM_BOTTOM
  119     "ꚭ ꚳ ꚶ ꛬ ꚢ ꚽ ꛯ ꛲"
  120 
  121   AF_BLUE_STRING_BENGALI_BASE
  122     "অ ড ত ন ব ভ ল ক"
  123   AF_BLUE_STRING_BENGALI_TOP
  124     "ই ট ঠ ি ী ৈ ৗ"
  125   AF_BLUE_STRING_BENGALI_HEAD
  126     "ও এ ড ত ন ব ল ক"
  127 
  128   AF_BLUE_STRING_BUHID_TOP
  129     "ᝐ ᝈ"
  130   AF_BLUE_STRING_BUHID_LARGE
  131     "ᝅ ᝊ ᝎ"
  132   AF_BLUE_STRING_BUHID_SMALL
  133     "ᝂ ᝃ ᝉ ᝌ"
  134   AF_BLUE_STRING_BUHID_BOTTOM
  135     "ᝀ ᝃ ᝆ ᝉ ᝋ ᝏ ᝑ"
  136 
  137   AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP
  138     "ᗜ ᖴ ᐁ ᒣ ᑫ ᑎ ᔑ ᗰ"
  139   AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM
  140     "ᗶ ᖵ ᒧ ᐃ ᑌ ᒍ ᔑ ᗢ"
  141   AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP
  142     "ᓓ ᓕ ᓀ ᓂ ᓄ ᕄ ᕆ ᘣ"
  143   AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM
  144     "ᕃ ᓂ ᓀ ᕂ ᓗ ᓚ ᕆ ᘣ"
  145   AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP
  146     "ᐪ ᙆ ᣘ ᐢ ᒾ ᣗ ᔆ"
  147   AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM
  148     "ᙆ ᗮ ᒻ ᐞ ᔆ ᒡ ᒢ ᓑ"
  149 
  150   AF_BLUE_STRING_CARIAN_TOP
  151     "𐊧 𐊫 𐊬 𐊭 𐊱 𐊺 𐊼 𐊿"
  152   AF_BLUE_STRING_CARIAN_BOTTOM
  153     "𐊣 𐊧 𐊷 𐋀 𐊫 𐊸 𐋉"
  154 
  155   AF_BLUE_STRING_CHAKMA_TOP
  156     "𑄃 𑄅 𑄉 𑄙 𑄗"
  157   AF_BLUE_STRING_CHAKMA_BOTTOM
  158     "𑄅 𑄛 𑄝 𑄗 𑄓"
  159   AF_BLUE_STRING_CHAKMA_DESCENDER
  160     "𑄖𑄳𑄢 𑄘𑄳𑄢 𑄙𑄳𑄢 𑄤𑄳𑄢 𑄥𑄳𑄢"
  161 
  162   AF_BLUE_STRING_CHEROKEE_CAPITAL
  163     "Ꮖ Ꮋ Ꭼ Ꮓ Ꭴ Ꮳ Ꭶ Ꮥ"
  164   AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER
  165     "ꮒ ꮤ ꮶ ꭴ ꭾ ꮗ ꮝ ꮿ"
  166   AF_BLUE_STRING_CHEROKEE_SMALL
  167     "ꮖ ꭼ ꮓ ꮠ ꮳ ꭶ ꮥ ꮻ"
  168   AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER
  169     "ᏸ ꮐ ꭹ ꭻ"
  170 
  171   AF_BLUE_STRING_COPTIC_CAPITAL_TOP
  172     "Ⲍ Ⲏ Ⲡ Ⳟ Ⲟ Ⲑ Ⲥ Ⳋ"
  173   AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM
  174     "Ⳑ Ⳙ Ⳟ Ⲏ Ⲟ Ⲑ Ⳝ Ⲱ"
  175   AF_BLUE_STRING_COPTIC_SMALL_TOP
  176     "ⲍ ⲏ ⲡ ⳟ ⲟ ⲑ ⲥ ⳋ"
  177   AF_BLUE_STRING_COPTIC_SMALL_BOTTOM
  178     "ⳑ ⳙ ⳟ ⲏ ⲟ ⲑ ⳝ Ⳓ"
  179 
  180   AF_BLUE_STRING_CYPRIOT_TOP
  181     "𐠍 𐠙 𐠳 𐠱 𐠅 𐠓 𐠣 𐠦"
  182   AF_BLUE_STRING_CYPRIOT_BOTTOM
  183     "𐠃 𐠊 𐠛 𐠣 𐠳 𐠵 𐠐"
  184   AF_BLUE_STRING_CYPRIOT_SMALL
  185     "𐠈 𐠏 𐠖"
  186 
  187   AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP
  188     "Б В Е П З О С Э"
  189   AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM
  190     "Б В Е Ш З О С Э"
  191   AF_BLUE_STRING_CYRILLIC_SMALL
  192     "х п н ш е з о с"
  193   AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER
  194     "р у ф"
  195 
  196   AF_BLUE_STRING_DESERET_CAPITAL_TOP
  197     "𐐂 𐐄 𐐋 𐐗 𐐑"
  198   AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM
  199     "𐐀 𐐂 𐐄 𐐗 𐐛"
  200   AF_BLUE_STRING_DESERET_SMALL_TOP
  201     "𐐪 𐐬 𐐳 𐐿 𐐹"
  202   AF_BLUE_STRING_DESERET_SMALL_BOTTOM
  203     "𐐨 𐐪 𐐬 𐐿 𐑃"
  204 
  205   AF_BLUE_STRING_DEVANAGARI_BASE
  206     "क न म उ छ ट ठ ड"
  207   AF_BLUE_STRING_DEVANAGARI_TOP
  208     "ई ऐ ओ औ ि ी ो ौ"
  209   // note that some fonts have extreme variation in the height of the
  210   // round head elements; for this reason we also define the `base'
  211   // blue zone, which must be always present
  212   AF_BLUE_STRING_DEVANAGARI_HEAD
  213     "क म अ आ थ ध भ श"
  214   AF_BLUE_STRING_DEVANAGARI_BOTTOM
  215     "ु ृ"
  216 
  217   AF_BLUE_STRING_ETHIOPIC_TOP
  218     "ሀ ሃ ዘ ፐ ማ በ ዋ ዐ"
  219   AF_BLUE_STRING_ETHIOPIC_BOTTOM
  220     "ለ ሐ በ ዘ ሀ ሪ ዐ ጨ"
  221 
  222   AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP
  223     "გ დ ე ვ თ ი ო ღ"
  224   AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM
  225     "ა ზ მ ს შ ძ ხ პ"
  226   AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER
  227     "ს ხ ქ ზ მ შ ჩ წ"
  228   AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER
  229     "ე ვ ჟ ტ უ ფ ქ ყ"
  230 
  231   AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP
  232     "Ⴑ Ⴇ Ⴙ Ⴜ Ⴄ Ⴅ Ⴓ Ⴚ"
  233   AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM
  234     "Ⴄ Ⴅ Ⴇ Ⴈ Ⴆ Ⴑ Ⴊ Ⴋ"
  235 
  236   AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP
  237     "ⴁ ⴗ ⴂ ⴄ ⴅ ⴇ ⴔ ⴖ"
  238   AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM
  239     "ⴈ ⴌ ⴖ ⴎ ⴃ ⴆ ⴋ ⴢ"
  240   AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER
  241     "ⴐ ⴑ ⴓ ⴕ ⴙ ⴛ ⴡ ⴣ"
  242   AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER
  243     "ⴄ ⴅ ⴔ ⴕ ⴁ ⴂ ⴘ ⴝ"
  244 
  245   AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP
  246     "Ნ Ჟ Ჳ Ჸ Გ Ე Ო Ჴ"
  247   AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM
  248     "Ი Ჲ Ო Ჩ Მ Შ Ჯ Ჽ"
  249 
  250   AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP
  251     "Ⰵ Ⱄ Ⱚ Ⰴ Ⰲ Ⰺ Ⱛ Ⰻ"
  252   AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM
  253     "Ⰵ Ⰴ Ⰲ Ⱚ Ⱎ Ⱑ Ⰺ Ⱄ"
  254   AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP
  255     "ⰵ ⱄ ⱚ ⰴ ⰲ ⰺ ⱛ ⰻ"
  256   AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM
  257     "ⰵ ⰴ ⰲ ⱚ ⱎ ⱑ ⰺ ⱄ"
  258 
  259   AF_BLUE_STRING_GOTHIC_TOP
  260     "𐌲 𐌶 𐍀 𐍄 𐌴 𐍃 𐍈 𐌾"
  261   AF_BLUE_STRING_GOTHIC_BOTTOM
  262     "𐌶 𐌴 𐍃 𐍈"
  263 
  264   AF_BLUE_STRING_GREEK_CAPITAL_TOP
  265     "Γ Β Ε Ζ Θ Ο Ω"
  266   AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM
  267     "Β Δ Ζ Ξ Θ Ο"
  268   AF_BLUE_STRING_GREEK_SMALL_BETA_TOP
  269     "β θ δ ζ λ ξ"
  270   AF_BLUE_STRING_GREEK_SMALL
  271     "α ε ι ο π σ τ ω"
  272   AF_BLUE_STRING_GREEK_SMALL_DESCENDER
  273     "β γ η μ ρ φ χ ψ"
  274 
  275   AF_BLUE_STRING_GUJARATI_TOP
  276     "ત ન ઋ ઌ છ ટ ર ૦"
  277   AF_BLUE_STRING_GUJARATI_BOTTOM
  278     "ખ ગ ઘ ઞ ઇ ઈ ઠ જ"
  279   AF_BLUE_STRING_GUJARATI_ASCENDER
  280     "ઈ ઊ િ ી લી શ્ચિ જિ સી"
  281   AF_BLUE_STRING_GUJARATI_DESCENDER
  282     "ુ ૃ ૄ ખુ છૃ છૄ"
  283   AF_BLUE_STRING_GUJARATI_DIGIT_TOP
  284     "૦ ૧ ૨ ૩ ૭"
  285 
  286   AF_BLUE_STRING_GURMUKHI_BASE
  287     "ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ"
  288   AF_BLUE_STRING_GURMUKHI_HEAD
  289     "ਕ ਗ ਙ ਚ ਜ ਤ ਧ ਸ"
  290   AF_BLUE_STRING_GURMUKHI_TOP
  291     "ਇ ਈ ਉ ਏ ਓ ੳ ਿ ੀ"
  292   AF_BLUE_STRING_GURMUKHI_BOTTOM
  293     "ਅ ਏ ਓ ਗ ਜ ਠ ਰ ਸ"
  294   AF_BLUE_STRING_GURMUKHI_DIGIT_TOP
  295     "੦ ੧ ੨ ੩ ੭"
  296 
  297   AF_BLUE_STRING_HEBREW_TOP
  298     "ב ד ה ח ך כ ם ס"
  299   AF_BLUE_STRING_HEBREW_BOTTOM
  300     "ב ט כ ם ס צ"
  301   AF_BLUE_STRING_HEBREW_DESCENDER
  302     "ק ך ן ף ץ"
  303 
  304   AF_BLUE_STRING_KANNADA_TOP
  305     "ಇ ಊ ಐ ಣ ಸಾ ನಾ ದಾ ರಾ"
  306   AF_BLUE_STRING_KANNADA_BOTTOM
  307     "ಅ ಉ ಎ ಲ ೦ ೨ ೬ ೭"
  308 
  309   AF_BLUE_STRING_KAYAH_LI_TOP
  310     "꤅ ꤏ ꤁ ꤋ ꤀ ꤍ"
  311   AF_BLUE_STRING_KAYAH_LI_BOTTOM
  312     "꤈ ꤘ ꤀ ꤍ ꤢ"
  313   AF_BLUE_STRING_KAYAH_LI_ASCENDER
  314     "ꤖ ꤡ"
  315   AF_BLUE_STRING_KAYAH_LI_DESCENDER
  316     "ꤑ ꤜ ꤞ"
  317   AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER
  318     "ꤑ꤬ ꤜ꤭ ꤔ꤬"
  319 
  320   AF_BLUE_STRING_KHMER_TOP
  321     "ខ ទ ន ឧ ឩ ា"
  322   AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP
  323     "ក្ក ក្ខ ក្គ ក្ថ"
  324   AF_BLUE_STRING_KHMER_BOTTOM
  325     "ខ ឃ ច ឋ ប ម យ ឲ"
  326   AF_BLUE_STRING_KHMER_DESCENDER
  327     "ត្រ រៀ ឲ្យ អឿ"
  328   AF_BLUE_STRING_KHMER_LARGE_DESCENDER
  329     "ន្ត្រៃ ង្ខ្យ ក្បៀ ច្រៀ ន្តឿ ល្បឿ"
  330 
  331   AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP
  332     "᧠ ᧡"
  333   AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM
  334     "᧶ ᧹"
  335 
  336   AF_BLUE_STRING_LAO_TOP
  337     "າ ດ ອ ມ ລ ວ ຣ ງ"
  338   AF_BLUE_STRING_LAO_BOTTOM
  339     "າ ອ ບ ຍ ຣ ຮ ວ ຢ"
  340   AF_BLUE_STRING_LAO_ASCENDER
  341     "ປ ຢ ຟ ຝ"
  342   AF_BLUE_STRING_LAO_LARGE_ASCENDER
  343     "ໂ ໄ ໃ"
  344   AF_BLUE_STRING_LAO_DESCENDER
  345     "ງ ຊ ຖ ຽ ໆ ຯ"
  346 
  347   AF_BLUE_STRING_LATIN_CAPITAL_TOP
  348     "T H E Z O C Q S"
  349   AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM
  350     "H E Z L O C U S"
  351   AF_BLUE_STRING_LATIN_SMALL_F_TOP
  352     "f i j k d b h"
  353   AF_BLUE_STRING_LATIN_SMALL_TOP
  354     "u v x z o e s c"
  355   AF_BLUE_STRING_LATIN_SMALL_BOTTOM
  356     "n r x z o e s c"
  357   AF_BLUE_STRING_LATIN_SMALL_DESCENDER
  358     "p q g j y"
  359 
  360   // we assume that both the subscript and superscript ranges
  361   // don't contain oldstyle digits (actually, most fonts probably
  362   // have digits only in those ranges)
  363   AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP
  364     "₀ ₃ ₅ ₇ ₈"
  365   AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM
  366     "₀ ₁ ₂ ₃ ₈"
  367   AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP
  368     "ᵢ ⱼ ₕ ₖ ₗ"
  369   AF_BLUE_STRING_LATIN_SUBS_SMALL
  370     "ₐ ₑ ₒ ₓ ₙ ₛ ᵥ ᵤ ᵣ"
  371   AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER
  372     "ᵦ ᵧ ᵨ ᵩ ₚ"
  373 
  374   AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP
  375     "⁰ ³ ⁵ ⁷ ᵀ ᴴ ᴱ ᴼ"
  376   AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM
  377     "⁰ ¹ ² ³ ᴱ ᴸ ᴼ ᵁ"
  378   AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP
  379     "ᵇ ᵈ ᵏ ʰ ʲ ᶠ ⁱ"
  380   AF_BLUE_STRING_LATIN_SUPS_SMALL
  381     "ᵉ ᵒ ʳ ˢ ˣ ᶜ ᶻ"
  382   AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER
  383     "ᵖ ʸ ᵍ"
  384 
  385   AF_BLUE_STRING_LISU_TOP
  386     "ꓡ ꓧ ꓱ ꓶ ꓩ ꓚ ꓵ ꓳ"
  387   AF_BLUE_STRING_LISU_BOTTOM
  388     "ꓕ ꓜ ꓞ ꓡ ꓛ ꓢ ꓳ ꓴ"
  389 
  390   AF_BLUE_STRING_MALAYALAM_TOP
  391     "ഒ ട ഠ റ ച പ ച്ച പ്പ"
  392   AF_BLUE_STRING_MALAYALAM_BOTTOM
  393     "ട ഠ ധ ശ ഘ ച ഥ ല"
  394 
  395   AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP
  396     "𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹟"
  397   AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM
  398     "𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹒 𖹓"
  399   AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP
  400     "𖹤 𖹬 𖹧 𖹴 𖹶 𖹾"
  401   AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP
  402     "𖹠 𖹡 𖹢 𖹹 𖹳 𖹮"
  403   AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM
  404     "𖹠 𖹡 𖹢 𖹳 𖹭 𖹽"
  405   AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER
  406     "𖹥 𖹨 𖹩"
  407   AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP
  408     "𖺀 𖺅 𖺈 𖺄 𖺍"
  409 
  410   AF_BLUE_STRING_MONGOLIAN_TOP_BASE
  411     "ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ ‍ᡡ‍ ‍ᡳ‍"
  412   AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE
  413     "ᡃ"
  414 
  415   AF_BLUE_STRING_MYANMAR_TOP
  416     "ခ ဂ င ဒ ဝ ၥ ၊ ။"
  417   AF_BLUE_STRING_MYANMAR_BOTTOM
  418     "င ဎ ဒ ပ ဗ ဝ ၊ ။"
  419   AF_BLUE_STRING_MYANMAR_ASCENDER
  420     "ဩ ြ ၍ ၏ ၆ ါ ိ"
  421   AF_BLUE_STRING_MYANMAR_DESCENDER
  422     "ဉ ည ဥ ဩ ဨ ၂ ၅ ၉"
  423 
  424   AF_BLUE_STRING_NKO_TOP
  425     "ߐ ߉ ߒ ߟ ߖ ߜ ߠ ߥ"
  426   AF_BLUE_STRING_NKO_BOTTOM
  427     "߀ ߘ ߡ ߠ ߥ"
  428   AF_BLUE_STRING_NKO_SMALL_TOP
  429     "ߏ ߛ ߋ"
  430   AF_BLUE_STRING_NKO_SMALL_BOTTOM
  431     "ߎ ߏ ߛ ߋ"
  432 
  433   AF_BLUE_STRING_OL_CHIKI
  434     "ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ"
  435 
  436   AF_BLUE_STRING_OLD_TURKIC_TOP
  437     "𐰗 𐰘 𐰧"
  438   AF_BLUE_STRING_OLD_TURKIC_BOTTOM
  439     "𐰉 𐰗 𐰦 𐰧"
  440 
  441   AF_BLUE_STRING_OSAGE_CAPITAL_TOP
  442     "𐒾 𐓍 𐓒 𐓓 𐒻 𐓂 𐒵 𐓆"
  443   AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM
  444     "𐒰 𐓍 𐓂 𐒿 𐓎 𐒹"
  445   AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER
  446     "𐒼 𐒽 𐒾"
  447   AF_BLUE_STRING_OSAGE_SMALL_TOP
  448     "𐓵 𐓶 𐓺 𐓻 𐓝 𐓣 𐓪 𐓮"
  449   AF_BLUE_STRING_OSAGE_SMALL_BOTTOM
  450     "𐓘 𐓚 𐓣 𐓵 𐓡 𐓧 𐓪 𐓶"
  451   AF_BLUE_STRING_OSAGE_SMALL_ASCENDER
  452     "𐓤 𐓦 𐓸 𐓹 𐓛"
  453   AF_BLUE_STRING_OSAGE_SMALL_DESCENDER
  454     "𐓤 𐓥 𐓦"
  455 
  456   AF_BLUE_STRING_OSMANYA_TOP
  457     "𐒆 𐒉 𐒐 𐒒 𐒘 𐒛 𐒠 𐒣"
  458   AF_BLUE_STRING_OSMANYA_BOTTOM
  459     "𐒀 𐒂 𐒆 𐒈 𐒊 𐒒 𐒠 𐒩"
  460 
  461   AF_BLUE_STRING_ROHINGYA_TOP
  462     "𐴃 𐴀 𐴆 𐴖 𐴕"
  463   AF_BLUE_STRING_ROHINGYA_BOTTOM
  464     "𐴔 𐴖 𐴕 𐴑 𐴐"
  465   AF_BLUE_STRING_ROHINGYA_JOIN
  466     "ـ"
  467 
  468   AF_BLUE_STRING_SAURASHTRA_TOP
  469     "ꢜ ꢞ ꢳ ꢂ ꢖ ꢒ ꢝ ꢛ"
  470   AF_BLUE_STRING_SAURASHTRA_BOTTOM
  471     "ꢂ ꢨ ꢺ ꢤ ꢎ"
  472 
  473   AF_BLUE_STRING_SHAVIAN_TOP
  474     "𐑕 𐑙"
  475   AF_BLUE_STRING_SHAVIAN_BOTTOM
  476     "𐑔 𐑖 𐑗 𐑹 𐑻"
  477   AF_BLUE_STRING_SHAVIAN_DESCENDER
  478     "𐑟 𐑣"
  479   AF_BLUE_STRING_SHAVIAN_SMALL_TOP
  480     "𐑱 𐑲 𐑳 𐑴 𐑸 𐑺 𐑼"
  481   AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM
  482     "𐑴 𐑻 𐑹"
  483 
  484   AF_BLUE_STRING_SINHALA_TOP
  485     "ඉ ක ඝ ඳ ප ය ල ෆ"
  486   AF_BLUE_STRING_SINHALA_BOTTOM
  487     "එ ඔ ඝ ජ ට ථ ධ ර"
  488   AF_BLUE_STRING_SINHALA_DESCENDER
  489     "ද ඳ උ ල තූ තු බු දු"
  490 
  491   AF_BLUE_STRING_SUNDANESE_TOP
  492     "ᮋ ᮞ ᮮ ᮽ ᮰ ᮈ"
  493   AF_BLUE_STRING_SUNDANESE_BOTTOM
  494     "ᮄ ᮔ ᮕ ᮗ ᮰ ᮆ ᮈ ᮉ"
  495   AF_BLUE_STRING_SUNDANESE_DESCENDER
  496     "ᮼ ᳄"
  497 
  498   AF_BLUE_STRING_TAI_VIET_TOP
  499     "ꪆ ꪔ ꪒ ꪖ ꪫ"
  500   AF_BLUE_STRING_TAI_VIET_BOTTOM
  501     "ꪉ ꪫ ꪮ"
  502 
  503   AF_BLUE_STRING_TAMIL_TOP
  504     "உ ஒ ஓ ற ஈ க ங ச"
  505   AF_BLUE_STRING_TAMIL_BOTTOM
  506     "க ச ல ஶ உ ங ட ப"
  507 
  508   AF_BLUE_STRING_TELUGU_TOP
  509     "ఇ ఌ ఙ ఞ ణ ఱ ౯"
  510   AF_BLUE_STRING_TELUGU_BOTTOM
  511     "అ క చ ర ఽ ౨ ౬"
  512 
  513   AF_BLUE_STRING_THAI_TOP
  514     "บ เ แ อ ก า"
  515   AF_BLUE_STRING_THAI_BOTTOM
  516     "บ ป ษ ฯ อ ย ฮ"
  517   AF_BLUE_STRING_THAI_ASCENDER
  518     "ป ฝ ฟ"
  519   AF_BLUE_STRING_THAI_LARGE_ASCENDER
  520     "โ ใ ไ"
  521   AF_BLUE_STRING_THAI_DESCENDER
  522     "ฎ ฏ ฤ ฦ"
  523   AF_BLUE_STRING_THAI_LARGE_DESCENDER
  524     "ญ ฐ"
  525   AF_BLUE_STRING_THAI_DIGIT_TOP
  526     "๐ ๑ ๓"
  527 
  528   AF_BLUE_STRING_TIFINAGH
  529     "ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ"
  530 
  531   AF_BLUE_STRING_VAI_TOP
  532     "ꗍ ꘖ ꘙ ꘜ ꖜ ꖝ ꔅ ꕢ"
  533   AF_BLUE_STRING_VAI_BOTTOM
  534     "ꗍ ꘖ ꘙ ꗞ ꔅ ꕢ ꖜ ꔆ"
  535 
  536 
  537 #ifdef AF_CONFIG_OPTION_CJK
  538 
  539   AF_BLUE_STRING_CJK_TOP
  540     "他 们 你 來 們 到 和 地"
  541     " 对 對 就 席 我 时 時 會"
  542     " 来 為 能 舰 說 说 这 這"
  543     " 齊 |"
  544     " 军 同 已 愿 既 星 是 景"
  545     " 民 照 现 現 理 用 置 要"
  546     " 軍 那 配 里 開 雷 露 面"
  547     " 顾"
  548   AF_BLUE_STRING_CJK_BOTTOM
  549     "个 为 人 他 以 们 你 來"
  550     " 個 們 到 和 大 对 對 就"
  551     " 我 时 時 有 来 為 要 說"
  552     " 说 |"
  553     " 主 些 因 它 想 意 理 生"
  554     " 當 看 着 置 者 自 著 裡"
  555     " 过 还 进 進 過 道 還 里"
  556     " 面"
  557 
  558 #ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
  559 
  560   AF_BLUE_STRING_CJK_LEFT
  561     " 些 们 你 來 們 到 和 地"
  562     " 她 将 將 就 年 得 情 最"
  563     " 样 樣 理 能 說 说 这 這"
  564     " 通 |"
  565     " 即 吗 吧 听 呢 品 响 嗎"
  566     " 师 師 收 断 斷 明 眼 間"
  567     " 间 际 陈 限 除 陳 随 際"
  568     " 隨"
  569   AF_BLUE_STRING_CJK_RIGHT
  570     "事 前 學 将 將 情 想 或"
  571     " 政 斯 新 样 樣 民 沒 没"
  572     " 然 特 现 現 球 第 經 谁"
  573     " 起 |"
  574     " 例 別 别 制 动 動 吗 嗎"
  575     " 增 指 明 朝 期 构 物 确"
  576     " 种 調 调 費 费 那 都 間"
  577     " 间"
  578 
  579 #endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */
  580 
  581 #endif /* AF_CONFIG_OPTION_CJK                */
  582 
  583 
  584 // The blue zone stringsets, as used in the script styles, cf. `afstyles.h'.
  585 //
  586 // The AF_BLUE_PROPERTY_XXX flags are defined in `afblue.h'; here some
  587 // explanations.
  588 //
  589 // A blue zone in general is defined by a reference and an overshoot line.
  590 // During the hinting process, all coordinate values between those two lines
  591 // are set equal to the reference value, provided that the blue zone is not
  592 // wider than 0.75 pixels (otherwise the blue zone gets ignored).  All
  593 // entries must have `AF_BLUE_STRING_MAX' as the final line.
  594 //
  595 // During the glyph analysis, edges are sorted from bottom to top, and then
  596 // sequentially checked, edge by edge, against the blue zones in the order
  597 // given below.
  598 //
  599 //
  600 // latin auto-hinter
  601 // -----------------
  602 //
  603 // Characters in a blue string are automatically classified as having a flat
  604 // (reference) or a round (overshoot) extremum.  The blue zone is then set
  605 // up by the mean values of all flat extrema and all round extrema,
  606 // respectively.  Only horizontal blue zones (i.e., adjusting vertical
  607 // coordinate values) are supported.
  608 //
  609 // Some scripts like Khmer need character composition to get all necessary
  610 // blue zones, since Unicode only provides an abstract data model that
  611 // doesn't represent all possible glyph shapes.  For such character
  612 // clusters, the HarfBuzz library is used to convert them into the
  613 // corresponding glyphs.  The largest glyph element (where `largest' can be
  614 // either `largest ascender' or `largest descender') then defines the
  615 // corresponding flat or round extremum.
  616 //
  617 // For the latin auto-hinter, the overshoot should be larger than the
  618 // reference for top zones, and vice versa for bottom zones.
  619 //
  620 //   LATIN_TOP
  621 //     Take the maximum flat and round coordinate values of the blue string
  622 //     characters for computing the blue zone's reference and overshoot
  623 //     values.
  624 //
  625 //     If not set, take the minimum values.
  626 //
  627 //     Mutually exclusive with `LATIN_SUB_TOP'.
  628 //
  629 //   LATIN_SUB_TOP
  630 //     For all glyphs of a character cluster, compute the maximum flat
  631 //     and round coordinate values of each component, then take the
  632 //     smallest of the maximum values.  The idea is to get the top of
  633 //     subscript glyphs, as used in Khmer, for example.  Note that
  634 //     this mechanism doesn't work for ordinary ligatures.
  635 //
  636 //     This flags indicates a secondary blue zone: It gets removed if
  637 //     there is a non-LATIN_SUB_TOP blue zone at the same coordinate
  638 //     value (after scaling).
  639 //
  640 //     Mutually exclusive with `LATIN_TOP'.
  641 //
  642 //   LATIN_NEUTRAL
  643 //     Ignore round extrema and define the blue zone with flat values only.
  644 //     Both top and bottom of contours can match.  This is useful for
  645 //     scripts like Devanagari where vowel signs attach to the base
  646 //     character and are implemented as components of composite glyphs.
  647 //
  648 //     If not set, both round and flat extrema are taken into account.
  649 //     Additionally, only the top or the bottom of a contour can match,
  650 //     depending on the LATIN_TOP flag.
  651 //
  652 //     Neutral blue zones should always follow non-neutral blue zones.
  653 //
  654 //   LATIN_X_HEIGHT
  655 //     Scale all glyphs vertically from the corresponding script to make the
  656 //     reference line of this blue zone align on the grid.  The scaling
  657 //     takes place before all other blue zones get aligned to the grid.
  658 //     Only one blue character string of a script style can have this flag.
  659 //
  660 //   LATIN_LONG
  661 //     Apply an additional constraint for blue zone values: Don't
  662 //     necessarily use the extremum as-is but a segment of the topmost (or
  663 //     bottommost) contour that is longer than a heuristic threshold, and
  664 //     which is not too far away vertically from the real extremum.  This
  665 //     ensures that small bumps in the outline are ignored (for example, the
  666 //     `vertical serifs' found in many Hebrew glyph designs).
  667 //
  668 //     The segment must be at least EM/25 font units long, and the distance
  669 //     to the extremum must be smaller than EM/4.
  670 //
  671 //
  672 // cjk auto-hinter
  673 // ---------------
  674 //
  675 // Characters in a blue string are *not* automatically classified.  Instead,
  676 // first come the characters used for the overshoot value, then the
  677 // character `|', then the characters used for the reference value
  678 // (everything separated by space characters).  The blue zone is then set up
  679 // by the mean values of all reference values and all overshoot values,
  680 // respectively.  Both horizontal and vertical blue zones (i.e., adjusting
  681 // vertical and horizontal coordinate values, respectively) are supported.
  682 //
  683 // For the cjk auto-hinter, the overshoot should be smaller than the
  684 // reference for top zones, and vice versa for bottom zones.
  685 //
  686 //   CJK_TOP
  687 //     Take the maximum flat and round coordinate values of the blue string
  688 //     characters.  If not set, take the minimum values.
  689 //
  690 //   CJK_RIGHT
  691 //     A synonym for CJK_TOP.  If CJK_HORIZ is set, this flag indicates the
  692 //     right blue zone, taking horizontal maximum values.
  693 //
  694 //   CJK_HORIZ
  695 //     Define a blue zone for horizontal hinting (i.e., vertical blue
  696 //     zones).  If not set, this is a blue zone for vertical hinting.
  697 
  698 
  699 AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
  700 
  701   AF_BLUE_STRINGSET_ADLM
  702     { AF_BLUE_STRING_ADLAM_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
  703     { AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM, 0                                 }
  704     { AF_BLUE_STRING_ADLAM_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
  705                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  706     { AF_BLUE_STRING_ADLAM_SMALL_BOTTOM,   0                                 }
  707     { AF_BLUE_STRING_MAX,                  0                                 }
  708 
  709   AF_BLUE_STRINGSET_ARAB
  710     { AF_BLUE_STRING_ARABIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     }
  711     { AF_BLUE_STRING_ARABIC_BOTTOM, 0                              }
  712     { AF_BLUE_STRING_ARABIC_JOIN,   AF_BLUE_PROPERTY_LATIN_NEUTRAL }
  713     { AF_BLUE_STRING_MAX,           0                              }
  714 
  715   AF_BLUE_STRINGSET_ARMN
  716     { AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  717     { AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM,  0                                 }
  718     { AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
  719     { AF_BLUE_STRING_ARMENIAN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
  720                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  721     { AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM,    0                                 }
  722     { AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0                                 }
  723     { AF_BLUE_STRING_MAX,                      0                                 }
  724 
  725   AF_BLUE_STRINGSET_AVST
  726     { AF_BLUE_STRING_AVESTAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
  727     { AF_BLUE_STRING_AVESTAN_BOTTOM, 0                          }
  728     { AF_BLUE_STRING_MAX,            0                          }
  729 
  730   AF_BLUE_STRINGSET_BAMU
  731     { AF_BLUE_STRING_BAMUM_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
  732     { AF_BLUE_STRING_BAMUM_BOTTOM, 0                          }
  733     { AF_BLUE_STRING_MAX,          0                          }
  734 
  735   AF_BLUE_STRINGSET_BENG
  736     { AF_BLUE_STRING_BENGALI_TOP,  AF_BLUE_PROPERTY_LATIN_TOP        }
  737     { AF_BLUE_STRING_BENGALI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP        }
  738     { AF_BLUE_STRING_BENGALI_BASE, AF_BLUE_PROPERTY_LATIN_TOP      |
  739                                    AF_BLUE_PROPERTY_LATIN_NEUTRAL  |
  740                                    AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  741     { AF_BLUE_STRING_BENGALI_BASE, 0                                 }
  742     { AF_BLUE_STRING_MAX,          0                                 }
  743 
  744   AF_BLUE_STRINGSET_BUHD
  745     { AF_BLUE_STRING_BUHID_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
  746     { AF_BLUE_STRING_BUHID_LARGE,  AF_BLUE_PROPERTY_LATIN_TOP        }
  747     { AF_BLUE_STRING_BUHID_SMALL,  AF_BLUE_PROPERTY_LATIN_TOP      |
  748                                    AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  749     { AF_BLUE_STRING_BUHID_BOTTOM, 0                                 }
  750     { AF_BLUE_STRING_MAX,          0                                 }
  751 
  752   AF_BLUE_STRINGSET_CAKM
  753     { AF_BLUE_STRING_CHAKMA_TOP,       AF_BLUE_PROPERTY_LATIN_TOP }
  754     { AF_BLUE_STRING_CHAKMA_BOTTOM,    0                          }
  755     { AF_BLUE_STRING_CHAKMA_DESCENDER, 0                          }
  756     { AF_BLUE_STRING_MAX,              0                          }
  757 
  758   AF_BLUE_STRINGSET_CANS
  759     { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        }
  760     { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,       0                                 }
  761     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
  762                                                       AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  763     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0                                 }
  764     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  765     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,  0                                 }
  766     { AF_BLUE_STRING_MAX,                             0                                 }
  767 
  768   AF_BLUE_STRINGSET_CARI
  769     { AF_BLUE_STRING_CARIAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
  770     { AF_BLUE_STRING_CARIAN_BOTTOM, 0                          }
  771     { AF_BLUE_STRING_MAX,           0                          }
  772 
  773   AF_BLUE_STRINGSET_CHER
  774     { AF_BLUE_STRING_CHEROKEE_CAPITAL,         AF_BLUE_PROPERTY_LATIN_TOP        }
  775     { AF_BLUE_STRING_CHEROKEE_CAPITAL,         0                                 }
  776     { AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
  777     { AF_BLUE_STRING_CHEROKEE_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
  778                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  779     { AF_BLUE_STRING_CHEROKEE_SMALL,           0                                 }
  780     { AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER, 0                                 }
  781     { AF_BLUE_STRING_MAX,                      0                                 }
  782 
  783   AF_BLUE_STRINGSET_COPT
  784     { AF_BLUE_STRING_COPTIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
  785     { AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 0                                 }
  786     { AF_BLUE_STRING_COPTIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
  787                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  788     { AF_BLUE_STRING_COPTIC_SMALL_BOTTOM,   0                                 }
  789     { AF_BLUE_STRING_MAX,                   0                                 }
  790 
  791   AF_BLUE_STRINGSET_CPRT
  792     { AF_BLUE_STRING_CYPRIOT_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
  793     { AF_BLUE_STRING_CYPRIOT_BOTTOM, 0                          }
  794     { AF_BLUE_STRING_CYPRIOT_SMALL,  AF_BLUE_PROPERTY_LATIN_TOP }
  795     { AF_BLUE_STRING_CYPRIOT_SMALL,  0                          }
  796     { AF_BLUE_STRING_MAX,            0                          }
  797 
  798   AF_BLUE_STRINGSET_CYRL
  799     { AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  800     { AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM,  0                                 }
  801     { AF_BLUE_STRING_CYRILLIC_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
  802                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  803     { AF_BLUE_STRING_CYRILLIC_SMALL,           0                                 }
  804     { AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER, 0                                 }
  805     { AF_BLUE_STRING_MAX,                      0                                 }
  806 
  807   AF_BLUE_STRINGSET_DEVA
  808     { AF_BLUE_STRING_DEVANAGARI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
  809     { AF_BLUE_STRING_DEVANAGARI_HEAD,   AF_BLUE_PROPERTY_LATIN_TOP        }
  810     { AF_BLUE_STRING_DEVANAGARI_BASE,   AF_BLUE_PROPERTY_LATIN_TOP      |
  811                                         AF_BLUE_PROPERTY_LATIN_NEUTRAL  |
  812                                         AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  813     { AF_BLUE_STRING_DEVANAGARI_BASE,   0                                 }
  814     { AF_BLUE_STRING_DEVANAGARI_BOTTOM, 0                                 }
  815     { AF_BLUE_STRING_MAX,               0                                 }
  816 
  817   AF_BLUE_STRINGSET_DSRT
  818     { AF_BLUE_STRING_DESERET_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
  819     { AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM, 0                                 }
  820     { AF_BLUE_STRING_DESERET_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
  821                                              AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  822     { AF_BLUE_STRING_DESERET_SMALL_BOTTOM,   0                                 }
  823     { AF_BLUE_STRING_MAX,                    0                                 }
  824 
  825   AF_BLUE_STRINGSET_ETHI
  826     { AF_BLUE_STRING_ETHIOPIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
  827     { AF_BLUE_STRING_ETHIOPIC_BOTTOM, 0                          }
  828     { AF_BLUE_STRING_MAX,             0                          }
  829 
  830   AF_BLUE_STRINGSET_GEOR
  831     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
  832                                                    AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  833     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM,    0                                 }
  834     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
  835     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0                                 }
  836     { AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP,        AF_BLUE_PROPERTY_LATIN_TOP        }
  837     { AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM,     0                                 }
  838     { AF_BLUE_STRING_MAX,                          0                                 }
  839 
  840   AF_BLUE_STRINGSET_GEOK
  841     { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
  842     { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM, 0                                 }
  843     { AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
  844                                                   AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  845     { AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM,    0                                 }
  846     { AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
  847     { AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER, 0                                 }
  848     { AF_BLUE_STRING_MAX,                         0                                 }
  849 
  850   AF_BLUE_STRINGSET_GLAG
  851     { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
  852     { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM, 0                                 }
  853     { AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
  854                                                 AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  855     { AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM,   0                                 }
  856     { AF_BLUE_STRING_MAX,                       0                                 }
  857 
  858   AF_BLUE_STRINGSET_GOTH
  859     { AF_BLUE_STRING_GOTHIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
  860     { AF_BLUE_STRING_GOTHIC_BOTTOM, 0                          }
  861     { AF_BLUE_STRING_MAX,           0                          }
  862 
  863   AF_BLUE_STRINGSET_GREK
  864     { AF_BLUE_STRING_GREEK_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  865     { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM,  0                                 }
  866     { AF_BLUE_STRING_GREEK_SMALL_BETA_TOP,  AF_BLUE_PROPERTY_LATIN_TOP        }
  867     { AF_BLUE_STRING_GREEK_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
  868                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  869     { AF_BLUE_STRING_GREEK_SMALL,           0                                 }
  870     { AF_BLUE_STRING_GREEK_SMALL_DESCENDER, 0                                 }
  871     { AF_BLUE_STRING_MAX,                   0                                 }
  872 
  873   AF_BLUE_STRINGSET_GUJR
  874     { AF_BLUE_STRING_GUJARATI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
  875                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  876     { AF_BLUE_STRING_GUJARATI_BOTTOM,    0                                 }
  877     { AF_BLUE_STRING_GUJARATI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
  878     { AF_BLUE_STRING_GUJARATI_DESCENDER, 0                                 }
  879     { AF_BLUE_STRING_GUJARATI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP        }
  880     { AF_BLUE_STRING_MAX,                0                                 }
  881 
  882   AF_BLUE_STRINGSET_GURU
  883     { AF_BLUE_STRING_GURMUKHI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP        }
  884     { AF_BLUE_STRING_GURMUKHI_HEAD,      AF_BLUE_PROPERTY_LATIN_TOP        }
  885     { AF_BLUE_STRING_GURMUKHI_BASE,      AF_BLUE_PROPERTY_LATIN_TOP      |
  886                                          AF_BLUE_PROPERTY_LATIN_NEUTRAL  |
  887                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  888     { AF_BLUE_STRING_GURMUKHI_BOTTOM,    0                                 }
  889     { AF_BLUE_STRING_GURMUKHI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP        }
  890     { AF_BLUE_STRING_MAX,                0                                 }
  891 
  892   AF_BLUE_STRINGSET_HEBR
  893     { AF_BLUE_STRING_HEBREW_TOP,       AF_BLUE_PROPERTY_LATIN_TOP  |
  894                                        AF_BLUE_PROPERTY_LATIN_LONG   }
  895     { AF_BLUE_STRING_HEBREW_BOTTOM,    0                             }
  896     { AF_BLUE_STRING_HEBREW_DESCENDER, 0                             }
  897     { AF_BLUE_STRING_MAX,              0                             }
  898 
  899   AF_BLUE_STRINGSET_KNDA
  900     { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
  901     { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          }
  902     { AF_BLUE_STRING_MAX,            0                          }
  903 
  904   AF_BLUE_STRINGSET_KALI
  905     { AF_BLUE_STRING_KAYAH_LI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
  906                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  907     { AF_BLUE_STRING_KAYAH_LI_BOTTOM,          0                                 }
  908     { AF_BLUE_STRING_KAYAH_LI_ASCENDER,        AF_BLUE_PROPERTY_LATIN_TOP        }
  909     { AF_BLUE_STRING_KAYAH_LI_DESCENDER,       0                                 }
  910     { AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER, 0                                 }
  911     { AF_BLUE_STRING_MAX,                      0                                 }
  912 
  913   AF_BLUE_STRINGSET_KHMR
  914     { AF_BLUE_STRING_KHMER_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
  915                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  916     { AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP,   AF_BLUE_PROPERTY_LATIN_SUB_TOP    }
  917     { AF_BLUE_STRING_KHMER_BOTTOM,          0                                 }
  918     { AF_BLUE_STRING_KHMER_DESCENDER,       0                                 }
  919     { AF_BLUE_STRING_KHMER_LARGE_DESCENDER, 0                                 }
  920     { AF_BLUE_STRING_MAX,                   0                                 }
  921 
  922   AF_BLUE_STRINGSET_KHMS
  923     { AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
  924                                                   AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  925     { AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0                                 }
  926     { AF_BLUE_STRING_MAX,                         0                                 }
  927 
  928   AF_BLUE_STRINGSET_LAO
  929     { AF_BLUE_STRING_LAO_TOP,            AF_BLUE_PROPERTY_LATIN_TOP      |
  930                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  931     { AF_BLUE_STRING_LAO_BOTTOM,         0                                 }
  932     { AF_BLUE_STRING_LAO_ASCENDER,       AF_BLUE_PROPERTY_LATIN_TOP        }
  933     { AF_BLUE_STRING_LAO_LARGE_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP        }
  934     { AF_BLUE_STRING_LAO_DESCENDER,      0                                 }
  935     { AF_BLUE_STRING_MAX,                0                                 }
  936 
  937   AF_BLUE_STRINGSET_LATN
  938     { AF_BLUE_STRING_LATIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  939     { AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM,  0                                 }
  940     { AF_BLUE_STRING_LATIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  941     { AF_BLUE_STRING_LATIN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
  942                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  943     { AF_BLUE_STRING_LATIN_SMALL_BOTTOM,    0                                 }
  944     { AF_BLUE_STRING_LATIN_SMALL_DESCENDER, 0                                 }
  945     { AF_BLUE_STRING_MAX,                   0                                 }
  946 
  947   AF_BLUE_STRINGSET_LATB
  948     { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  949     { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM,  0                                 }
  950     { AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  951     { AF_BLUE_STRING_LATIN_SUBS_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
  952                                                  AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  953     { AF_BLUE_STRING_LATIN_SUBS_SMALL,           0                                 }
  954     { AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER, 0                                 }
  955     { AF_BLUE_STRING_MAX,                        0                                 }
  956 
  957   AF_BLUE_STRINGSET_LATP
  958     { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  959     { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM,  0                                 }
  960     { AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  961     { AF_BLUE_STRING_LATIN_SUPS_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
  962                                                  AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  963     { AF_BLUE_STRING_LATIN_SUPS_SMALL,           0                                 }
  964     { AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0                                 }
  965     { AF_BLUE_STRING_MAX,                        0                                 }
  966 
  967   AF_BLUE_STRINGSET_LISU
  968     { AF_BLUE_STRING_LISU_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
  969     { AF_BLUE_STRING_LISU_BOTTOM, 0                          }
  970     { AF_BLUE_STRING_MAX,         0                          }
  971 
  972   AF_BLUE_STRINGSET_MLYM
  973     { AF_BLUE_STRING_MALAYALAM_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
  974     { AF_BLUE_STRING_MALAYALAM_BOTTOM, 0                          }
  975     { AF_BLUE_STRING_MAX,              0                          }
  976 
  977   AF_BLUE_STRINGSET_MEDF
  978     { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  979     { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM,  0                                 }
  980     { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
  981     { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
  982                                                   AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  983     { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM,    0                                 }
  984     { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER, 0                                 }
  985     { AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP,       AF_BLUE_PROPERTY_LATIN_TOP        }
  986     { AF_BLUE_STRING_MAX,                         0                                 }
  987 
  988   AF_BLUE_STRINGSET_MONG
  989     { AF_BLUE_STRING_MONGOLIAN_TOP_BASE,    AF_BLUE_PROPERTY_LATIN_TOP }
  990     { AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE, 0                          }
  991     { AF_BLUE_STRING_MAX,                   0                          }
  992 
  993   AF_BLUE_STRINGSET_MYMR
  994     { AF_BLUE_STRING_MYANMAR_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
  995                                         AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
  996     { AF_BLUE_STRING_MYANMAR_BOTTOM,    0                                 }
  997     { AF_BLUE_STRING_MYANMAR_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
  998     { AF_BLUE_STRING_MYANMAR_DESCENDER, 0                                 }
  999     { AF_BLUE_STRING_MAX,               0                                 }
 1000 
 1001   AF_BLUE_STRINGSET_NKOO
 1002     { AF_BLUE_STRING_NKO_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        }
 1003     { AF_BLUE_STRING_NKO_BOTTOM,       0                                 }
 1004     { AF_BLUE_STRING_NKO_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
 1005                                        AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 1006     { AF_BLUE_STRING_NKO_SMALL_BOTTOM, 0                                 }
 1007     { AF_BLUE_STRING_MAX,              0                                 }
 1008 
 1009   AF_BLUE_STRINGSET_NONE
 1010     { AF_BLUE_STRING_MAX, 0 }
 1011 
 1012   AF_BLUE_STRINGSET_OLCK
 1013     { AF_BLUE_STRING_OL_CHIKI, AF_BLUE_PROPERTY_LATIN_TOP }
 1014     { AF_BLUE_STRING_OL_CHIKI, 0                          }
 1015     { AF_BLUE_STRING_MAX,      0                          }
 1016 
 1017   AF_BLUE_STRINGSET_ORKH
 1018     { AF_BLUE_STRING_OLD_TURKIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 1019     { AF_BLUE_STRING_OLD_TURKIC_BOTTOM, 0                          }
 1020     { AF_BLUE_STRING_MAX,               0                          }
 1021 
 1022   AF_BLUE_STRINGSET_OSGE
 1023     { AF_BLUE_STRING_OSAGE_CAPITAL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP       }
 1024     { AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM,    0                                }
 1025     { AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER, 0                                }
 1026     { AF_BLUE_STRING_OSAGE_SMALL_TOP,         AF_BLUE_PROPERTY_LATIN_TOP     |
 1027                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT  }
 1028     { AF_BLUE_STRING_OSAGE_SMALL_BOTTOM,      0                                }
 1029     { AF_BLUE_STRING_OSAGE_SMALL_ASCENDER,    AF_BLUE_PROPERTY_LATIN_TOP       }
 1030     { AF_BLUE_STRING_OSAGE_SMALL_DESCENDER,   0                                }
 1031     { AF_BLUE_STRING_MAX,                     0                                }
 1032 
 1033   AF_BLUE_STRINGSET_OSMA
 1034     { AF_BLUE_STRING_OSMANYA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 1035     { AF_BLUE_STRING_OSMANYA_BOTTOM, 0                          }
 1036     { AF_BLUE_STRING_MAX,            0                          }
 1037 
 1038   AF_BLUE_STRINGSET_ROHG
 1039     { AF_BLUE_STRING_ROHINGYA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     }
 1040     { AF_BLUE_STRING_ROHINGYA_BOTTOM, 0                              }
 1041     { AF_BLUE_STRING_ROHINGYA_JOIN,   AF_BLUE_PROPERTY_LATIN_NEUTRAL }
 1042     { AF_BLUE_STRING_MAX,             0                              }
 1043 
 1044   AF_BLUE_STRINGSET_SAUR
 1045     { AF_BLUE_STRING_SAURASHTRA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 1046     { AF_BLUE_STRING_SAURASHTRA_BOTTOM, 0                          }
 1047     { AF_BLUE_STRING_MAX,               0                          }
 1048 
 1049   AF_BLUE_STRINGSET_SHAW
 1050     { AF_BLUE_STRING_SHAVIAN_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        }
 1051     { AF_BLUE_STRING_SHAVIAN_BOTTOM,       0                                 }
 1052     { AF_BLUE_STRING_SHAVIAN_DESCENDER,    0                                 }
 1053     { AF_BLUE_STRING_SHAVIAN_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
 1054                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 1055     { AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM, 0                                 }
 1056     { AF_BLUE_STRING_MAX,                  0                                 }
 1057 
 1058   AF_BLUE_STRINGSET_SINH
 1059     { AF_BLUE_STRING_SINHALA_TOP,       AF_BLUE_PROPERTY_LATIN_TOP }
 1060     { AF_BLUE_STRING_SINHALA_BOTTOM,    0                          }
 1061     { AF_BLUE_STRING_SINHALA_DESCENDER, 0                          }
 1062     { AF_BLUE_STRING_MAX,               0                          }
 1063 
 1064   AF_BLUE_STRINGSET_SUND
 1065     { AF_BLUE_STRING_SUNDANESE_TOP,       AF_BLUE_PROPERTY_LATIN_TOP }
 1066     { AF_BLUE_STRING_SUNDANESE_BOTTOM,    0                          }
 1067     { AF_BLUE_STRING_SUNDANESE_DESCENDER, 0                          }
 1068     { AF_BLUE_STRING_MAX,                 0                          }
 1069 
 1070   AF_BLUE_STRINGSET_TAML
 1071     { AF_BLUE_STRING_TAMIL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 1072     { AF_BLUE_STRING_TAMIL_BOTTOM, 0                          }
 1073     { AF_BLUE_STRING_MAX,          0                          }
 1074 
 1075   AF_BLUE_STRINGSET_TAVT
 1076     { AF_BLUE_STRING_TAI_VIET_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 1077     { AF_BLUE_STRING_TAI_VIET_BOTTOM, 0                          }
 1078     { AF_BLUE_STRING_MAX,             0                          }
 1079 
 1080   AF_BLUE_STRINGSET_TELU
 1081     { AF_BLUE_STRING_TELUGU_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 1082     { AF_BLUE_STRING_TELUGU_BOTTOM, 0                          }
 1083     { AF_BLUE_STRING_MAX,           0                          }
 1084 
 1085   AF_BLUE_STRINGSET_THAI
 1086     { AF_BLUE_STRING_THAI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
 1087                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 1088     { AF_BLUE_STRING_THAI_BOTTOM,          0                                 }
 1089     { AF_BLUE_STRING_THAI_ASCENDER,        AF_BLUE_PROPERTY_LATIN_TOP        }
 1090     { AF_BLUE_STRING_THAI_LARGE_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
 1091     { AF_BLUE_STRING_THAI_DESCENDER,       0                                 }
 1092     { AF_BLUE_STRING_THAI_LARGE_DESCENDER, 0                                 }
 1093     { AF_BLUE_STRING_THAI_DIGIT_TOP,       0                                 }
 1094     { AF_BLUE_STRING_MAX,                  0                                 }
 1095 
 1096   AF_BLUE_STRINGSET_TFNG
 1097     { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP }
 1098     { AF_BLUE_STRING_TIFINAGH, 0                          }
 1099     { AF_BLUE_STRING_MAX,      0                          }
 1100 
 1101   AF_BLUE_STRINGSET_VAII
 1102     { AF_BLUE_STRING_VAI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 1103     { AF_BLUE_STRING_VAI_BOTTOM, 0                          }
 1104     { AF_BLUE_STRING_MAX,        0                          }
 1105 
 1106 #ifdef AF_CONFIG_OPTION_CJK
 1107 
 1108   AF_BLUE_STRINGSET_HANI
 1109     { AF_BLUE_STRING_CJK_TOP,    AF_BLUE_PROPERTY_CJK_TOP     }
 1110     { AF_BLUE_STRING_CJK_BOTTOM, 0                            }
 1111 #ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
 1112     { AF_BLUE_STRING_CJK_LEFT,   AF_BLUE_PROPERTY_CJK_HORIZ   }
 1113     { AF_BLUE_STRING_CJK_RIGHT,  AF_BLUE_PROPERTY_CJK_HORIZ |
 1114                                  AF_BLUE_PROPERTY_CJK_RIGHT   }
 1115 #endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */
 1116     { AF_BLUE_STRING_MAX,        0                            }
 1117 
 1118 #endif /* AF_CONFIG_OPTION_CJK                */
 1119 
 1120 
 1121 // END