1 // afblue.dat
   2 //
   3 //   Auto-fitter data for blue strings.
   4 //
   5 // Copyright (C) 2013-2020 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_MONGOLIAN_TOP_BASE
 396     "ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ ‍ᡡ‍ ‍ᡳ‍"
 397   AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE
 398     "ᡃ"
 399 
 400   AF_BLUE_STRING_MYANMAR_TOP
 401     "ခ ဂ င ဒ ဝ ၥ ၊ ။"
 402   AF_BLUE_STRING_MYANMAR_BOTTOM
 403     "င ဎ ဒ ပ ဗ ဝ ၊ ။"
 404   AF_BLUE_STRING_MYANMAR_ASCENDER
 405     "ဩ ြ ၍ ၏ ၆ ါ ိ"
 406   AF_BLUE_STRING_MYANMAR_DESCENDER
 407     "ဉ ည ဥ ဩ ဨ ၂ ၅ ၉"
 408 
 409   AF_BLUE_STRING_NKO_TOP
 410     "ߐ ߉ ߒ ߟ ߖ ߜ ߠ ߥ"
 411   AF_BLUE_STRING_NKO_BOTTOM
 412     "߀ ߘ ߡ ߠ ߥ"
 413   AF_BLUE_STRING_NKO_SMALL_TOP
 414     "ߏ ߛ ߋ"
 415   AF_BLUE_STRING_NKO_SMALL_BOTTOM
 416     "ߎ ߏ ߛ ߋ"
 417 
 418   AF_BLUE_STRING_OL_CHIKI
 419     "ᱛ ᱜ ᱝ ᱡ ᱢ ᱥ"
 420 
 421   AF_BLUE_STRING_OLD_TURKIC_TOP
 422     "𐰗 𐰘 𐰧"
 423   AF_BLUE_STRING_OLD_TURKIC_BOTTOM
 424     "𐰉 𐰗 𐰦 𐰧"
 425 
 426   AF_BLUE_STRING_OSAGE_CAPITAL_TOP
 427     "𐒾 𐓍 𐓒 𐓓 𐒻 𐓂 𐒵 𐓆"
 428   AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM
 429     "𐒰 𐓍 𐓂 𐒿 𐓎 𐒹"
 430   AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER
 431     "𐒼 𐒽 𐒾"
 432   AF_BLUE_STRING_OSAGE_SMALL_TOP
 433     "𐓵 𐓶 𐓺 𐓻 𐓝 𐓣 𐓪 𐓮"
 434   AF_BLUE_STRING_OSAGE_SMALL_BOTTOM
 435     "𐓘 𐓚 𐓣 𐓵 𐓡 𐓧 𐓪 𐓶"
 436   AF_BLUE_STRING_OSAGE_SMALL_ASCENDER
 437     "𐓤 𐓦 𐓸 𐓹 𐓛"
 438   AF_BLUE_STRING_OSAGE_SMALL_DESCENDER
 439     "𐓤 𐓥 𐓦"
 440 
 441   AF_BLUE_STRING_OSMANYA_TOP
 442     "𐒆 𐒉 𐒐 𐒒 𐒘 𐒛 𐒠 𐒣"
 443   AF_BLUE_STRING_OSMANYA_BOTTOM
 444     "𐒀 𐒂 𐒆 𐒈 𐒊 𐒒 𐒠 𐒩"
 445 
 446   AF_BLUE_STRING_ROHINGYA_TOP
 447     "𐴃 𐴀 𐴆 𐴖 𐴕"
 448   AF_BLUE_STRING_ROHINGYA_BOTTOM
 449     "𐴔 𐴖 𐴕 𐴑 𐴐"
 450   AF_BLUE_STRING_ROHINGYA_JOIN
 451     "ـ"
 452 
 453   AF_BLUE_STRING_SAURASHTRA_TOP
 454     "ꢜ ꢞ ꢳ ꢂ ꢖ ꢒ ꢝ ꢛ"
 455   AF_BLUE_STRING_SAURASHTRA_BOTTOM
 456     "ꢂ ꢨ ꢺ ꢤ ꢎ"
 457 
 458   AF_BLUE_STRING_SHAVIAN_TOP
 459     "𐑕 𐑙"
 460   AF_BLUE_STRING_SHAVIAN_BOTTOM
 461     "𐑔 𐑖 𐑗 𐑹 𐑻"
 462   AF_BLUE_STRING_SHAVIAN_DESCENDER
 463     "𐑟 𐑣"
 464   AF_BLUE_STRING_SHAVIAN_SMALL_TOP
 465     "𐑱 𐑲 𐑳 𐑴 𐑸 𐑺 𐑼"
 466   AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM
 467     "𐑴 𐑻 𐑹"
 468 
 469   AF_BLUE_STRING_SINHALA_TOP
 470     "ඉ ක ඝ ඳ ප ය ල ෆ"
 471   AF_BLUE_STRING_SINHALA_BOTTOM
 472     "එ ඔ ඝ ජ ට ථ ධ ර"
 473   AF_BLUE_STRING_SINHALA_DESCENDER
 474     "ද ඳ උ ල තූ තු බු දු"
 475 
 476   AF_BLUE_STRING_SUNDANESE_TOP
 477     "ᮋ ᮞ ᮮ ᮽ ᮰ ᮈ"
 478   AF_BLUE_STRING_SUNDANESE_BOTTOM
 479     "ᮄ ᮔ ᮕ ᮗ ᮰ ᮆ ᮈ ᮉ"
 480   AF_BLUE_STRING_SUNDANESE_DESCENDER
 481     "ᮼ ᳄"
 482 
 483   AF_BLUE_STRING_TAI_VIET_TOP
 484     "ꪆ ꪔ ꪒ ꪖ ꪫ"
 485   AF_BLUE_STRING_TAI_VIET_BOTTOM
 486     "ꪉ ꪫ ꪮ"
 487 
 488   AF_BLUE_STRING_TAMIL_TOP
 489     "உ ஒ ஓ ற ஈ க ங ச"
 490   AF_BLUE_STRING_TAMIL_BOTTOM
 491     "க ச ல ஶ உ ங ட ப"
 492 
 493   AF_BLUE_STRING_TELUGU_TOP
 494     "ఇ ఌ ఙ ఞ ణ ఱ ౯"
 495   AF_BLUE_STRING_TELUGU_BOTTOM
 496     "అ క చ ర ఽ ౨ ౬"
 497 
 498   AF_BLUE_STRING_THAI_TOP
 499     "บ เ แ อ ก า"
 500   AF_BLUE_STRING_THAI_BOTTOM
 501     "บ ป ษ ฯ อ ย ฮ"
 502   AF_BLUE_STRING_THAI_ASCENDER
 503     "ป ฝ ฟ"
 504   AF_BLUE_STRING_THAI_LARGE_ASCENDER
 505     "โ ใ ไ"
 506   AF_BLUE_STRING_THAI_DESCENDER
 507     "ฎ ฏ ฤ ฦ"
 508   AF_BLUE_STRING_THAI_LARGE_DESCENDER
 509     "ญ ฐ"
 510   AF_BLUE_STRING_THAI_DIGIT_TOP
 511     "๐ ๑ ๓"
 512 
 513   AF_BLUE_STRING_TIFINAGH
 514     "ⵔ ⵙ ⵛ ⵞ ⴵ ⴼ ⴹ ⵎ"
 515 
 516   AF_BLUE_STRING_VAI_TOP
 517     "ꗍ ꘖ ꘙ ꘜ ꖜ ꖝ ꔅ ꕢ"
 518   AF_BLUE_STRING_VAI_BOTTOM
 519     "ꗍ ꘖ ꘙ ꗞ ꔅ ꕢ ꖜ ꔆ"
 520 
 521 
 522 #ifdef AF_CONFIG_OPTION_CJK
 523 
 524   AF_BLUE_STRING_CJK_TOP
 525     "他 们 你 來 們 到 和 地"
 526     " 对 對 就 席 我 时 時 會"
 527     " 来 為 能 舰 說 说 这 這"
 528     " 齊 |"
 529     " 军 同 已 愿 既 星 是 景"
 530     " 民 照 现 現 理 用 置 要"
 531     " 軍 那 配 里 開 雷 露 面"
 532     " 顾"
 533   AF_BLUE_STRING_CJK_BOTTOM
 534     "个 为 人 他 以 们 你 來"
 535     " 個 們 到 和 大 对 對 就"
 536     " 我 时 時 有 来 為 要 說"
 537     " 说 |"
 538     " 主 些 因 它 想 意 理 生"
 539     " 當 看 着 置 者 自 著 裡"
 540     " 过 还 进 進 過 道 還 里"
 541     " 面"
 542 
 543 #ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
 544 
 545   AF_BLUE_STRING_CJK_LEFT
 546     " 些 们 你 來 們 到 和 地"
 547     " 她 将 將 就 年 得 情 最"
 548     " 样 樣 理 能 說 说 这 這"
 549     " 通 |"
 550     " 即 吗 吧 听 呢 品 响 嗎"
 551     " 师 師 收 断 斷 明 眼 間"
 552     " 间 际 陈 限 除 陳 随 際"
 553     " 隨"
 554   AF_BLUE_STRING_CJK_RIGHT
 555     "事 前 學 将 將 情 想 或"
 556     " 政 斯 新 样 樣 民 沒 没"
 557     " 然 特 现 現 球 第 經 谁"
 558     " 起 |"
 559     " 例 別 别 制 动 動 吗 嗎"
 560     " 增 指 明 朝 期 构 物 确"
 561     " 种 調 调 費 费 那 都 間"
 562     " 间"
 563 
 564 #endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */
 565 
 566 #endif /* AF_CONFIG_OPTION_CJK                */
 567 
 568 
 569 // The blue zone stringsets, as used in the script styles, cf. `afstyles.h'.
 570 //
 571 // The AF_BLUE_PROPERTY_XXX flags are defined in `afblue.h'; here some
 572 // explanations.
 573 //
 574 // A blue zone in general is defined by a reference and an overshoot line.
 575 // During the hinting process, all coordinate values between those two lines
 576 // are set equal to the reference value, provided that the blue zone is not
 577 // wider than 0.75 pixels (otherwise the blue zone gets ignored).  All
 578 // entries must have `AF_BLUE_STRING_MAX' as the final line.
 579 //
 580 // During the glyph analysis, edges are sorted from bottom to top, and then
 581 // sequentially checked, edge by edge, against the blue zones in the order
 582 // given below.
 583 //
 584 //
 585 // latin auto-hinter
 586 // -----------------
 587 //
 588 // Characters in a blue string are automatically classified as having a flat
 589 // (reference) or a round (overshoot) extremum.  The blue zone is then set
 590 // up by the mean values of all flat extrema and all round extrema,
 591 // respectively.  Only horizontal blue zones (i.e., adjusting vertical
 592 // coordinate values) are supported.
 593 //
 594 // Some scripts like Khmer need character composition to get all necessary
 595 // blue zones, since Unicode only provides an abstract data model that
 596 // doesn't represent all possible glyph shapes.  For such character
 597 // clusters, the HarfBuzz library is used to convert them into the
 598 // corresponding glyphs.  The largest glyph element (where `largest' can be
 599 // either `largest ascender' or `largest descender') then defines the
 600 // corresponding flat or round extremum.
 601 //
 602 // For the latin auto-hinter, the overshoot should be larger than the
 603 // reference for top zones, and vice versa for bottom zones.
 604 //
 605 //   LATIN_TOP
 606 //     Take the maximum flat and round coordinate values of the blue string
 607 //     characters for computing the blue zone's reference and overshoot
 608 //     values.
 609 //
 610 //     If not set, take the minimum values.
 611 //
 612 //     Mutually exclusive with `LATIN_SUB_TOP'.
 613 //
 614 //   LATIN_SUB_TOP
 615 //     For all glyphs of a character cluster, compute the maximum flat
 616 //     and round coordinate values of each component, then take the
 617 //     smallest of the maximum values.  The idea is to get the top of
 618 //     subscript glyphs, as used in Khmer, for example.  Note that
 619 //     this mechanism doesn't work for ordinary ligatures.
 620 //
 621 //     This flags indicates a secondary blue zone: It gets removed if
 622 //     there is a non-LATIN_SUB_TOP blue zone at the same coordinate
 623 //     value (after scaling).
 624 //
 625 //     Mutually exclusive with `LATIN_TOP'.
 626 //
 627 //   LATIN_NEUTRAL
 628 //     Ignore round extrema and define the blue zone with flat values only.
 629 //     Both top and bottom of contours can match.  This is useful for
 630 //     scripts like Devanagari where vowel signs attach to the base
 631 //     character and are implemented as components of composite glyphs.
 632 //
 633 //     If not set, both round and flat extrema are taken into account.
 634 //     Additionally, only the top or the bottom of a contour can match,
 635 //     depending on the LATIN_TOP flag.
 636 //
 637 //     Neutral blue zones should always follow non-neutral blue zones.
 638 //
 639 //   LATIN_X_HEIGHT
 640 //     Scale all glyphs vertically from the corresponding script to make the
 641 //     reference line of this blue zone align on the grid.  The scaling
 642 //     takes place before all other blue zones get aligned to the grid.
 643 //     Only one blue character string of a script style can have this flag.
 644 //
 645 //   LATIN_LONG
 646 //     Apply an additional constraint for blue zone values: Don't
 647 //     necessarily use the extremum as-is but a segment of the topmost (or
 648 //     bottommost) contour that is longer than a heuristic threshold, and
 649 //     which is not too far away vertically from the real extremum.  This
 650 //     ensures that small bumps in the outline are ignored (for example, the
 651 //     `vertical serifs' found in many Hebrew glyph designs).
 652 //
 653 //     The segment must be at least EM/25 font units long, and the distance
 654 //     to the extremum must be smaller than EM/4.
 655 //
 656 //
 657 // cjk auto-hinter
 658 // ---------------
 659 //
 660 // Characters in a blue string are *not* automatically classified.  Instead,
 661 // first come the characters used for the overshoot value, then the
 662 // character `|', then the characters used for the reference value
 663 // (everything separated by space characters).  The blue zone is then set up
 664 // by the mean values of all reference values and all overshoot values,
 665 // respectively.  Both horizontal and vertical blue zones (i.e., adjusting
 666 // vertical and horizontal coordinate values, respectively) are supported.
 667 //
 668 // For the cjk auto-hinter, the overshoot should be smaller than the
 669 // reference for top zones, and vice versa for bottom zones.
 670 //
 671 //   CJK_TOP
 672 //     Take the maximum flat and round coordinate values of the blue string
 673 //     characters.  If not set, take the minimum values.
 674 //
 675 //   CJK_RIGHT
 676 //     A synonym for CJK_TOP.  If CJK_HORIZ is set, this flag indicates the
 677 //     right blue zone, taking horizontal maximum values.
 678 //
 679 //   CJK_HORIZ
 680 //     Define a blue zone for horizontal hinting (i.e., vertical blue
 681 //     zones).  If not set, this is a blue zone for vertical hinting.
 682 
 683 
 684 AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
 685 
 686   AF_BLUE_STRINGSET_ADLM
 687     { AF_BLUE_STRING_ADLAM_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
 688     { AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM, 0                                 }
 689     { AF_BLUE_STRING_ADLAM_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
 690                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 691     { AF_BLUE_STRING_ADLAM_SMALL_BOTTOM,   0                                 }
 692     { AF_BLUE_STRING_MAX,                  0                                 }
 693 
 694   AF_BLUE_STRINGSET_ARAB
 695     { AF_BLUE_STRING_ARABIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     }
 696     { AF_BLUE_STRING_ARABIC_BOTTOM, 0                              }
 697     { AF_BLUE_STRING_ARABIC_JOIN,   AF_BLUE_PROPERTY_LATIN_NEUTRAL }
 698     { AF_BLUE_STRING_MAX,           0                              }
 699 
 700   AF_BLUE_STRINGSET_ARMN
 701     { AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
 702     { AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM,  0                                 }
 703     { AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
 704     { AF_BLUE_STRING_ARMENIAN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
 705                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 706     { AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM,    0                                 }
 707     { AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0                                 }
 708     { AF_BLUE_STRING_MAX,                      0                                 }
 709 
 710   AF_BLUE_STRINGSET_AVST
 711     { AF_BLUE_STRING_AVESTAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 712     { AF_BLUE_STRING_AVESTAN_BOTTOM, 0                          }
 713     { AF_BLUE_STRING_MAX,            0                          }
 714 
 715   AF_BLUE_STRINGSET_BAMU
 716     { AF_BLUE_STRING_BAMUM_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 717     { AF_BLUE_STRING_BAMUM_BOTTOM, 0                          }
 718     { AF_BLUE_STRING_MAX,          0                          }
 719 
 720   AF_BLUE_STRINGSET_BENG
 721     { AF_BLUE_STRING_BENGALI_TOP,  AF_BLUE_PROPERTY_LATIN_TOP        }
 722     { AF_BLUE_STRING_BENGALI_HEAD, AF_BLUE_PROPERTY_LATIN_TOP        }
 723     { AF_BLUE_STRING_BENGALI_BASE, AF_BLUE_PROPERTY_LATIN_TOP      |
 724                                    AF_BLUE_PROPERTY_LATIN_NEUTRAL  |
 725                                    AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 726     { AF_BLUE_STRING_BENGALI_BASE, 0                                 }
 727     { AF_BLUE_STRING_MAX,          0                                 }
 728 
 729   AF_BLUE_STRINGSET_BUHD
 730     { AF_BLUE_STRING_BUHID_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
 731     { AF_BLUE_STRING_BUHID_LARGE,  AF_BLUE_PROPERTY_LATIN_TOP        }
 732     { AF_BLUE_STRING_BUHID_SMALL,  AF_BLUE_PROPERTY_LATIN_TOP      |
 733                                    AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 734     { AF_BLUE_STRING_BUHID_BOTTOM, 0                                 }
 735     { AF_BLUE_STRING_MAX,          0                                 }
 736 
 737   AF_BLUE_STRINGSET_CAKM
 738     { AF_BLUE_STRING_CHAKMA_TOP,       AF_BLUE_PROPERTY_LATIN_TOP }
 739     { AF_BLUE_STRING_CHAKMA_BOTTOM,    0                          }
 740     { AF_BLUE_STRING_CHAKMA_DESCENDER, 0                          }
 741     { AF_BLUE_STRING_MAX,              0                          }
 742 
 743   AF_BLUE_STRINGSET_CANS
 744     { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,             AF_BLUE_PROPERTY_LATIN_TOP        }
 745     { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,          0                                 }
 746     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
 747                                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 748     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM,    0                                 }
 749     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,        AF_BLUE_PROPERTY_LATIN_TOP        }
 750     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,     0                                 }
 751     { AF_BLUE_STRING_MAX,                                0                                 }
 752 
 753   AF_BLUE_STRINGSET_CARI
 754     { AF_BLUE_STRING_CARIAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 755     { AF_BLUE_STRING_CARIAN_BOTTOM, 0                          }
 756     { AF_BLUE_STRING_MAX,           0                          }
 757 
 758   AF_BLUE_STRINGSET_CHER
 759     { AF_BLUE_STRING_CHEROKEE_CAPITAL,         AF_BLUE_PROPERTY_LATIN_TOP        }
 760     { AF_BLUE_STRING_CHEROKEE_CAPITAL,         0                                 }
 761     { AF_BLUE_STRING_CHEROKEE_SMALL_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
 762     { AF_BLUE_STRING_CHEROKEE_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
 763                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 764     { AF_BLUE_STRING_CHEROKEE_SMALL,           0                                 }
 765     { AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER, 0                                 }
 766     { AF_BLUE_STRING_MAX,                      0                                 }
 767 
 768   AF_BLUE_STRINGSET_COPT
 769     { AF_BLUE_STRING_COPTIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
 770     { AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 0                                 }
 771     { AF_BLUE_STRING_COPTIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
 772                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 773     { AF_BLUE_STRING_COPTIC_SMALL_BOTTOM,   0                                 }
 774     { AF_BLUE_STRING_MAX,                   0                                 }
 775 
 776   AF_BLUE_STRINGSET_CPRT
 777     { AF_BLUE_STRING_CYPRIOT_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 778     { AF_BLUE_STRING_CYPRIOT_BOTTOM, 0                          }
 779     { AF_BLUE_STRING_CYPRIOT_SMALL,  AF_BLUE_PROPERTY_LATIN_TOP }
 780     { AF_BLUE_STRING_CYPRIOT_SMALL,  0                          }
 781     { AF_BLUE_STRING_MAX,            0                          }
 782 
 783   AF_BLUE_STRINGSET_CYRL
 784     { AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
 785     { AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM,  0                                 }
 786     { AF_BLUE_STRING_CYRILLIC_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
 787                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 788     { AF_BLUE_STRING_CYRILLIC_SMALL,           0                                 }
 789     { AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER, 0                                 }
 790     { AF_BLUE_STRING_MAX,                      0                                 }
 791 
 792   AF_BLUE_STRINGSET_DEVA
 793     { AF_BLUE_STRING_DEVANAGARI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
 794     { AF_BLUE_STRING_DEVANAGARI_HEAD,   AF_BLUE_PROPERTY_LATIN_TOP        }
 795     { AF_BLUE_STRING_DEVANAGARI_BASE,   AF_BLUE_PROPERTY_LATIN_TOP      |
 796                                         AF_BLUE_PROPERTY_LATIN_NEUTRAL  |
 797                                         AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 798     { AF_BLUE_STRING_DEVANAGARI_BASE,   0                                 }
 799     { AF_BLUE_STRING_DEVANAGARI_BOTTOM, 0                                 }
 800     { AF_BLUE_STRING_MAX,               0                                 }
 801 
 802   AF_BLUE_STRINGSET_DSRT
 803     { AF_BLUE_STRING_DESERET_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
 804     { AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM, 0                                 }
 805     { AF_BLUE_STRING_DESERET_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
 806                                              AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 807     { AF_BLUE_STRING_DESERET_SMALL_BOTTOM,   0                                 }
 808     { AF_BLUE_STRING_MAX,                    0                                 }
 809 
 810   AF_BLUE_STRINGSET_ETHI
 811     { AF_BLUE_STRING_ETHIOPIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 812     { AF_BLUE_STRING_ETHIOPIC_BOTTOM, 0                          }
 813     { AF_BLUE_STRING_MAX,             0                          }
 814 
 815   AF_BLUE_STRINGSET_GEOR
 816     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
 817                                                    AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 818     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM,    0                                 }
 819     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
 820     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0                                 }
 821     { AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP,        AF_BLUE_PROPERTY_LATIN_TOP        }
 822     { AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM,     0                                 }
 823     { AF_BLUE_STRING_MAX,                          0                                 }
 824 
 825   AF_BLUE_STRINGSET_GEOK
 826     { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
 827     { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM, 0                                 }
 828     { AF_BLUE_STRING_GEORGIAN_NUSKHURI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
 829                                                   AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 830     { AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM,    0                                 }
 831     { AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
 832     { AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER, 0                                 }
 833     { AF_BLUE_STRING_MAX,                         0                                 }
 834 
 835   AF_BLUE_STRINGSET_GLAG
 836     { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
 837     { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM, 0                                 }
 838     { AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
 839                                                 AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 840     { AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM,   0                                 }
 841     { AF_BLUE_STRING_MAX,                       0                                 }
 842 
 843   AF_BLUE_STRINGSET_GOTH
 844     { AF_BLUE_STRING_GOTHIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 845     { AF_BLUE_STRING_GOTHIC_BOTTOM, 0                          }
 846     { AF_BLUE_STRING_MAX,           0                          }
 847 
 848   AF_BLUE_STRINGSET_GREK
 849     { AF_BLUE_STRING_GREEK_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
 850     { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM,  0                                 }
 851     { AF_BLUE_STRING_GREEK_SMALL_BETA_TOP,  AF_BLUE_PROPERTY_LATIN_TOP        }
 852     { AF_BLUE_STRING_GREEK_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
 853                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 854     { AF_BLUE_STRING_GREEK_SMALL,           0                                 }
 855     { AF_BLUE_STRING_GREEK_SMALL_DESCENDER, 0                                 }
 856     { AF_BLUE_STRING_MAX,                   0                                 }
 857 
 858   AF_BLUE_STRINGSET_GUJR
 859     { AF_BLUE_STRING_GUJARATI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
 860                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 861     { AF_BLUE_STRING_GUJARATI_BOTTOM,    0                                 }
 862     { AF_BLUE_STRING_GUJARATI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
 863     { AF_BLUE_STRING_GUJARATI_DESCENDER, 0                                 }
 864     { AF_BLUE_STRING_GUJARATI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP        }
 865     { AF_BLUE_STRING_MAX,                0                                 }
 866 
 867   AF_BLUE_STRINGSET_GURU
 868     { AF_BLUE_STRING_GURMUKHI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP        }
 869     { AF_BLUE_STRING_GURMUKHI_HEAD,      AF_BLUE_PROPERTY_LATIN_TOP        }
 870     { AF_BLUE_STRING_GURMUKHI_BASE,      AF_BLUE_PROPERTY_LATIN_TOP      |
 871                                          AF_BLUE_PROPERTY_LATIN_NEUTRAL  |
 872                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 873     { AF_BLUE_STRING_GURMUKHI_BOTTOM,    0                                 }
 874     { AF_BLUE_STRING_GURMUKHI_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP        }
 875     { AF_BLUE_STRING_MAX,                0                                 }
 876 
 877   AF_BLUE_STRINGSET_HEBR
 878     { AF_BLUE_STRING_HEBREW_TOP,       AF_BLUE_PROPERTY_LATIN_TOP  |
 879                                        AF_BLUE_PROPERTY_LATIN_LONG   }
 880     { AF_BLUE_STRING_HEBREW_BOTTOM,    0                             }
 881     { AF_BLUE_STRING_HEBREW_DESCENDER, 0                             }
 882     { AF_BLUE_STRING_MAX,              0                             }
 883 
 884   AF_BLUE_STRINGSET_KALI
 885     { AF_BLUE_STRING_KAYAH_LI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
 886                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 887     { AF_BLUE_STRING_KAYAH_LI_BOTTOM,          0                                 }
 888     { AF_BLUE_STRING_KAYAH_LI_ASCENDER,        AF_BLUE_PROPERTY_LATIN_TOP        }
 889     { AF_BLUE_STRING_KAYAH_LI_DESCENDER,       0                                 }
 890     { AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER, 0                                 }
 891     { AF_BLUE_STRING_MAX,                      0                                 }
 892 
 893   AF_BLUE_STRINGSET_KHMR
 894     { AF_BLUE_STRING_KHMER_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
 895                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 896     { AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP,   AF_BLUE_PROPERTY_LATIN_SUB_TOP    }
 897     { AF_BLUE_STRING_KHMER_BOTTOM,          0                                 }
 898     { AF_BLUE_STRING_KHMER_DESCENDER,       0                                 }
 899     { AF_BLUE_STRING_KHMER_LARGE_DESCENDER, 0                                 }
 900     { AF_BLUE_STRING_MAX,                   0                                 }
 901 
 902   AF_BLUE_STRINGSET_KHMS
 903     { AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
 904                                                   AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 905     { AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0                                 }
 906     { AF_BLUE_STRING_MAX,                         0                                 }
 907 
 908   AF_BLUE_STRINGSET_KNDA
 909     { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 910     { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          }
 911     { AF_BLUE_STRING_MAX,            0                          }
 912 
 913   AF_BLUE_STRINGSET_LAO
 914     { AF_BLUE_STRING_LAO_TOP,            AF_BLUE_PROPERTY_LATIN_TOP      |
 915                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 916     { AF_BLUE_STRING_LAO_BOTTOM,         0                                 }
 917     { AF_BLUE_STRING_LAO_ASCENDER,       AF_BLUE_PROPERTY_LATIN_TOP        }
 918     { AF_BLUE_STRING_LAO_LARGE_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP        }
 919     { AF_BLUE_STRING_LAO_DESCENDER,      0                                 }
 920     { AF_BLUE_STRING_MAX,                0                                 }
 921 
 922   AF_BLUE_STRINGSET_LATN
 923     { AF_BLUE_STRING_LATIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
 924     { AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM,  0                                 }
 925     { AF_BLUE_STRING_LATIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
 926     { AF_BLUE_STRING_LATIN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
 927                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 928     { AF_BLUE_STRING_LATIN_SMALL_BOTTOM,    0                                 }
 929     { AF_BLUE_STRING_LATIN_SMALL_DESCENDER, 0                                 }
 930     { AF_BLUE_STRING_MAX,                   0                                 }
 931 
 932   AF_BLUE_STRINGSET_LATB
 933     { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
 934     { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM,  0                                 }
 935     { AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
 936     { AF_BLUE_STRING_LATIN_SUBS_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
 937                                                  AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 938     { AF_BLUE_STRING_LATIN_SUBS_SMALL,           0                                 }
 939     { AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER, 0                                 }
 940     { AF_BLUE_STRING_MAX,                        0                                 }
 941 
 942   AF_BLUE_STRINGSET_LATP
 943     { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
 944     { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM,  0                                 }
 945     { AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
 946     { AF_BLUE_STRING_LATIN_SUPS_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
 947                                                  AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 948     { AF_BLUE_STRING_LATIN_SUPS_SMALL,           0                                 }
 949     { AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0                                 }
 950     { AF_BLUE_STRING_MAX,                        0                                 }
 951 
 952   AF_BLUE_STRINGSET_LISU
 953     { AF_BLUE_STRING_LISU_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 954     { AF_BLUE_STRING_LISU_BOTTOM, 0                          }
 955     { AF_BLUE_STRING_MAX,         0                          }
 956 
 957   AF_BLUE_STRINGSET_MLYM
 958     { AF_BLUE_STRING_MALAYALAM_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 959     { AF_BLUE_STRING_MALAYALAM_BOTTOM, 0                          }
 960     { AF_BLUE_STRING_MAX,              0                          }
 961 
 962   AF_BLUE_STRINGSET_MONG
 963     { AF_BLUE_STRING_MONGOLIAN_TOP_BASE,    AF_BLUE_PROPERTY_LATIN_TOP }
 964     { AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE, 0                          }
 965     { AF_BLUE_STRING_MAX,                   0                          }
 966 
 967   AF_BLUE_STRINGSET_MYMR
 968     { AF_BLUE_STRING_MYANMAR_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
 969                                         AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 970     { AF_BLUE_STRING_MYANMAR_BOTTOM,    0                                 }
 971     { AF_BLUE_STRING_MYANMAR_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
 972     { AF_BLUE_STRING_MYANMAR_DESCENDER, 0                                 }
 973     { AF_BLUE_STRING_MAX,               0                                 }
 974 
 975   AF_BLUE_STRINGSET_NKOO
 976     { AF_BLUE_STRING_NKO_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        }
 977     { AF_BLUE_STRING_NKO_BOTTOM,       0                                 }
 978     { AF_BLUE_STRING_NKO_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
 979                                        AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
 980     { AF_BLUE_STRING_NKO_SMALL_BOTTOM, 0                                 }
 981     { AF_BLUE_STRING_MAX,              0                                 }
 982 
 983   AF_BLUE_STRINGSET_NONE
 984     { AF_BLUE_STRING_MAX, 0 }
 985 
 986   AF_BLUE_STRINGSET_OLCK
 987     { AF_BLUE_STRING_OL_CHIKI, AF_BLUE_PROPERTY_LATIN_TOP }
 988     { AF_BLUE_STRING_OL_CHIKI, 0                          }
 989     { AF_BLUE_STRING_MAX,      0                          }
 990 
 991   AF_BLUE_STRINGSET_ORKH
 992     { AF_BLUE_STRING_OLD_TURKIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
 993     { AF_BLUE_STRING_OLD_TURKIC_BOTTOM, 0                          }
 994     { AF_BLUE_STRING_MAX,               0                          }
 995 
 996   AF_BLUE_STRINGSET_OSGE
 997     { AF_BLUE_STRING_OSAGE_CAPITAL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP       }
 998     { AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM,    0                                }
 999     { AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER, 0                                }
1000     { AF_BLUE_STRING_OSAGE_SMALL_TOP,         AF_BLUE_PROPERTY_LATIN_TOP     |
1001                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT  }
1002     { AF_BLUE_STRING_OSAGE_SMALL_BOTTOM,      0                                }
1003     { AF_BLUE_STRING_OSAGE_SMALL_ASCENDER,    AF_BLUE_PROPERTY_LATIN_TOP       }
1004     { AF_BLUE_STRING_OSAGE_SMALL_DESCENDER,   0                                }
1005     { AF_BLUE_STRING_MAX,                     0                                }
1006 
1007   AF_BLUE_STRINGSET_OSMA
1008     { AF_BLUE_STRING_OSMANYA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
1009     { AF_BLUE_STRING_OSMANYA_BOTTOM, 0                          }
1010     { AF_BLUE_STRING_MAX,            0                          }
1011 
1012   AF_BLUE_STRINGSET_ROHG
1013     { AF_BLUE_STRING_ROHINGYA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     }
1014     { AF_BLUE_STRING_ROHINGYA_BOTTOM, 0                              }
1015     { AF_BLUE_STRING_ROHINGYA_JOIN,   AF_BLUE_PROPERTY_LATIN_NEUTRAL }
1016     { AF_BLUE_STRING_MAX,             0                              }
1017 
1018   AF_BLUE_STRINGSET_SAUR
1019     { AF_BLUE_STRING_SAURASHTRA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
1020     { AF_BLUE_STRING_SAURASHTRA_BOTTOM, 0                          }
1021     { AF_BLUE_STRING_MAX,               0                          }
1022 
1023   AF_BLUE_STRINGSET_SHAW
1024     { AF_BLUE_STRING_SHAVIAN_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        }
1025     { AF_BLUE_STRING_SHAVIAN_BOTTOM,       0                                 }
1026     { AF_BLUE_STRING_SHAVIAN_DESCENDER,    0                                 }
1027     { AF_BLUE_STRING_SHAVIAN_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
1028                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
1029     { AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM, 0                                 }
1030     { AF_BLUE_STRING_MAX,                  0                                 }
1031 
1032   AF_BLUE_STRINGSET_SINH
1033     { AF_BLUE_STRING_SINHALA_TOP,       AF_BLUE_PROPERTY_LATIN_TOP }
1034     { AF_BLUE_STRING_SINHALA_BOTTOM,    0                          }
1035     { AF_BLUE_STRING_SINHALA_DESCENDER, 0                          }
1036     { AF_BLUE_STRING_MAX,               0                          }
1037 
1038   AF_BLUE_STRINGSET_SUND
1039     { AF_BLUE_STRING_SUNDANESE_TOP,       AF_BLUE_PROPERTY_LATIN_TOP }
1040     { AF_BLUE_STRING_SUNDANESE_BOTTOM,    0                          }
1041     { AF_BLUE_STRING_SUNDANESE_DESCENDER, 0                          }
1042     { AF_BLUE_STRING_MAX,                 0                          }
1043 
1044   AF_BLUE_STRINGSET_TAML
1045     { AF_BLUE_STRING_TAMIL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
1046     { AF_BLUE_STRING_TAMIL_BOTTOM, 0                          }
1047     { AF_BLUE_STRING_MAX,          0                          }
1048 
1049   AF_BLUE_STRINGSET_TAVT
1050     { AF_BLUE_STRING_TAI_VIET_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
1051     { AF_BLUE_STRING_TAI_VIET_BOTTOM, 0                          }
1052     { AF_BLUE_STRING_MAX,             0                          }
1053 
1054   AF_BLUE_STRINGSET_TELU
1055     { AF_BLUE_STRING_TELUGU_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
1056     { AF_BLUE_STRING_TELUGU_BOTTOM, 0                          }
1057     { AF_BLUE_STRING_MAX,           0                          }
1058 
1059   AF_BLUE_STRINGSET_TFNG
1060     { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP }
1061     { AF_BLUE_STRING_TIFINAGH, 0                          }
1062     { AF_BLUE_STRING_MAX,      0                          }
1063 
1064   AF_BLUE_STRINGSET_THAI
1065     { AF_BLUE_STRING_THAI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
1066                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
1067     { AF_BLUE_STRING_THAI_BOTTOM,          0                                 }
1068     { AF_BLUE_STRING_THAI_ASCENDER,        AF_BLUE_PROPERTY_LATIN_TOP        }
1069     { AF_BLUE_STRING_THAI_LARGE_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
1070     { AF_BLUE_STRING_THAI_DESCENDER,       0                                 }
1071     { AF_BLUE_STRING_THAI_LARGE_DESCENDER, 0                                 }
1072     { AF_BLUE_STRING_THAI_DIGIT_TOP,       0                                 }
1073     { AF_BLUE_STRING_MAX,                  0                                 }
1074 
1075   AF_BLUE_STRINGSET_VAII
1076     { AF_BLUE_STRING_VAI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
1077     { AF_BLUE_STRING_VAI_BOTTOM, 0                          }
1078     { AF_BLUE_STRING_MAX,        0                          }
1079 
1080 #ifdef AF_CONFIG_OPTION_CJK
1081 
1082   AF_BLUE_STRINGSET_HANI
1083     { AF_BLUE_STRING_CJK_TOP,    AF_BLUE_PROPERTY_CJK_TOP     }
1084     { AF_BLUE_STRING_CJK_BOTTOM, 0                            }
1085 #ifdef AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT
1086     { AF_BLUE_STRING_CJK_LEFT,   AF_BLUE_PROPERTY_CJK_HORIZ   }
1087     { AF_BLUE_STRING_CJK_RIGHT,  AF_BLUE_PROPERTY_CJK_HORIZ |
1088                                  AF_BLUE_PROPERTY_CJK_RIGHT   }
1089 #endif /* AF_CONFIG_OPTION_CJK_BLUE_HANI_VERT */
1090     { AF_BLUE_STRING_MAX,        0                            }
1091 
1092 #endif /* AF_CONFIG_OPTION_CJK                */
1093 
1094 
1095 // END