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