1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 25 module harfbuzz.c.types; 26 27 public import gobject.c.types; 28 29 public alias hb_language_t = void*; 30 31 /** 32 * Data type for booleans. 33 */ 34 public alias int hb_bool_t; 35 36 /** 37 * Data type for holding Unicode codepoints. Also 38 * used to hold glyph IDs. 39 */ 40 public alias uint hb_codepoint_t; 41 42 /** 43 * Data type for holding color values. Colors are eight bits per 44 * channel RGB plus alpha transparency. 45 */ 46 public alias uint hb_color_t; 47 48 /** 49 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 50 * 51 * This method should retrieve the extents for a font, for horizontal-direction 52 * text segments. Extents must be returned in an #hb_glyph_extents output 53 * parameter. 54 */ 55 public alias hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t; 56 57 /** 58 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 59 * 60 * This method should retrieve the extents for a font, for vertical-direction 61 * text segments. Extents must be returned in an #hb_glyph_extents output 62 * parameter. 63 */ 64 public alias hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t; 65 66 /** 67 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 68 * 69 * This method should retrieve the advance for a specified glyph, in 70 * horizontal-direction text segments. Advances must be returned in 71 * an #hb_position_t output parameter. 72 */ 73 public alias hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t; 74 75 /** 76 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 77 * 78 * This method should retrieve the advances for a sequence of glyphs, in 79 * horizontal-direction text segments. 80 */ 81 public alias hb_font_get_glyph_advances_func_t hb_font_get_glyph_h_advances_func_t; 82 83 /** 84 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 85 * 86 * This method should retrieve the kerning-adjustment value for a glyph-pair in 87 * the specified font, for horizontal text segments. 88 */ 89 public alias hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t; 90 91 /** 92 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 93 * 94 * This method should retrieve the (X,Y) coordinates (in font units) of the 95 * origin for a glyph, for horizontal-direction text segments. Each 96 * coordinate must be returned in an #hb_position_t output parameter. 97 */ 98 public alias hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t; 99 100 /** 101 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 102 * 103 * This method should retrieve the advance for a specified glyph, in 104 * vertical-direction text segments. Advances must be returned in 105 * an #hb_position_t output parameter. 106 */ 107 public alias hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t; 108 109 /** 110 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 111 * 112 * This method should retrieve the advances for a sequence of glyphs, in 113 * vertical-direction text segments. 114 */ 115 public alias hb_font_get_glyph_advances_func_t hb_font_get_glyph_v_advances_func_t; 116 117 /** 118 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 119 * 120 * This method should retrieve the kerning-adjustment value for a glyph-pair in 121 * the specified font, for vertical text segments. 122 */ 123 public alias hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t; 124 125 /** 126 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 127 * 128 * This method should retrieve the (X,Y) coordinates (in font units) of the 129 * origin for a glyph, for vertical-direction text segments. Each coordinate 130 * must be returned in an #hb_position_t output parameter. 131 */ 132 public alias hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t; 133 134 /** 135 * Data type for bitmasks. 136 */ 137 public alias uint hb_mask_t; 138 139 /** 140 * An integral type representing an OpenType 'name' table name identifier. 141 * There are predefined name IDs, as well as name IDs return from other 142 * API. These can be used to fetch name strings from a font face. 143 */ 144 public alias uint hb_ot_name_id_t; 145 146 /** 147 * Data type for holding a single coordinate value. 148 * Contour points and other multi-dimensional data are 149 * stored as tuples of #hb_position_t's. 150 */ 151 public alias int hb_position_t; 152 153 /** 154 * Data type for tag identifiers. Tags are four 155 * byte integers, each byte representing a character. 156 * 157 * Tags are used to identify tables, design-variation axes, 158 * scripts, languages, font features, and baselines with 159 * human-readable names. 160 */ 161 public alias uint hb_tag_t; 162 163 /** 164 * The selectors defined for specifying AAT feature settings. 165 * 166 * Since: 2.2.0 167 */ 168 public enum hb_aat_layout_feature_selector_t 169 { 170 /** 171 * Initial, unset feature selector 172 */ 173 INVALID = 65535, 174 /** 175 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC 176 */ 177 ALL_TYPE_FEATURES_ON = 0, 178 /** 179 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC 180 */ 181 ALL_TYPE_FEATURES_OFF = 1, 182 /** 183 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 184 */ 185 REQUIRED_LIGATURES_ON = 0, 186 /** 187 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 188 */ 189 REQUIRED_LIGATURES_OFF = 1, 190 /** 191 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 192 */ 193 COMMON_LIGATURES_ON = 2, 194 /** 195 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 196 */ 197 COMMON_LIGATURES_OFF = 3, 198 /** 199 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 200 */ 201 RARE_LIGATURES_ON = 4, 202 /** 203 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 204 */ 205 RARE_LIGATURES_OFF = 5, 206 /** 207 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 208 */ 209 LOGOS_ON = 6, 210 /** 211 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 212 */ 213 LOGOS_OFF = 7, 214 /** 215 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 216 */ 217 REBUS_PICTURES_ON = 8, 218 /** 219 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 220 */ 221 REBUS_PICTURES_OFF = 9, 222 /** 223 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 224 */ 225 DIPHTHONG_LIGATURES_ON = 10, 226 /** 227 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 228 */ 229 DIPHTHONG_LIGATURES_OFF = 11, 230 /** 231 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 232 */ 233 SQUARED_LIGATURES_ON = 12, 234 /** 235 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 236 */ 237 SQUARED_LIGATURES_OFF = 13, 238 /** 239 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 240 */ 241 ABBREV_SQUARED_LIGATURES_ON = 14, 242 /** 243 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 244 */ 245 ABBREV_SQUARED_LIGATURES_OFF = 15, 246 /** 247 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 248 */ 249 SYMBOL_LIGATURES_ON = 16, 250 /** 251 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 252 */ 253 SYMBOL_LIGATURES_OFF = 17, 254 /** 255 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 256 */ 257 CONTEXTUAL_LIGATURES_ON = 18, 258 /** 259 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 260 */ 261 CONTEXTUAL_LIGATURES_OFF = 19, 262 /** 263 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 264 */ 265 HISTORICAL_LIGATURES_ON = 20, 266 /** 267 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 268 */ 269 HISTORICAL_LIGATURES_OFF = 21, 270 /** 271 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 272 */ 273 UNCONNECTED = 0, 274 /** 275 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 276 */ 277 PARTIALLY_CONNECTED = 1, 278 /** 279 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 280 */ 281 CURSIVE = 2, 282 /** 283 * Deprecated 284 */ 285 UPPER_AND_LOWER_CASE = 0, 286 /** 287 * Deprecated 288 */ 289 ALL_CAPS = 1, 290 /** 291 * Deprecated 292 */ 293 ALL_LOWER_CASE = 2, 294 /** 295 * Deprecated 296 */ 297 SMALL_CAPS = 3, 298 /** 299 * Deprecated 300 */ 301 INITIAL_CAPS = 4, 302 /** 303 * Deprecated 304 */ 305 INITIAL_CAPS_AND_SMALL_CAPS = 5, 306 /** 307 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION 308 */ 309 SUBSTITUTE_VERTICAL_FORMS_ON = 0, 310 /** 311 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION 312 */ 313 SUBSTITUTE_VERTICAL_FORMS_OFF = 1, 314 /** 315 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT 316 */ 317 LINGUISTIC_REARRANGEMENT_ON = 0, 318 /** 319 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT 320 */ 321 LINGUISTIC_REARRANGEMENT_OFF = 1, 322 /** 323 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING 324 */ 325 MONOSPACED_NUMBERS = 0, 326 /** 327 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING 328 */ 329 PROPORTIONAL_NUMBERS = 1, 330 /** 331 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING 332 */ 333 THIRD_WIDTH_NUMBERS = 2, 334 /** 335 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING 336 */ 337 QUARTER_WIDTH_NUMBERS = 3, 338 /** 339 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 340 */ 341 WORD_INITIAL_SWASHES_ON = 0, 342 /** 343 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 344 */ 345 WORD_INITIAL_SWASHES_OFF = 1, 346 /** 347 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 348 */ 349 WORD_FINAL_SWASHES_ON = 2, 350 /** 351 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 352 */ 353 WORD_FINAL_SWASHES_OFF = 3, 354 /** 355 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 356 */ 357 LINE_INITIAL_SWASHES_ON = 4, 358 /** 359 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 360 */ 361 LINE_INITIAL_SWASHES_OFF = 5, 362 /** 363 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 364 */ 365 LINE_FINAL_SWASHES_ON = 6, 366 /** 367 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 368 */ 369 LINE_FINAL_SWASHES_OFF = 7, 370 /** 371 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 372 */ 373 NON_FINAL_SWASHES_ON = 8, 374 /** 375 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 376 */ 377 NON_FINAL_SWASHES_OFF = 9, 378 /** 379 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE 380 */ 381 SHOW_DIACRITICS = 0, 382 /** 383 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE 384 */ 385 HIDE_DIACRITICS = 1, 386 /** 387 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE 388 */ 389 DECOMPOSE_DIACRITICS = 2, 390 /** 391 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION 392 */ 393 NORMAL_POSITION = 0, 394 /** 395 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION 396 */ 397 SUPERIORS = 1, 398 /** 399 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION 400 */ 401 INFERIORS = 2, 402 /** 403 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION 404 */ 405 ORDINALS = 3, 406 /** 407 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION 408 */ 409 SCIENTIFIC_INFERIORS = 4, 410 /** 411 * for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS 412 */ 413 NO_FRACTIONS = 0, 414 /** 415 * for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS 416 */ 417 VERTICAL_FRACTIONS = 1, 418 /** 419 * for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS 420 */ 421 DIAGONAL_FRACTIONS = 2, 422 /** 423 * for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE 424 */ 425 PREVENT_OVERLAP_ON = 0, 426 /** 427 * for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE 428 */ 429 PREVENT_OVERLAP_OFF = 1, 430 /** 431 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 432 */ 433 HYPHENS_TO_EM_DASH_ON = 0, 434 /** 435 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 436 */ 437 HYPHENS_TO_EM_DASH_OFF = 1, 438 /** 439 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 440 */ 441 HYPHEN_TO_EN_DASH_ON = 2, 442 /** 443 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 444 */ 445 HYPHEN_TO_EN_DASH_OFF = 3, 446 /** 447 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 448 */ 449 SLASHED_ZERO_ON = 4, 450 /** 451 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 452 */ 453 SLASHED_ZERO_OFF = 5, 454 /** 455 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 456 */ 457 FORM_INTERROBANG_ON = 6, 458 /** 459 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 460 */ 461 FORM_INTERROBANG_OFF = 7, 462 /** 463 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 464 */ 465 SMART_QUOTES_ON = 8, 466 /** 467 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 468 */ 469 SMART_QUOTES_OFF = 9, 470 /** 471 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 472 */ 473 PERIODS_TO_ELLIPSIS_ON = 10, 474 /** 475 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 476 */ 477 PERIODS_TO_ELLIPSIS_OFF = 11, 478 /** 479 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 480 */ 481 HYPHEN_TO_MINUS_ON = 0, 482 /** 483 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 484 */ 485 HYPHEN_TO_MINUS_OFF = 1, 486 /** 487 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 488 */ 489 ASTERISK_TO_MULTIPLY_ON = 2, 490 /** 491 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 492 */ 493 ASTERISK_TO_MULTIPLY_OFF = 3, 494 /** 495 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 496 */ 497 SLASH_TO_DIVIDE_ON = 4, 498 /** 499 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 500 */ 501 SLASH_TO_DIVIDE_OFF = 5, 502 /** 503 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 504 */ 505 INEQUALITY_LIGATURES_ON = 6, 506 /** 507 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 508 */ 509 INEQUALITY_LIGATURES_OFF = 7, 510 /** 511 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 512 */ 513 EXPONENTS_ON = 8, 514 /** 515 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 516 */ 517 EXPONENTS_OFF = 9, 518 /** 519 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 520 */ 521 MATHEMATICAL_GREEK_ON = 10, 522 /** 523 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 524 */ 525 MATHEMATICAL_GREEK_OFF = 11, 526 /** 527 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 528 */ 529 NO_ORNAMENTS = 0, 530 /** 531 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 532 */ 533 DINGBATS = 1, 534 /** 535 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 536 */ 537 PI_CHARACTERS = 2, 538 /** 539 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 540 */ 541 FLEURONS = 3, 542 /** 543 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 544 */ 545 DECORATIVE_BORDERS = 4, 546 /** 547 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 548 */ 549 INTERNATIONAL_SYMBOLS = 5, 550 /** 551 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 552 */ 553 MATH_SYMBOLS = 6, 554 /** 555 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES 556 */ 557 NO_ALTERNATES = 0, 558 /** 559 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE 560 */ 561 DESIGN_LEVEL1 = 0, 562 /** 563 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE 564 */ 565 DESIGN_LEVEL2 = 1, 566 /** 567 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE 568 */ 569 DESIGN_LEVEL3 = 2, 570 /** 571 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE 572 */ 573 DESIGN_LEVEL4 = 3, 574 /** 575 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE 576 */ 577 DESIGN_LEVEL5 = 4, 578 /** 579 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 580 */ 581 NO_STYLE_OPTIONS = 0, 582 /** 583 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 584 */ 585 DISPLAY_TEXT = 1, 586 /** 587 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 588 */ 589 ENGRAVED_TEXT = 2, 590 /** 591 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 592 */ 593 ILLUMINATED_CAPS = 3, 594 /** 595 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 596 */ 597 TITLING_CAPS = 4, 598 /** 599 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 600 */ 601 TALL_CAPS = 5, 602 /** 603 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 604 */ 605 TRADITIONAL_CHARACTERS = 0, 606 /** 607 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 608 */ 609 SIMPLIFIED_CHARACTERS = 1, 610 /** 611 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 612 */ 613 JIS1978_CHARACTERS = 2, 614 /** 615 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 616 */ 617 JIS1983_CHARACTERS = 3, 618 /** 619 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 620 */ 621 JIS1990_CHARACTERS = 4, 622 /** 623 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 624 */ 625 TRADITIONAL_ALT_ONE = 5, 626 /** 627 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 628 */ 629 TRADITIONAL_ALT_TWO = 6, 630 /** 631 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 632 */ 633 TRADITIONAL_ALT_THREE = 7, 634 /** 635 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 636 */ 637 TRADITIONAL_ALT_FOUR = 8, 638 /** 639 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 640 */ 641 TRADITIONAL_ALT_FIVE = 9, 642 /** 643 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 644 */ 645 EXPERT_CHARACTERS = 10, 646 /** 647 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 648 */ 649 JIS2004_CHARACTERS = 11, 650 /** 651 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 652 */ 653 HOJO_CHARACTERS = 12, 654 /** 655 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 656 */ 657 NLCCHARACTERS = 13, 658 /** 659 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 660 */ 661 TRADITIONAL_NAMES_CHARACTERS = 14, 662 /** 663 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE 664 */ 665 LOWER_CASE_NUMBERS = 0, 666 /** 667 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE 668 */ 669 UPPER_CASE_NUMBERS = 1, 670 /** 671 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 672 */ 673 PROPORTIONAL_TEXT = 0, 674 /** 675 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 676 */ 677 MONOSPACED_TEXT = 1, 678 /** 679 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 680 */ 681 HALF_WIDTH_TEXT = 2, 682 /** 683 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 684 */ 685 THIRD_WIDTH_TEXT = 3, 686 /** 687 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 688 */ 689 QUARTER_WIDTH_TEXT = 4, 690 /** 691 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 692 */ 693 ALT_PROPORTIONAL_TEXT = 5, 694 /** 695 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 696 */ 697 ALT_HALF_WIDTH_TEXT = 6, 698 /** 699 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 700 */ 701 NO_TRANSLITERATION = 0, 702 /** 703 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 704 */ 705 HANJA_TO_HANGUL = 1, 706 /** 707 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 708 */ 709 HIRAGANA_TO_KATAKANA = 2, 710 /** 711 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 712 */ 713 KATAKANA_TO_HIRAGANA = 3, 714 /** 715 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 716 */ 717 KANA_TO_ROMANIZATION = 4, 718 /** 719 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 720 */ 721 ROMANIZATION_TO_HIRAGANA = 5, 722 /** 723 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 724 */ 725 ROMANIZATION_TO_KATAKANA = 6, 726 /** 727 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 728 */ 729 HANJA_TO_HANGUL_ALT_ONE = 7, 730 /** 731 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 732 */ 733 HANJA_TO_HANGUL_ALT_TWO = 8, 734 /** 735 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 736 */ 737 HANJA_TO_HANGUL_ALT_THREE = 9, 738 /** 739 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 740 */ 741 NO_ANNOTATION = 0, 742 /** 743 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 744 */ 745 BOX_ANNOTATION = 1, 746 /** 747 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 748 */ 749 ROUNDED_BOX_ANNOTATION = 2, 750 /** 751 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 752 */ 753 CIRCLE_ANNOTATION = 3, 754 /** 755 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 756 */ 757 INVERTED_CIRCLE_ANNOTATION = 4, 758 /** 759 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 760 */ 761 PARENTHESIS_ANNOTATION = 5, 762 /** 763 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 764 */ 765 PERIOD_ANNOTATION = 6, 766 /** 767 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 768 */ 769 ROMAN_NUMERAL_ANNOTATION = 7, 770 /** 771 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 772 */ 773 DIAMOND_ANNOTATION = 8, 774 /** 775 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 776 */ 777 INVERTED_BOX_ANNOTATION = 9, 778 /** 779 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 780 */ 781 INVERTED_ROUNDED_BOX_ANNOTATION = 10, 782 /** 783 * for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE 784 */ 785 FULL_WIDTH_KANA = 0, 786 /** 787 * for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE 788 */ 789 PROPORTIONAL_KANA = 1, 790 /** 791 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE 792 */ 793 FULL_WIDTH_IDEOGRAPHS = 0, 794 /** 795 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE 796 */ 797 PROPORTIONAL_IDEOGRAPHS = 1, 798 /** 799 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE 800 */ 801 HALF_WIDTH_IDEOGRAPHS = 2, 802 /** 803 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 804 */ 805 CANONICAL_COMPOSITION_ON = 0, 806 /** 807 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 808 */ 809 CANONICAL_COMPOSITION_OFF = 1, 810 /** 811 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 812 */ 813 COMPATIBILITY_COMPOSITION_ON = 2, 814 /** 815 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 816 */ 817 COMPATIBILITY_COMPOSITION_OFF = 3, 818 /** 819 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 820 */ 821 TRANSCODING_COMPOSITION_ON = 4, 822 /** 823 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 824 */ 825 TRANSCODING_COMPOSITION_OFF = 5, 826 /** 827 * Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF instead 828 */ 829 NO_RUBY_KANA = 0, 830 /** 831 * Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON instead 832 */ 833 RUBY_KANA = 1, 834 /** 835 * for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA 836 */ 837 RUBY_KANA_ON = 2, 838 /** 839 * for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA 840 */ 841 RUBY_KANA_OFF = 3, 842 /** 843 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 844 */ 845 NO_CJK_SYMBOL_ALTERNATIVES = 0, 846 /** 847 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 848 */ 849 CJK_SYMBOL_ALT_ONE = 1, 850 /** 851 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 852 */ 853 CJK_SYMBOL_ALT_TWO = 2, 854 /** 855 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 856 */ 857 CJK_SYMBOL_ALT_THREE = 3, 858 /** 859 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 860 */ 861 CJK_SYMBOL_ALT_FOUR = 4, 862 /** 863 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 864 */ 865 CJK_SYMBOL_ALT_FIVE = 5, 866 /** 867 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 868 */ 869 NO_IDEOGRAPHIC_ALTERNATIVES = 0, 870 /** 871 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 872 */ 873 IDEOGRAPHIC_ALT_ONE = 1, 874 /** 875 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 876 */ 877 IDEOGRAPHIC_ALT_TWO = 2, 878 /** 879 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 880 */ 881 IDEOGRAPHIC_ALT_THREE = 3, 882 /** 883 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 884 */ 885 IDEOGRAPHIC_ALT_FOUR = 4, 886 /** 887 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 888 */ 889 IDEOGRAPHIC_ALT_FIVE = 5, 890 /** 891 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE 892 */ 893 CJK_VERTICAL_ROMAN_CENTERED = 0, 894 /** 895 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE 896 */ 897 CJK_VERTICAL_ROMAN_HBASELINE = 1, 898 /** 899 * Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF instead 900 */ 901 NO_CJK_ITALIC_ROMAN = 0, 902 /** 903 * Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON instead 904 */ 905 CJK_ITALIC_ROMAN = 1, 906 /** 907 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN 908 */ 909 CJK_ITALIC_ROMAN_ON = 2, 910 /** 911 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN 912 */ 913 CJK_ITALIC_ROMAN_OFF = 3, 914 /** 915 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT 916 */ 917 CASE_SENSITIVE_LAYOUT_ON = 0, 918 /** 919 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT 920 */ 921 CASE_SENSITIVE_LAYOUT_OFF = 1, 922 /** 923 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT 924 */ 925 CASE_SENSITIVE_SPACING_ON = 2, 926 /** 927 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT 928 */ 929 CASE_SENSITIVE_SPACING_OFF = 3, 930 /** 931 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA 932 */ 933 ALTERNATE_HORIZ_KANA_ON = 0, 934 /** 935 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA 936 */ 937 ALTERNATE_HORIZ_KANA_OFF = 1, 938 /** 939 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA 940 */ 941 ALTERNATE_VERT_KANA_ON = 2, 942 /** 943 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA 944 */ 945 ALTERNATE_VERT_KANA_OFF = 3, 946 /** 947 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 948 */ 949 NO_STYLISTIC_ALTERNATES = 0, 950 /** 951 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 952 */ 953 STYLISTIC_ALT_ONE_ON = 2, 954 /** 955 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 956 */ 957 STYLISTIC_ALT_ONE_OFF = 3, 958 /** 959 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 960 */ 961 STYLISTIC_ALT_TWO_ON = 4, 962 /** 963 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 964 */ 965 STYLISTIC_ALT_TWO_OFF = 5, 966 /** 967 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 968 */ 969 STYLISTIC_ALT_THREE_ON = 6, 970 /** 971 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 972 */ 973 STYLISTIC_ALT_THREE_OFF = 7, 974 /** 975 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 976 */ 977 STYLISTIC_ALT_FOUR_ON = 8, 978 /** 979 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 980 */ 981 STYLISTIC_ALT_FOUR_OFF = 9, 982 /** 983 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 984 */ 985 STYLISTIC_ALT_FIVE_ON = 10, 986 /** 987 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 988 */ 989 STYLISTIC_ALT_FIVE_OFF = 11, 990 /** 991 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 992 */ 993 STYLISTIC_ALT_SIX_ON = 12, 994 /** 995 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 996 */ 997 STYLISTIC_ALT_SIX_OFF = 13, 998 /** 999 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1000 */ 1001 STYLISTIC_ALT_SEVEN_ON = 14, 1002 /** 1003 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1004 */ 1005 STYLISTIC_ALT_SEVEN_OFF = 15, 1006 /** 1007 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1008 */ 1009 STYLISTIC_ALT_EIGHT_ON = 16, 1010 /** 1011 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1012 */ 1013 STYLISTIC_ALT_EIGHT_OFF = 17, 1014 /** 1015 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1016 */ 1017 STYLISTIC_ALT_NINE_ON = 18, 1018 /** 1019 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1020 */ 1021 STYLISTIC_ALT_NINE_OFF = 19, 1022 /** 1023 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1024 */ 1025 STYLISTIC_ALT_TEN_ON = 20, 1026 /** 1027 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1028 */ 1029 STYLISTIC_ALT_TEN_OFF = 21, 1030 /** 1031 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1032 */ 1033 STYLISTIC_ALT_ELEVEN_ON = 22, 1034 /** 1035 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1036 */ 1037 STYLISTIC_ALT_ELEVEN_OFF = 23, 1038 /** 1039 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1040 */ 1041 STYLISTIC_ALT_TWELVE_ON = 24, 1042 /** 1043 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1044 */ 1045 STYLISTIC_ALT_TWELVE_OFF = 25, 1046 /** 1047 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1048 */ 1049 STYLISTIC_ALT_THIRTEEN_ON = 26, 1050 /** 1051 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1052 */ 1053 STYLISTIC_ALT_THIRTEEN_OFF = 27, 1054 /** 1055 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1056 */ 1057 STYLISTIC_ALT_FOURTEEN_ON = 28, 1058 /** 1059 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1060 */ 1061 STYLISTIC_ALT_FOURTEEN_OFF = 29, 1062 /** 1063 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1064 */ 1065 STYLISTIC_ALT_FIFTEEN_ON = 30, 1066 /** 1067 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1068 */ 1069 STYLISTIC_ALT_FIFTEEN_OFF = 31, 1070 /** 1071 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1072 */ 1073 STYLISTIC_ALT_SIXTEEN_ON = 32, 1074 /** 1075 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1076 */ 1077 STYLISTIC_ALT_SIXTEEN_OFF = 33, 1078 /** 1079 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1080 */ 1081 STYLISTIC_ALT_SEVENTEEN_ON = 34, 1082 /** 1083 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1084 */ 1085 STYLISTIC_ALT_SEVENTEEN_OFF = 35, 1086 /** 1087 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1088 */ 1089 STYLISTIC_ALT_EIGHTEEN_ON = 36, 1090 /** 1091 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1092 */ 1093 STYLISTIC_ALT_EIGHTEEN_OFF = 37, 1094 /** 1095 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1096 */ 1097 STYLISTIC_ALT_NINETEEN_ON = 38, 1098 /** 1099 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1100 */ 1101 STYLISTIC_ALT_NINETEEN_OFF = 39, 1102 /** 1103 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1104 */ 1105 STYLISTIC_ALT_TWENTY_ON = 40, 1106 /** 1107 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1108 */ 1109 STYLISTIC_ALT_TWENTY_OFF = 41, 1110 /** 1111 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1112 */ 1113 CONTEXTUAL_ALTERNATES_ON = 0, 1114 /** 1115 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1116 */ 1117 CONTEXTUAL_ALTERNATES_OFF = 1, 1118 /** 1119 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1120 */ 1121 SWASH_ALTERNATES_ON = 2, 1122 /** 1123 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1124 */ 1125 SWASH_ALTERNATES_OFF = 3, 1126 /** 1127 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1128 */ 1129 CONTEXTUAL_SWASH_ALTERNATES_ON = 4, 1130 /** 1131 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1132 */ 1133 CONTEXTUAL_SWASH_ALTERNATES_OFF = 5, 1134 /** 1135 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE 1136 */ 1137 DEFAULT_LOWER_CASE = 0, 1138 /** 1139 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE 1140 */ 1141 LOWER_CASE_SMALL_CAPS = 1, 1142 /** 1143 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE 1144 */ 1145 LOWER_CASE_PETITE_CAPS = 2, 1146 /** 1147 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE 1148 */ 1149 DEFAULT_UPPER_CASE = 0, 1150 /** 1151 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE 1152 */ 1153 UPPER_CASE_SMALL_CAPS = 1, 1154 /** 1155 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE 1156 */ 1157 UPPER_CASE_PETITE_CAPS = 2, 1158 /** 1159 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE 1160 */ 1161 HALF_WIDTH_CJK_ROMAN = 0, 1162 /** 1163 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE 1164 */ 1165 PROPORTIONAL_CJK_ROMAN = 1, 1166 /** 1167 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE 1168 */ 1169 DEFAULT_CJK_ROMAN = 2, 1170 /** 1171 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE 1172 */ 1173 FULL_WIDTH_CJK_ROMAN = 3, 1174 } 1175 alias hb_aat_layout_feature_selector_t aat_layout_feature_selector_t; 1176 1177 /** 1178 * The possible feature types defined for AAT shaping, from Apple [Font Feature Registry](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html). 1179 * 1180 * Since: 2.2.0 1181 */ 1182 public enum hb_aat_layout_feature_type_t 1183 { 1184 /** 1185 * Initial, unset feature type 1186 */ 1187 INVALID = 65535, 1188 /** 1189 * [All Typographic Features](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type0) 1190 */ 1191 ALL_TYPOGRAPHIC = 0, 1192 /** 1193 * [Ligatures](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type1) 1194 */ 1195 LIGATURES = 1, 1196 /** 1197 * [Cursive Connection](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type2) 1198 */ 1199 CURISVE_CONNECTION = 2, 1200 /** 1201 * [Letter Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type3) 1202 */ 1203 LETTER_CASE = 3, 1204 /** 1205 * [Vertical Substitution](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type4) 1206 */ 1207 VERTICAL_SUBSTITUTION = 4, 1208 /** 1209 * [Linguistic Rearrangement](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type5) 1210 */ 1211 LINGUISTIC_REARRANGEMENT = 5, 1212 /** 1213 * [Number Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type6) 1214 */ 1215 NUMBER_SPACING = 6, 1216 /** 1217 * [Smart Swash](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type8) 1218 */ 1219 SMART_SWASH_TYPE = 8, 1220 /** 1221 * [Diacritics](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type9) 1222 */ 1223 DIACRITICS_TYPE = 9, 1224 /** 1225 * [Vertical Position](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type10) 1226 */ 1227 VERTICAL_POSITION = 10, 1228 /** 1229 * [Fractions](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type11) 1230 */ 1231 FRACTIONS = 11, 1232 /** 1233 * [Overlapping Characters](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type13) 1234 */ 1235 OVERLAPPING_CHARACTERS_TYPE = 13, 1236 /** 1237 * [Typographic Extras](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type14) 1238 */ 1239 TYPOGRAPHIC_EXTRAS = 14, 1240 /** 1241 * [Mathematical Extras](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type15) 1242 */ 1243 MATHEMATICAL_EXTRAS = 15, 1244 /** 1245 * [Ornament Sets](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type16) 1246 */ 1247 ORNAMENT_SETS_TYPE = 16, 1248 /** 1249 * [Character Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type17) 1250 */ 1251 CHARACTER_ALTERNATIVES = 17, 1252 /** 1253 * [Design Complexity](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type18) 1254 */ 1255 DESIGN_COMPLEXITY_TYPE = 18, 1256 /** 1257 * [Style Options](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type19) 1258 */ 1259 STYLE_OPTIONS = 19, 1260 /** 1261 * [Character Shape](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type20) 1262 */ 1263 CHARACTER_SHAPE = 20, 1264 /** 1265 * [Number Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type21) 1266 */ 1267 NUMBER_CASE = 21, 1268 /** 1269 * [Text Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type22) 1270 */ 1271 TEXT_SPACING = 22, 1272 /** 1273 * [Transliteration](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type23) 1274 */ 1275 TRANSLITERATION = 23, 1276 /** 1277 * [Annotation](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type24) 1278 */ 1279 ANNOTATION_TYPE = 24, 1280 /** 1281 * [Kana Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type25) 1282 */ 1283 KANA_SPACING_TYPE = 25, 1284 /** 1285 * [Ideographic Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type26) 1286 */ 1287 IDEOGRAPHIC_SPACING_TYPE = 26, 1288 /** 1289 * [Unicode Decomposition](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type27) 1290 */ 1291 UNICODE_DECOMPOSITION_TYPE = 27, 1292 /** 1293 * [Ruby Kana](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type28) 1294 */ 1295 RUBY_KANA = 28, 1296 /** 1297 * [CJK Symbol Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type29) 1298 */ 1299 CJK_SYMBOL_ALTERNATIVES_TYPE = 29, 1300 /** 1301 * [Ideographic Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type30) 1302 */ 1303 IDEOGRAPHIC_ALTERNATIVES_TYPE = 30, 1304 /** 1305 * [CJK Vertical Roman Placement](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type31) 1306 */ 1307 CJK_VERTICAL_ROMAN_PLACEMENT_TYPE = 31, 1308 /** 1309 * [Italic CJK Roman](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type32) 1310 */ 1311 ITALIC_CJK_ROMAN = 32, 1312 /** 1313 * [Case Sensitive Layout](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type33) 1314 */ 1315 CASE_SENSITIVE_LAYOUT = 33, 1316 /** 1317 * [Alternate Kana](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type34) 1318 */ 1319 ALTERNATE_KANA = 34, 1320 /** 1321 * [Stylistic Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type35) 1322 */ 1323 STYLISTIC_ALTERNATIVES = 35, 1324 /** 1325 * [Contextual Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type36) 1326 */ 1327 CONTEXTUAL_ALTERNATIVES = 36, 1328 /** 1329 * [Lower Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type37) 1330 */ 1331 LOWER_CASE = 37, 1332 /** 1333 * [Upper Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type38) 1334 */ 1335 UPPER_CASE = 38, 1336 /** 1337 * [Language Tag](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type39) 1338 */ 1339 LANGUAGE_TAG_TYPE = 39, 1340 /** 1341 * [CJK Roman Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type103) 1342 */ 1343 CJK_ROMAN_SPACING_TYPE = 103, 1344 } 1345 alias hb_aat_layout_feature_type_t aat_layout_feature_type_t; 1346 1347 /** 1348 * Data type for holding HarfBuzz's clustering behavior options. The cluster level 1349 * dictates one aspect of how HarfBuzz will treat non-base characters 1350 * during shaping. 1351 * 1352 * In @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES, non-base 1353 * characters are merged into the cluster of the base character that precedes them. 1354 * 1355 * In @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS, non-base characters are initially 1356 * assigned their own cluster values, which are not merged into preceding base 1357 * clusters. This allows HarfBuzz to perform additional operations like reorder 1358 * sequences of adjacent marks. 1359 * 1360 * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES is the default, because it maintains 1361 * backward compatibility with older versions of HarfBuzz. New client programs that 1362 * do not need to maintain such backward compatibility are recommended to use 1363 * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS instead of the default. 1364 * 1365 * Since: 0.9.42 1366 */ 1367 public enum hb_buffer_cluster_level_t 1368 { 1369 /** 1370 * Return cluster values grouped by graphemes into 1371 * monotone order. 1372 */ 1373 MONOTONE_GRAPHEMES = 0, 1374 /** 1375 * Return cluster values grouped into monotone order. 1376 */ 1377 MONOTONE_CHARACTERS = 1, 1378 /** 1379 * Don't group cluster values. 1380 */ 1381 CHARACTERS = 2, 1382 /** 1383 * Default cluster level, 1384 * equal to @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES. 1385 */ 1386 DEFAULT = 0, 1387 } 1388 alias hb_buffer_cluster_level_t buffer_cluster_level_t; 1389 1390 /** 1391 * The type of #hb_buffer_t contents. 1392 */ 1393 public enum hb_buffer_content_type_t 1394 { 1395 /** 1396 * Initial value for new buffer. 1397 */ 1398 INVALID = 0, 1399 /** 1400 * The buffer contains input characters (before shaping). 1401 */ 1402 UNICODE = 1, 1403 /** 1404 * The buffer contains output glyphs (after shaping). 1405 */ 1406 GLYPHS = 2, 1407 } 1408 alias hb_buffer_content_type_t buffer_content_type_t; 1409 1410 /** 1411 * Flags from comparing two #hb_buffer_t's. 1412 * 1413 * Buffer with different #hb_buffer_content_type_t cannot be meaningfully 1414 * compared in any further detail. 1415 * 1416 * For buffers with differing length, the per-glyph comparison is not 1417 * attempted, though we do still scan reference buffer for dotted circle and 1418 * `.notdef` glyphs. 1419 * 1420 * If the buffers have the same length, we compare them glyph-by-glyph and 1421 * report which aspect(s) of the glyph info/position are different. 1422 * 1423 * Since: 1.5.0 1424 */ 1425 public enum hb_buffer_diff_flags_t 1426 { 1427 /** 1428 * equal buffers. 1429 */ 1430 EQUAL = 0, 1431 /** 1432 * buffers with different 1433 * #hb_buffer_content_type_t. 1434 */ 1435 CONTENT_TYPE_MISMATCH = 1, 1436 /** 1437 * buffers with differing length. 1438 */ 1439 LENGTH_MISMATCH = 2, 1440 /** 1441 * `.notdef` glyph is present in the 1442 * reference buffer. 1443 */ 1444 NOTDEF_PRESENT = 4, 1445 /** 1446 * dotted circle glyph is present 1447 * in the reference buffer. 1448 */ 1449 DOTTED_CIRCLE_PRESENT = 8, 1450 /** 1451 * difference in #hb_glyph_info_t.codepoint 1452 */ 1453 CODEPOINT_MISMATCH = 16, 1454 /** 1455 * difference in #hb_glyph_info_t.cluster 1456 */ 1457 CLUSTER_MISMATCH = 32, 1458 /** 1459 * difference in #hb_glyph_flags_t. 1460 */ 1461 GLYPH_FLAGS_MISMATCH = 64, 1462 /** 1463 * difference in #hb_glyph_position_t. 1464 */ 1465 POSITION_MISMATCH = 128, 1466 } 1467 alias hb_buffer_diff_flags_t buffer_diff_flags_t; 1468 1469 /** 1470 * Flags for #hb_buffer_t. 1471 * 1472 * Since: 0.9.20 1473 */ 1474 public enum hb_buffer_flags_t 1475 { 1476 /** 1477 * the default buffer flag. 1478 */ 1479 DEFAULT = 0, 1480 /** 1481 * flag indicating that special handling of the beginning 1482 * of text paragraph can be applied to this buffer. Should usually 1483 * be set, unless you are passing to the buffer only part 1484 * of the text without the full context. 1485 */ 1486 BOT = 1, 1487 /** 1488 * flag indicating that special handling of the end of text 1489 * paragraph can be applied to this buffer, similar to 1490 * @HB_BUFFER_FLAG_BOT. 1491 */ 1492 EOT = 2, 1493 /** 1494 * flag indication that character with Default_Ignorable 1495 * Unicode property should use the corresponding glyph 1496 * from the font, instead of hiding them (done by 1497 * replacing them with the space glyph and zeroing the 1498 * advance width.) This flag takes precedence over 1499 * @HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES. 1500 */ 1501 PRESERVE_DEFAULT_IGNORABLES = 4, 1502 /** 1503 * flag indication that character with Default_Ignorable 1504 * Unicode property should be removed from glyph string 1505 * instead of hiding them (done by replacing them with the 1506 * space glyph and zeroing the advance width.) 1507 * @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES takes 1508 * precedence over this flag. Since: 1.8.0 1509 */ 1510 REMOVE_DEFAULT_IGNORABLES = 8, 1511 /** 1512 * flag indicating that a dotted circle should 1513 * not be inserted in the rendering of incorrect 1514 * character sequences (such at <0905 093E>). Since: 2.4 1515 */ 1516 DO_NOT_INSERT_DOTTED_CIRCLE = 16, 1517 } 1518 alias hb_buffer_flags_t buffer_flags_t; 1519 1520 /** 1521 * Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs(). 1522 * 1523 * Since: 0.9.20 1524 */ 1525 public enum hb_buffer_serialize_flags_t 1526 { 1527 /** 1528 * serialize glyph names, clusters and positions. 1529 */ 1530 DEFAULT = 0, 1531 /** 1532 * do not serialize glyph cluster. 1533 */ 1534 NO_CLUSTERS = 1, 1535 /** 1536 * do not serialize glyph position information. 1537 */ 1538 NO_POSITIONS = 2, 1539 /** 1540 * do no serialize glyph name. 1541 */ 1542 NO_GLYPH_NAMES = 4, 1543 /** 1544 * serialize glyph extents. 1545 */ 1546 GLYPH_EXTENTS = 8, 1547 /** 1548 * serialize glyph flags. Since: 1.5.0 1549 */ 1550 GLYPH_FLAGS = 16, 1551 /** 1552 * do not serialize glyph advances, 1553 * glyph offsets will reflect absolute glyph positions. Since: 1.8.0 1554 */ 1555 NO_ADVANCES = 32, 1556 } 1557 alias hb_buffer_serialize_flags_t buffer_serialize_flags_t; 1558 1559 /** 1560 * The buffer serialization and de-serialization format used in 1561 * hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs(). 1562 * 1563 * Since: 0.9.2 1564 */ 1565 public enum hb_buffer_serialize_format_t 1566 { 1567 /** 1568 * a human-readable, plain text format. 1569 */ 1570 TEXT = 1413830740, 1571 /** 1572 * a machine-readable JSON format. 1573 */ 1574 JSON = 1246973774, 1575 /** 1576 * invalid format. 1577 */ 1578 INVALID = 0, 1579 } 1580 alias hb_buffer_serialize_format_t buffer_serialize_format_t; 1581 1582 /** 1583 * The direction of a text segment or buffer. 1584 * 1585 * A segment can also be tested for horizontal or vertical 1586 * orientation (irrespective of specific direction) with 1587 * HB_DIRECTION_IS_HORIZONTAL() or HB_DIRECTION_IS_VERTICAL(). 1588 */ 1589 public enum hb_direction_t 1590 { 1591 /** 1592 * Initial, unset direction. 1593 */ 1594 INVALID = 0, 1595 /** 1596 * Text is set horizontally from left to right. 1597 */ 1598 LTR = 4, 1599 /** 1600 * Text is set horizontally from right to left. 1601 */ 1602 RTL = 5, 1603 /** 1604 * Text is set vertically from top to bottom. 1605 */ 1606 TTB = 6, 1607 /** 1608 * Text is set vertically from bottom to top. 1609 */ 1610 BTT = 7, 1611 } 1612 alias hb_direction_t direction_t; 1613 1614 /** 1615 * Flags for #hb_glyph_info_t. 1616 * 1617 * Since: 1.5.0 1618 */ 1619 public enum hb_glyph_flags_t 1620 { 1621 /** 1622 * Indicates that if input text is broken at the 1623 * beginning of the cluster this glyph is part of, 1624 * then both sides need to be re-shaped, as the 1625 * result might be different. On the flip side, 1626 * it means that when this flag is not present, 1627 * then it's safe to break the glyph-run at the 1628 * beginning of this cluster, and the two sides 1629 * represent the exact same result one would get 1630 * if breaking input text at the beginning of 1631 * this cluster and shaping the two sides 1632 * separately. This can be used to optimize 1633 * paragraph layout, by avoiding re-shaping 1634 * of each line after line-breaking, or limiting 1635 * the reshaping to a small piece around the 1636 * breaking point only. 1637 */ 1638 UNSAFE_TO_BREAK = 1, 1639 /** 1640 * All the currently defined flags. 1641 */ 1642 DEFINED = 1, 1643 } 1644 alias hb_glyph_flags_t glyph_flags_t; 1645 1646 /** 1647 * Data type holding the memory modes available to 1648 * client programs. 1649 * 1650 * Regarding these various memory-modes: 1651 * 1652 * - In no case shall the HarfBuzz client modify memory 1653 * that is passed to HarfBuzz in a blob. If there is 1654 * any such possibility, @HB_MEMORY_MODE_DUPLICATE should be used 1655 * such that HarfBuzz makes a copy immediately, 1656 * 1657 * - Use @HB_MEMORY_MODE_READONLY otherwise, unless you really really 1658 * really know what you are doing, 1659 * 1660 * - @HB_MEMORY_MODE_WRITABLE is appropriate if you really made a 1661 * copy of data solely for the purpose of passing to 1662 * HarfBuzz and doing that just once (no reuse!), 1663 * 1664 * - If the font is mmap()ed, it's okay to use 1665 * @HB_MEMORY_READONLY_MAY_MAKE_WRITABLE, however, using that mode 1666 * correctly is very tricky. Use @HB_MEMORY_MODE_READONLY instead. 1667 */ 1668 public enum hb_memory_mode_t 1669 { 1670 /** 1671 * HarfBuzz immediately makes a copy of the data. 1672 */ 1673 DUPLICATE = 0, 1674 /** 1675 * HarfBuzz client will never modify the data, 1676 * and HarfBuzz will never modify the data. 1677 */ 1678 READONLY = 1, 1679 /** 1680 * HarfBuzz client made a copy of the data solely 1681 * for HarfBuzz, so HarfBuzz may modify the data. 1682 */ 1683 WRITABLE = 2, 1684 /** 1685 * See above 1686 */ 1687 READONLY_MAY_MAKE_WRITABLE = 3, 1688 } 1689 alias hb_memory_mode_t memory_mode_t; 1690 1691 /** 1692 * Flags that describe the properties of color palette. 1693 * 1694 * Since: 2.1.0 1695 */ 1696 public enum hb_ot_color_palette_flags_t 1697 { 1698 /** 1699 * Default indicating that there is nothing special 1700 * to note about a color palette. 1701 */ 1702 DEFAULT = 0, 1703 /** 1704 * Flag indicating that the color 1705 * palette is appropriate to use when displaying the font on a light background such as white. 1706 */ 1707 USABLE_WITH_LIGHT_BACKGROUND = 1, 1708 /** 1709 * Flag indicating that the color 1710 * palette is appropriate to use when displaying the font on a dark background such as black. 1711 */ 1712 USABLE_WITH_DARK_BACKGROUND = 2, 1713 } 1714 alias hb_ot_color_palette_flags_t ot_color_palette_flags_t; 1715 1716 /** 1717 * Baseline tags from [Baseline Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags) registry. 1718 * 1719 * Since: 2.6.0 1720 */ 1721 public enum hb_ot_layout_baseline_tag_t 1722 { 1723 /** 1724 * The baseline used by alphabetic scripts such as Latin, Cyrillic and Greek. 1725 * In vertical writing mode, the alphabetic baseline for characters rotated 90 degrees clockwise. 1726 * (This would not apply to alphabetic characters that remain upright in vertical writing mode, since these 1727 * characters are not rotated.) 1728 */ 1729 ROMAN = 1919905134, 1730 /** 1731 * The hanging baseline. In horizontal direction, this is the horizontal 1732 * line from which syllables seem, to hang in Tibetan and other similar scripts. In vertical writing mode, 1733 * for Tibetan (or some other similar script) characters rotated 90 degrees clockwise. 1734 */ 1735 HANGING = 1751215719, 1736 /** 1737 * Ideographic character face bottom or left edge, 1738 * if the direction is horizontal or vertical, respectively. 1739 */ 1740 IDEO_FACE_BOTTOM_OR_LEFT = 1768121954, 1741 /** 1742 * Ideographic character face top or right edge, 1743 * if the direction is horizontal or vertical, respectively. 1744 */ 1745 IDEO_FACE_TOP_OR_RIGHT = 1768121972, 1746 /** 1747 * Ideographic em-box bottom or left edge, 1748 * if the direction is horizontal or vertical, respectively. 1749 */ 1750 IDEO_EMBOX_BOTTOM_OR_LEFT = 1768187247, 1751 /** 1752 * Ideographic em-box top or right edge baseline, 1753 * if the direction is horizontal or vertical, respectively. 1754 */ 1755 IDEO_EMBOX_TOP_OR_RIGHT = 1768191088, 1756 /** 1757 * The baseline about which mathematical characters are centered. 1758 * In vertical writing mode when mathematical characters rotated 90 degrees clockwise, are centered. 1759 */ 1760 MATH = 1835103336, 1761 } 1762 alias hb_ot_layout_baseline_tag_t ot_layout_baseline_tag_t; 1763 1764 /** 1765 * The GDEF classes defined for glyphs. 1766 */ 1767 public enum hb_ot_layout_glyph_class_t 1768 { 1769 /** 1770 * Glyphs not matching the other classifications 1771 */ 1772 UNCLASSIFIED = 0, 1773 /** 1774 * Spacing, single characters, capable of accepting marks 1775 */ 1776 BASE_GLYPH = 1, 1777 /** 1778 * Glyphs that represent ligation of multiple characters 1779 */ 1780 LIGATURE = 2, 1781 /** 1782 * Non-spacing, combining glyphs that represent marks 1783 */ 1784 MARK = 3, 1785 /** 1786 * Spacing glyphs that represent part of a single character 1787 */ 1788 COMPONENT = 4, 1789 } 1790 alias hb_ot_layout_glyph_class_t ot_layout_glyph_class_t; 1791 1792 /** 1793 * The 'MATH' table constants, refer to 1794 * [OpenType documentation](https://docs.microsoft.com/en-us/typography/opentype/spec/math#mathconstants-table) 1795 * For more explanations. 1796 * 1797 * Since: 1.3.3 1798 */ 1799 public enum hb_ot_math_constant_t 1800 { 1801 /** 1802 * scriptPercentScaleDown 1803 */ 1804 SCRIPT_PERCENT_SCALE_DOWN = 0, 1805 /** 1806 * scriptScriptPercentScaleDown 1807 */ 1808 SCRIPT_SCRIPT_PERCENT_SCALE_DOWN = 1, 1809 /** 1810 * delimitedSubFormulaMinHeight 1811 */ 1812 DELIMITED_SUB_FORMULA_MIN_HEIGHT = 2, 1813 /** 1814 * displayOperatorMinHeight 1815 */ 1816 DISPLAY_OPERATOR_MIN_HEIGHT = 3, 1817 /** 1818 * mathLeading 1819 */ 1820 MATH_LEADING = 4, 1821 /** 1822 * axisHeight 1823 */ 1824 AXIS_HEIGHT = 5, 1825 /** 1826 * accentBaseHeight 1827 */ 1828 ACCENT_BASE_HEIGHT = 6, 1829 /** 1830 * flattenedAccentBaseHeight 1831 */ 1832 FLATTENED_ACCENT_BASE_HEIGHT = 7, 1833 /** 1834 * subscriptShiftDown 1835 */ 1836 SUBSCRIPT_SHIFT_DOWN = 8, 1837 /** 1838 * subscriptTopMax 1839 */ 1840 SUBSCRIPT_TOP_MAX = 9, 1841 /** 1842 * subscriptBaselineDropMin 1843 */ 1844 SUBSCRIPT_BASELINE_DROP_MIN = 10, 1845 /** 1846 * superscriptShiftUp 1847 */ 1848 SUPERSCRIPT_SHIFT_UP = 11, 1849 /** 1850 * superscriptShiftUpCramped 1851 */ 1852 SUPERSCRIPT_SHIFT_UP_CRAMPED = 12, 1853 /** 1854 * superscriptBottomMin 1855 */ 1856 SUPERSCRIPT_BOTTOM_MIN = 13, 1857 /** 1858 * superscriptBaselineDropMax 1859 */ 1860 SUPERSCRIPT_BASELINE_DROP_MAX = 14, 1861 /** 1862 * subSuperscriptGapMin 1863 */ 1864 SUB_SUPERSCRIPT_GAP_MIN = 15, 1865 /** 1866 * superscriptBottomMaxWithSubscript 1867 */ 1868 SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT = 16, 1869 /** 1870 * spaceAfterScript 1871 */ 1872 SPACE_AFTER_SCRIPT = 17, 1873 /** 1874 * upperLimitGapMin 1875 */ 1876 UPPER_LIMIT_GAP_MIN = 18, 1877 /** 1878 * upperLimitBaselineRiseMin 1879 */ 1880 UPPER_LIMIT_BASELINE_RISE_MIN = 19, 1881 /** 1882 * lowerLimitGapMin 1883 */ 1884 LOWER_LIMIT_GAP_MIN = 20, 1885 /** 1886 * lowerLimitBaselineDropMin 1887 */ 1888 LOWER_LIMIT_BASELINE_DROP_MIN = 21, 1889 /** 1890 * stackTopShiftUp 1891 */ 1892 STACK_TOP_SHIFT_UP = 22, 1893 /** 1894 * stackTopDisplayStyleShiftUp 1895 */ 1896 STACK_TOP_DISPLAY_STYLE_SHIFT_UP = 23, 1897 /** 1898 * stackBottomShiftDown 1899 */ 1900 STACK_BOTTOM_SHIFT_DOWN = 24, 1901 /** 1902 * stackBottomDisplayStyleShiftDown 1903 */ 1904 STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN = 25, 1905 /** 1906 * stackGapMin 1907 */ 1908 STACK_GAP_MIN = 26, 1909 /** 1910 * stackDisplayStyleGapMin 1911 */ 1912 STACK_DISPLAY_STYLE_GAP_MIN = 27, 1913 /** 1914 * stretchStackTopShiftUp 1915 */ 1916 STRETCH_STACK_TOP_SHIFT_UP = 28, 1917 /** 1918 * stretchStackBottomShiftDown 1919 */ 1920 STRETCH_STACK_BOTTOM_SHIFT_DOWN = 29, 1921 /** 1922 * stretchStackGapAboveMin 1923 */ 1924 STRETCH_STACK_GAP_ABOVE_MIN = 30, 1925 /** 1926 * stretchStackGapBelowMin 1927 */ 1928 STRETCH_STACK_GAP_BELOW_MIN = 31, 1929 /** 1930 * fractionNumeratorShiftUp 1931 */ 1932 FRACTION_NUMERATOR_SHIFT_UP = 32, 1933 /** 1934 * fractionNumeratorDisplayStyleShiftUp 1935 */ 1936 FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP = 33, 1937 /** 1938 * fractionDenominatorShiftDown 1939 */ 1940 FRACTION_DENOMINATOR_SHIFT_DOWN = 34, 1941 /** 1942 * fractionDenominatorDisplayStyleShiftDown 1943 */ 1944 FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN = 35, 1945 /** 1946 * fractionNumeratorGapMin 1947 */ 1948 FRACTION_NUMERATOR_GAP_MIN = 36, 1949 /** 1950 * fractionNumDisplayStyleGapMin 1951 */ 1952 FRACTION_NUM_DISPLAY_STYLE_GAP_MIN = 37, 1953 /** 1954 * fractionRuleThickness 1955 */ 1956 FRACTION_RULE_THICKNESS = 38, 1957 /** 1958 * fractionDenominatorGapMin 1959 */ 1960 FRACTION_DENOMINATOR_GAP_MIN = 39, 1961 /** 1962 * fractionDenomDisplayStyleGapMin 1963 */ 1964 FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN = 40, 1965 /** 1966 * skewedFractionHorizontalGap 1967 */ 1968 SKEWED_FRACTION_HORIZONTAL_GAP = 41, 1969 /** 1970 * skewedFractionVerticalGap 1971 */ 1972 SKEWED_FRACTION_VERTICAL_GAP = 42, 1973 /** 1974 * overbarVerticalGap 1975 */ 1976 OVERBAR_VERTICAL_GAP = 43, 1977 /** 1978 * overbarRuleThickness 1979 */ 1980 OVERBAR_RULE_THICKNESS = 44, 1981 /** 1982 * overbarExtraAscender 1983 */ 1984 OVERBAR_EXTRA_ASCENDER = 45, 1985 /** 1986 * underbarVerticalGap 1987 */ 1988 UNDERBAR_VERTICAL_GAP = 46, 1989 /** 1990 * underbarRuleThickness 1991 */ 1992 UNDERBAR_RULE_THICKNESS = 47, 1993 /** 1994 * underbarExtraDescender 1995 */ 1996 UNDERBAR_EXTRA_DESCENDER = 48, 1997 /** 1998 * radicalVerticalGap 1999 */ 2000 RADICAL_VERTICAL_GAP = 49, 2001 /** 2002 * radicalDisplayStyleVerticalGap 2003 */ 2004 RADICAL_DISPLAY_STYLE_VERTICAL_GAP = 50, 2005 /** 2006 * radicalRuleThickness 2007 */ 2008 RADICAL_RULE_THICKNESS = 51, 2009 /** 2010 * radicalExtraAscender 2011 */ 2012 RADICAL_EXTRA_ASCENDER = 52, 2013 /** 2014 * radicalKernBeforeDegree 2015 */ 2016 RADICAL_KERN_BEFORE_DEGREE = 53, 2017 /** 2018 * radicalKernAfterDegree 2019 */ 2020 RADICAL_KERN_AFTER_DEGREE = 54, 2021 /** 2022 * radicalDegreeBottomRaisePercent 2023 */ 2024 RADICAL_DEGREE_BOTTOM_RAISE_PERCENT = 55, 2025 } 2026 alias hb_ot_math_constant_t ot_math_constant_t; 2027 2028 /** 2029 * Flags for math glyph parts. 2030 * 2031 * Since: 1.3.3 2032 */ 2033 public enum hb_ot_math_glyph_part_flags_t 2034 { 2035 /** 2036 * This is an extender glyph part that 2037 * can be repeated to reach the desired length. 2038 */ 2039 EXTENDER = 1, 2040 } 2041 alias hb_ot_math_glyph_part_flags_t ot_math_glyph_part_flags_t; 2042 2043 /** 2044 * The math kerning-table types defined for the four corners 2045 * of a glyph. 2046 * 2047 * Since: 1.3.3 2048 */ 2049 public enum hb_ot_math_kern_t 2050 { 2051 /** 2052 * The top right corner of the glyph. 2053 */ 2054 TOP_RIGHT = 0, 2055 /** 2056 * The top left corner of the glyph. 2057 */ 2058 TOP_LEFT = 1, 2059 /** 2060 * The bottom right corner of the glyph. 2061 */ 2062 BOTTOM_RIGHT = 2, 2063 /** 2064 * The bottom left corner of the glyph. 2065 */ 2066 BOTTOM_LEFT = 3, 2067 } 2068 alias hb_ot_math_kern_t ot_math_kern_t; 2069 2070 /** 2071 * Known metadata tags from https://docs.microsoft.com/en-us/typography/opentype/spec/meta 2072 * 2073 * Since: 2.6.0 2074 */ 2075 public enum hb_ot_meta_tag_t 2076 { 2077 /** 2078 * Design languages. Text, using only 2079 * Basic Latin (ASCII) characters. Indicates languages and/or scripts 2080 * for the user audiences that the font was primarily designed for. 2081 */ 2082 DESIGN_LANGUAGES = 1684827751, 2083 /** 2084 * Supported languages. Text, using 2085 * only Basic Latin (ASCII) characters. Indicates languages and/or scripts 2086 * that the font is declared to be capable of supporting. 2087 */ 2088 SUPPORTED_LANGUAGES = 1936485991, 2089 } 2090 alias hb_ot_meta_tag_t ot_meta_tag_t; 2091 2092 /** 2093 * Metric tags corresponding to [MVAR Value 2094 * Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags) 2095 * 2096 * Since: 2.6.0 2097 */ 2098 public enum hb_ot_metrics_tag_t 2099 { 2100 /** 2101 * horizontal ascender. 2102 */ 2103 HORIZONTAL_ASCENDER = 1751216995, 2104 /** 2105 * horizontal descender. 2106 */ 2107 HORIZONTAL_DESCENDER = 1751413603, 2108 /** 2109 * horizontal line gap. 2110 */ 2111 HORIZONTAL_LINE_GAP = 1751934832, 2112 /** 2113 * horizontal clipping ascent. 2114 */ 2115 HORIZONTAL_CLIPPING_ASCENT = 1751346273, 2116 /** 2117 * horizontal clipping descent. 2118 */ 2119 HORIZONTAL_CLIPPING_DESCENT = 1751346276, 2120 /** 2121 * vertical ascender. 2122 */ 2123 VERTICAL_ASCENDER = 1986098019, 2124 /** 2125 * vertical descender. 2126 */ 2127 VERTICAL_DESCENDER = 1986294627, 2128 /** 2129 * vertical line gap. 2130 */ 2131 VERTICAL_LINE_GAP = 1986815856, 2132 /** 2133 * horizontal caret rise. 2134 */ 2135 HORIZONTAL_CARET_RISE = 1751347827, 2136 /** 2137 * horizontal caret run. 2138 */ 2139 HORIZONTAL_CARET_RUN = 1751347822, 2140 /** 2141 * horizontal caret offset. 2142 */ 2143 HORIZONTAL_CARET_OFFSET = 1751347046, 2144 /** 2145 * vertical caret rise. 2146 */ 2147 VERTICAL_CARET_RISE = 1986228851, 2148 /** 2149 * vertical caret run. 2150 */ 2151 VERTICAL_CARET_RUN = 1986228846, 2152 /** 2153 * vertical caret offset. 2154 */ 2155 VERTICAL_CARET_OFFSET = 1986228070, 2156 /** 2157 * x height. 2158 */ 2159 X_HEIGHT = 2020108148, 2160 /** 2161 * cap height. 2162 */ 2163 CAP_HEIGHT = 1668311156, 2164 /** 2165 * subscript em x size. 2166 */ 2167 SUBSCRIPT_EM_X_SIZE = 1935833203, 2168 /** 2169 * subscript em y size. 2170 */ 2171 SUBSCRIPT_EM_Y_SIZE = 1935833459, 2172 /** 2173 * subscript em x offset. 2174 */ 2175 SUBSCRIPT_EM_X_OFFSET = 1935833199, 2176 /** 2177 * subscript em y offset. 2178 */ 2179 SUBSCRIPT_EM_Y_OFFSET = 1935833455, 2180 /** 2181 * superscript em x size. 2182 */ 2183 SUPERSCRIPT_EM_X_SIZE = 1936750707, 2184 /** 2185 * superscript em y size. 2186 */ 2187 SUPERSCRIPT_EM_Y_SIZE = 1936750963, 2188 /** 2189 * superscript em x offset. 2190 */ 2191 SUPERSCRIPT_EM_X_OFFSET = 1936750703, 2192 /** 2193 * superscript em y offset. 2194 */ 2195 SUPERSCRIPT_EM_Y_OFFSET = 1936750959, 2196 /** 2197 * strikeout size. 2198 */ 2199 STRIKEOUT_SIZE = 1937011315, 2200 /** 2201 * strikeout offset. 2202 */ 2203 STRIKEOUT_OFFSET = 1937011311, 2204 /** 2205 * underline size. 2206 */ 2207 UNDERLINE_SIZE = 1970168947, 2208 /** 2209 * underline offset. 2210 */ 2211 UNDERLINE_OFFSET = 1970168943, 2212 } 2213 alias hb_ot_metrics_tag_t ot_metrics_tag_t; 2214 2215 /** 2216 * Flags for #hb_ot_var_axis_info_t. 2217 * 2218 * Since: 2.2.0 2219 */ 2220 public enum hb_ot_var_axis_flags_t 2221 { 2222 /** 2223 * The axis should not be exposed directly in user interfaces. 2224 */ 2225 HIDDEN = 1, 2226 } 2227 alias hb_ot_var_axis_flags_t ot_var_axis_flags_t; 2228 2229 /** 2230 * Data type for scripts. Each #hb_script_t's value is an #hb_tag_t corresponding 2231 * to the four-letter values defined by [ISO 15924](https://unicode.org/iso15924/). 2232 * 2233 * See also the Script (sc) property of the Unicode Character Database. 2234 */ 2235 public enum hb_script_t 2236 { 2237 /** 2238 * `Zyyy` 2239 */ 2240 COMMON = 1517910393, 2241 /** 2242 * `Zinh` 2243 */ 2244 INHERITED = 1516858984, 2245 /** 2246 * `Zzzz` 2247 */ 2248 UNKNOWN = 1517976186, 2249 /** 2250 * `Arab` 2251 */ 2252 ARABIC = 1098015074, 2253 /** 2254 * `Armn` 2255 */ 2256 ARMENIAN = 1098018158, 2257 /** 2258 * `Beng` 2259 */ 2260 BENGALI = 1113943655, 2261 /** 2262 * `Cyrl` 2263 */ 2264 CYRILLIC = 1132032620, 2265 /** 2266 * `Deva` 2267 */ 2268 DEVANAGARI = 1147500129, 2269 /** 2270 * `Geor` 2271 */ 2272 GEORGIAN = 1197830002, 2273 /** 2274 * `Grek` 2275 */ 2276 GREEK = 1198679403, 2277 /** 2278 * `Gujr` 2279 */ 2280 GUJARATI = 1198877298, 2281 /** 2282 * `Guru` 2283 */ 2284 GURMUKHI = 1198879349, 2285 /** 2286 * `Hang` 2287 */ 2288 HANGUL = 1214344807, 2289 /** 2290 * `Hani` 2291 */ 2292 HAN = 1214344809, 2293 /** 2294 * `Hebr` 2295 */ 2296 HEBREW = 1214603890, 2297 /** 2298 * `Hira` 2299 */ 2300 HIRAGANA = 1214870113, 2301 /** 2302 * `Knda` 2303 */ 2304 KANNADA = 1265525857, 2305 /** 2306 * `Kana` 2307 */ 2308 KATAKANA = 1264676449, 2309 /** 2310 * `Laoo` 2311 */ 2312 LAO = 1281453935, 2313 /** 2314 * `Latn` 2315 */ 2316 LATIN = 1281455214, 2317 /** 2318 * `Mlym` 2319 */ 2320 MALAYALAM = 1298954605, 2321 /** 2322 * `Orya` 2323 */ 2324 ORIYA = 1332902241, 2325 /** 2326 * `Taml` 2327 */ 2328 TAMIL = 1415671148, 2329 /** 2330 * `Telu` 2331 */ 2332 TELUGU = 1415933045, 2333 /** 2334 * `Thai` 2335 */ 2336 THAI = 1416126825, 2337 /** 2338 * `Tibt` 2339 */ 2340 TIBETAN = 1416192628, 2341 /** 2342 * `Bopo` 2343 */ 2344 BOPOMOFO = 1114599535, 2345 /** 2346 * `Brai` 2347 */ 2348 BRAILLE = 1114792297, 2349 /** 2350 * `Cans` 2351 */ 2352 CANADIAN_SYLLABICS = 1130458739, 2353 /** 2354 * `Cher` 2355 */ 2356 CHEROKEE = 1130915186, 2357 /** 2358 * `Ethi` 2359 */ 2360 ETHIOPIC = 1165256809, 2361 /** 2362 * `Khmr` 2363 */ 2364 KHMER = 1265134962, 2365 /** 2366 * `Mong` 2367 */ 2368 MONGOLIAN = 1299148391, 2369 /** 2370 * `Mymr` 2371 */ 2372 MYANMAR = 1299803506, 2373 /** 2374 * `Ogam` 2375 */ 2376 OGHAM = 1332175213, 2377 /** 2378 * `Runr` 2379 */ 2380 RUNIC = 1383427698, 2381 /** 2382 * `Sinh` 2383 */ 2384 SINHALA = 1399418472, 2385 /** 2386 * `Syrc` 2387 */ 2388 SYRIAC = 1400468067, 2389 /** 2390 * `Thaa` 2391 */ 2392 THAANA = 1416126817, 2393 /** 2394 * `Yiii` 2395 */ 2396 YI = 1500080489, 2397 /** 2398 * `Dsrt` 2399 */ 2400 DESERET = 1148416628, 2401 /** 2402 * `Goth` 2403 */ 2404 GOTHIC = 1198486632, 2405 /** 2406 * `Ital` 2407 */ 2408 OLD_ITALIC = 1232363884, 2409 /** 2410 * `Buhd` 2411 */ 2412 BUHID = 1114990692, 2413 /** 2414 * `Hano` 2415 */ 2416 HANUNOO = 1214344815, 2417 /** 2418 * `Tglg` 2419 */ 2420 TAGALOG = 1416064103, 2421 /** 2422 * `Tagb` 2423 */ 2424 TAGBANWA = 1415669602, 2425 /** 2426 * `Cprt` 2427 */ 2428 CYPRIOT = 1131442804, 2429 /** 2430 * `Limb` 2431 */ 2432 LIMBU = 1281977698, 2433 /** 2434 * `Linb` 2435 */ 2436 LINEAR_B = 1281977954, 2437 /** 2438 * `Osma` 2439 */ 2440 OSMANYA = 1332964705, 2441 /** 2442 * `Shaw` 2443 */ 2444 SHAVIAN = 1399349623, 2445 /** 2446 * `Tale` 2447 */ 2448 TAI_LE = 1415670885, 2449 /** 2450 * `Ugar` 2451 */ 2452 UGARITIC = 1432838514, 2453 /** 2454 * `Bugi` 2455 */ 2456 BUGINESE = 1114990441, 2457 /** 2458 * `Copt` 2459 */ 2460 COPTIC = 1131376756, 2461 /** 2462 * `Glag` 2463 */ 2464 GLAGOLITIC = 1198285159, 2465 /** 2466 * `Khar` 2467 */ 2468 KHAROSHTHI = 1265131890, 2469 /** 2470 * `Talu` 2471 */ 2472 NEW_TAI_LUE = 1415670901, 2473 /** 2474 * `Xpeo` 2475 */ 2476 OLD_PERSIAN = 1483761007, 2477 /** 2478 * `Sylo` 2479 */ 2480 SYLOTI_NAGRI = 1400466543, 2481 /** 2482 * `Tfng` 2483 */ 2484 TIFINAGH = 1415999079, 2485 /** 2486 * `Bali` 2487 */ 2488 BALINESE = 1113681001, 2489 /** 2490 * `Xsux` 2491 */ 2492 CUNEIFORM = 1483961720, 2493 /** 2494 * `Nkoo` 2495 */ 2496 NKO = 1315663727, 2497 /** 2498 * `Phag` 2499 */ 2500 PHAGS_PA = 1349017959, 2501 /** 2502 * `Phnx` 2503 */ 2504 PHOENICIAN = 1349021304, 2505 /** 2506 * `Cari` 2507 */ 2508 CARIAN = 1130459753, 2509 /** 2510 * `Cham` 2511 */ 2512 CHAM = 1130914157, 2513 /** 2514 * `Kali` 2515 */ 2516 KAYAH_LI = 1264675945, 2517 /** 2518 * `Lepc` 2519 */ 2520 LEPCHA = 1281716323, 2521 /** 2522 * `Lyci` 2523 */ 2524 LYCIAN = 1283023721, 2525 /** 2526 * `Lydi` 2527 */ 2528 LYDIAN = 1283023977, 2529 /** 2530 * `Olck` 2531 */ 2532 OL_CHIKI = 1332503403, 2533 /** 2534 * `Rjng` 2535 */ 2536 REJANG = 1382706791, 2537 /** 2538 * `Saur` 2539 */ 2540 SAURASHTRA = 1398895986, 2541 /** 2542 * `Sund` 2543 */ 2544 SUNDANESE = 1400204900, 2545 /** 2546 * `Vaii` 2547 */ 2548 VAI = 1449224553, 2549 /** 2550 * `Avst` 2551 */ 2552 AVESTAN = 1098281844, 2553 /** 2554 * `Bamu` 2555 */ 2556 BAMUM = 1113681269, 2557 /** 2558 * `Egyp` 2559 */ 2560 EGYPTIAN_HIEROGLYPHS = 1164409200, 2561 /** 2562 * `Armi` 2563 */ 2564 IMPERIAL_ARAMAIC = 1098018153, 2565 /** 2566 * `Phli` 2567 */ 2568 INSCRIPTIONAL_PAHLAVI = 1349020777, 2569 /** 2570 * `Prti` 2571 */ 2572 INSCRIPTIONAL_PARTHIAN = 1349678185, 2573 /** 2574 * `Java` 2575 */ 2576 JAVANESE = 1247901281, 2577 /** 2578 * `Kthi` 2579 */ 2580 KAITHI = 1265920105, 2581 /** 2582 * `Lisu` 2583 */ 2584 LISU = 1281979253, 2585 /** 2586 * `Mtei` 2587 */ 2588 MEETEI_MAYEK = 1299473769, 2589 /** 2590 * `Sarb` 2591 */ 2592 OLD_SOUTH_ARABIAN = 1398895202, 2593 /** 2594 * `Orkh` 2595 */ 2596 OLD_TURKIC = 1332898664, 2597 /** 2598 * `Samr` 2599 */ 2600 SAMARITAN = 1398893938, 2601 /** 2602 * `Lana` 2603 */ 2604 TAI_THAM = 1281453665, 2605 /** 2606 * `Tavt` 2607 */ 2608 TAI_VIET = 1415673460, 2609 /** 2610 * `Batk` 2611 */ 2612 BATAK = 1113683051, 2613 /** 2614 * `Brah` 2615 */ 2616 BRAHMI = 1114792296, 2617 /** 2618 * `Mand` 2619 */ 2620 MANDAIC = 1298230884, 2621 /** 2622 * `Cakm` 2623 */ 2624 CHAKMA = 1130457965, 2625 /** 2626 * `Merc` 2627 */ 2628 MEROITIC_CURSIVE = 1298494051, 2629 /** 2630 * `Mero` 2631 */ 2632 MEROITIC_HIEROGLYPHS = 1298494063, 2633 /** 2634 * `Plrd` 2635 */ 2636 MIAO = 1349284452, 2637 /** 2638 * `Shrd` 2639 */ 2640 SHARADA = 1399353956, 2641 /** 2642 * `Sora` 2643 */ 2644 SORA_SOMPENG = 1399812705, 2645 /** 2646 * `Takr` 2647 */ 2648 TAKRI = 1415670642, 2649 /** 2650 * `Bass`, Since: 0.9.30 2651 */ 2652 BASSA_VAH = 1113682803, 2653 /** 2654 * `Aghb`, Since: 0.9.30 2655 */ 2656 CAUCASIAN_ALBANIAN = 1097295970, 2657 /** 2658 * `Dupl`, Since: 0.9.30 2659 */ 2660 DUPLOYAN = 1148547180, 2661 /** 2662 * `Elba`, Since: 0.9.30 2663 */ 2664 ELBASAN = 1164730977, 2665 /** 2666 * `Gran`, Since: 0.9.30 2667 */ 2668 GRANTHA = 1198678382, 2669 /** 2670 * `Khoj`, Since: 0.9.30 2671 */ 2672 KHOJKI = 1265135466, 2673 /** 2674 * `Sind`, Since: 0.9.30 2675 */ 2676 KHUDAWADI = 1399418468, 2677 /** 2678 * `Lina`, Since: 0.9.30 2679 */ 2680 LINEAR_A = 1281977953, 2681 /** 2682 * `Mahj`, Since: 0.9.30 2683 */ 2684 MAHAJANI = 1298229354, 2685 /** 2686 * `Mani`, Since: 0.9.30 2687 */ 2688 MANICHAEAN = 1298230889, 2689 /** 2690 * `Mend`, Since: 0.9.30 2691 */ 2692 MENDE_KIKAKUI = 1298493028, 2693 /** 2694 * `Modi`, Since: 0.9.30 2695 */ 2696 MODI = 1299145833, 2697 /** 2698 * `Mroo`, Since: 0.9.30 2699 */ 2700 MRO = 1299345263, 2701 /** 2702 * `Nbat`, Since: 0.9.30 2703 */ 2704 NABATAEAN = 1315070324, 2705 /** 2706 * `Narb`, Since: 0.9.30 2707 */ 2708 OLD_NORTH_ARABIAN = 1315009122, 2709 /** 2710 * `Perm`, Since: 0.9.30 2711 */ 2712 OLD_PERMIC = 1348825709, 2713 /** 2714 * `Hmng`, Since: 0.9.30 2715 */ 2716 PAHAWH_HMONG = 1215131239, 2717 /** 2718 * `Palm`, Since: 0.9.30 2719 */ 2720 PALMYRENE = 1348562029, 2721 /** 2722 * `Pauc`, Since: 0.9.30 2723 */ 2724 PAU_CIN_HAU = 1348564323, 2725 /** 2726 * `Phlp`, Since: 0.9.30 2727 */ 2728 PSALTER_PAHLAVI = 1349020784, 2729 /** 2730 * `Sidd`, Since: 0.9.30 2731 */ 2732 SIDDHAM = 1399415908, 2733 /** 2734 * `Tirh`, Since: 0.9.30 2735 */ 2736 TIRHUTA = 1416196712, 2737 /** 2738 * `Wara`, Since: 0.9.30 2739 */ 2740 WARANG_CITI = 1466004065, 2741 /** 2742 * `Ahom`, Since: 0.9.30 2743 */ 2744 AHOM = 1097363309, 2745 /** 2746 * `Hluw`, Since: 0.9.30 2747 */ 2748 ANATOLIAN_HIEROGLYPHS = 1215067511, 2749 /** 2750 * `Hatr`, Since: 0.9.30 2751 */ 2752 HATRAN = 1214346354, 2753 /** 2754 * `Mult`, Since: 0.9.30 2755 */ 2756 MULTANI = 1299541108, 2757 /** 2758 * `Hung`, Since: 0.9.30 2759 */ 2760 OLD_HUNGARIAN = 1215655527, 2761 /** 2762 * `Sgnw`, Since: 0.9.30 2763 */ 2764 SIGNWRITING = 1399287415, 2765 /** 2766 * `Adlm`, Since: 1.3.0 2767 */ 2768 ADLAM = 1097100397, 2769 /** 2770 * `Bhks`, Since: 1.3.0 2771 */ 2772 BHAIKSUKI = 1114139507, 2773 /** 2774 * `Marc`, Since: 1.3.0 2775 */ 2776 MARCHEN = 1298231907, 2777 /** 2778 * `Osge`, Since: 1.3.0 2779 */ 2780 OSAGE = 1332963173, 2781 /** 2782 * `Tang`, Since: 1.3.0 2783 */ 2784 TANGUT = 1415671399, 2785 /** 2786 * `Newa`, Since: 1.3.0 2787 */ 2788 NEWA = 1315272545, 2789 /** 2790 * `Gonm`, Since: 1.6.0 2791 */ 2792 MASARAM_GONDI = 1198485101, 2793 /** 2794 * `Nshu`, Since: 1.6.0 2795 */ 2796 NUSHU = 1316186229, 2797 /** 2798 * `Soyo`, Since: 1.6.0 2799 */ 2800 SOYOMBO = 1399814511, 2801 /** 2802 * `Zanb`, Since: 1.6.0 2803 */ 2804 ZANABAZAR_SQUARE = 1516334690, 2805 /** 2806 * `Dogr`, Since: 1.8.0 2807 */ 2808 DOGRA = 1148151666, 2809 /** 2810 * `Gong`, Since: 1.8.0 2811 */ 2812 GUNJALA_GONDI = 1198485095, 2813 /** 2814 * `Rohg`, Since: 1.8.0 2815 */ 2816 HANIFI_ROHINGYA = 1383032935, 2817 /** 2818 * `Maka`, Since: 1.8.0 2819 */ 2820 MAKASAR = 1298230113, 2821 /** 2822 * `Medf`, Since: 1.8.0 2823 */ 2824 MEDEFAIDRIN = 1298490470, 2825 /** 2826 * `Sogo`, Since: 1.8.0 2827 */ 2828 OLD_SOGDIAN = 1399809903, 2829 /** 2830 * `Sogd`, Since: 1.8.0 2831 */ 2832 SOGDIAN = 1399809892, 2833 /** 2834 * `Elym`, Since: 2.4.0 2835 */ 2836 ELYMAIC = 1164736877, 2837 /** 2838 * `Nand`, Since: 2.4.0 2839 */ 2840 NANDINAGARI = 1315008100, 2841 /** 2842 * `Hmnp`, Since: 2.4.0 2843 */ 2844 NYIAKENG_PUACHUE_HMONG = 1215131248, 2845 /** 2846 * `Wcho`, Since: 2.4.0 2847 */ 2848 WANCHO = 1466132591, 2849 /** 2850 * `Chrs`, Since: 2.6.7 2851 */ 2852 CHORASMIAN = 1130918515, 2853 /** 2854 * `Diak`, Since: 2.6.7 2855 */ 2856 DIVES_AKURU = 1147756907, 2857 /** 2858 * `Kits`, Since: 2.6.7 2859 */ 2860 KHITAN_SMALL_SCRIPT = 1265202291, 2861 /** 2862 * `Yezi`, Since: 2.6.7 2863 */ 2864 YEZIDI = 1499822697, 2865 /** 2866 * No script set 2867 */ 2868 INVALID = 0, 2869 } 2870 alias hb_script_t script_t; 2871 2872 /** 2873 * Data type for the Canonical_Combining_Class (ccc) property 2874 * from the Unicode Character Database. 2875 * 2876 * <note>Note: newer versions of Unicode may add new values. 2877 * Client programs should be ready to handle any value in the 0..254 range 2878 * being returned from hb_unicode_combining_class().</note> 2879 */ 2880 public enum hb_unicode_combining_class_t 2881 { 2882 /** 2883 * Spacing and enclosing marks; also many vowel and consonant signs, even if nonspacing 2884 */ 2885 NOT_REORDERED = 0, 2886 /** 2887 * Marks which overlay a base letter or symbol 2888 */ 2889 OVERLAY = 1, 2890 /** 2891 * Diacritic nukta marks in Brahmi-derived scripts 2892 */ 2893 NUKTA = 7, 2894 /** 2895 * Hiragana/Katakana voicing marks 2896 */ 2897 KANA_VOICING = 8, 2898 /** 2899 * Viramas 2900 */ 2901 VIRAMA = 9, 2902 /** 2903 * [Hebrew] 2904 */ 2905 CCC10 = 10, 2906 /** 2907 * [Hebrew] 2908 */ 2909 CCC11 = 11, 2910 /** 2911 * [Hebrew] 2912 */ 2913 CCC12 = 12, 2914 /** 2915 * [Hebrew] 2916 */ 2917 CCC13 = 13, 2918 /** 2919 * [Hebrew] 2920 */ 2921 CCC14 = 14, 2922 /** 2923 * [Hebrew] 2924 */ 2925 CCC15 = 15, 2926 /** 2927 * [Hebrew] 2928 */ 2929 CCC16 = 16, 2930 /** 2931 * [Hebrew] 2932 */ 2933 CCC17 = 17, 2934 /** 2935 * [Hebrew] 2936 */ 2937 CCC18 = 18, 2938 /** 2939 * [Hebrew] 2940 */ 2941 CCC19 = 19, 2942 /** 2943 * [Hebrew] 2944 */ 2945 CCC20 = 20, 2946 /** 2947 * [Hebrew] 2948 */ 2949 CCC21 = 21, 2950 /** 2951 * [Hebrew] 2952 */ 2953 CCC22 = 22, 2954 /** 2955 * [Hebrew] 2956 */ 2957 CCC23 = 23, 2958 /** 2959 * [Hebrew] 2960 */ 2961 CCC24 = 24, 2962 /** 2963 * [Hebrew] 2964 */ 2965 CCC25 = 25, 2966 /** 2967 * [Hebrew] 2968 */ 2969 CCC26 = 26, 2970 /** 2971 * [Arabic] 2972 */ 2973 CCC27 = 27, 2974 /** 2975 * [Arabic] 2976 */ 2977 CCC28 = 28, 2978 /** 2979 * [Arabic] 2980 */ 2981 CCC29 = 29, 2982 /** 2983 * [Arabic] 2984 */ 2985 CCC30 = 30, 2986 /** 2987 * [Arabic] 2988 */ 2989 CCC31 = 31, 2990 /** 2991 * [Arabic] 2992 */ 2993 CCC32 = 32, 2994 /** 2995 * [Arabic] 2996 */ 2997 CCC33 = 33, 2998 /** 2999 * [Arabic] 3000 */ 3001 CCC34 = 34, 3002 /** 3003 * [Arabic] 3004 */ 3005 CCC35 = 35, 3006 /** 3007 * [Syriac] 3008 */ 3009 CCC36 = 36, 3010 /** 3011 * [Telugu] 3012 */ 3013 CCC84 = 84, 3014 /** 3015 * [Telugu] 3016 */ 3017 CCC91 = 91, 3018 /** 3019 * [Thai] 3020 */ 3021 CCC103 = 103, 3022 /** 3023 * [Thai] 3024 */ 3025 CCC107 = 107, 3026 /** 3027 * [Lao] 3028 */ 3029 CCC118 = 118, 3030 /** 3031 * [Lao] 3032 */ 3033 CCC122 = 122, 3034 /** 3035 * [Tibetan] 3036 */ 3037 CCC129 = 129, 3038 /** 3039 * [Tibetan] 3040 */ 3041 CCC130 = 130, 3042 /** 3043 * [Tibetan] 3044 */ 3045 CCC133 = 132, 3046 /** 3047 * Marks attached at the bottom left 3048 */ 3049 ATTACHED_BELOW_LEFT = 200, 3050 /** 3051 * Marks attached directly below 3052 */ 3053 ATTACHED_BELOW = 202, 3054 /** 3055 * Marks attached directly above 3056 */ 3057 ATTACHED_ABOVE = 214, 3058 /** 3059 * Marks attached at the top right 3060 */ 3061 ATTACHED_ABOVE_RIGHT = 216, 3062 /** 3063 * Distinct marks at the bottom left 3064 */ 3065 BELOW_LEFT = 218, 3066 /** 3067 * Distinct marks directly below 3068 */ 3069 BELOW = 220, 3070 /** 3071 * Distinct marks at the bottom right 3072 */ 3073 BELOW_RIGHT = 222, 3074 /** 3075 * Distinct marks to the left 3076 */ 3077 LEFT = 224, 3078 /** 3079 * Distinct marks to the right 3080 */ 3081 RIGHT = 226, 3082 /** 3083 * Distinct marks at the top left 3084 */ 3085 ABOVE_LEFT = 228, 3086 /** 3087 * Distinct marks directly above 3088 */ 3089 ABOVE = 230, 3090 /** 3091 * Distinct marks at the top right 3092 */ 3093 ABOVE_RIGHT = 232, 3094 /** 3095 * Distinct marks subtending two bases 3096 */ 3097 DOUBLE_BELOW = 233, 3098 /** 3099 * Distinct marks extending above two bases 3100 */ 3101 DOUBLE_ABOVE = 234, 3102 /** 3103 * Greek iota subscript only 3104 */ 3105 IOTA_SUBSCRIPT = 240, 3106 /** 3107 * Invalid combining class 3108 */ 3109 INVALID = 255, 3110 } 3111 alias hb_unicode_combining_class_t unicode_combining_class_t; 3112 3113 /** 3114 * Data type for the "General_Category" (gc) property from 3115 * the Unicode Character Database. 3116 */ 3117 public enum hb_unicode_general_category_t 3118 { 3119 /** 3120 * [Cc] 3121 */ 3122 CONTROL = 0, 3123 /** 3124 * [Cf] 3125 */ 3126 FORMAT = 1, 3127 /** 3128 * [Cn] 3129 */ 3130 UNASSIGNED = 2, 3131 /** 3132 * [Co] 3133 */ 3134 PRIVATE_USE = 3, 3135 /** 3136 * [Cs] 3137 */ 3138 SURROGATE = 4, 3139 /** 3140 * [Ll] 3141 */ 3142 LOWERCASE_LETTER = 5, 3143 /** 3144 * [Lm] 3145 */ 3146 MODIFIER_LETTER = 6, 3147 /** 3148 * [Lo] 3149 */ 3150 OTHER_LETTER = 7, 3151 /** 3152 * [Lt] 3153 */ 3154 TITLECASE_LETTER = 8, 3155 /** 3156 * [Lu] 3157 */ 3158 UPPERCASE_LETTER = 9, 3159 /** 3160 * [Mc] 3161 */ 3162 SPACING_MARK = 10, 3163 /** 3164 * [Me] 3165 */ 3166 ENCLOSING_MARK = 11, 3167 /** 3168 * [Mn] 3169 */ 3170 NON_SPACING_MARK = 12, 3171 /** 3172 * [Nd] 3173 */ 3174 DECIMAL_NUMBER = 13, 3175 /** 3176 * [Nl] 3177 */ 3178 LETTER_NUMBER = 14, 3179 /** 3180 * [No] 3181 */ 3182 OTHER_NUMBER = 15, 3183 /** 3184 * [Pc] 3185 */ 3186 CONNECT_PUNCTUATION = 16, 3187 /** 3188 * [Pd] 3189 */ 3190 DASH_PUNCTUATION = 17, 3191 /** 3192 * [Pe] 3193 */ 3194 CLOSE_PUNCTUATION = 18, 3195 /** 3196 * [Pf] 3197 */ 3198 FINAL_PUNCTUATION = 19, 3199 /** 3200 * [Pi] 3201 */ 3202 INITIAL_PUNCTUATION = 20, 3203 /** 3204 * [Po] 3205 */ 3206 OTHER_PUNCTUATION = 21, 3207 /** 3208 * [Ps] 3209 */ 3210 OPEN_PUNCTUATION = 22, 3211 /** 3212 * [Sc] 3213 */ 3214 CURRENCY_SYMBOL = 23, 3215 /** 3216 * [Sk] 3217 */ 3218 MODIFIER_SYMBOL = 24, 3219 /** 3220 * [Sm] 3221 */ 3222 MATH_SYMBOL = 25, 3223 /** 3224 * [So] 3225 */ 3226 OTHER_SYMBOL = 26, 3227 /** 3228 * [Zl] 3229 */ 3230 LINE_SEPARATOR = 27, 3231 /** 3232 * [Zp] 3233 */ 3234 PARAGRAPH_SEPARATOR = 28, 3235 /** 3236 * [Zs] 3237 */ 3238 SPACE_SEPARATOR = 29, 3239 } 3240 alias hb_unicode_general_category_t unicode_general_category_t; 3241 3242 /** 3243 * Structure representing a setting for an #hb_aat_layout_feature_type_t. 3244 */ 3245 struct hb_aat_layout_feature_selector_info_t 3246 { 3247 /** 3248 * The selector's name identifier 3249 */ 3250 hb_ot_name_id_t nameId; 3251 /** 3252 * The value to turn the selector on 3253 */ 3254 hb_aat_layout_feature_selector_t enable; 3255 /** 3256 * The value to turn the selector off 3257 */ 3258 hb_aat_layout_feature_selector_t disable; 3259 uint reserved; 3260 } 3261 3262 /** 3263 * Data type for blobs. A blob wraps a chunk of binary 3264 * data and facilitates its lifecycle management between 3265 * a client program and HarfBuzz. 3266 */ 3267 struct hb_blob_t; 3268 3269 /** 3270 * The main structure holding the input text and its properties before shaping, 3271 * and output glyphs and their information after shaping. 3272 */ 3273 struct hb_buffer_t; 3274 3275 /** 3276 * Data type for holding font faces. 3277 */ 3278 struct hb_face_t; 3279 3280 struct hb_feature_t 3281 { 3282 /** 3283 * The #hb_tag_t tag of the feature 3284 */ 3285 hb_tag_t tag; 3286 /** 3287 * The value of the feature. 0 disables the feature, non-zero (usually 3288 * 1) enables the feature. For features implemented as lookup type 3 (like 3289 * 'salt') the @value is a one based index into the alternates. 3290 */ 3291 uint value; 3292 /** 3293 * the cluster to start applying this feature setting (inclusive). 3294 */ 3295 uint start; 3296 /** 3297 * the cluster to end applying this feature setting (exclusive). 3298 */ 3299 uint end; 3300 } 3301 3302 /** 3303 * Font-wide extent values, measured in font units. 3304 * 3305 * Note that typically @ascender is positive and @descender 3306 * negative, in coordinate systems that grow up. 3307 */ 3308 struct hb_font_extents_t 3309 { 3310 /** 3311 * The height of typographic ascenders. 3312 */ 3313 hb_position_t ascender; 3314 /** 3315 * The depth of typographic descenders. 3316 */ 3317 hb_position_t descender; 3318 /** 3319 * The suggested line-spacing gap. 3320 */ 3321 hb_position_t lineGap; 3322 hb_position_t reserved9; 3323 hb_position_t reserved8; 3324 hb_position_t reserved7; 3325 hb_position_t reserved6; 3326 hb_position_t reserved5; 3327 hb_position_t reserved4; 3328 hb_position_t reserved3; 3329 hb_position_t reserved2; 3330 hb_position_t reserved1; 3331 } 3332 3333 /** 3334 * Data type containing a set of virtual methods used for 3335 * working on #hb_font_t font objects. 3336 * 3337 * HarfBuzz provides a lightweight default function for each of 3338 * the methods in #hb_font_funcs_t. Client programs can implement 3339 * their own replacements for the individual font functions, as 3340 * needed, and replace the default by calling the setter for a 3341 * method. 3342 */ 3343 struct hb_font_funcs_t; 3344 3345 /** 3346 * Data type for holding fonts. 3347 */ 3348 struct hb_font_t; 3349 3350 /** 3351 * Glyph extent values, measured in font units. 3352 * 3353 * Note that @height is negative, in coordinate systems that grow up. 3354 */ 3355 struct hb_glyph_extents_t 3356 { 3357 /** 3358 * Distance from the x-origin to the left extremum of the glyph. 3359 */ 3360 hb_position_t xBearing; 3361 /** 3362 * Distance from the top extremum of the glyph to the y-origin. 3363 */ 3364 hb_position_t yBearing; 3365 /** 3366 * Distance from the left extremum of the glyph to the right extremum. 3367 */ 3368 hb_position_t width; 3369 /** 3370 * Distance from the top extremum of the glyph to the bottom extremum. 3371 */ 3372 hb_position_t height; 3373 } 3374 3375 /** 3376 * The #hb_glyph_info_t is the structure that holds information about the 3377 * glyphs and their relation to input text. 3378 */ 3379 struct hb_glyph_info_t 3380 { 3381 /** 3382 * either a Unicode code point (before shaping) or a glyph index 3383 * (after shaping). 3384 */ 3385 hb_codepoint_t codepoint; 3386 hb_mask_t mask; 3387 /** 3388 * the index of the character in the original text that corresponds 3389 * to this #hb_glyph_info_t, or whatever the client passes to 3390 * hb_buffer_add(). More than one #hb_glyph_info_t can have the same 3391 * @cluster value, if they resulted from the same character (e.g. one 3392 * to many glyph substitution), and when more than one character gets 3393 * merged in the same glyph (e.g. many to one glyph substitution) the 3394 * #hb_glyph_info_t will have the smallest cluster value of them. 3395 * By default some characters are merged into the same cluster 3396 * (e.g. combining marks have the same cluster as their bases) 3397 * even if they are separate glyphs, hb_buffer_set_cluster_level() 3398 * allow selecting more fine-grained cluster handling. 3399 */ 3400 uint cluster; 3401 hb_var_int_t var1; 3402 hb_var_int_t var2; 3403 } 3404 3405 /** 3406 * The #hb_glyph_position_t is the structure that holds the positions of the 3407 * glyph in both horizontal and vertical directions. All positions in 3408 * #hb_glyph_position_t are relative to the current point. 3409 */ 3410 struct hb_glyph_position_t 3411 { 3412 /** 3413 * how much the line advances after drawing this glyph when setting 3414 * text in horizontal direction. 3415 */ 3416 hb_position_t xAdvance; 3417 /** 3418 * how much the line advances after drawing this glyph when setting 3419 * text in vertical direction. 3420 */ 3421 hb_position_t yAdvance; 3422 /** 3423 * how much the glyph moves on the X-axis before drawing it, this 3424 * should not affect how much the line advances. 3425 */ 3426 hb_position_t xOffset; 3427 /** 3428 * how much the glyph moves on the Y-axis before drawing it, this 3429 * should not affect how much the line advances. 3430 */ 3431 hb_position_t yOffset; 3432 hb_var_int_t var; 3433 } 3434 3435 /** 3436 * Data type for holding integer-to-integer hash maps. 3437 */ 3438 struct hb_map_t; 3439 3440 /** 3441 * Pairs of glyph and color index. 3442 * 3443 * Since: 2.1.0 3444 */ 3445 struct hb_ot_color_layer_t 3446 { 3447 /** 3448 * the glyph ID of the layer 3449 */ 3450 hb_codepoint_t glyph; 3451 /** 3452 * the palette color index of the layer 3453 */ 3454 uint colorIndex; 3455 } 3456 3457 /** 3458 * Data type to hold information for a "part" component of a math-variant glyph. 3459 * Large variants for stretchable math glyphs (such as parentheses) can be constructed 3460 * on the fly from parts. 3461 * 3462 * Since: 1.3.3 3463 */ 3464 struct hb_ot_math_glyph_part_t 3465 { 3466 /** 3467 * The glyph index of the variant part 3468 */ 3469 hb_codepoint_t glyph; 3470 /** 3471 * The length of the connector on the starting side of the variant part 3472 */ 3473 hb_position_t startConnectorLength; 3474 /** 3475 * The length of the connector on the ending side of the variant part 3476 */ 3477 hb_position_t endConnectorLength; 3478 /** 3479 * The total advance of the part 3480 */ 3481 hb_position_t fullAdvance; 3482 /** 3483 * #hb_ot_math_glyph_part_flags_t flags for the part 3484 */ 3485 hb_ot_math_glyph_part_flags_t flags; 3486 } 3487 3488 /** 3489 * Data type to hold math-variant information for a glyph. 3490 * 3491 * Since: 1.3.3 3492 */ 3493 struct hb_ot_math_glyph_variant_t 3494 { 3495 /** 3496 * The glyph index of the variant 3497 */ 3498 hb_codepoint_t glyph; 3499 /** 3500 * The advance width of the variant 3501 */ 3502 hb_position_t advance; 3503 } 3504 3505 /** 3506 * Structure representing a name ID in a particular language. 3507 * 3508 * Since: 2.1.0 3509 */ 3510 struct hb_ot_name_entry_t 3511 { 3512 /** 3513 * name ID 3514 */ 3515 hb_ot_name_id_t nameId; 3516 hb_var_int_t var; 3517 /** 3518 * language 3519 */ 3520 hb_language_t language; 3521 } 3522 3523 /** 3524 * Data type for holding variation-axis values. 3525 * 3526 * The minimum, default, and maximum values are in un-normalized, user scales. 3527 * 3528 * <note>Note: at present, the only flag defined for @flags is 3529 * #HB_OT_VAR_AXIS_FLAG_HIDDEN.</note> 3530 * 3531 * Since: 2.2.0 3532 */ 3533 struct hb_ot_var_axis_info_t 3534 { 3535 /** 3536 * Index of the axis in the variation-axis array 3537 */ 3538 uint axisIndex; 3539 /** 3540 * The #hb_tag_t tag identifying the design variation of the axis 3541 */ 3542 hb_tag_t tag; 3543 /** 3544 * The `name` table Name ID that provides display names for the axis 3545 */ 3546 hb_ot_name_id_t nameId; 3547 /** 3548 * The #hb_ot_var_axis_flags_t flags for the axis 3549 */ 3550 hb_ot_var_axis_flags_t flags; 3551 /** 3552 * The mininum value on the variation axis that the font covers 3553 */ 3554 float minValue; 3555 /** 3556 * The position on the variation axis corresponding to the font's defaults 3557 */ 3558 float defaultValue; 3559 /** 3560 * The maximum value on the variation axis that the font covers 3561 */ 3562 float maxValue; 3563 uint reserved; 3564 } 3565 3566 /** 3567 * Use #hb_ot_var_axis_info_t instead. 3568 * 3569 * Since: 1.4.2 3570 */ 3571 struct hb_ot_var_axis_t 3572 { 3573 /** 3574 * axis tag 3575 */ 3576 hb_tag_t tag; 3577 /** 3578 * axis name identifier 3579 */ 3580 hb_ot_name_id_t nameId; 3581 /** 3582 * minimum value of the axis 3583 */ 3584 float minValue; 3585 /** 3586 * default value of the axis 3587 */ 3588 float defaultValue; 3589 /** 3590 * maximum value of the axis 3591 */ 3592 float maxValue; 3593 } 3594 3595 /** 3596 * The structure that holds various text properties of an #hb_buffer_t. Can be 3597 * set and retrieved using hb_buffer_set_segment_properties() and 3598 * hb_buffer_get_segment_properties(), respectively. 3599 */ 3600 struct hb_segment_properties_t 3601 { 3602 /** 3603 * the #hb_direction_t of the buffer, see hb_buffer_set_direction(). 3604 */ 3605 hb_direction_t direction; 3606 /** 3607 * the #hb_script_t of the buffer, see hb_buffer_set_script(). 3608 */ 3609 hb_script_t script; 3610 /** 3611 * the #hb_language_t of the buffer, see hb_buffer_set_language(). 3612 */ 3613 hb_language_t language; 3614 void* reserved1; 3615 void* reserved2; 3616 } 3617 3618 /** 3619 * Data type for holding a set of integers. #hb_set_t's are 3620 * used to gather and contain glyph IDs, Unicode code 3621 * points, and various other collections of discrete 3622 * values. 3623 */ 3624 struct hb_set_t; 3625 3626 /** 3627 * Data type for holding a shaping plan. 3628 * 3629 * Shape plans contain information about how HarfBuzz will shape a 3630 * particular text segment, based on the segment's properties and the 3631 * capabilities in the font face in use. 3632 * 3633 * Shape plans can be queried about how shaping will perform, given a set 3634 * of specific input parameters (script, language, direction, features, 3635 * etc.). 3636 */ 3637 struct hb_shape_plan_t; 3638 3639 /** 3640 * Data type containing a set of virtual methods used for 3641 * accessing various Unicode character properties. 3642 * 3643 * HarfBuzz provides a default function for each of the 3644 * methods in #hb_unicode_funcs_t. Client programs can implement 3645 * their own replacements for the individual Unicode functions, as 3646 * needed, and replace the default by calling the setter for a 3647 * method. 3648 */ 3649 struct hb_unicode_funcs_t; 3650 3651 /** 3652 * Data structure for holding user-data keys. 3653 */ 3654 struct hb_user_data_key_t 3655 { 3656 char unused; 3657 } 3658 3659 struct hb_var_int_t 3660 { 3661 union 3662 { 3663 uint u32; 3664 int i32; 3665 ushort[2] u16; 3666 short[2] i16; 3667 ubyte[4] u8; 3668 byte[4] i8; 3669 } 3670 } 3671 3672 struct hb_variation_t 3673 { 3674 /** 3675 * The #hb_tag_t tag of the variation-axis name 3676 */ 3677 hb_tag_t tag; 3678 /** 3679 * The value of the variation axis 3680 */ 3681 float value; 3682 } 3683 3684 /** 3685 * A callback method for #hb_buffer_t. The method gets called with the 3686 * #hb_buffer_t it was set on, the #hb_font_t the buffer is shaped with and a 3687 * message describing what step of the shaping process will be performed. 3688 * Returning %false from this method will skip this shaping step and move to 3689 * the next one. 3690 * 3691 * Params: 3692 * buffer = An #hb_buffer_t to work upon 3693 * font = The #hb_font_t the @buffer is shaped with 3694 * message = %NULL-terminated message passed to the function 3695 * userData = User data pointer passed by the caller 3696 * 3697 * Returns: %true to perform the shaping step, %false to skip it. 3698 * 3699 * Since: 1.1.3 3700 */ 3701 public alias extern(C) hb_bool_t function(hb_buffer_t* buffer, hb_font_t* font, const(char)* message, void* userData) hb_buffer_message_func_t; 3702 3703 /** 3704 * A virtual method for destroy user-data callbacks. 3705 * 3706 * Params: 3707 * userData = the data to be destroyed 3708 */ 3709 public alias extern(C) void function(void* userData) hb_destroy_func_t; 3710 3711 /** 3712 * This method should retrieve the extents for a font. 3713 * 3714 * Params: 3715 * font = #hb_font_t to work upon 3716 * fontData = @font user data pointer 3717 * extents = The font extents retrieved 3718 * userData = User data pointer passed by the caller 3719 */ 3720 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_font_extents_t* extents, void* userData) hb_font_get_font_extents_func_t; 3721 3722 /** 3723 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3724 * 3725 * This method should retrieve the advance for a specified glyph. The 3726 * method must return an #hb_position_t. 3727 * 3728 * Params: 3729 * font = #hb_font_t to work upon 3730 * fontData = @font user data pointer 3731 * glyph = The glyph ID to query 3732 * userData = User data pointer passed by the caller 3733 * 3734 * Returns: The advance of @glyph within @font 3735 */ 3736 public alias extern(C) hb_position_t function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, void* userData) hb_font_get_glyph_advance_func_t; 3737 3738 /** 3739 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3740 * 3741 * This method should retrieve the advances for a sequence of glyphs. 3742 * 3743 * Params: 3744 * font = #hb_font_t to work upon 3745 * fontData = @font user data pointer 3746 * count = The number of glyph IDs in the sequence queried 3747 * firstGlyph = The first glyph ID to query 3748 * glyphStride = The stride between successive glyph IDs 3749 * firstAdvance = The first advance retrieved 3750 * advanceStride = The stride between successive advances 3751 * userData = User data pointer passed by the caller 3752 */ 3753 public alias extern(C) void function(hb_font_t* font, void* fontData, uint count, hb_codepoint_t* firstGlyph, uint glyphStride, hb_position_t* firstAdvance, uint advanceStride, void* userData) hb_font_get_glyph_advances_func_t; 3754 3755 /** 3756 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3757 * 3758 * This method should retrieve the (X,Y) coordinates (in font units) for a 3759 * specified contour point in a glyph. Each coordinate must be returned as 3760 * an #hb_position_t output parameter. 3761 * 3762 * Params: 3763 * font = #hb_font_t to work upon 3764 * fontData = @font user data pointer 3765 * glyph = The glyph ID to query 3766 * pointIndex = The contour-point index to query 3767 * x = The X value retrieved for the contour point 3768 * y = The Y value retrieved for the contour point 3769 * userData = User data pointer passed by the caller 3770 * 3771 * Returns: %true if data found, %false otherwise 3772 */ 3773 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, uint pointIndex, hb_position_t* x, hb_position_t* y, void* userData) hb_font_get_glyph_contour_point_func_t; 3774 3775 /** 3776 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3777 * 3778 * This method should retrieve the extents for a specified glyph. Extents must be 3779 * returned in an #hb_glyph_extents output parameter. 3780 * 3781 * Params: 3782 * font = #hb_font_t to work upon 3783 * fontData = @font user data pointer 3784 * glyph = The glyph ID to query 3785 * extents = The #hb_glyph_extents_t retrieved 3786 * userData = User data pointer passed by the caller 3787 * 3788 * Returns: %true if data found, %false otherwise 3789 */ 3790 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, hb_glyph_extents_t* extents, void* userData) hb_font_get_glyph_extents_func_t; 3791 3792 /** 3793 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3794 * 3795 * This method should retrieve the glyph ID that corresponds to a glyph-name 3796 * string. 3797 * 3798 * Params: 3799 * font = #hb_font_t to work upon 3800 * fontData = @font user data pointer 3801 * name = The name string to query 3802 * len = The length of the name queried 3803 * glyph = The glyph ID retrieved 3804 * userData = User data pointer passed by the caller 3805 * 3806 * Returns: %true if data found, %false otherwise 3807 */ 3808 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, char* name, int len, hb_codepoint_t* glyph, void* userData) hb_font_get_glyph_from_name_func_t; 3809 3810 /** 3811 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3812 * 3813 * This method should retrieve the glyph ID for a specified Unicode code point 3814 * font, with an optional variation selector. 3815 * 3816 * Params: 3817 * font = #hb_font_t to work upon 3818 * fontData = @font user data pointer 3819 * unicode = The Unicode code point to query 3820 * variationSelector = The variation-selector code point to query 3821 * glyph = The glyph ID retrieved 3822 * userData = User data pointer passed by the caller 3823 * 3824 * Returns: %true if data found, %false otherwise 3825 */ 3826 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t unicode, hb_codepoint_t variationSelector, hb_codepoint_t* glyph, void* userData) hb_font_get_glyph_func_t; 3827 3828 /** 3829 * This method should retrieve the kerning-adjustment value for a glyph-pair in 3830 * the specified font, for horizontal text segments. 3831 * 3832 * Params: 3833 * font = #hb_font_t to work upon 3834 * fontData = @font user data pointer 3835 * firstGlyph = The glyph ID of the first glyph in the glyph pair 3836 * secondGlyph = The glyph ID of the second glyph in the glyph pair 3837 * userData = User data pointer passed by the caller 3838 */ 3839 public alias extern(C) hb_position_t function(hb_font_t* font, void* fontData, hb_codepoint_t firstGlyph, hb_codepoint_t secondGlyph, void* userData) hb_font_get_glyph_kerning_func_t; 3840 3841 /** 3842 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3843 * 3844 * This method should retrieve the glyph name that corresponds to a 3845 * glyph ID. The name should be returned in a string output parameter. 3846 * 3847 * Params: 3848 * font = #hb_font_t to work upon 3849 * fontData = @font user data pointer 3850 * glyph = The glyph ID to query 3851 * name = Name string retrieved for the glyph ID 3852 * size = Length of the glyph-name string retrieved 3853 * userData = User data pointer passed by the caller 3854 * 3855 * Returns: %true if data found, %false otherwise 3856 */ 3857 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, char* name, uint size, void* userData) hb_font_get_glyph_name_func_t; 3858 3859 /** 3860 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3861 * 3862 * This method should retrieve the (X,Y) coordinates (in font units) of the 3863 * origin for a glyph. Each coordinate must be returned in an #hb_position_t 3864 * output parameter. 3865 * 3866 * Params: 3867 * font = #hb_font_t to work upon 3868 * fontData = @font user data pointer 3869 * glyph = The glyph ID to query 3870 * x = The X coordinate of the origin 3871 * y = The Y coordinate of the origin 3872 * userData = User data pointer passed by the caller 3873 * 3874 * Returns: %true if data found, %false otherwise 3875 */ 3876 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, hb_position_t* x, hb_position_t* y, void* userData) hb_font_get_glyph_origin_func_t; 3877 3878 /** 3879 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3880 * 3881 * This method should retrieve the nominal glyph ID for a specified Unicode code 3882 * point. Glyph IDs must be returned in a #hb_codepoint_t output parameter. 3883 * 3884 * Params: 3885 * font = #hb_font_t to work upon 3886 * fontData = @font user data pointer 3887 * unicode = The Unicode code point to query 3888 * glyph = The glyph ID retrieved 3889 * userData = User data pointer passed by the caller 3890 * 3891 * Returns: %true if data found, %false otherwise 3892 */ 3893 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t unicode, hb_codepoint_t* glyph, void* userData) hb_font_get_nominal_glyph_func_t; 3894 3895 /** 3896 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3897 * 3898 * This method should retrieve the nominal glyph IDs for a sequence of 3899 * Unicode code points. Glyph IDs must be returned in a #hb_codepoint_t 3900 * output parameter. 3901 * 3902 * Params: 3903 * font = #hb_font_t to work upon 3904 * fontData = @font user data pointer 3905 * count = number of code points to query 3906 * firstUnicode = The first Unicode code point to query 3907 * unicodeStride = The stride between successive code points 3908 * firstGlyph = The first glyph ID retrieved 3909 * glyphStride = The stride between successive glyph IDs 3910 * userData = User data pointer passed by the caller 3911 * 3912 * Returns: the number of code points processed 3913 */ 3914 public alias extern(C) uint function(hb_font_t* font, void* fontData, uint count, hb_codepoint_t* firstUnicode, uint unicodeStride, hb_codepoint_t* firstGlyph, uint glyphStride, void* userData) hb_font_get_nominal_glyphs_func_t; 3915 3916 /** 3917 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 3918 * 3919 * This method should retrieve the glyph ID for a specified Unicode code point 3920 * followed by a specified Variation Selector code point. Glyph IDs must be 3921 * returned in a #hb_codepoint_t output parameter. 3922 * 3923 * Params: 3924 * font = #hb_font_t to work upon 3925 * fontData = @font user data pointer 3926 * unicode = The Unicode code point to query 3927 * variationSelector = The variation-selector code point to query 3928 * glyph = The glyph ID retrieved 3929 * userData = User data pointer passed by the caller 3930 * 3931 * Returns: %true if data found, %false otherwise 3932 */ 3933 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t unicode, hb_codepoint_t variationSelector, hb_codepoint_t* glyph, void* userData) hb_font_get_variation_glyph_func_t; 3934 3935 /** 3936 * Callback function for hb_face_create_for_tables(). 3937 * 3938 * Params: 3939 * face = an #hb_face_t to reference table for 3940 * tag = the tag of the table to reference 3941 * userData = User data pointer passed by the caller 3942 * 3943 * Returns: A pointer to the @tag table within @face 3944 * 3945 * Since: 0.9.2 3946 */ 3947 public alias extern(C) hb_blob_t* function(hb_face_t* face, hb_tag_t tag, void* userData) hb_reference_table_func_t; 3948 3949 /** 3950 * A virtual method for the #hb_unicode_funcs_t structure. 3951 * 3952 * This method should retrieve the Canonical Combining Class (ccc) 3953 * property for a specified Unicode code point. 3954 * 3955 * Params: 3956 * ufuncs = A Unicode-functions structure 3957 * unicode = The code point to query 3958 * userData = User data pointer passed by the caller 3959 * 3960 * Returns: The #hb_unicode_combining_class_t of @unicode 3961 */ 3962 public alias extern(C) hb_unicode_combining_class_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* userData) hb_unicode_combining_class_func_t; 3963 3964 /** 3965 * A virtual method for the #hb_unicode_funcs_t structure. 3966 * 3967 * This method should compose a sequence of two input Unicode code 3968 * points by canonical equivalence, returning the composed code 3969 * point in a #hb_codepoint_t output parameter (if successful). 3970 * The method must return an #hb_bool_t indicating the success 3971 * of the composition. 3972 * 3973 * Params: 3974 * ufuncs = A Unicode-functions structure 3975 * a = The first code point to compose 3976 * b = The second code point to compose 3977 * ab = The composed code point 3978 * userData = user data pointer passed by the caller 3979 * 3980 * Returns: %true is @a,@b composed, %false otherwise 3981 */ 3982 public alias extern(C) hb_bool_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t* ab, void* userData) hb_unicode_compose_func_t; 3983 3984 /** 3985 * Fully decompose @u to its Unicode compatibility decomposition. The codepoints of the decomposition will be written to @decomposed. 3986 * The complete length of the decomposition will be returned. 3987 * 3988 * If @u has no compatibility decomposition, zero should be returned. 3989 * 3990 * The Unicode standard guarantees that a buffer of length #HB_UNICODE_MAX_DECOMPOSITION_LEN codepoints will always be sufficient for any 3991 * compatibility decomposition plus an terminating value of 0. Consequently, @decompose must be allocated by the caller to be at least this length. Implementations 3992 * of this function type must ensure that they do not write past the provided array. 3993 * 3994 * Params: 3995 * ufuncs = a Unicode function structure 3996 * u = codepoint to decompose 3997 * decomposed = address of codepoint array (of length #HB_UNICODE_MAX_DECOMPOSITION_LEN) to write decomposition into 3998 * userData = user data pointer as passed to hb_unicode_funcs_set_decompose_compatibility_func() 3999 * 4000 * Returns: number of codepoints in the full compatibility decomposition of @u, or 0 if no decomposition available. 4001 */ 4002 public alias extern(C) uint function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t u, hb_codepoint_t* decomposed, void* userData) hb_unicode_decompose_compatibility_func_t; 4003 4004 /** 4005 * A virtual method for the #hb_unicode_funcs_t structure. 4006 * 4007 * This method should decompose an input Unicode code point, 4008 * returning the two decomposed code points in #hb_codepoint_t 4009 * output parameters (if successful). The method must return an 4010 * #hb_bool_t indicating the success of the composition. 4011 * 4012 * Params: 4013 * ufuncs = A Unicode-functions structure 4014 * ab = The code point to decompose 4015 * a = The first decomposed code point 4016 * b = The second decomposed code point 4017 * userData = user data pointer passed by the caller 4018 * 4019 * Returns: %true if @ab decomposed, %false otherwise 4020 */ 4021 public alias extern(C) hb_bool_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t ab, hb_codepoint_t* a, hb_codepoint_t* b, void* userData) hb_unicode_decompose_func_t; 4022 4023 /** 4024 * A virtual method for the #hb_unicode_funcs_t structure. 4025 * 4026 * Params: 4027 * ufuncs = A Unicode-functions structure 4028 * unicode = The code point to query 4029 * userData = User data pointer passed by the caller 4030 */ 4031 public alias extern(C) uint function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* userData) hb_unicode_eastasian_width_func_t; 4032 4033 /** 4034 * A virtual method for the #hb_unicode_funcs_t structure. 4035 * 4036 * This method should retrieve the General Category property for 4037 * a specified Unicode code point. 4038 * 4039 * Params: 4040 * ufuncs = A Unicode-functions structure 4041 * unicode = The code point to query 4042 * userData = User data pointer passed by the caller 4043 * 4044 * Returns: The #hb_unicode_general_category_t of @unicode 4045 */ 4046 public alias extern(C) hb_unicode_general_category_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* userData) hb_unicode_general_category_func_t; 4047 4048 /** 4049 * A virtual method for the #hb_unicode_funcs_t structure. 4050 * 4051 * This method should retrieve the Bi-Directional Mirroring Glyph 4052 * code point for a specified Unicode code point. 4053 * 4054 * <note>Note: If a code point does not have a specified 4055 * Bi-Directional Mirroring Glyph defined, the method should 4056 * return the original code point.</note> 4057 * 4058 * Params: 4059 * ufuncs = A Unicode-functions structure 4060 * unicode = The code point to query 4061 * userData = User data pointer passed by the caller 4062 * 4063 * Returns: The #hb_codepoint_t of the Mirroring Glyph for @unicode 4064 */ 4065 public alias extern(C) hb_codepoint_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* userData) hb_unicode_mirroring_func_t; 4066 4067 /** 4068 * A virtual method for the #hb_unicode_funcs_t structure. 4069 * 4070 * This method should retrieve the Script property for a 4071 * specified Unicode code point. 4072 * 4073 * Params: 4074 * ufuncs = A Unicode-functions structure 4075 * unicode = The code point to query 4076 * userData = User data pointer passed by the caller 4077 * 4078 * Returns: The #hb_script_t of @unicode 4079 */ 4080 public alias extern(C) hb_script_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* userData) hb_unicode_script_func_t; 4081 4082 /** 4083 * Used when getting or setting AAT feature selectors. Indicates that 4084 * there is no selector index corresponding to the selector of interest. 4085 */ 4086 enum AAT_LAYOUT_NO_SELECTOR_INDEX = 65535; 4087 alias HB_AAT_LAYOUT_NO_SELECTOR_INDEX = AAT_LAYOUT_NO_SELECTOR_INDEX; 4088 4089 /** 4090 * The default code point for replacing invalid characters in a given encoding. 4091 * Set to U+FFFD REPLACEMENT CHARACTER. 4092 */ 4093 enum BUFFER_REPLACEMENT_CODEPOINT_DEFAULT = 65533; 4094 alias HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT = BUFFER_REPLACEMENT_CODEPOINT_DEFAULT; 4095 4096 /** 4097 * Special setting for #hb_feature_t.start to apply the feature from the start 4098 * of the buffer. 4099 */ 4100 enum FEATURE_GLOBAL_START = 0; 4101 alias HB_FEATURE_GLOBAL_START = FEATURE_GLOBAL_START; 4102 4103 /** 4104 * An unset #hb_language_t. 4105 */ 4106 enum LANGUAGE_INVALID = 0; 4107 alias HB_LANGUAGE_INVALID = LANGUAGE_INVALID; 4108 4109 /** 4110 * Unset #hb_map_t value. 4111 */ 4112 enum MAP_VALUE_INVALID = 4294967295; 4113 alias HB_MAP_VALUE_INVALID = MAP_VALUE_INVALID; 4114 4115 /** 4116 * Special value for language index indicating default or unsupported language. 4117 */ 4118 enum OT_LAYOUT_DEFAULT_LANGUAGE_INDEX = 65535; 4119 alias HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX = OT_LAYOUT_DEFAULT_LANGUAGE_INDEX; 4120 4121 /** 4122 * Special value for feature index indicating unsupported feature. 4123 */ 4124 enum OT_LAYOUT_NO_FEATURE_INDEX = 65535; 4125 alias HB_OT_LAYOUT_NO_FEATURE_INDEX = OT_LAYOUT_NO_FEATURE_INDEX; 4126 4127 /** 4128 * Special value for script index indicating unsupported script. 4129 */ 4130 enum OT_LAYOUT_NO_SCRIPT_INDEX = 65535; 4131 alias HB_OT_LAYOUT_NO_SCRIPT_INDEX = OT_LAYOUT_NO_SCRIPT_INDEX; 4132 4133 /** 4134 * Special value for variations index indicating unsupported variation. 4135 */ 4136 enum OT_LAYOUT_NO_VARIATIONS_INDEX = 4294967295; 4137 alias HB_OT_LAYOUT_NO_VARIATIONS_INDEX = OT_LAYOUT_NO_VARIATIONS_INDEX; 4138 4139 /** 4140 * Maximum number of OpenType tags that can correspond to a give #hb_language_t. 4141 */ 4142 enum OT_MAX_TAGS_PER_LANGUAGE = 3; 4143 alias HB_OT_MAX_TAGS_PER_LANGUAGE = OT_MAX_TAGS_PER_LANGUAGE; 4144 4145 /** 4146 * Maximum number of OpenType tags that can correspond to a give #hb_script_t. 4147 */ 4148 enum OT_MAX_TAGS_PER_SCRIPT = 3; 4149 alias HB_OT_MAX_TAGS_PER_SCRIPT = OT_MAX_TAGS_PER_SCRIPT; 4150 4151 /** 4152 * Do not use. 4153 */ 4154 enum OT_VAR_NO_AXIS_INDEX = 4294967295; 4155 alias HB_OT_VAR_NO_AXIS_INDEX = OT_VAR_NO_AXIS_INDEX; 4156 4157 /** 4158 * Unset #hb_set_t value. 4159 */ 4160 enum SET_VALUE_INVALID = 4294967295; 4161 alias HB_SET_VALUE_INVALID = SET_VALUE_INVALID; 4162 4163 /** 4164 * Maximum valid Unicode code point. 4165 */ 4166 enum UNICODE_MAX = 1114111; 4167 alias HB_UNICODE_MAX = UNICODE_MAX; 4168 4169 /** 4170 * See Unicode 6.1 for details on the maximum decomposition length. 4171 */ 4172 enum UNICODE_MAX_DECOMPOSITION_LEN = 19; 4173 alias HB_UNICODE_MAX_DECOMPOSITION_LEN = UNICODE_MAX_DECOMPOSITION_LEN; 4174 4175 enum VERSION_MAJOR = 2; 4176 alias HB_VERSION_MAJOR = VERSION_MAJOR; 4177 4178 enum VERSION_MICRO = 1; 4179 alias HB_VERSION_MICRO = VERSION_MICRO; 4180 4181 enum VERSION_MINOR = 8; 4182 alias HB_VERSION_MINOR = VERSION_MINOR; 4183 4184 enum VERSION_STRING = "2.8.1"; 4185 alias HB_VERSION_STRING = VERSION_STRING;