1Overview of changes leading to 2.3.0 2Thursday, December 20, 2018 3==================================== 4- Fix regression on big-endian architectures. Ouch! 5- Misc bug and build fixes. 6- Fix subsetting of simple GSUB/GDEF. 7- Merge CFF / CFF2 support contributed by Adobe. This mostly involves 8 the subsetter, but also get_glyph_extents on CFF fonts. 9 10New API in hb-aat.h: 11+hb_aat_layout_has_substitution() 12+hb_aat_layout_has_positioning() 13+hb_aat_layout_has_tracking() 14 15 16Overview of changes leading to 2.2.0 17Thursday, November 29, 2018 18==================================== 19- Misc shaping bug fixes. 20- Add font variations named-instance API. 21- Deprecate font variations axis enumeration API and add replacement. 22- AAT shaping improvements: 23 o Fixed 'kern' table Format 2 implementation. 24 o Implement 'feat' table API for feature detection. 25 o Blacklist 'GSUB' table of fonts from 'MUTF' foundry that also have 'morx'. 26 27New API: 28+hb_aat_layout_feature_type_t 29+hb_aat_layout_feature_selector_t 30+hb_aat_layout_get_feature_types() 31+hb_aat_layout_feature_type_get_name_id 32+hb_aat_layout_feature_selector_info_t 33+HB_AAT_LAYOUT_NO_SELECTOR_INDEX 34+hb_aat_layout_feature_type_get_selector_infos() 35+hb_ot_var_axis_flags_t 36+hb_ot_var_axis_info_t 37+hb_ot_var_get_axis_infos() 38+hb_ot_var_find_axis_info() 39+hb_ot_var_get_named_instance_count() 40+hb_ot_var_named_instance_get_subfamily_name_id() 41+hb_ot_var_named_instance_get_postscript_name_id() 42+hb_ot_var_named_instance_get_design_coords() 43 44Deprecated API: 45+HB_OT_VAR_NO_AXIS_INDEX 46+hb_ot_var_axis_t 47+hb_ot_var_get_axes() 48+hb_ot_var_find_axis() 49 50 51Overview of changes leading to 2.1.3 52Friday, November 16, 2018 53==================================== 54- Fix AAT 'mort' shaping, which was broken in 2.1.2 55 56 57Overview of changes leading to 2.1.2 58Friday, November 16, 2018 59==================================== 60- Various internal changes. 61- AAT shaping improvements: 62 o Implement kern table Format 1 state-machine-based kerning. 63 o Implement cross-stream kerning (cursive positioning, etc). 64 o Ignore emptyish GSUB tables (zero scripts) if morx present. 65 o Don't apply GPOS if morx is being applied. Matches Apple. 66 67 68-Overview of changes leading to 2.1.1 69Monday, November 5, 2018 70==================================== 71- AAT improvements: 72 o Implement 'mort' table. 73 o Implement 'kern' subtables Format 1 and Format 3. 74 75 76Overview of changes leading to 2.1.0 77Tuesday, October 30, 2018 78==================================== 79- AAT shaping improvements: 80 o Allow user controlling AAT features, for whole buffer only currently. 81 o Several 'morx' fixes. 82 o Implement tuple-kerns in 'kerx'; Fixes kerning with Apple default 83 San Francisco fonts. 84- Support for color fonts: 85 o COLR/CPAL API to fetch color layers. 86 o SVG table to fetch SVG documents. 87 o CBDT/sbix API to fetch PNG images. 88- New 'name' table API. 89- hb-ot-font now uses 'VORG' table to correctly position CFF glyphs 90 in vertical layout. 91- Various fuzzer-found bug fixes. 92 93Changed API: 94 95A type and a macro added in 2.0.0 were renamed: 96 97hb_name_id_t -> hb_ot_name_id_t 98HB_NAME_ID_INVALID -> HB_OT_NAME_ID_INVALID 99 100New API: 101 102+hb_color_t 103+HB_COLOR 104+hb_color_get_alpha() 105+hb_color_get_red() 106+hb_color_get_green() 107+hb_color_get_blue() 108+hb_ot_color_has_palettes() 109+hb_ot_color_palette_get_count() 110+hb_ot_color_palette_get_name_id() 111+hb_ot_color_palette_color_get_name_id() 112+hb_ot_color_palette_flags_t 113+hb_ot_color_palette_get_flags() 114+hb_ot_color_palette_get_colors() 115+hb_ot_color_has_layers() 116+hb_ot_color_layer_t 117+hb_ot_color_glyph_get_layers() 118+hb_ot_color_has_svg() 119+hb_ot_color_glyph_reference_svg() 120+hb_ot_color_has_png() 121+hb_ot_color_glyph_reference_png() 122 123+hb_ot_name_id_t 124+HB_OT_NAME_ID_INVALID 125+HB_OT_NAME_ID_COPYRIGHT 126+HB_OT_NAME_ID_FONT_FAMILY 127+HB_OT_NAME_ID_FONT_SUBFAMILY 128+HB_OT_NAME_ID_UNIQUE_ID 129+HB_OT_NAME_ID_FULL_NAME 130+HB_OT_NAME_ID_VERSION_STRING 131+HB_OT_NAME_ID_POSTSCRIPT_NAME 132+HB_OT_NAME_ID_TRADEMARK 133+HB_OT_NAME_ID_MANUFACTURER 134+HB_OT_NAME_ID_DESIGNER 135+HB_OT_NAME_ID_DESCRIPTION 136+HB_OT_NAME_ID_VENDOR_URL 137+HB_OT_NAME_ID_DESIGNER_URL 138+HB_OT_NAME_ID_LICENSE 139+HB_OT_NAME_ID_LICENSE_URL 140+HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY 141+HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY 142+HB_OT_NAME_ID_MAC_FULL_NAME 143+HB_OT_NAME_ID_SAMPLE_TEXT 144+HB_OT_NAME_ID_CID_FINDFONT_NAME 145+HB_OT_NAME_ID_WWS_FAMILY 146+HB_OT_NAME_ID_WWS_SUBFAMILY 147+HB_OT_NAME_ID_LIGHT_BACKGROUND 148+HB_OT_NAME_ID_DARK_BACKGROUND 149+HB_OT_NAME_ID_VARIATIONS_PS_PREFIX 150+hb_ot_name_entry_t 151+hb_ot_name_list_names() 152+hb_ot_name_get_utf8() 153+hb_ot_name_get_utf16() 154+hb_ot_name_get_utf32() 155 156 157Overview of changes leading to 2.0.2 158Saturday, October 20, 2018 159==================================== 160- Fix two minor memory access issues in AAT tables. 161 162 163Overview of changes leading to 2.0.1 164Friday, October 19, 2018 165==================================== 166- Fix hb-version.h reported release version that went wrong (1.8.0) 167 with previous release. 168- Fix extrapolation in 'trak' table. 169- Fix hb-font infinite-recursion issue with some font funcs and 170 subclassed fonts. 171- Implement variation-kerning format in kerx table, although without 172 variation. 173- Fix return value of hb_map_is_empty(). 174 175 176Overview of changes leading to 2.0.0 177Thursday, October 18, 2018 178==================================== 179- Added AAT shaping support (morx/kerx/trak). 180 Automatically used if GSUB/GPOS are not available respectively. 181 Set HB_OPTIONS=aat env var to have morx/kerx preferred over 182 GSUB/GPOS. 183- Apply TrueType kern table internally, instead of relying on 184 hb_font_t callbacks. 185- Khmer shaper significantly rewritten to better match Uniscribe. 186- Indic3 tags ('dev3', etc) are passed to USE shaper. 187- .dfont Mac font containers implemented. 188- Script- and language-mapping revamped to better use BCP 47. 189- Misc USE and Indic fixes. 190- Misc everything fixes. 191- Too many things to list. Biggest release since 0.9.1, with 192 over 500 commits in just over 5 weeks! Didn't intend it to 193 be a big release. Just happened to become. 194- hb-ft now locks underlying FT_Face during use. 195 196API changes: 197 198- Newly-created hb_font_t's now have our internal "hb-ot-font" 199 callbacks set on them, so they should work out of the box 200 without any callbacks set. If callbacks are set, everything 201 is back to what it was before, the fallback callbacks are 202 null. If you to get the internal implementation modified, 203 sub_font it. 204 205- New hb_font_funcs_set_nominal_glyphs_func() allows speeding 206 up character to glyph mapping. 207 208New API: 209+HB_FEATURE_GLOBAL_START 210+HB_FEATURE_GLOBAL_END 211+hb_buffer_set_invisible_glyph() 212+hb_buffer_get_invisible_glyph() 213+hb_font_funcs_set_nominal_glyphs_func() 214+hb_ot_layout_table_select_script() 215+hb_ot_layout_script_select_language() 216+hb_ot_layout_feature_get_name_ids() 217+hb_ot_layout_feature_get_characters() 218+hb_name_id_t 219+HB_NAME_ID_INVALID 220+HB_OT_MAX_TAGS_PER_SCRIPT 221+hb_ot_tags_from_script_and_language() 222+hb_ot_tags_to_script_and_language() 223 224Deprecated API: 225-hb_font_funcs_set_glyph_func() 226-hb_unicode_eastasian_width_func_t 227-hb_unicode_funcs_set_eastasian_width_func() 228-hb_unicode_eastasian_width() 229-hb_unicode_decompose_compatibility_func_t 230-HB_UNICODE_MAX_DECOMPOSITION_LEN 231-hb_unicode_funcs_set_decompose_compatibility_func() 232-hb_unicode_decompose_compatibility() 233-hb_font_funcs_set_glyph_h_kerning_func() 234-hb_font_funcs_set_glyph_v_kerning_func() 235-hb_font_get_glyph_h_kerning() 236-hb_font_get_glyph_v_kerning() 237-hb_font_get_glyph_kerning_for_direction() 238-hb_ot_layout_table_choose_script() 239-hb_ot_layout_script_find_language() 240-hb_ot_tags_from_script() 241-hb_ot_tag_from_language() 242 243 244Overview of changes leading to 1.9.0 245Monday, September 10, 2018 246==================================== 247- Added 'cmap' API to hb_face_t. 248- Face-builder API. 249- hb-ot-font re-creation should be much leaner now, as the 250 font tables it uses are cached on hb_face_t now. 251- Internal source header file name changes: 252 hb-*-private.hh is renamed to hb-*.hh. 253 254New API: 255+HB_UNICODE_MAX 256+hb_face_collect_unicodes() 257+hb_face_collect_variation_selectors() 258+hb_face_collect_variation_unicodes() 259+hb_face_builder_create() 260+hb_face_builder_add_table() 261 262 263Overview of changes leading to 1.8.8 264Tuesday, August 14, 2018 265==================================== 266- Fix hb-icu crash on architectures where compare_exchange_weak() can 267 fail falsely. This bug was introduced in 1.8.4. 268 https://bugs.chromium.org/p/chromium/issues/detail?id=873568 269- More internal refactoring of atomic operations and singletons. 270- API changes: 271 The following functions do NOT reference their return value before 272 returning: 273 * hb_unicode_funcs_get_default() 274 * hb_glib_get_unicode_funcs() 275 * hb_icu_get_unicode_funcs() 276 This is consistent with their naming ("get", instead of "reference") 277 as well as how they are used in the wild (ie. no one calls destroy() 278 on their return value.) 279 280 281Overview of changes leading to 1.8.7 282Wednesday, August 8, 2018 283==================================== 284- Fix assertion failure with GDEF-blacklisted fonts. 285 286 287Overview of changes leading to 1.8.6 288Tuesday, August 7, 2018 289==================================== 290- Internal code shuffling. 291- New API to speed up getting advance widths for implementations 292 that have heavy overhead in get_h_advance callback: 293+hb_font_funcs_set_glyph_h_advances_func 294+hb_font_funcs_set_glyph_v_advances_func 295+hb_font_get_glyph_advances_for_direction 296+hb_font_get_glyph_h_advances 297+hb_font_get_glyph_h_advances_func_t 298+hb_font_get_glyph_v_advances 299+hb_font_get_glyph_v_advances_func_t 300 301 302Overview of changes leading to 1.8.5 303Wednesday, August 1, 2018 304==================================== 305- Major Khmer shaper improvements to better match Microsoft. 306- Indic bug fixes. 307- Internal improvements to atomic operations. 308 309 310Overview of changes leading to 1.8.4 311Tuesday, July 17, 2018 312==================================== 313- Fix build on non-C++11. 314- Use C++-style GCC atomics and C++11 atomics. 315 316 317Overview of changes leading to 1.8.3 318Wednesday, July 11, 2018 319==================================== 320- A couple of Indic / USE bug fixes. 321- Disable vectorization, as it was causing unaligned access bus error on 322 certain 32bit architectures. 323 324 325Overview of changes leading to 1.8.2 326Tuesday, July 3, 2018 327==================================== 328- Fix infinite loop in Khmer shaper. 329- Improve hb_blob_create_from_file() for streams. 330 331 332Overview of changes leading to 1.8.1 333Tuesday, June 12, 2018 334==================================== 335- Fix hb-version.h file generation; last two releases went out with wrong ones. 336- Add correctness bug in hb_set_t operations, introduced in 1.7.7. 337- Remove HB_SUBSET_BUILTIN build option. Not necessary. 338 339 340Overview of changes leading to 1.8.0 341Tuesday, June 5, 2018 342==================================== 343- Update to Unicode 11.0.0. 344 345 346Overview of changes leading to 1.7.7 347Tuesday, June 5, 2018 348==================================== 349- Lots of internal changes, but not yet exposed externally. 350- All HarfBuzz objects are significantly smaller in size now. 351- Sinhala: Position repha on top of post-consonant, not base. 352 This better matches Windows 10 behavior, which was changed 353 from previous Windows versions. 354- New build options: 355 o New cpp macro HB_NO_ATEXIT 356 o New cpp macro HB_SUBSET_BUILTIN 357- Significant libharfbuzz-subset changes. API subject to change. 358- New API in libharfbuzz: 359 360+hb_blob_create_from_file() 361+hb_face_count() 362 363A hashmap implementation: 364+hb-map.h 365+HB_MAP_VALUE_INVALID 366+hb_map_t 367+hb_map_create() 368+hb_map_get_empty() 369+hb_map_reference() 370+hb_map_destroy() 371+hb_map_set_user_data() 372+hb_map_get_user_data() 373+hb_map_allocation_successful() 374+hb_map_clear() 375+hb_map_is_empty() 376+hb_map_get_population() 377+hb_map_set() 378+hb_map_get() 379+hb_map_del() 380+hb_map_has() 381 382 383Overview of changes leading to 1.7.6 384Wednesday, March 7, 2018 385==================================== 386 387- Fix to hb_set_t binary operations. Ouch. 388- New experimental harfbuzz-subset library. All of hb-subset.h 389 is experimental right now and API WILL change. 390 391- New API: 392hb_blob_copy_writable_or_fail() 393HB_OT_TAG_BASE 394hb_set_previous() 395hb_set_previous_range() 396 397 398Overview of changes leading to 1.7.5 399Tuesday, January 30, 2018 400==================================== 401 402- Separate Khmer shaper from Indic. 403- First stab at AAT morx. Not hooked up. 404- Misc bug fixes. 405 406 407Overview of changes leading to 1.7.4 408Wednesday, December 20, 2017 409==================================== 410 411- Fix collect_glyphs() regression caused by hb_set_t changes. 412 413 414Overview of changes leading to 1.7.3 415Monday, December 18, 2017 416==================================== 417 418- hb_set_t performance tuning and optimizations. 419- Speed up collect_glyphs() and reject garbage data. 420- In hb_coretext_font_create() set font point-size (ptem). 421- Misc fixes. 422 423 424Overview of changes leading to 1.7.2 425Monday, December 4, 2017 426==================================== 427 428- Optimize hb_set_add_range(). 429- Misc fixes. 430- New API: 431hb_coretext_font_create() 432 433 434Overview of changes leading to 1.7.1 435Tuesday, November 14, 2017 436==================================== 437 438- Fix atexit object destruction regression. 439- Fix minor integer-overflow. 440 441 442Overview of changes leading to 1.7.0 443Monday, November 13, 2017 444==================================== 445 446- Minor Indic fixes. 447- Implement kerning and glyph names in hb-ot-font. 448- Various DSO optimization re .data and .bss sizes. 449- Make C++11 optional; build fixes. 450- Mark all other backends "unsafe-to-break". 451- Graphite fix. 452 453 454Overview of changes leading to 1.6.3 455Thursday, October 26th, 2017 456==================================== 457 458- Fix hb_set_t some more. Should be solid now. 459- Implement get_glyph_name() for hb-ot-font. 460- Misc fixes. 461 462 463Overview of changes leading to 1.6.2 464Monday, October 23nd, 2017 465==================================== 466 467- Yesterday's release had a bad crasher; don't use it. That's what 468 happens when one works on Sunday... 469 https://github.com/harfbuzz/harfbuzz/issues/578 470- Build fixes for FreeBSD and Chrome Android. 471 472 473Overview of changes leading to 1.6.1 474Sunday, October 22nd, 2017 475==================================== 476 477- Don't skip over COMBINING GRAPHEME JOINER when ligating, etc. 478 To be refined: https://github.com/harfbuzz/harfbuzz/issues/554 479- Faster hb_set_t implementation. 480- Don't use deprecated ICU API. 481- Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0 482- Deprecated API: 483 hb_set_invert() 484 485 486Overview of changes leading to 1.6.0 487Friday, October the 13th, 2017 488==================================== 489 490- Update to Unicode 10. 491 492- Various Indic and Universal Shaping Engine fixes as a result of 493 HarfBuzz Hackfest with Jonathan Kew at Web Engines Hackfest at 494 the Igalia offices in A Coruña, Spain. Thanks Igalia for having 495 us! 496 497- Implement Unicode Arabic Mark Ordering Algorithm UTR#53. 498 499- Implement optical sizing / tracking in CoreText backend, using 500 new API hb_font_set_ptem(). 501 502- Allow notifying hb_font_t that underlying FT_Face changed sizing, 503 using new API hb_ft_font_changed(). 504 505- More Graphite backend RTL fixes. 506 507- Fix caching of variable font shaping plans. 508 509- hb-view / hb-shape now accept following new arguments: 510 511 o --unicodes: takes a list of hex numbers that represent Unicode 512 codepoints. 513 514New API: 515+hb_face_get_table_tags() 516+hb_font_set_ptem() 517+hb_font_get_ptem() 518+hb_ft_font_changed() 519 520 521Overview of changes leading to 1.5.1 522Tuesday, September 5, 2017 523==================================== 524 525- Fix "unsafe-to-break" in fallback shaping and other corner cases. 526 All our tests pass with --verify now, meaning unsafe-to-break API 527 works as expected. 528- Add --unicodes to hb-view / hb-shape. 529- [indic] Treat Consonant_With_Stacker as consonant. This will need 530 further tweaking. 531- hb_buffer_diff() tweaks. 532 533 534Overview of changes leading to 1.5.0 535Wednesday, August 23, 2017 536==================================== 537 538- Misc new API, for appending a buffer to another, and for comparing 539 contents of two buffers for types of differences. 540 541- New "unsafe-to-break" API. Can be used to speed up reshaping 542 in line-breaking situations. Essentially, after shaping, it returns 543 positions in the input string (some of the cluster boundaries) that 544 are "safe to break" in that if the text is segmented at that position 545 and two sides reshaped and concatenated, the shaping result is 546 exactly the same as shaping the text in one piece. 547 548 hb-view and hb-shape and hb-shape now take --verify, which verifies 549 the above property. 550 551 Some corner cases of the implementation are still not quite working. 552 Those will be fixed in subsequent releases. 553 554- New API: 555 556hb_buffer_append() 557 558hb_glyph_flags_t 559HB_GLYPH_FLAG_UNSAFE_TO_BREAK 560HB_GLYPH_FLAG_DEFINED 561hb_glyph_info_get_glyph_flags() 562 563HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS 564 565hb_buffer_diff_flags_t 566HB_BUFFER_DIFF_FLAG_EQUAL 567HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH 568HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH 569HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT 570HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT 571HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH 572HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH 573HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH 574HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH 575hb_buffer_diff 576 577 578Overview of changes leading to 1.4.8 579Tuesday, August 8, 2017 580==================================== 581 582- Major fix to avar table handling. 583- Rename hb-shape --show-message to --trace. 584- Build fixes. 585 586 587Overview of changes leading to 1.4.7 588Tuesday, July 18, 2017 589==================================== 590 591- Multiple Indic, Tibetan, and Cham fixes. 592- CoreText: Allow disabling kerning. 593- Adjust Arabic feature order again. 594- Misc build fixes. 595 596 597Overview of changes leading to 1.4.6 598Sunday, April 23, 2017 599==================================== 600 601- Graphite2: Fix RTL positioning issue. 602- Backlist GDEF of more versions of Padauk and Tahoma. 603- New, experimental, cmake alternative build system. 604 605 606Overview of changes leading to 1.4.5 607Friday, March 10, 2017 608==================================== 609 610- Revert "Fix Context lookup application when moving back after a glyph..." 611 This introduced memory access problems. To be fixed properly soon. 612 613 614Overview of changes leading to 1.4.4 615Sunday, March 5, 2017 616==================================== 617 618- Fix Context lookup application when moving back after a glyph deletion. 619- Fix buffer-overrun in Bengali. 620 621 622Overview of changes leading to 1.4.3 623Saturday, February 25, 2017 624==================================== 625 626- Route Adlam script to Arabic shaper. 627- Misc fixes. 628- New API: 629 hb_font_set_face() 630- Deprecate API: 631 hb_graphite2_font_get_gr_font() 632 633 634Overview of changes leading to 1.4.2 635Monday, January 23, 2017 636==================================== 637 638- Implement OpenType Font Variation tables avar/fvar/HVAR/VVAR. 639- hb-shape and hb-view now accept --variations. 640- New API: 641 642hb_variation_t 643hb_variation_from_string() 644hb_variation_to_string() 645 646hb_font_set_variations() 647hb_font_set_var_coords_design() 648hb_font_get_var_coords_normalized() 649 650hb-ot-var.h: 651hb_ot_var_axis_t 652hb_ot_var_has_data() 653hb_ot_var_get_axis_count() 654hb_ot_var_get_axes() 655hb_ot_var_find_axis() 656hb_ot_var_normalize_variations() 657hb_ot_var_normalize_coords() 658 659- MVAR to be implemented later. Access to named instances to be 660 implemented later as well. 661 662- Misc fixes. 663 664 665Overview of changes leading to 1.4.1 666Thursday, January 5, 2017 667==================================== 668 669- Always build and use UCDN for Unicode data by default. 670 Reduces dependence on version of Unicode data in glib, 671 specially in the Windows bundles we are shipping, which 672 have very old glib. 673 674 675Overview of changes leading to 1.4.0 676Thursday, January 5, 2017 677==================================== 678 679- Merged "OpenType GX" branch which adds core of support for 680 OpenType 1.8 Font Variations. To that extent, the relevant 681 new API is: 682 683New API: 684hb_font_set_var_coords_normalized() 685 686 with supporting API: 687 688New API: 689HB_OT_LAYOUT_NO_VARIATIONS_INDEX 690hb_ot_layout_table_find_feature_variations() 691hb_ot_layout_feature_with_variations_get_lookups() 692hb_shape_plan_create2() 693hb_shape_plan_create_cached2() 694 695 Currently variations in GSUB/GPOS/GDEF are fully supported, 696 and no other tables are supported. In particular, fvar/avar 697 are NOT supported, hence the hb_font_set_var_coords_normalized() 698 taking normalized coordinates. API to take design coordinates 699 will be added in the future. 700 701 HVAR/VVAR/MVAR support will also be added to hb-ot-font in the 702 future. 703 704- Fix regression in GDEF glyph class processing. 705- Add decompositions for Chakma, Limbu, and Balinese in USE shaper. 706- Misc fixes. 707 708 709Overview of changes leading to 1.3.4 710Monday, December 5, 2016 711==================================== 712 713- Fix vertical glyph origin in hb-ot-font. 714- Implement CBDT/CBLC color font glyph extents in hb-ot-font. 715 716 717Overview of changes leading to 1.3.3 718Wednesday, September 28, 2016 719==================================== 720 721- Implement parsing of OpenType MATH table. 722New API: 723HB_OT_TAG_MATH 724HB_OT_MATH_SCRIPT 725hb_ot_math_constant_t 726hb_ot_math_kern_t 727hb_ot_math_glyph_variant_t 728hb_ot_math_glyph_part_flags_t 729hb_ot_math_glyph_part_t 730hb_ot_math_has_data 731hb_ot_math_get_constant 732hb_ot_math_get_glyph_italics_correction 733hb_ot_math_get_glyph_top_accent_attachment 734hb_ot_math_get_glyph_kerning 735hb_ot_math_is_glyph_extended_shape 736hb_ot_math_get_glyph_variants 737hb_ot_math_get_min_connector_overlap 738hb_ot_math_get_glyph_assembly 739 740 741Overview of changes leading to 1.3.2 742Wednesday, September 27, 2016 743==================================== 744 745- Fix build of hb-coretext on older OS X versions. 746 747 748Overview of changes leading to 1.3.1 749Wednesday, September 7, 2016 750==================================== 751 752- Blacklist bad GDEF of more fonts (Padauk). 753- More CoreText backend crash fixes with OS X 10.9.5. 754- Misc fixes. 755 756 757Overview of changes leading to 1.3.0 758Thursday, July 21, 2016 759==================================== 760 761- Update to Unicode 9.0.0 762- Move Javanese from Indic shaper to Universal Shaping Engine. 763- Allow MultipleSubst to delete a glyph (matching Windows engine). 764- Update Universal Shaping Engine to latest draft from Microsoft. 765- DirectWrite backend improvements. Note: this backend is for testing ONLY. 766- CoreText backend improvements with unreachable fonts. 767- Implement symbol fonts (cmap 3.0.0) in hb-ft and hb-ot-font. 768- Blacklist bad GDEF of more fonts (Tahoma & others). 769- Misc fixes. 770 771 772Overview of changes leading to 1.2.7 773Monday, May 2, 2016 774==================================== 775 776- Blacklist another version of Times New Roman (Bold) Italic from Windows 7. 777- Fix Mongolian Free Variation Selectors shaping with certain fonts. 778- Fix Tibetan shorthand contractions shaping. 779- Improved list of language tag mappings. 780- Unbreak build on Windows CE. 781- Make 'glyf' table loading lazy in hb-ot-font. 782 783 784Overview of changes leading to 1.2.6 785Friday, April 8, 2016 786==================================== 787 788- Blacklist GDEF table of another set of Times New Roman (Bold) Italic. 789- DirectWrite backend improvements. Note: DirectWrite backend is 790 exclusively for our internal testing and should NOT be used in any 791 production system whatsoever. 792 793 794Overview of changes leading to 1.2.5 795Monday, April 4, 2016 796==================================== 797 798- Fix GDEF mark-filtering-set, which was broken in 1.2.3. 799 800 801Overview of changes leading to 1.2.4 802Thursday, March 17, 2016 803==================================== 804 805- Synthesize GDEF glyph class for any glyph that does not have one in GDEF. 806 I really hope we don't discover broken fonts that shape badly with this 807 change. 808- Misc build and other minor fixes. 809- API changes: 810 - Added HB_NDEBUG. It's fine for production systems to define this to 811 disable high-overhead debugging checks. However, I also reduced the 812 overhead of those checks, so it's a non-issue right now. You can 813 forget it. Just not defining anything at all is fine. 814 815 816Overview of changes leading to 1.2.3 817Thursday, February 25, 2016 818==================================== 819 820- Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic, 821 due to bug in glyph class of ASCII double-quote character. This should 822 address "regression" introduced in 1.2.0 when we switched mark zeroing 823 in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE. 824 This fourth release in a week should finally stablize things... 825 826- hb-ot-font's get_glyph() implementation saw some optimizations. Though, 827 might be really hard to measure in real-world situations. 828 829- Also, two rather small API changes: 830 831We now disable some time-consuming internal bookkeeping if built with NDEBUG 832defined. This is a first time that we use NDEBUG to disable debug code. If 833there exist production systems that do NOT want to enable NDEBUG, please let 834me know and I'll add HB_NDEBUG. 835 836Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph() 837 838New API: 839- hb_font_get_nominal_glyph_func_t 840- hb_font_get_variation_glyph_func_t 841- hb_font_funcs_set_nominal_glyph_func() 842- hb_font_funcs_set_variation_glyph_func() 843- hb_font_get_nominal_glyph() 844- hb_font_get_variation_glyph() 845 846Deprecated API: 847- hb_font_get_glyph_func_t 848- hb_font_funcs_set_glyph_func() 849 850Clients that implement their own font-funcs are encouraged to replace 851their get_glyph() implementation with a get_nominal_glyph() and 852get_variation_glyph() pair. The variation version can assume that 853variation_selector argument is not zero. Old (deprecated) functions 854will continue working indefinitely using internal gymnastics; it is 855just more efficient to use the new functions. 856 857 858Overview of changes leading to 1.2.2 859Wednesday, February 24, 2016 860==================================== 861 862- Fix regression with mark positioning with fonts that have 863 non-zero mark advances. This was introduced in 1.2.0 while 864 trying to make mark and cursive attachments to work together. 865 I have partially reverted that, so this version is much more 866 like what we had before. All clients who updated to 1.2.0 867 should update to this version. 868 869 870Overview of changes leading to 1.2.1 871Tuesday, February 23, 2016 872==================================== 873 874- CoreText: Fix bug with wrong scale if font scale was changed later. 875 https://github.com/libass/libass/issues/212 876- CoreText: Drastically speed up font initialization. 877- CoreText: Fix tiny leak. 878- Group ZWJ/ZWNJ with previous syllable under cluster-level=0. 879 https://github.com/harfbuzz/harfbuzz/issues/217 880- Add test/shaping/README.md about how to add tests to the suite. 881 882 883Overview of changes leading to 1.2.0 884Friday, February 19, 2016 885==================================== 886 887- Fix various issues (hangs mostly) in case of memory allocation failure. 888- Change mark zeroing types of most shapers from BY_UNICODE_LATE to 889 BY_GDEF_LATE. This seems to be what Uniscribe does. 890- Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY. That's 891 what Windows does. 892- Allow GPOS cursive connection on marks, and fix the interaction with 893 mark attachment. This work resulted in some changes to how mark 894 attachments work. See: 895 https://github.com/harfbuzz/harfbuzz/issues/211 896 https://github.com/harfbuzz/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2 897- Graphite2 shaper: improved negative advance handling (eg. Nastaliq). 898- Add nmake-based build system for Windows. 899- Minor speedup. 900- Misc. improvements. 901 902 903Overview of changes leading to 1.1.3 904Monday, January 11, 2016 905==================================== 906 907- Ported Indic shaper to Unicode 8.0 data. 908- Universal Shaping Engine fixes. 909- Speed up CoreText shaper when font fallback happens in CoreText. 910- Documentation improvements, thanks to Khaled Hosny. 911- Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi. 912- Misc bug fixes. 913- New API: 914 915 * Font extents: 916 hb_font_extents_t 917 hb_font_get_font_extents_func_t 918 hb_font_get_font_h_extents_func_t 919 hb_font_get_font_v_extents_func_t 920 hb_font_funcs_set_font_h_extents_func 921 hb_font_funcs_set_font_v_extents_func 922 hb_font_get_h_extents 923 hb_font_get_v_extents 924 hb_font_get_extents_for_direction 925 926 * Buffer message (aka debug): 927 hb_buffer_message_func_t 928 hb_buffer_set_message_func() 929 Actual message protocol to be fleshed out later. 930 931 932Overview of changes leading to 1.1.2 933Wednesday, November 26, 2015 934==================================== 935 936- Fix badly-broken fallback shaper that affected terminology. 937 https://github.com/harfbuzz/harfbuzz/issues/187 938- Fix y_scaling in Graphite shaper. 939- API changes: 940 * An unset glyph_h_origin() function in font-funcs now (sensibly) 941 implies horizontal origin at 0,0. Ie, the nil callback returns 942 true instead of false. As such, implementations that have a 943 glyph_h_origin() that simply returns true, can remove that function 944 with HarfBuzz >= 1.1.2. This results in a tiny speedup. 945 946 947Overview of changes leading to 1.1.1 948Wednesday, November 24, 2015 949==================================== 950 951- Build fixes, specially for hb-coretext. 952 953 954Overview of changes leading to 1.1.0 955Wednesday, November 18, 2015 956==================================== 957 958- Implement 'stch' stretch feature for Syriac Abbreviation Mark. 959 https://github.com/harfbuzz/harfbuzz/issues/141 960- Disable use of decompose_compatibility() callback. 961- Implement "shaping" of various Unicode space characters, even 962 if the font does not support them. 963 https://github.com/harfbuzz/harfbuzz/issues/153 964- If font does not support U+2011 NO-BREAK HYPHEN, fallback to 965 U+2010 HYPHEN. 966- Changes resulting from libFuzzer continuous fuzzing: 967 * Reject font tables that need more than 8 edits, 968 * Bound buffer growth during shaping to 32x, 969 * Fix assertions and other issues at OOM / buffer max-growth. 970- Misc fixes and optimizations. 971- API changes: 972 * All fonts created with hb_font_create() now inherit from 973 (ie. have parent) hb_font_get_empty(). 974 975 976Overview of changes leading to 1.0.6 977Thursday, October 15, 2015 978==================================== 979 980- Reduce max nesting level in OT lookups from 8 to 6. 981 Should not affect any real font as far as I know. 982- Fix memory access issue in ot-font. 983- Revert default load-flags of fonts created using hb_ft_font_create() 984 back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in 985 last release (1.0.5), but caused major issues, so revert. 986 https://github.com/harfbuzz/harfbuzz/issues/143 987 988 989Overview of changes leading to 1.0.5 990Tuesday, October 13, 2015 991==================================== 992 993- Fix multiple memory access bugs discovered using libFuzzer. 994 https://github.com/harfbuzz/harfbuzz/issues/139 995 Everyone should upgrade to this version as soon as possible. 996 We now have continuous fuzzing set up, to avoid issues like 997 these creeping in again. 998- Misc fixes. 999 1000- New API: 1001 * hb_font_set_parent(). 1002 * hb_ft_font_[sg]et_load_flags() 1003 The default flags for fonts created using hb_ft_font_create() 1004 has changed to default to FT_LOAD_DEFAULT now. Previously it 1005 was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING. 1006 1007- API changes: 1008 * Fonts now default to units-per-EM as their scale, instead of 0. 1009 * hb_font_create_sub_font() does NOT make parent font immutable 1010 anymore. hb_font_make_immutable() does. 1011 1012 1013Overview of changes leading to 1.0.4 1014Wednesday, September 30, 2015 1015==================================== 1016 1017- Fix minor out-of-bounds read error. 1018 1019 1020Overview of changes leading to 1.0.3 1021Tuesday, September 1, 2015 1022==================================== 1023 1024- Start of user documentation, from Simon Cozens! 1025- Implement glyph_extents() for TrueType fonts in hb-ot-font. 1026- Improve GPOS cursive attachments with conflicting lookups. 1027- More fixes for cluster-level = 1. 1028- Uniscribe positioning fix. 1029 1030 1031Overview of changes leading to 1.0.2 1032Wednesday, August 19, 2015 1033==================================== 1034 1035- Fix shaping with cluster-level > 0. 1036- Fix Uniscribe backend font-size scaling. 1037- Declare dependencies in harfbuzz.pc. 1038 FreeType is not declared though, to avoid bugs in pkg-config 1039 0.26 with recursive dependencies. 1040- Slightly improved debug infrastructure. More to come later. 1041- Misc build fixes. 1042 1043 1044Overview of changes leading to 1.0.1 1045Monday, July 27, 2015 1046==================================== 1047 1048- Fix out-of-bounds access in USE shaper. 1049 1050 1051Overview of changes leading to 1.0.0 1052Sunday, July 26, 2015 1053==================================== 1054 1055- Implement Universal Shaping Engine: 1056 https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm 1057 http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/ 1058- Bump version to 1.0.0. The soname was NOT bumped. 1059 1060 1061Overview of changes leading to 0.9.42 1062Thursday, July 26, 2015 1063===================================== 1064 1065- New API to allow for retrieving finer-grained cluster 1066 mappings if the client desires to handle them. Default 1067 behavior is unchanged. 1068- Fix cluster merging when removing default-ignorables. 1069- Update to Unicode 8.0 1070- hb-graphite2 fixes. 1071- Misc fixes. 1072- Removed HB_NO_MERGE_CLUSTERS hack. 1073- New API: 1074 hb_buffer_cluster_level_t enum 1075 hb_buffer_get_cluster_level() 1076 hb_buffer_set_cluster_level() 1077 hb-shape / hb-view --cluster-level 1078 1079 1080Overview of changes leading to 0.9.41 1081Thursday, June 18, 2015 1082===================================== 1083 1084- Fix hb-coretext with trailing whitespace in right-to-left. 1085- New API: hb_buffer_reverse_range(). 1086- Allow implementing atomic ops in config.h. 1087- Fix hb_language_t in language bindings. 1088- Misc fixes. 1089 1090 1091Overview of changes leading to 0.9.40 1092Friday, March 20, 2015 1093===================================== 1094 1095- Another hb-coretext crasher fix. Ouch! 1096- Happy Norouz! 1097 1098 1099Overview of changes leading to 0.9.39 1100Wednesday, March 4, 2015 1101===================================== 1102 1103- Critical hb-coretext fixes. 1104- Optimizations and refactoring; no functional change 1105 expected. 1106- Misc build fixes. 1107 1108 1109Overview of changes leading to 0.9.38 1110Friday, January 23, 2015 1111===================================== 1112 1113- Fix minor out-of-bounds access in Indic shaper. 1114- Change New Tai Lue shaping engine from South-East Asian to default, 1115 reflecting change in Unicode encoding model. 1116- Add hb-shape --font-size. Can take up to two numbers for separate 1117 x / y size. 1118- Fix CoreText and FreeType scale issues with negative scales. 1119- Reject blobs larger than 2GB. This might break some icu-le-hb clients 1120 that need security fixes. See: 1121 http://www.icu-project.org/trac/ticket/11450 1122- Avoid accessing font tables during face destruction, in casce rogue 1123 clients released face data already. 1124- Fix up gobject-introspection a bit. Python bindings kinda working. 1125 See README.python. 1126- Misc fixes. 1127- API additions: 1128 hb_ft_face_create_referenced() 1129 hb_ft_font_create_referenced() 1130 1131 1132Overview of changes leading to 0.9.37 1133Wednesday, December 17, 2014 1134===================================== 1135 1136- Fix out-of-bounds access in Context lookup format 3. 1137- Indic: Allow ZWJ/ZWNJ before syllable modifiers. 1138 1139 1140Overview of changes leading to 0.9.36 1141Thursday, November 20, 2014 1142===================================== 1143 1144- First time that three months went by without a release since 1145 0.9.2 was released on August 10, 2012! 1146- Fix performance bug in hb_ot_collect_glyphs(): 1147 https://bugzilla.mozilla.org/show_bug.cgi?id=1090869 1148- Add basic vertical-text support to hb-ot-font. 1149- Misc build fixes. 1150 1151 1152Overview of changes leading to 0.9.35 1153Saturday, August 13, 2014 1154===================================== 1155 1156- Fix major shape-plan caching bug when more than one shaper were 1157 provided to hb_shape_full() (as exercised by XeTeX). 1158 http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html 1159- Fix Arabic fallback shaping regression. This was broken in 0.9.32. 1160- Major hb-coretext fixes. That backend is complete now, including 1161 respecing buffer direction and language, down to vertical writing. 1162- Build fixes for Windows CE. Should build fine now. 1163- Misc fixes: 1164 Use atexit() only if it's safe to call from shared library 1165 https://bugs.freedesktop.org/show_bug.cgi?id=82246 1166 Mandaic had errors in its Unicode Joining_Type 1167 https://bugs.freedesktop.org/show_bug.cgi?id=82306 1168- API changes: 1169 1170 * hb_buffer_clear_contents() does not reset buffer flags now. 1171 1172 After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't 1173 need to set flags for different pieces of text. The flags now 1174 are something the client sets up once, depending on how it 1175 actually uses the buffer. As such, don't clear it in 1176 clear_contents(). 1177 1178 I don't expect any changes to be needed to any existing client. 1179 1180 1181Overview of changes leading to 0.9.34 1182Saturday, August 2, 2014 1183===================================== 1184 1185- hb_feature_from_string() now accepts CSS font-feature-settings format. 1186- As a result, hb-shape / hb-view --features also accept CSS-style strings. 1187 Eg, "'liga' off" is accepted now. 1188- Add old-spec Myanmar shaper: 1189 https://bugs.freedesktop.org/show_bug.cgi?id=81775 1190- Don't apply 'calt' in Hangul shaper. 1191- Fix mark advance zeroing for Hebrew shaper: 1192 https://bugs.freedesktop.org/show_bug.cgi?id=76767 1193- Implement Windows-1256 custom Arabic shaping. Only built on Windows, 1194 and requires help from get_glyph(). Used by Firefox. 1195 https://bugzilla.mozilla.org/show_bug.cgi?id=1045139 1196- Disable 'liga' in vertical text. 1197- Build fixes. 1198- API changes: 1199 1200 * Make HB_BUFFER_FLAG_BOT/EOT easier to use. 1201 1202 Previously, we expected users to provide BOT/EOT flags when the 1203 text *segment* was at paragraph boundaries. This meant that for 1204 clients that provide full paragraph to HarfBuzz (eg. Pango), they 1205 had code like this: 1206 1207 hb_buffer_set_flags (hb_buffer, 1208 (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) | 1209 (item_offset + item_length == paragraph_length ? 1210 HB_BUFFER_FLAG_EOT : 0)); 1211 1212 hb_buffer_add_utf8 (hb_buffer, 1213 paragraph_text, paragraph_length, 1214 item_offset, item_length); 1215 1216 After this change such clients can simply say: 1217 1218 hb_buffer_set_flags (hb_buffer, 1219 HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT); 1220 1221 hb_buffer_add_utf8 (hb_buffer, 1222 paragraph_text, paragraph_length, 1223 item_offset, item_length); 1224 1225 Ie, HarfBuzz itself checks whether the segment is at the beginning/end 1226 of the paragraph. Clients that only pass item-at-a-time to HarfBuzz 1227 continue not setting any flags whatsoever. 1228 1229 Another way to put it is: if there's pre-context text in the buffer, 1230 HarfBuzz ignores the BOT flag. If there's post-context, it ignores 1231 EOT flag. 1232 1233 1234Overview of changes leading to 0.9.33 1235Tuesday, July 22, 2014 1236===================================== 1237 1238- Turn off ARabic 'cswh' feature that was accidentally turned on. 1239- Add HB_TAG_MAX_SIGNED. 1240- Make hb_face_make_immutable() really make face immutable! 1241- Windows build fixes. 1242 1243 1244Overview of changes leading to 0.9.32 1245Thursday, July 17, 2014 1246===================================== 1247 1248- Apply Arabic shaping features in spec order exactly. 1249- Another fix for Mongolian free variation selectors. 1250- For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt' 1251 together. 1252- Minor adjustment to U+FFFD logic. 1253- Fix hb-coretext build. 1254 1255 1256Overview of changes leading to 0.9.31 1257Wednesday, July 16, 2014 1258===================================== 1259 1260- Only accept valid UTF-8/16/32; we missed many cases before. 1261- Better shaping of invalid UTF-8/16/32. Falls back to 1262 U+FFFD REPLACEMENT CHARACTER now. 1263- With all changes in this release, the buffer will contain fully 1264 valid Unicode after hb_buffer_add_utf8/16/32 no matter how 1265 broken the input is. This can be overridden though. See below. 1266- Fix Mongolian Variation Selectors for fonts without GDEF. 1267- Fix minor invalid buffer access. 1268- Accept zh-Hant and zh-Hans language tags. hb_ot_tag_to_language() 1269 now uses these instead of private tags. 1270- Build fixes. 1271- New API: 1272 * hb_buffer_add_codepoints(). This does what hb_buffer_add_utf32() 1273 used to do, ie. no validity check on the input at all. add_utf32 1274 now replaces invalid Unicode codepoints with the replacement 1275 character (see below). 1276 * hb_buffer_set_replacement_codepoint() 1277 * hb_buffer_get_replacement_codepoint() 1278 Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when 1279 we detected broken input, we replaced that with (hb_codepoint_t)-1. 1280 This has changed to use U+FFFD now, but can be changed using these 1281 new API. 1282 1283 1284Overview of changes leading to 0.9.30 1285Wednesday, July 9, 2014 1286===================================== 1287 1288- Update to Unicode 7.0.0: 1289 * New scripts Manichaean and Psalter Pahlavi are shaped using 1290 Arabic shaper. 1291 * All the other new scripts to through the generic shaper for 1292 now. 1293- Minor Indic improvements. 1294- Fix graphite2 backend cluster mapping [crasher!] 1295- API changes: 1296 * New HB_SCRIPT_* values for Unicode 7.0 scripts. 1297 * New function hb_ot_layout_language_get_required_feature(). 1298- Build fixes. 1299 1300 1301Overview of changes leading to 0.9.29 1302Thursday, May 29, 2014 1303===================================== 1304 1305- Implement cmap in hb-ot-font.h. No variation-selectors yet. 1306- Myanmar: Allow MedialYa+Asat. 1307- Various Indic fixes: 1308 * Support most characters in Extended Devanagary and Vedic 1309 Unicode blocks. 1310 * Allow digits and a some punctuation as consonant placeholders. 1311- Build fixes. 1312 1313 1314Overview of changes leading to 0.9.28 1315Monday, April 28, 2014 1316===================================== 1317 1318- Unbreak old-spec Indic shaping. (bug 76705) 1319- Fix shaping of U+17DD and U+0FC6. 1320- Add HB_NO_MERGE_CLUSTERS build option. NOT to be enabled by default 1321 for shipping libraries. It's an option for further experimentation 1322 right now. When we are sure how to do it properly, we will add 1323 public run-time API for the functionality. 1324- Build fixes. 1325 1326 1327Overview of changes leading to 0.9.27 1328Tuesday, March 18, 2014 1329===================================== 1330 1331- Don't use "register" storage class specifier 1332- Wrap definition of free_langs() with HAVE_ATEXIT 1333- Add coretext_aat shaper and hb_coretext_face_create() constructor 1334- If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks 1335- Add Myanmar test case from OpenType Myanmar spec 1336- Only do fallback Hebrew composition if no GPOS 'mark' available 1337- Allow bootstrapping without gtk-doc 1338- Use AM_MISSING_PROG for ragel and git 1339- Typo in ucdn's Makefile.am 1340- Improve MemoryBarrier() implementation 1341 1342 1343Overview of changes leading to 0.9.26 1344Thursday, January 30, 2014 1345===================================== 1346 1347- Misc fixes. 1348- Fix application of 'rtlm' feature. 1349- Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH. 1350- New header: hb-ot-shape.h 1351- Uniscribe: fix scratch-buffer accounting. 1352- Reorder Tai Tham SAKOT to after tone-marks. 1353- Add Hangul shaper. 1354- New files: 1355 hb-ot-shape-complex-hangul.cc 1356 hb-ot-shape-complex-hebrew.cc 1357 hb-ot-shape-complex-tibetan.cc 1358- Disable 'cswh' feature in Arabic shaper. 1359- Coretext: better handle surrogate pairs. 1360- Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE. 1361 1362 1363Overview of changes leading to 0.9.25 1364Wednesday, December 4, 2013 1365===================================== 1366 1367- Myanmar shaper improvements. 1368- Avoid font fallback in CoreText backend. 1369- Additional OpenType language tag mappiongs. 1370- More aggressive shape-plan caching. 1371- Build with / require automake 1.13. 1372- Build with libtool 2.4.2.418 alpha to support ppc64le. 1373 1374 1375Overview of changes leading to 0.9.24 1376Tuesday, November 13, 2013 1377===================================== 1378 1379- Misc compiler warning fixes with clang. 1380- No functional changes. 1381 1382 1383Overview of changes leading to 0.9.23 1384Monday, October 28, 2013 1385===================================== 1386 1387- "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013. 1388- Fix (Chain)Context recursion with non-monotone lookup positions. 1389- Misc Indic bug fixes. 1390- New Javanese / Buginese shaping, similar to Windows 8.1. 1391 1392 1393Overview of changes leading to 0.9.22 1394Thursday, October 3, 2013 1395===================================== 1396 1397- Fix use-after-end-of-scope in hb_language_from_string(). 1398- Fix hiding of default_ignorables if font doesn't have space glyph. 1399- Protect against out-of-range lookup indices. 1400 1401- API Changes: 1402 1403 * Added hb_ot_layout_table_get_lookup_count() 1404 1405 1406Overview of changes leading to 0.9.21 1407Monday, September 16, 2013 1408===================================== 1409 1410- Rename gobject-introspection library name from harfbuzz to HarfBuzz. 1411- Remove (long disabled) hb-old and hb-icu-le test shapers. 1412- Misc gtk-doc and gobject-introspection annotations. 1413- Misc fixes. 1414- API changes: 1415 1416 * Add HB_SET_VALUE_INVALID 1417 1418Overview of changes leading to 0.9.20 1419Thursday, August 29, 2013 1420===================================== 1421 1422General: 1423- Misc substitute_closure() fixes. 1424- Build fixes. 1425 1426Documentation: 1427- gtk-doc boilerplate integrated. Docs are built now, but 1428 contain no contents. By next release hopefully we have 1429 some content in. Enable using --enable-gtk-doc. 1430 1431GObject and Introspection: 1432- Added harfbuzz-gobject library (hb-gobject.h) that has type 1433 bindings for all HarfBuzz objects and enums. Enable using 1434 --with-gobject. 1435- Added gobject-introspection boilerplate. Nothing useful 1436 right now. Work in progress. Gets enabled automatically if 1437 --with-gobject is used. Override with --disable-introspection. 1438 1439OpenType shaper: 1440- Apply 'mark' in Myanmar shaper. 1441- Don't apply 'dlig' by default. 1442 1443Uniscribe shaper: 1444- Support user features. 1445- Fix loading of fonts that are also installed on the system. 1446- Fix shaping of Arabic Presentation Forms. 1447- Fix build with wide chars. 1448 1449CoreText shaper: 1450- Support user features. 1451 1452Source changes: 1453- hb_face_t code moved to hb-face.h / hb-face.cc. 1454- Added hb-deprecated.h. 1455 1456API changes: 1457- Added HB_DISABLE_DEPRECATED. 1458- Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by 1459 HB_SCRIPT_CANADIAN_SYLLABICS. 1460- Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by 1461 HB_BUFFER_FLAG_DEFAULT. 1462- Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by 1463 HB_BUFFER_SERIALIZE_FLAG_DEFAULT. 1464 1465 1466Overview of changes leading to 0.9.19 1467Tuesday, July 16, 2013 1468===================================== 1469 1470- Build fixes. 1471- Better handling of multiple variation selectors in a row. 1472- Pass on variation selector to GSUB if not consumed by cmap. 1473- Fix undefined memory access. 1474- Add Javanese config to Indic shaper. 1475- Misc bug fixes. 1476 1477Overview of changes leading to 0.9.18 1478Tuesday, May 28, 2013 1479===================================== 1480 1481New build system: 1482 1483- All unneeded code is all disabled by default, 1484 1485- Uniscribe and CoreText shapers can be enabled with their --with options, 1486 1487- icu_le and old shapers cannot be enabled for now, 1488 1489- glib, freetype, and cairo will be detected automatically. 1490 They can be force on/off'ed with their --with options, 1491 1492- icu and graphite2 are default off, can be enabled with their --with 1493 options, 1494 1495Moreover, ICU support is now build into a separate library: 1496libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it. 1497Distros can enable ICU now without every application on earth 1498getting linked to via libharfbuzz.so. 1499 1500For distros I recommend that they make sure they are building --with-glib 1501--with-freetype --with-cairo, --with-icu, and optionally --with-graphite2; 1502And package harfbuzz and harfbuzz-icu separately. 1503 1504 1505Overview of changes leading to 0.9.17 1506Monday, May 20, 2013 1507===================================== 1508 1509- Build fixes. 1510- Fix bug in hb_set_get_min(). 1511- Fix regression with Arabic mark positioning / width-zeroing. 1512 1513Overview of changes leading to 0.9.16 1514Friday, April 19, 2013 1515===================================== 1516 1517- Major speedup in OpenType lookup processing. With the Amiri 1518 Arabic font, this release is over 3x faster than previous 1519 release. All scripts / languages should see this speedup. 1520 1521- New --num-iterations option for hb-shape / hb-view; useful for 1522 profiling. 1523 1524Overview of changes leading to 0.9.15 1525Friday, April 05, 2013 1526===================================== 1527 1528- Build fixes. 1529- Fix crasher in graphite2 shaper. 1530- Fix Arabic mark width zeroing regression. 1531- Don't compose Hangul jamo into Unicode syllables. 1532 1533 1534Overview of changes leading to 0.9.14 1535Thursday, March 21, 2013 1536===================================== 1537 1538- Build fixes. 1539- Fix time-consuming sanitize with malicious fonts. 1540- Implement hb_buffer_deserialize_glyphs() for both json and text. 1541- Do not ignore Hangul filler characters. 1542- Indic fixes: 1543 * Fix Malayalam pre-base reordering interaction with post-forms. 1544 * Further adjust ZWJ handling. Should fix known regressions from 1545 0.9.13. 1546 1547 1548Overview of changes leading to 0.9.13 1549Thursday, February 25, 2013 1550===================================== 1551 1552- Build fixes. 1553- Ngapi HarfBuzz Hackfest in London (February 2013): 1554 * Fixed all known Indic bugs, 1555 * New Win8-style Myanmar shaper, 1556 * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue, 1557 * Smartly ignore Default_Ignorable characters (joiners, etc) wheb 1558 matching GSUB/GPOS lookups, 1559 * Fix 'Phags-Pa U+A872 shaping, 1560 * Fix partial disabling of default-on features, 1561 * Allow disabling of TrueType kerning. 1562- Fix possible crasher with broken fonts with overlapping tables. 1563- Removed generated files from git again. So, one needs ragel to 1564 bootstrap from the git tree. 1565 1566API changes: 1567- hb_shape() and related APIs now abort if buffer direction is 1568 HB_DIRECTION_INVALID. Previously, hb_shape() was calling 1569 hb_buffer_guess_segment_properties() on the buffer before 1570 shaping. The heuristics in that function are fragile. If the 1571 user really wants the old behvaior, they can call that function 1572 right before calling hb_shape() to get the old behavior. 1573- hb_blob_create_sub_blob() always creates sub-blob with 1574 HB_MEMORY_MODE_READONLY. See comments for the reason. 1575 1576 1577Overview of changes leading to 0.9.12 1578Thursday, January 18, 2013 1579===================================== 1580 1581- Build fixes for Sun compiler. 1582- Minor bug fix. 1583 1584Overview of changes leading to 0.9.11 1585Thursday, January 10, 2013 1586===================================== 1587 1588- Build fixes. 1589- Fix GPOS mark attachment with null Anchor offsets. 1590- [Indic] Fix old-spec reordering of viramas if sequence ends in one. 1591- Fix multi-threaded shaper data creation crash. 1592- Add atomic ops for Solaris. 1593 1594API changes: 1595- Rename hb_buffer_clear() to hb_buffer_clear_contents(). 1596 1597 1598Overview of changes leading to 0.9.10 1599Thursday, January 3, 2013 1600===================================== 1601 1602- [Indic] Fixed rendering of Malayalam dot-reph 1603- Updated OT language tags. 1604- Updated graphite2 backend. 1605- Improved hb_ot_layout_get_size_params() logic. 1606- Improve hb-shape/hb-view help output. 1607- Fixed hb-set.h implementation to not crash. 1608- Fixed various issues with hb_ot_layout_collect_lookups(). 1609- Various build fixes. 1610 1611New API: 1612 1613hb_graphite2_face_get_gr_face() 1614hb_graphite2_font_get_gr_font() 1615hb_coretext_face_get_cg_font() 1616 1617Modified API: 1618 1619hb_ot_layout_get_size_params() 1620 1621 1622Overview of changes leading to 0.9.9 1623Wednesday, December 5, 2012 1624==================================== 1625 1626- Fix build on Windows. 1627- Minor improvements. 1628 1629 1630Overview of changes leading to 0.9.8 1631Tuesday, December 4, 2012 1632==================================== 1633 1634 1635- Actually implement hb_shape_plan_get_shaper (). 1636- Make UCDB data tables const. 1637- Lots of internal refactoring in OTLayout tables. 1638- Flesh out hb_ot_layout_lookup_collect_glyphs(). 1639 1640New API: 1641 1642hb_ot_layout_collect_lookups() 1643hb_ot_layout_get_size_params() 1644 1645 1646Overview of changes leading to 0.9.7 1647Sunday, November 21, 2012 1648==================================== 1649 1650 1651HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes. 1652 1653- Fix Arabic contextual joining using pre-context text. 1654- Fix Sinhala "split matra" mess. 1655- Fix Khmer shaping with broken fonts. 1656- Implement Thai "PUA" shaping for old fonts. 1657- Do NOT route Kharoshthi script through the Indic shaper. 1658- Disable fallback positioning for Indic and Thai shapers. 1659- Misc fixes. 1660 1661 1662hb-shape / hb-view changes: 1663 1664- Add --text-before and --text-after 1665- Add --bot / --eot / --preserve-default-ignorables 1666- hb-shape --output-format=json 1667 1668 1669New API: 1670 1671hb_buffer_clear() 1672 1673hb_buffer_flags_t 1674 1675HB_BUFFER_FLAGS_DEFAULT 1676HB_BUFFER_FLAG_BOT 1677HB_BUFFER_FLAG_EOT 1678HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES 1679 1680hb_buffer_set_flags() 1681hb_buffer_get_flags() 1682 1683HB_BUFFER_SERIALIZE_FLAGS 1684hb_buffer_serialize_glyphs() 1685hb_buffer_deserialize_glyphs() 1686hb_buffer_serialize_list_formats() 1687 1688hb_set_add_range() 1689hb_set_del_range() 1690hb_set_get_population() 1691hb_set_next_range() 1692 1693hb_face_[sg]et_glyph_count() 1694 1695hb_segment_properties_t 1696HB_SEGMENT_PROPERTIES_DEFAULT 1697hb_segment_properties_equal() 1698hb_segment_properties_hash() 1699 1700hb_buffer_set_segment_properties() 1701hb_buffer_get_segment_properties() 1702 1703hb_ot_layout_glyph_class_t 1704hb_ot_layout_get_glyph_class() 1705hb_ot_layout_get_glyphs_in_class() 1706 1707hb_shape_plan_t 1708hb_shape_plan_create() 1709hb_shape_plan_create_cached() 1710hb_shape_plan_get_empty() 1711hb_shape_plan_reference() 1712hb_shape_plan_destroy() 1713hb_shape_plan_set_user_data() 1714hb_shape_plan_get_user_data() 1715hb_shape_plan_execute() 1716hb_shape_plan_get_shaper() 1717 1718hb_ot_shape_plan_collect_lookups() 1719 1720 1721API changes: 1722 1723- Remove "mask" parameter from hb_buffer_add(). 1724- Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup(). 1725- hb-set.h API const correction. 1726- Renamed hb_set_min/max() to hb_set_get_min/max(). 1727- Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups(). 1728- Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties(). 1729 1730 1731 1732Overview of changes leading to 0.9.6 1733Sunday, November 13, 2012 1734==================================== 1735 1736- Don't clear pre-context text if no new context is provided. 1737- Fix ReverseChainingSubstLookup, which was totally borked. 1738- Adjust output format of hb-shape a bit. 1739- Include config.h.in in-tree. Makes it easier for alternate build systems. 1740- Fix hb_buffer_set_length(buffer, 0) invalid memory allocation. 1741- Use ICU LayoutEngine's C API instead of C++. Avoids much headache. 1742- Drop glyphs for all of Unicode Default_Ignorable characters. 1743- Misc build fixes. 1744 1745Arabic shaper: 1746- Enable 'dlig' and 'mset' features in Arabic shaper. 1747- Implement 'Phags-pa shaping, improve Mongolian. 1748 1749Indic shaper: 1750- Decompose Sinhala split matras the way old HarfBuzz / Pango did. 1751- Initial support for Consonant Medials. 1752- Start adding new-style Myanmar shaping. 1753- Make reph and 'pref' logic introspect the font. 1754- Route Meetei-Mayek through the Indic shaper. 1755- Don't apply 'liga' in Indic shaper. 1756- Improve Malayalam pre-base reordering Ra interaction with Chillus. 1757 1758 1759 1760Overview of changes leading to 0.9.5 1761Sunday, October 14, 2012 1762==================================== 1763 1764- Synthetic-GSUB Arabic fallback shaping. 1765 1766- Misc Indic improvements. 1767 1768- Add build system support for pthread. 1769 1770- Imported UCDN for in-tree Unicode callbacks implementation. 1771 1772- Context-aware Arabic joining. 1773 1774- Misc other fixes. 1775 1776- New API: 1777 1778 hb_feature_to/from-string() 1779 hb_buffer_[sg]et_content_type() 1780 1781 1782 1783Overview of changes leading to 0.9.4 1784Tuesday, Sep 03, 2012 1785==================================== 1786 1787- Indic improvements with old-spec Malayalam. 1788 1789- Better fallback glyph positioning, specially with Thai / Lao marks. 1790 1791- Implement dotted-circle insertion. 1792 1793- Better Arabic fallback shaping / ligation. 1794 1795- Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name. 1796 1797- Misc fixes. 1798 1799 1800 1801Overview of changes leading to 0.9.3 1802Friday, Aug 18, 2012 1803==================================== 1804 1805- Fixed fallback mark positioning for left-to-right text. 1806 1807- Improve mark positioning for the remaining combining classes. 1808 1809- Unbreak Thai and fallback Arabic shaping. 1810 1811- Port Arabic shaper to shape-plan caching. 1812 1813- Use new ICU normalizer functions. 1814 1815 1816 1817Overview of changes leading to 0.9.2 1818Friday, Aug 10, 2012 1819==================================== 1820 1821- Over a thousand commits! This is the first major release of HarfBuzz. 1822 1823- HarfBuzz is feature-complete now! It should be in par, or better, than 1824 both Pango's shapers and old HarfBuzz / Qt shapers. 1825 1826- New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer. 1827 1828- Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic, 1829 Sinhala, N'ko, Mongolian, and Mandaic. 1830 1831- New Thai / Lao shaper. 1832 1833- Tibetan / Hangul support in the generic shaper. 1834 1835- Synthetic GDEF support for fonts without a GDEF table. 1836 1837- Fallback mark positioning for fonts without a GPOS table. 1838 1839- Unicode normalization shaping heuristic during glyph mapping. 1840 1841- New experimental Graphite2 backend. 1842 1843- New Uniscribe backend (primarily for testing). 1844 1845- New CoreText backend (primarily for testing). 1846 1847- Major optimization and speedup. 1848 1849- Test suites and testing infrastructure (work in progress). 1850 1851- Greatly improved hb-view cmdline tool. 1852 1853- hb-shape cmdline tool. 1854 1855- Unicode 6.1 support. 1856 1857Summary of API changes: 1858 1859o Changed API: 1860 1861 - Users are expected to only include main header files now (ie. hb.h, 1862 hb-glib.h, hb-ft.h, ...) 1863 1864 - All struct tag names had their initial underscore removed. 1865 Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now. 1866 1867 - All set_user_data() functions now take a "replace" boolean parameter. 1868 1869 - hb_buffer_create() takes zero arguments now. 1870 Use hb_buffer_pre_allocate() to pre-allocate. 1871 1872 - hb_buffer_add_utf*() now accept -1 for length parameteres, 1873 meaning "nul-terminated". 1874 1875 - hb_direction_t enum values changed. 1876 1877 - All *_from_string() APIs now take a length parameter to allow for 1878 non-nul-terminated strings. A -1 length means "nul-terminated". 1879 1880 - Typedef for hb_language_t changed. 1881 1882 - hb_get_table_func_t renamed to hb_reference_table_func_t. 1883 1884 - hb_ot_layout_table_choose_script() 1885 1886 - Various renames in hb-unicode.h. 1887 1888o New API: 1889 1890 - hb_buffer_guess_properties() 1891 Automatically called by hb_shape(). 1892 1893 - hb_buffer_normalize_glyphs() 1894 1895 - hb_tag_from_string() 1896 1897 - hb-coretext.h 1898 1899 - hb-uniscribe.h 1900 1901 - hb_face_reference_blob() 1902 - hb_face_[sg]et_index() 1903 - hb_face_set_upem() 1904 1905 - hb_font_get_glyph_name_func_t 1906 hb_font_get_glyph_from_name_func_t 1907 hb_font_funcs_set_glyph_name_func() 1908 hb_font_funcs_set_glyph_from_name_func() 1909 hb_font_get_glyph_name() 1910 hb_font_get_glyph_from_name() 1911 hb_font_glyph_to_string() 1912 hb_font_glyph_from_string() 1913 1914 - hb_font_set_funcs_data() 1915 1916 - hb_ft_font_set_funcs() 1917 - hb_ft_font_get_face() 1918 1919 - hb-gobject.h (work in progress) 1920 1921 - hb_ot_shape_glyphs_closure() 1922 hb_ot_layout_substitute_closure_lookup() 1923 1924 - hb-set.h 1925 1926 - hb_shape_full() 1927 1928 - hb_unicode_combining_class_t 1929 1930 - hb_unicode_compose_func_t 1931 hb_unicode_decompose_func_t 1932 hb_unicode_decompose_compatibility_func_t 1933 hb_unicode_funcs_set_compose_func() 1934 hb_unicode_funcs_set_decompose_func() 1935 hb_unicode_funcs_set_decompose_compatibility_func() 1936 hb_unicode_compose() 1937 hb_unicode_decompose() 1938 hb_unicode_decompose_compatibility() 1939 1940o Removed API: 1941 1942 - hb_ft_get_font_funcs() 1943 1944 - hb_ot_layout_substitute_start() 1945 hb_ot_layout_substitute_lookup() 1946 hb_ot_layout_substitute_finish() 1947 hb_ot_layout_position_start() 1948 hb_ot_layout_position_lookup() 1949 hb_ot_layout_position_finish() 1950 1951 1952 1953Overview of changes leading to 0.6.0 1954Friday, May 27, 2011 1955==================================== 1956 1957- Vertical text support in GPOS 1958- Almost all API entries have unit tests now, under test/ 1959- All thread-safety issues are fixed 1960 1961Summary of API changes follows. 1962 1963 1964* Simple Types API: 1965 1966 o New API: 1967 HB_LANGUAGE_INVALID 1968 hb_language_get_default() 1969 hb_direction_to_string() 1970 hb_direction_from_string() 1971 hb_script_get_horizontal_direction() 1972 HB_UNTAG() 1973 1974 o Renamed API: 1975 hb_category_t renamed to hb_unicode_general_category_t 1976 1977 o Changed API: 1978 hb_language_t is a typed pointers now 1979 1980 o Removed API: 1981 HB_TAG_STR() 1982 1983 1984* Use ISO 15924 tags for hb_script_t: 1985 1986 o New API: 1987 hb_script_from_iso15924_tag() 1988 hb_script_to_iso15924_tag() 1989 hb_script_from_string() 1990 1991 o Changed API: 1992 HB_SCRIPT_* enum members changed value. 1993 1994 1995* Buffer API streamlined: 1996 1997 o New API: 1998 hb_buffer_reset() 1999 hb_buffer_set_length() 2000 hb_buffer_allocation_successful() 2001 2002 o Renamed API: 2003 hb_buffer_ensure() renamed to hb_buffer_pre_allocate() 2004 hb_buffer_add_glyph() renamed to hb_buffer_add() 2005 2006 o Removed API: 2007 hb_buffer_clear() 2008 hb_buffer_clear_positions() 2009 2010 o Changed API: 2011 hb_buffer_get_glyph_infos() takes an out length parameter now 2012 hb_buffer_get_glyph_positions() takes an out length parameter now 2013 2014 2015* Blob API streamlined: 2016 2017 o New API: 2018 hb_blob_get_data() 2019 hb_blob_get_data_writable() 2020 2021 o Renamed API: 2022 hb_blob_create_empty() renamed to hb_blob_get_empty() 2023 2024 o Removed API: 2025 hb_blob_lock() 2026 hb_blob_unlock() 2027 hb_blob_is_writable() 2028 hb_blob_try_writable() 2029 2030 o Changed API: 2031 hb_blob_create() takes user_data before destroy now 2032 2033 2034* Unicode functions API: 2035 2036 o Unicode function vectors can subclass other unicode function vectors now. 2037 Unimplemented callbacks in the subclass automatically chainup to the parent. 2038 2039 o All hb_unicode_funcs_t callbacks take a user_data now. Their setters 2040 take a user_data and its respective destroy callback. 2041 2042 o New API: 2043 hb_unicode_funcs_get_empty() 2044 hb_unicode_funcs_get_default() 2045 hb_unicode_funcs_get_parent() 2046 2047 o Changed API: 2048 hb_unicode_funcs_create() now takes a parent_funcs. 2049 2050 o Removed func getter functions: 2051 hb_unicode_funcs_get_mirroring_func() 2052 hb_unicode_funcs_get_general_category_func() 2053 hb_unicode_funcs_get_script_func() 2054 hb_unicode_funcs_get_combining_class_func() 2055 hb_unicode_funcs_get_eastasian_width_func() 2056 2057 2058* Face API: 2059 2060 o Renamed API: 2061 hb_face_get_table() renamed to hb_face_reference_table() 2062 hb_face_create_for_data() renamed to hb_face_create() 2063 2064 o Changed API: 2065 hb_face_create_for_tables() takes user_data before destroy now 2066 hb_face_reference_table() returns empty blob instead of NULL 2067 hb_get_table_func_t accepts the face as first parameter now 2068 2069* Font API: 2070 2071 o Fonts can subclass other fonts now. Unimplemented callbacks in the 2072 subclass automatically chainup to the parent. When chaining up, 2073 scale is adjusted if the parent font has a different scale. 2074 2075 o All hb_font_funcs_t callbacks take a user_data now. Their setters 2076 take a user_data and its respective destroy callback. 2077 2078 o New API: 2079 hb_font_get_parent() 2080 hb_font_funcs_get_empty() 2081 hb_font_create_sub_font() 2082 2083 o Removed API: 2084 hb_font_funcs_copy() 2085 hb_font_unset_funcs() 2086 2087 o Removed func getter functions: 2088 hb_font_funcs_get_glyph_func() 2089 hb_font_funcs_get_glyph_advance_func() 2090 hb_font_funcs_get_glyph_extents_func() 2091 hb_font_funcs_get_contour_point_func() 2092 hb_font_funcs_get_kerning_func() 2093 2094 o Changed API: 2095 hb_font_create() takes a face and references it now 2096 hb_font_set_funcs() takes user_data before destroy now 2097 hb_font_set_scale() accepts signed integers now 2098 hb_font_get_contour_point_func_t now takes glyph first, then point_index 2099 hb_font_get_glyph_func_t returns a success boolean now 2100 2101 2102* Changed object model: 2103 2104 o All object types have a _get_empty() now: 2105 hb_blob_get_empty() 2106 hb_buffer_get_empty() 2107 hb_face_get_empty() 2108 hb_font_get_empty() 2109 hb_font_funcs_get_empty() 2110 hb_unicode_funcs_get_empty() 2111 2112 o Added _set_user_data() and _get_user_data() for all object types: 2113 hb_blob_get_user_data() 2114 hb_blob_set_user_data() 2115 hb_buffer_get_user_data() 2116 hb_buffer_set_user_data() 2117 hb_face_get_user_data() 2118 hb_face_set_user_data() 2119 hb_font_funcs_get_user_data() 2120 hb_font_funcs_set_user_data() 2121 hb_font_get_user_data() 2122 hb_font_set_user_data() 2123 hb_unicode_funcs_get_user_data() 2124 hb_unicode_funcs_set_user_data() 2125 2126 o Removed the _get_reference_count() from all object types: 2127 hb_blob_get_reference_count() 2128 hb_buffer_get_reference_count() 2129 hb_face_get_reference_count() 2130 hb_font_funcs_get_reference_count() 2131 hb_font_get_reference_count() 2132 hb_unicode_funcs_get_reference_count() 2133 2134 o Added _make_immutable() and _is_immutable() for all object types except for buffer: 2135 hb_blob_make_immutable() 2136 hb_blob_is_immutable() 2137 hb_face_make_immutable() 2138 hb_face_is_immutable() 2139 2140 2141* Changed API for vertical text support 2142 2143 o The following callbacks where removed: 2144 hb_font_get_glyph_advance_func_t 2145 hb_font_get_kerning_func_t 2146 2147 o The following new callbacks added instead: 2148 hb_font_get_glyph_h_advance_func_t 2149 hb_font_get_glyph_v_advance_func_t 2150 hb_font_get_glyph_h_origin_func_t 2151 hb_font_get_glyph_v_origin_func_t 2152 hb_font_get_glyph_h_kerning_func_t 2153 hb_font_get_glyph_v_kerning_func_t 2154 2155 o The following API removed as such: 2156 hb_font_funcs_set_glyph_advance_func() 2157 hb_font_funcs_set_kerning_func() 2158 hb_font_get_glyph_advance() 2159 hb_font_get_kerning() 2160 2161 o New API added instead: 2162 hb_font_funcs_set_glyph_h_advance_func() 2163 hb_font_funcs_set_glyph_v_advance_func() 2164 hb_font_funcs_set_glyph_h_origin_func() 2165 hb_font_funcs_set_glyph_v_origin_func() 2166 hb_font_funcs_set_glyph_h_kerning_func() 2167 hb_font_funcs_set_glyph_v_kerning_func() 2168 hb_font_get_glyph_h_advance() 2169 hb_font_get_glyph_v_advance() 2170 hb_font_get_glyph_h_origin() 2171 hb_font_get_glyph_v_origin() 2172 hb_font_get_glyph_h_kerning() 2173 hb_font_get_glyph_v_kerning() 2174 2175 o The following higher-leve API added for convenience: 2176 hb_font_get_glyph_advance_for_direction() 2177 hb_font_get_glyph_origin_for_direction() 2178 hb_font_add_glyph_origin_for_direction() 2179 hb_font_subtract_glyph_origin_for_direction() 2180 hb_font_get_glyph_kerning_for_direction() 2181 hb_font_get_glyph_extents_for_origin() 2182 hb_font_get_glyph_contour_point_for_origin() 2183 2184 2185* OpenType Layout API: 2186 2187 o New API: 2188 hb_ot_layout_position_start() 2189 hb_ot_layout_substitute_start() 2190 hb_ot_layout_substitute_finish() 2191 2192 2193* Glue code: 2194 2195 o New API: 2196 hb_glib_script_to_script() 2197 hb_glib_script_from_script() 2198 hb_icu_script_to_script() 2199 hb_icu_script_from_script() 2200 2201 2202* Version API added: 2203 2204 o New API: 2205 HB_VERSION_MAJOR 2206 HB_VERSION_MINOR 2207 HB_VERSION_MICRO 2208 HB_VERSION_STRING 2209 HB_VERSION_CHECK() 2210 hb_version() 2211 hb_version_string() 2212 hb_version_check() 2213 2214 2215