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 75AF_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 699AF_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 1122