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