Overview of changes leading to 0.9.40
Friday, March 20, 2015
=====================================
- Another hb-coretext crasher fix. Ouch!
- Happy Norouz!
Overview of changes leading to 0.9.39
Wednesday, March 4, 2015
=====================================
- Critical hb-coretext fixes.
- Optimizations and refactoring; no functional change
expected.
- Misc build fixes.
defined in NetBSD-6, NetBSD-7 and -current up to 7.99.4.
Manually override the detection since pkgsrc makes sure the proper
version is available.
Based on a patch by Leonardo Taccari on pkgsrc-changes.
Overview of changes leading to 0.9.38
Friday, January 23, 2015
=====================================
- Fix minor out-of-bounds access in Indic shaper.
- Change New Tai Lue shaping engine from South-East Asian to default,
reflecting change in Unicode encoding model.
- Add hb-shape --font-size. Can take up to two numbers for separate
x / y size.
- Fix CoreText and FreeType scale issues with negative scales.
- Reject blobs larger than 2GB. This might break some icu-le-hb clients
that need security fixes. See:
http://www.icu-project.org/trac/ticket/11450
- Avoid accessing font tables during face destruction, in casce rogue
clients released face data already.
- Fix up gobject-introspection a bit. Python bindings kinda working.
See README.python.
- Misc fixes.
- API additions:
hb_ft_face_create_referenced()
hb_ft_font_create_referenced()
Overview of changes leading to 0.9.37
Wednesday, December 17, 2014
=====================================
- Fix out-of-bounds access in Context lookup format 3.
- Indic: Allow ZWJ/ZWNJ before syllable modifiers.
Overview of changes leading to 0.9.36
Thursday, November 20, 2014
=====================================
- First time that three months went by without a release since
0.9.2 was released on August 10, 2012!
- Fix performance bug in hb_ot_collect_glyphs():
https://bugzilla.mozilla.org/show_bug.cgi?id=1090869
- Add basic vertical-text support to hb-ot-font.
- Misc build fixes.
Overview of changes leading to 0.9.35
Saturday, August 13, 2014
=====================================
- Fix major shape-plan caching bug when more than one shaper were
provided to hb_shape_full() (as exercised by XeTeX).
http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html
- Fix Arabic fallback shaping regression. This was broken in 0.9.32.
- Major hb-coretext fixes. That backend is complete now, including
respecing buffer direction and language, down to vertical writing.
- Build fixes for Windows CE. Should build fine now.
- Misc fixes:
Use atexit() only if it's safe to call from shared library
https://bugs.freedesktop.org/show_bug.cgi?id=82246
Mandaic had errors in its Unicode Joining_Type
https://bugs.freedesktop.org/show_bug.cgi?id=82306
- API changes:
* hb_buffer_clear_contents() does not reset buffer flags now.
After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
need to set flags for different pieces of text. The flags now
are something the client sets up once, depending on how it
actually uses the buffer. As such, don't clear it in
clear_contents().
I don't expect any changes to be needed to any existing client.
Overview of changes leading to 0.9.34
Saturday, August 2, 2014
=====================================
- hb_feature_from_string() now accepts CSS font-feature-settings format.
- As a result, hb-shape / hb-view --features also accept CSS-style strings.
Eg, "'liga' off" is accepted now.
- Add old-spec Myanmar shaper:
https://bugs.freedesktop.org/show_bug.cgi?id=81775
- Don't apply 'calt' in Hangul shaper.
- Fix mark advance zeroing for Hebrew shaper:
https://bugs.freedesktop.org/show_bug.cgi?id=76767
- Implement Windows-1256 custom Arabic shaping. Only built on Windows,
and requires help from get_glyph(). Used by Firefox.
https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
- Disable 'liga' in vertical text.
- Build fixes.
- API changes:
* Make HB_BUFFER_FLAG_BOT/EOT easier to use.
Previously, we expected users to provide BOT/EOT flags when the
text *segment* was at paragraph boundaries. This meant that for
clients that provide full paragraph to HarfBuzz (eg. Pango), they
had code like this:
hb_buffer_set_flags (hb_buffer,
(item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
(item_offset + item_length == paragraph_length ?
HB_BUFFER_FLAG_EOT : 0));
hb_buffer_add_utf8 (hb_buffer,
paragraph_text, paragraph_length,
item_offset, item_length);
After this change such clients can simply say:
hb_buffer_set_flags (hb_buffer,
HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
hb_buffer_add_utf8 (hb_buffer,
paragraph_text, paragraph_length,
item_offset, item_length);
Ie, HarfBuzz itself checks whether the segment is at the beginning/end
of the paragraph. Clients that only pass item-at-a-time to HarfBuzz
continue not setting any flags whatsoever.
Another way to put it is: if there's pre-context text in the buffer,
HarfBuzz ignores the BOT flag. If there's post-context, it ignores
EOT flag.
Overview of changes leading to 0.9.33
Tuesday, July 22, 2014
=====================================
- Turn off ARabic 'cswh' feature that was accidentally turned on.
- Add HB_TAG_MAX_SIGNED.
- Make hb_face_make_immutable() really make face immutable!
- Windows build fixes.
Overview of changes leading to 0.9.32
Thursday, July 17, 2014
=====================================
- Apply Arabic shaping features in spec order exactly.
- Another fix for Mongolian free variation selectors.
- For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt'
together.
- Minor adjustment to U+FFFD logic.
- Fix hb-coretext build.
Overview of changes leading to 0.9.31
Wednesday, July 16, 2014
=====================================
- Only accept valid UTF-8/16/32; we missed many cases before.
- Better shaping of invalid UTF-8/16/32. Falls back to
U+FFFD REPLACEMENT CHARACTER now.
- With all changes in this release, the buffer will contain fully
valid Unicode after hb_buffer_add_utf8/16/32 no matter how
broken the input is. This can be overriden though. See below.
- Fix Mongolian Variation Selectors for fonts without GDEF.
- Fix minor invalid buffer access.
- Accept zh-Hant and zh-Hans language tags. hb_ot_tag_to_language()
now uses these instead of private tags.
- Build fixes.
- New API:
* hb_buffer_add_codepoints(). This does what hb_buffer_add_utf32()
used to do, ie. no validity check on the input at all. add_utf32
now replaces invalid Unicode codepoints with the replacement
character (see below).
* hb_buffer_set_replacement_codepoint()
* hb_buffer_get_replacement_codepoint()
Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when
we detected broken input, we replaced that with (hb_codepoint_t)-1.
This has changed to use U+FFFD now, but can be changed using these
new API.
Overview of changes leading to 0.9.30
Wednesday, July 9, 2014
=====================================
- Update to Unicode 7.0.0:
* New scripts Manichaean and Psalter Pahlavi are shaped using
Arabic shaper.
* All the other new scripts to through the generic shaper for
now.
- Minor Indic improvements.
- Fix graphite2 backend cluster mapping [crasher!]
- API changes:
* New HB_SCRIPT_* values for Unicode 7.0 scripts.
* New function hb_ot_layout_language_get_required_feature().
- Build fixes.
Overview of changes leading to 0.9.29
Thursday, May 29, 2014
=====================================
- Implement cmap in hb-ot-font.h. No variation-selectors yet.
- Myanmar: Allow MedialYa+Asat.
- Various Indic fixes:
* Support most characters in Extended Devanagary and Vedic
Unicode blocks.
* Allow digits and a some punctuation as consonant placeholders.
- Build fixes.
Overview of changes leading to 0.9.28
Monday, April 28, 2014
=====================================
- Unbreak old-spec Indic shaping. (bug 76705)
- Fix shaping of U+17DD and U+0FC6.
- Add HB_NO_MERGE_CLUSTERS build option. NOT to be enabled by default
for shipping libraries. It's an option for further experimentation
right now. When we are sure how to do it properly, we will add
public run-time API for the functionality.
- Build fixes.
Overview of changes leading to 0.9.27
Tuesday, March 18, 2014
=====================================
- Don't use "register" storage class specifier
- Wrap definition of free_langs() with HAVE_ATEXIT
- Add coretext_aat shaper and hb_coretext_face_create() constructor
- If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
- Add Myanmar test case from OpenType Myanmar spec
- Only do fallback Hebrew composition if no GPOS 'mark' available
- Allow bootstrapping without gtk-doc
- Use AM_MISSING_PROG for ragel and git
- Typo in ucdn's Makefile.am
- Improve MemoryBarrier() implementation
Overview of changes leading to 0.9.25
Wednesday, December 4, 2013
=====================================
- Myanmar shaper improvements.
- Avoid font fallback in CoreText backend.
- Additional OpenType language tag mappiongs.
- More aggressive shape-plan caching.
- Build with / require automake 1.13.
- Build with libtool 2.4.2.418 alpha to support ppc64le.
Overview of changes leading to 0.9.24
Tuesday, November 13, 2013
=====================================
- Misc compiler warning fixes with clang.
- No functional changes.
Overview of changes leading to 0.9.23
Monday, October 28, 2013
=====================================
- "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
- Fix (Chain)Context recursion with non-monotone lookup positions.
- Misc Indic bug fixes.
- New Javanese / Buginese shaping, similar to Windows 8.1.
Overview of changes leading to 0.9.22
Thursday, October 3, 2013
=====================================
- Fix use-after-end-of-scope in hb_language_from_string().
- Fix hiding of default_ignorables if font doesn't have space glyph.
- Protect against out-of-range lookup indices.
- API Changes:
* Added hb_ot_layout_table_get_lookup_count()
Overview of changes leading to 0.9.21
Monday, September 16, 2013
=====================================
- Rename gobject-introspection library name from harfbuzz to HarfBuzz.
- Remove (long disabled) hb-old and hb-icu-le test shapers.
- Misc gtk-doc and gobject-introspection annotations.
- Misc fixes.
- API changes:
* Add HB_SET_VALUE_INVALID
General:
- Misc substitute_closure() fixes.
- Build fixes.
Documentation:
- gtk-doc boilerplate integrated. Docs are built now, but
contain no contents. By next release hopefully we have
some content in. Enable using --enable-gtk-doc.
GObject and Introspection:
- Added harfbuzz-gobject library (hb-gobject.h) that has type
bindings for all HarfBuzz objects and enums. Enable using
--with-gobject.
- Added gobject-introspection boilerplate. Nothing useful
right now. Work in progress. Gets enabled automatically if
--with-gobject is used. Override with --disable-introspection.
OpenType shaper:
- Apply 'mark' in Myanmar shaper.
- Don't apply 'dlig' by default.
Uniscribe shaper:
- Support user features.
- Fix loading of fonts that are also installed on the system.
- Fix shaping of Arabic Presentation Forms.
- Fix build with wide chars.
CoreText shaper:
- Support user features.
Source changes:
- hb_face_t code moved to hb-face.h / hb-face.cc.
- Added hb-deprecated.h.
API changes:
- Added HB_DISABLE_DEPRECATED.
- Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
HB_SCRIPT_CANADIAN_SYLLABICS.
- Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
HB_BUFFER_FLAG_DEFAULT.
- Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
support. Changes, apart from minor fixes, include:
[ft] hb_ft_get_glyph_from_name fails for the name of glyph id 0
[uniscribe] Fix buffer allocation
[Indic] Add Javanese config
[OT] Collect requiredFeature only if features are not provided
Fix contextual lookup recursion indexing
Destroy lookups before blobs.
If variation selector is not consumed by cmap, pass it on to GSUB
Skip over multiple variation selectors in a row
util/ansi-print.cc: Use fallback implementation for lround on MSVC
hb-uniscribe.cc: Re-enable build under Visual Studio
Overview of changes leading to 0.9.18
Tuesday, May 28, 2013
=====================================
New build system:
- All unneeded code is all disabled by default,
- Uniscribe and CoreText shapers can be enabled with their --with options,
- icu_le and old shapers cannot be enabled for now,
- glib, freetype, and cairo will be detected automatically.
They can be force on/off'ed with their --with options,
- icu and graphite2 are default off, can be enabled with their --with
options,
Moreover, ICU support is now build into a separate library:
libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
Distros can enable ICU now without every application on earth
getting linked to via libharfbuzz.so.
For distros I recommend that they make sure they are building --with-glib
--with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
And package harfbuzz and harfbuzz-icu separately.
to address issues with NetBSD-6(and earlier)'s fontconfig not being
new enough for pango.
While doing that, also bump freetype2 dependency to current pkgsrc
version.
Suggested by tron in PR 47882
Overview of changes leading to 0.9.17
Monday, May 20, 2013
=====================================
- Build fixes.
- Fix bug in hb_set_get_min().
- Fix regression with Arabic mark positioning / width-zeroing.
Overview of changes leading to 0.9.16
Friday, April 19, 2013
=====================================
- Major speedup in OpenType lookup processing. With the Amiri
Arabic font, this release is over 3x faster than previous
release. All scripts / languages should see this speedup.
- New --num-iterations option for hb-shape / hb-view; useful for
profiling.
Overview of changes leading to 0.9.15
Thursday, April 05, 2013
=====================================
- Build fixes.
- Fix crasher in graphite2 shaper.
- Fix Arabic mark width zeroing regression.
- Don't compose Hangul jamo into Unicode syllables.
Overview of changes leading to 0.9.14
Thursday, March 21, 2013
=====================================
- Build fixes.
- Fix time-consuming sanitize with malicious fonts.
- Implement hb_buffer_deserialize_glyphs() for both json and text.
- Do not ignore Hangul filler characters.
- Indic fixes:
* Fix Malayalam pre-base reordering interaction with post-forms.
* Further adjust ZWJ handling. Should fix known regressions from
0.9.13.
Overview of changes leading to 0.9.13
Thursday, February 25, 2013
=====================================
- Build fixes.
- Ngapi HarfBuzz Hackfest in London (February 2013):
* Fixed all known Indic bugs,
* New Win8-style Myanmar shaper,
* New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
* Smartly ignore Default_Ignorable characters (joiners, etc) wheb
matching GSUB/GPOS lookups,
* Fix 'Phags-Pa U+A872 shaping,
* Fix partial disabling of default-on features,
* Allow disabling of TrueType kerning.
- Fix possible crasher with broken fonts with overlapping tables.
- Removed generated files from git again. So, one needs ragel to
bootstrap from the git tree.
API changes:
- hb_shape() and related APIs now abort if buffer direction is
HB_DIRECTION_INVALID. Previously, hb_shape() was calling
hb_buffer_guess_segment_properties() on the buffer before
shaping. The heuristics in that function are fragile. If the
user really wants the old behvaior, they can call that function
right before calling hb_shape() to get the old behavior.
- hb_blob_create_sub_blob() always creates sub-blob with
HB_MEMORY_MODE_READONLY. See comments for the reason.
Overview of changes leading to 0.9.12
Thursday, January 18, 2013
=====================================
- Build fixes for Sun compiler.
- Minor bug fix.
Overview of changes leading to 0.9.11
Thursday, January 10, 2013
=====================================
- Build fixes.
- Fix GPOS mark attachment with null Anchor offsets.
- [Indic] Fix old-spec reordering of viramas if sequence ends in one.
- Fix multi-threaded shaper data creation crash.
- Add atomic ops for Solaris.
API changes:
- Rename hb_buffer_clear() to hb_buffer_clear_contents().
Overview of changes leading to 0.9.10
Thursday, January 3, 2013
=====================================
- [Indic] Fixed rendering of Malayalam dot-reph
- Updated OT language tags.
- Updated graphite2 backend.
- Improved hb_ot_layout_get_size_params() logic.
- Improve hb-shape/hb-view help output.
- Fixed hb-set.h implementation to not crash.
- Fixed various issues with hb_ot_layout_collect_lookups().
- Various build fixes.
New API:
hb_graphite2_face_get_gr_face()
hb_graphite2_font_get_gr_font()
hb_coretext_face_get_cg_font()
Modified API:
hb_ot_layout_get_size_params()