Overview of changes leading to 2.2.0
Thursday, November 29, 2018
====================================
- Misc shaping bug fixes.
- Add font variations named-instance API.
- Deprecate font variations axis enumeration API and add replacement.
- AAT shaping improvements:
o Fixed 'kern' table Format 2 implementation.
o Implement 'feat' table API for feature detection.
o Blacklist 'GSUB' table of fonts from 'MUTF' foundry that also have 'morx'.
New API:
+hb_aat_layout_feature_type_t
+hb_aat_layout_feature_selector_t
+hb_aat_layout_get_feature_types()
+hb_aat_layout_feature_type_get_name_id
+hb_aat_layout_feature_selector_info_t
+HB_AAT_LAYOUT_NO_SELECTOR_INDEX
+hb_aat_layout_feature_type_get_selector_infos()
+hb_ot_var_axis_flags_t
+hb_ot_var_axis_info_t
+hb_ot_var_get_axis_infos()
+hb_ot_var_find_axis_info()
+hb_ot_var_get_named_instance_count()
+hb_ot_var_named_instance_get_subfamily_name_id()
+hb_ot_var_named_instance_get_postscript_name_id()
+hb_ot_var_named_instance_get_design_coords()
Deprecated API:
+HB_OT_VAR_NO_AXIS_INDEX
+hb_ot_var_axis_t
+hb_ot_var_get_axes()
+hb_ot_var_find_axis()
Overview of changes leading to 2.1.3
Friday, November 16, 2018
====================================
- Fix AAT 'mort' shaping, which was broken in 2.1.2
Overview of changes leading to 2.1.2
Friday, November 16, 2018
====================================
- Various internal changes.
- AAT shaping improvements:
o Implement kern table Format 1 state-machine-based kerning.
o Implement cross-stream kerning (cursive positioning, etc).
o Ignore emptyish GSUB tables (zero scripts) if morx present.
o Don't apply GPOS if morx is being applied. Matches Apple.
Changelog:
Overview of changes leading to 2.1.1
Monday, November 5, 2018
====================================
- AAT improvements:
o Implement 'mort' table.
o Implement 'kern' subtables Format 1 and Format 3.
Overview of changes leading to 2.1.0
Tuesday, October 30, 2018
====================================
- AAT shaping improvements:
o Allow user controlling AAT features, for whole buffer only currently.
o Several 'morx' fixes.
o Implement tuple-kerns in 'kerx'; Fixes kerning with Apple default
San Francisco fonts.
- Support for color fonts:
o COLR/CPAL API to fetch color layers.
o SVG table to fetch SVG documents.
o CBDT/sbix API to fetch PNG images.
- New 'name' table API.
- hb-ot-font now uses 'VORG' table to correctly position CFF glyphs
in vertical layout.
- Various fuzzer-found bug fixes.
Changed API:
A type and a macro added in 2.0.0 were renamed:
hb_name_id_t -> hb_ot_name_id_t
HB_NAME_ID_INVALID -> HB_OT_NAME_ID_INVALID
New API:
+hb_color_t
+HB_COLOR
+hb_color_get_alpha()
+hb_color_get_red()
+hb_color_get_green()
+hb_color_get_blue()
+hb_ot_color_has_palettes()
+hb_ot_color_palette_get_count()
+hb_ot_color_palette_get_name_id()
+hb_ot_color_palette_color_get_name_id()
+hb_ot_color_palette_flags_t
+hb_ot_color_palette_get_flags()
+hb_ot_color_palette_get_colors()
+hb_ot_color_has_layers()
+hb_ot_color_layer_t
+hb_ot_color_glyph_get_layers()
+hb_ot_color_has_svg()
+hb_ot_color_glyph_reference_svg()
+hb_ot_color_has_png()
+hb_ot_color_glyph_reference_png()
+hb_ot_name_id_t
+HB_OT_NAME_ID_INVALID
+HB_OT_NAME_ID_COPYRIGHT
+HB_OT_NAME_ID_FONT_FAMILY
+HB_OT_NAME_ID_FONT_SUBFAMILY
+HB_OT_NAME_ID_UNIQUE_ID
+HB_OT_NAME_ID_FULL_NAME
+HB_OT_NAME_ID_VERSION_STRING
+HB_OT_NAME_ID_POSTSCRIPT_NAME
+HB_OT_NAME_ID_TRADEMARK
+HB_OT_NAME_ID_MANUFACTURER
+HB_OT_NAME_ID_DESIGNER
+HB_OT_NAME_ID_DESCRIPTION
+HB_OT_NAME_ID_VENDOR_URL
+HB_OT_NAME_ID_DESIGNER_URL
+HB_OT_NAME_ID_LICENSE
+HB_OT_NAME_ID_LICENSE_URL
+HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY
+HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY
+HB_OT_NAME_ID_MAC_FULL_NAME
+HB_OT_NAME_ID_SAMPLE_TEXT
+HB_OT_NAME_ID_CID_FINDFONT_NAME
+HB_OT_NAME_ID_WWS_FAMILY
+HB_OT_NAME_ID_WWS_SUBFAMILY
+HB_OT_NAME_ID_LIGHT_BACKGROUND
+HB_OT_NAME_ID_DARK_BACKGROUND
+HB_OT_NAME_ID_VARIATIONS_PS_PREFIX
+hb_ot_name_entry_t
+hb_ot_name_list_names()
+hb_ot_name_get_utf8()
+hb_ot_name_get_utf16()
+hb_ot_name_get_utf32()
Overview of changes leading to 2.0.2
Saturday, October 20, 2018
====================================
- Fix two minor memory access issues in AAT tables.
Overview of changes leading to 2.0.1
Friday, October 19, 2018
====================================
- Fix hb-version.h reported release version that went wrong (1.8.0)
with previous release.
- Fix extrapolation in 'trak' table.
- Fix hb-font infinite-recursion issue with some font funcs and
subclassed fonts.
- Implement variation-kerning format in kerx table, although without
variation.
- Fix return value of hb_map_is_empty().
Overview of changes leading to 2.0.0
Thursday, October 18, 2018
====================================
- Added AAT shaping support (morx/kerx/trak).
Automatically used if GSUB/GPOS are not available respectively.
Set HB_OPTIONS=aat env var to have morx/kerx preferred over
GSUB/GPOS.
- Apply TrueType kern table internally, instead of relying on
hb_font_t callbacks.
- Khmer shaper significantly rewritten to better match Uniscribe.
- Indic3 tags ('dev3', etc) are passed to USE shaper.
- .dfont Mac font containers implemented.
- Script- and language-mapping revamped to better use BCP 47.
- Misc USE and Indic fixes.
- Misc everything fixes.
- Too many things to list. Biggest release since 0.9.1, with
over 500 commits in just over 5 weeks! Didn't intend it to
be a big release. Just happened to become.
- hb-ft now locks underlying FT_Face during use.
API changes:
- Newly-created hb_font_t's now have our internal "hb-ot-font"
callbacks set on them, so they should work out of the box
without any callbacks set. If callbacks are set, everything
is back to what it was before, the fallback callbacks are
null. If you to get the internal implementation modified,
sub_font it.
- New hb_font_funcs_set_nominal_glyphs_func() allows speeding
up character to glyph mapping.
New API:
+HB_FEATURE_GLOBAL_START
+HB_FEATURE_GLOBAL_END
+hb_buffer_set_invisible_glyph()
+hb_buffer_get_invisible_glyph()
+hb_font_funcs_set_nominal_glyphs_func()
+hb_ot_layout_table_select_script()
+hb_ot_layout_script_select_language()
+hb_ot_layout_feature_get_name_ids()
+hb_ot_layout_feature_get_characters()
+hb_name_id_t
+HB_NAME_ID_INVALID
+HB_OT_MAX_TAGS_PER_SCRIPT
+hb_ot_tags_from_script_and_language()
+hb_ot_tags_to_script_and_language()
Deprecated API:
-hb_font_funcs_set_glyph_func()
-hb_unicode_eastasian_width_func_t
-hb_unicode_funcs_set_eastasian_width_func()
-hb_unicode_eastasian_width()
-hb_unicode_decompose_compatibility_func_t
-HB_UNICODE_MAX_DECOMPOSITION_LEN
-hb_unicode_funcs_set_decompose_compatibility_func()
-hb_unicode_decompose_compatibility()
-hb_font_funcs_set_glyph_h_kerning_func()
-hb_font_funcs_set_glyph_v_kerning_func()
-hb_font_get_glyph_h_kerning()
-hb_font_get_glyph_v_kerning()
-hb_font_get_glyph_kerning_for_direction()
-hb_ot_layout_table_choose_script()
-hb_ot_layout_script_find_language()
-hb_ot_tags_from_script()
-hb_ot_tag_from_language()
Overview of changes leading to 1.9.0
Monday, September 10, 2018
====================================
- Added 'cmap' API to hb_face_t.
- Face-builder API.
- hb-ot-font re-creation should be much leaner now, as the
font tables it uses are cached on hb_face_t now.
- Internal source header file name changes:
hb-*-private.hh is renamed to hb-*.hh.
New API:
+HB_UNICODE_MAX
+hb_face_collect_unicodes()
+hb_face_collect_variation_selectors()
+hb_face_collect_variation_unicodes()
+hb_face_builder_create()
+hb_face_builder_add_table()
Overview of changes leading to 1.8.8
Tuesday, August 14, 2018
====================================
- Fix hb-icu crash on architectures where compare_exchange_weak() can
fail falsely. This bug was introduced in 1.8.4.
https://bugs.chromium.org/p/chromium/issues/detail?id=873568
- More internal refactoring of atomic operations and singletons.
- API changes:
The following functions do NOT reference their return value before
returning:
* hb_unicode_funcs_get_default()
* hb_glib_get_unicode_funcs()
* hb_icu_get_unicode_funcs()
This is consistent with their naming ("get", instead of "reference")
as well as how they are used in the wild (ie. no one calls destroy()
on their return value.)
Overview of changes leading to 1.8.7
Wednesday, August 8, 2018
====================================
- Fix assertion failure with GDEF-blacklisted fonts.
Overview of changes leading to 1.8.6
Tuesday, August 7, 2018
====================================
- Internal code shuffling.
- New API to speed up getting advance widths for implementations
that have heavy overhead in get_h_advance callback:
+hb_font_funcs_set_glyph_h_advances_func
+hb_font_funcs_set_glyph_v_advances_func
+hb_font_get_glyph_advances_for_direction
+hb_font_get_glyph_h_advances
+hb_font_get_glyph_h_advances_func_t
+hb_font_get_glyph_v_advances
+hb_font_get_glyph_v_advances_func_t
Overview of changes leading to 1.8.5
Wednesday, August 1, 2018
====================================
- Major Khmer shaper improvements to better match Microsoft.
- Indic bug fixes.
- Internal improvements to atomic operations.
Overview of changes leading to 1.8.4
Tuesday, July 17, 2018
====================================
- Fix build on non-C++11.
- Use C++-style GCC atomics and C++11 atomics.
Overview of changes leading to 1.8.3
Wednesday, July 11, 2018
====================================
- A couple of Indic / USE bug fixes.
- Disable vectorization, as it was causing unaligned access bus error on
certain 32bit architectures.
Overview of changes leading to 1.8.2
Tuesday, July 3, 2018
====================================
- Fix infinite loop in Khmer shaper.
- Improve hb_blob_create_from_file() for streams.
Overview of changes leading to 1.8.1
Tuesday, June 12, 2018
====================================
- Fix hb-version.h file generation; last two releases went out with wrong ones.
- Add correctness bug in hb_set_t operations, introduced in 1.7.7.
- Remove HB_SUBSET_BUILTIN build option. Not necessary.
Tuesday, June 5, 2018
====================================
- Update to Unicode 11.0.0.
Overview of changes leading to 1.7.7
Tuesday, June 5, 2018
====================================
- Lots of internal changes, but not yet exposed externally.
- All HarfBuzz objects are significantly smaller in size now.
- Sinhala: Position repha on top of post-consonant, not base.
This better matches Windows 10 behavior, which was changed
from previous Windows versions.
- New build options:
o New cpp macro HB_NO_ATEXIT
o New cpp macro HB_SUBSET_BUILTIN
- Significant libharfbuzz-subset changes. API subject to change.
- New API in libharfbuzz:
+hb_blob_create_from_file()
+hb_face_count()
A hashmap implementation:
+hb-map.h
+HB_MAP_VALUE_INVALID
+hb_map_t
+hb_map_create()
+hb_map_get_empty()
+hb_map_reference()
+hb_map_destroy()
+hb_map_set_user_data()
+hb_map_get_user_data()
+hb_map_allocation_successful()
+hb_map_clear()
+hb_map_is_empty()
+hb_map_get_population()
+hb_map_set()
+hb_map_get()
+hb_map_del()
+hb_map_has()
Overview of changes leading to 1.7.6
Wednesday, March 7, 2018
====================================
- Fix to hb_set_t binary operations. Ouch.
- New experimental harfbuzz-subset library. All of hb-subset.h
is experimental right now and API WILL change.
- New API:
hb_blob_copy_writable_or_fail()
HB_OT_TAG_BASE
hb_set_previous()
hb_set_previous_range()
Overview of changes leading to 1.7.5
Tuesday, January 30, 2018
====================================
- Separate Khmer shaper from Indic.
- First stab at AAT morx. Not hooked up.
- Misc bug fixes.
harfbuzz: update to 1.7.4.
Overview of changes leading to 1.7.4
Wednesday, December 20, 2017
====================================
- Fix collect_glyphs() regression caused by hb_set_t changes.
Overview of changes leading to 1.7.3
Monday, December 18, 2017
====================================
- hb_set_t performance tuning and optimizations.
- Speed up collect_glyphs() and reject garbage data.
- In hb_coretext_font_create() set font point-size (ptem).
- Misc fixes.
Overview of changes leading to 1.7.2
Monday, December 4, 2017
====================================
- Optimize hb_set_add_range().
- Misc fixes.
- New API:
hb_coretext_font_create()
Unsorted entries in PLIST files have generated a pkglint warning for at
least 12 years. Somewhat more recently, pkglint has learned to sort
PLIST files automatically. Since pkglint 5.4.23, the sorting is only
done in obvious, simple cases. These have been applied by running:
pkglint -Cnone,PLIST -Wnone,plist-sort -r -F
Overview of changes leading to 1.7.1
Tuesday, November 14, 2017
====================================
- Fix atexit object destruction regression.
- Fix minor integer-overflow.
Overview of changes leading to 1.7.0
Monday, November 13, 2017
====================================
- Minor Indic fixes.
- Implement kerning and glyph names in hb-ot-font.
- Various DSO optimization re .data and .bss sizes.
- Make C++11 optional; build fixes.
- Mark all other backends "unsafe-to-break".
- Graphite fix.
Overview of changes leading to 1.6.3
Thursday, October 26th, 2017
====================================
- Fix hb_set_t some more. Should be solid now.
- Implement get_glyph_name() for hb-ot-font.
- Misc fixes.
Overview of changes leading to 1.6.2
Monday, October 23nd, 2017
====================================
- Yesterday's release had a bad crasher; don't use it. That's what
happens when one works on Sunday...
https://github.com/behdad/harfbuzz/issues/578
- Build fixes for FreeBSD and Chrome Android.
Overview of changes leading to 1.6.1
Sunday, October 22nd, 2017
====================================
- Don't skip over COMBINING GRAPHEME JOINER when ligating, etc.
To be refined: https://github.com/behdad/harfbuzz/issues/554
- Faster hb_set_t implementation.
- Don't use deprecated ICU API.
- Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0
- Deprecated API:
hb_set_invert()
Overview of changes leading to 1.6.0
Friday, October the 13th, 2017
====================================
- Update to Unicode 10.
- Various Indic and Universal Shaping Engine fixes as a result of
HarfBuzz Hackfest with Jonathan Kew at Web Engines Hackfest at
the Igalia offices in A Coruña, Spain. Thanks Igalia for having
us!
- Implement Unicode Arabic Mark Ordering Algorithm UTR#53.
- Implement optical sizing / tracking in CoreText backend, using
new API hb_font_set_ptem().
- Allow notifying hb_font_t that underlying FT_Face changed sizing,
using new API hb_ft_font_changed().
- More Graphite backend RTL fixes.
- Fix caching of variable font shaping plans.
- hb-view / hb-shape now accept following new arguments:
o --unicodes: takes a list of hex numbers that represent Unicode
codepoints.
New API:
+hb_face_get_table_tags()
+hb_font_set_ptem()
+hb_font_get_ptem()
+hb_ft_font_changed()
Overview of changes leading to 1.5.1
Tuesday, September 5, 2017
====================================
- Fix "unsafe-to-break" in fallback shaping and other corner cases.
All our tests pass with --verify now, meaning unsafe-to-break API
works as expected.
- Add --unicodes to hb-view / hb-shape.
- [indic] Treat Consonant_With_Stacker as consonant. This will need
further tweaking.
- hb_buffer_diff() tweaks.
Overview of changes leading to 1.5.0
Wednesday, August 23, 2017
====================================
- Misc new API, for appending a buffer to another, and for comparing
contents of two buffers for types of differences.
- New "unsafe-to-break" API. Can be used to speed up reshaping
in line-breaking situations. Essentially, after shaping, it returns
positions in the input string (some of the cluster boundaries) that
are "safe to break" in that if the text is segmented at that position
and two sides reshaped and concatenated, the shaping result is
exactly the same as shaping the text in one piece.
hb-view and hb-shape and hb-shape now take --verify, which verifies
the above property.
Some corner cases of the implementation are still not quite working.
Those will be fixed in subsequent releases.
- New API:
hb_buffer_append()
hb_glyph_flags_t
HB_GLYPH_FLAG_UNSAFE_TO_BREAK
HB_GLYPH_FLAG_DEFINED
hb_glyph_info_get_glyph_flags()
HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS
hb_buffer_diff_flags_t
HB_BUFFER_DIFF_FLAG_EQUAL
HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH
HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH
HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT
HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT
HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH
HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH
HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH
HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH
hb_buffer_diff
Overview of changes leading to 1.4.8
Tuesday, August 8, 2017
====================================
- Major fix to avar table handling.
- Rename hb-shape --show-message to --trace.
- Build fixes.
Overview of changes leading to 1.4.7
Tuesday, July 18, 2017
====================================
- Multiple Indic, Tibetan, and Cham fixes.
- CoreText: Allow disabling kerning.
- Adjust Arabic feature order again.
- Misc build fixes.
Overview of changes leading to 1.4.6
Sunday, April 23, 2017
====================================
- Graphite2: Fix RTL positioning issue.
- Backlist GDEF of more versions of Padauk and Tahoma.
- New, experimental, cmake alternative build system.
Overview of changes leading to 1.4.5
Friday, March 10, 2017
====================================
- Revert "Fix Context lookup application when moving back after a glyph..."
This introduced memory access problems. To be fixed properly soon.
Overview of changes leading to 1.4.4
Sunday, March 5, 2017
====================================
- Fix Context lookup application when moving back after a glyph deletion.
- Fix buffer-overrun in Bengali.
Overview of changes leading to 1.4.3
Saturday, February 25, 2017
====================================
- Route Adlam script to Arabic shaper.
- Misc fixes.
- New API:
hb_font_set_face()
- Deprecate API:
hb_graphite2_font_get_gr_font()
Enable graphite2 dependency, as libreoffice seems to want it.
Overview of changes leading to 1.4.2
Monday, January 23, 2017
====================================
- Implement OpenType Font Variation tables avar/fvar/HVAR/VVAR.
- hb-shape and hb-view now accept --variations.
- New API:
hb_variation_t
hb_variation_from_string()
hb_variation_to_string()
hb_font_set_variations()
hb_font_set_var_coords_design()
hb_font_get_var_coords_normalized()
hb-ot-var.h:
hb_ot_var_axis_t
hb_ot_var_has_data()
hb_ot_var_get_axis_count()
hb_ot_var_get_axes()
hb_ot_var_find_axis()
hb_ot_var_normalize_variations()
hb_ot_var_normalize_coords()
- MVAR to be implemented later. Access to named instances to be
implemented later as well.
- Misc fixes.
Overview of changes leading to 1.4.1
Thursday, January 5, 2017
====================================
- Always build and use UCDN for Unicode data by default.
Reduces dependence on version of Unicode data in glib,
specially in the Windows bundles we are shipping, which
have very old glib.
Overview of changes leading to 1.4.0
Thursday, January 5, 2017
====================================
- Merged "OpenType GX" branch which adds core of support for
OpenType 1.8 Font Variations. To that extent, the relevant
new API is:
New API:
hb_font_set_var_coords_normalized()
with supporting API:
New API:
HB_OT_LAYOUT_NO_VARIATIONS_INDEX
hb_ot_layout_table_find_feature_variations()
hb_ot_layout_feature_with_variations_get_lookups()
hb_shape_plan_create2()
hb_shape_plan_create_cached2()
Currently variations in GSUB/GPOS/GDEF are fully supported,
and no other tables are supported. In particular, fvar/avar
are NOT supported, hence the hb_font_set_var_coords_normalized()
taking normalized coordinates. API to take design coordinates
will be added in the future.
HVAR/VVAR/MVAR support will also be added to hb-ot-font in the
future.
- Fix regression in GDEF glyph class processing.
- Add decompositions for Chakma, Limbu, and Balinese in USE shaper.
- Misc fixes.
Overview of changes leading to 1.3.4
Monday, December 5, 2016
====================================
- Fix vertical glyph origin in hb-ot-font.
- Implement CBDT/CBLC color font glyph extents in hb-ot-font.
Overview of changes leading to 1.3.2
Wednesday, September 27, 2016
====================================
- Fix build of hb-coretext on older OS X versions.
Overview of changes leading to 1.3.1
Wednesday, September 7, 2016
====================================
- Blacklist bad GDEF of more fonts (Padauk).
- More CoreText backend crash fixes with OS X 10.9.5.
- Misc fixes.
Overview of changes leading to 1.3.0
Thursday, July 21, 2016
====================================
- Update to Unicode 9.0.0
- Move Javanese from Indic shaper to Universal Shaping Engine.
- Allow MultipleSubst to delete a glyph (matching Windows engine).
- Update Universal Shaping Engine to latest draft from Microsoft.
- DirectWrite backend improvements. Note: this backend is for testing ONLY.
- CoreText backend improvements with unreachable fonts.
- Implement symbol fonts (cmap 3.0.0) in hb-ft and hb-ot-font.
- Blacklist bad GDEF of more fonts (Tahoma & others).
- Misc fixes.
Overview of changes leading to 1.2.7
Monday, May 2, 2016
====================================
- Blacklist another version of Times New Roman (Bold) Italic from Windows 7.
- Fix Mongolian Free Variation Selectors shaping with certain fonts.
- Fix Tibetan shorthand contractions shaping.
- Improved list of language tag mappings.
- Unbreak build on Windows CE.
- Make 'glyf' table loading lazy in hb-ot-font.
Friday, April 8, 2016
====================================
- Blacklist GDEF table of another set of Times New Roman (Bold) Italic.
- DirectWrite backend improvements. Note: DirectWrite backend is
exclusively for our internal testing and should NOT be used in any
production system whatsoever.
Overview of changes leading to 1.2.5
Monday, April 4, 2016
====================================
- Fix GDEF mark-filtering-set, which was broken in 1.2.3.
Overview of changes leading to 1.2.4
Thursday, March 17, 2016
====================================
- Synthesize GDEF glyph class for any glyph that does not have one in GDEF.
I really hope we don't discover broken fonts that shape badly with this
change.
- Misc build and other minor fixes.
- API changes:
- Added HB_NDEBUG. It's fine for production systems to define this to
disable high-overhead debugging checks. However, I also reduced the
overhead of those checks, so it's a non-issue right now. You can
forget it. Just not defining anything at all is fine.
Overview of changes leading to 1.2.3
Thursday, February 25, 2016
====================================
- Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic,
due to bug in glyph class of ASCII double-quote character. This should
address "regression" introduced in 1.2.0 when we switched mark zeroing
in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE.
This fourth release in a week should finally stablize things...
- hb-ot-font's get_glyph() implementation saw some optimizations. Though,
might be really hard to measure in real-world situations.
- Also, two rather small API changes:
We now disable some time-consuming internal bookkeeping if built with NDEBUG
defined. This is a first time that we use NDEBUG to disable debug code. If
there exist production systems that do NOT want to enable NDEBUG, please let
me know and I'll add HB_NDEBUG.
Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph()
New API:
- hb_font_get_nominal_glyph_func_t
- hb_font_get_variation_glyph_func_t
- hb_font_funcs_set_nominal_glyph_func()
- hb_font_funcs_set_variation_glyph_func()
- hb_font_get_nominal_glyph()
- hb_font_get_variation_glyph()
Deprecated API:
- hb_font_get_glyph_func_t
- hb_font_funcs_set_glyph_func()
Clients that implement their own font-funcs are encouraged to replace
their get_glyph() implementation with a get_nominal_glyph() and
get_variation_glyph() pair. The variation version can assume that
variation_selector argument is not zero. Old (deprecated) functions
will continue working indefinitely using internal gymnastics; it is
just more efficient to use the new functions.
Overview of changes leading to 1.2.2
Wednesday, February 24, 2016
====================================
- Fix regression with mark positioning with fonts that have
non-zero mark advances. This was introduced in 1.2.0 while
trying to make mark and cursive attachments to work together.
I have partially reverted that, so this version is much more
like what we had before. All clients who updated to 1.2.0
should update to this version.
Overview of changes leading to 1.2.1
Tuesday, February 23, 2016
====================================
- CoreText: Fix bug with wrong scale if font scale was changed later.
https://github.com/libass/libass/issues/212
- CoreText: Drastically speed up font initialization.
- CoreText: Fix tiny leak.
- Group ZWJ/ZWNJ with previous syllable under cluster-level=0.
https://github.com/behdad/harfbuzz/issues/217
- Add test/shaping/README.md about how to add tests to the suite.
Overview of changes leading to 1.2.0
Friday, February 19, 2016
====================================
- Fix various issues (hangs mostly) in case of memory allocation failure.
- Change mark zeroing types of most shapers from BY_UNICODE_LATE to
BY_GDEF_LATE. This seems to be what Uniscribe does.
- Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY. That's
what Windows does.
- Allow GPOS cursive connection on marks, and fix the interaction with
mark attachment. This work resulted in some changes to how mark
attachments work. See:
https://github.com/behdad/harfbuzz/issues/21186c68c7a2c
- Graphite2 shaper: improved negative advance handling (eg. Nastaliq).
- Add nmake-based build system for Windows.
- Minor speedup.
- Misc. improvements.
Overview of changes leading to 1.1.3
Monday, January 11, 2016
====================================
- Ported Indic shaper to Unicode 8.0 data.
- Universal Shaping Engine fixes.
- Speed up CoreText shaper when font fallback happens in CoreText.
- Documentation improvements, thanks to Khaled Hosny.
- Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi.
- Misc bug fixes.
- New API:
* Font extents:
hb_font_extents_t
hb_font_get_font_extents_func_t
hb_font_get_font_h_extents_func_t
hb_font_get_font_v_extents_func_t
hb_font_funcs_set_font_h_extents_func
hb_font_funcs_set_font_v_extents_func
hb_font_get_h_extents
hb_font_get_v_extents
hb_font_get_extents_for_direction
* Buffer message (aka debug):
hb_buffer_message_func_t
hb_buffer_set_message_func()
Actual message protocol to be fleshed out later.
Overview of changes leading to 1.1.2
Wednesday, November 26, 2015
====================================
- Fix badly-broken fallback shaper that affected terminology.
https://github.com/behdad/harfbuzz/issues/187
- Fix y_scaling in Graphite shaper.
- API changes:
* An unset glyph_h_origin() function in font-funcs now (sensibly)
implies horizontal origin at 0,0. Ie, the nil callback returns
true instead of false. As such, implementations that have a
glyph_h_origin() that simply returns true, can remove that function
with HarfBuzz >= 1.1.2. This results in a tiny speedup.