| Overview of changes leading to 1.1.1 | |
| Wednesday, November 24, 2015 | |
| ==================================== | |
| - Build fixes, specially for hb-coretext. | |
| Overview of changes leading to 1.1.0 | |
| Wednesday, November 18, 2015 | |
| ==================================== | |
| - Implement 'stch' stretch feature for Syriac Abbreviation Mark. | |
| https://github.com/behdad/harfbuzz/issues/141 | |
| - Disable use of decompose_compatibility() callback. | |
| - Implement "shaping" of various Unicode space characters, even | |
| if the font does not support them. | |
| https://github.com/behdad/harfbuzz/issues/153 | |
| - If font does not support U+2011 NO-BREAK HYPHEN, fallback to | |
| U+2010 HYPHEN. | |
| - Changes resulting from libFuzzer continuous fuzzing: | |
| * Reject font tables that need more than 8 edits, | |
| * Bound buffer growth during shaping to 32x, | |
| * Fix assertions and other issues at OOM / buffer max-growth. | |
| - Misc fixes and optimizations. | |
| - API changes: | |
| * All fonts created with hb_font_create() now inherit from | |
| (ie. have parent) hb_font_get_empty(). | |
| Overview of changes leading to 1.0.6 | |
| Thursday, October 15, 2015 | |
| ==================================== | |
| - Reduce max nesting level in OT lookups from 8 to 6. | |
| Should not affect any real font as far as I know. | |
| - Fix memory access issue in ot-font. | |
| - Revert default load-flags of fonts created using hb_ft_font_create() | |
| back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in | |
| last release (1.0.5), but caused major issues, so revert. | |
| https://github.com/behdad/harfbuzz/issues/143 | |
| Overview of changes leading to 1.0.5 | |
| Tuesday, October 13, 2015 | |
| ==================================== | |
| - Fix multiple memory access bugs discovered using libFuzzer. | |
| https://github.com/behdad/harfbuzz/issues/139 | |
| Everyone should upgrade to this version as soon as possible. | |
| We now have continuous fuzzing set up, to avoid issues like | |
| these creeping in again. | |
| - Misc fixes. | |
| - New API: | |
| * hb_font_set_parent(). | |
| * hb_ft_font_[sg]et_load_flags() | |
| The default flags for fonts created using hb_ft_font_create() | |
| has changed to default to FT_LOAD_DEFAULT now. Previously it | |
| was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING. | |
| - API changes: | |
| * Fonts now default to units-per-EM as their scale, instead of 0. | |
| * hb_font_create_sub_font() does NOT make parent font immutable | |
| anymore. hb_font_make_immutable() does. | |
| Overview of changes leading to 1.0.4 | |
| Wednesday, September 30, 2015 | |
| ==================================== | |
| - Fix minor out-of-bounds read error. | |
| Overview of changes leading to 1.0.3 | |
| Tuesday, September 1, 2015 | |
| ==================================== | |
| - Start of user documentation, from Simon Cozens! | |
| - Implement glyph_extents() for TrueType fonts in hb-ot-font. | |
| - Improve GPOS cursive attachments with conflicting lookups. | |
| - More fixes for cluster-level = 1. | |
| - Uniscribe positioning fix. | |
| Overview of changes leading to 1.0.2 | |
| Wednesday, August 19, 2015 | |
| ==================================== | |
| - Fix shaping with cluster-level > 0. | |
| - Fix Uniscribe backend font-size scaling. | |
| - Declare dependencies in harfbuzz.pc. | |
| FreeType is not declared though, to avoid bugs in pkg-config | |
| 0.26 with recursive dependencies. | |
| - Slightly improved debug infrastructure. More to come later. | |
| - Misc build fixes. | |
| Overview of changes leading to 1.0.1 | |
| Monday, July 27, 2015 | |
| ==================================== | |
| - Fix out-of-bounds access in USE shaper. | |
| Overview of changes leading to 1.0.0 | |
| Sunday, July 26, 2015 | |
| ==================================== | |
| - Implement Universal Shaping Engine: | |
| https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm | |
| http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/ | |
| - Bump version to 1.0.0. The soname was NOT bumped. | |
| Overview of changes leading to 0.9.42 | |
| Thursday, July 26, 2015 | |
| ===================================== | |
| - New API to allow for retrieving finer-grained cluster | |
| mappings if the client desires to handle them. Default | |
| behavior is unchanged. | |
| - Fix cluster merging when removing default-ignorables. | |
| - Update to Unicode 8.0 | |
| - hb-graphite2 fixes. | |
| - Misc fixes. | |
| - Removed HB_NO_MERGE_CLUSTERS hack. | |
| - New API: | |
| hb_buffer_cluster_level_t enum | |
| hb_buffer_get_cluster_level() | |
| hb_buffer_set_cluster_level() | |
| hb-shape / hb-view --cluster-level | |
| Overview of changes leading to 0.9.41 | |
| Thursday, June 18, 2015 | |
| ===================================== | |
| - Fix hb-coretext with trailing whitespace in right-to-left. | |
| - New API: hb_buffer_reverse_range(). | |
| - Allow implementing atomic ops in config.h. | |
| - Fix hb_language_t in language bindings. | |
| - Misc fixes. | |
| 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. | |
| 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.26 | |
| Thursday, January 30, 2014 | |
| ===================================== | |
| - Misc fixes. | |
| - Fix application of 'rtlm' feature. | |
| - Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH. | |
| - New header: hb-ot-shape.h | |
| - Uniscribe: fix scratch-buffer accounting. | |
| - Reorder Tai Tham SAKOT to after tone-marks. | |
| - Add Hangul shaper. | |
| - New files: | |
| hb-ot-shape-complex-hangul.cc | |
| hb-ot-shape-complex-hebrew.cc | |
| hb-ot-shape-complex-tibetan.cc | |
| - Disable 'cswh' feature in Arabic shaper. | |
| - Coretext: better handle surrogate pairs. | |
| - Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE. | |
| 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 | |
| Overview of changes leading to 0.9.20 | |
| Thursday, August 29, 2013 | |
| ===================================== | |
| 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. | |
| Overview of changes leading to 0.9.19 | |
| Tuesday, July 16, 2013 | |
| ===================================== | |
| - Build fixes. | |
| - Better handling of multiple variation selectors in a row. | |
| - Pass on variation selector to GSUB if not consumed by cmap. | |
| - Fix undefined memory access. | |
| - Add Javanese config to Indic shaper. | |
| - Misc bug fixes. | |
| 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. | |
| 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 | |
| Friday, 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() | |
| Overview of changes leading to 0.9.9 | |
| Wednesday, December 5, 2012 | |
| ==================================== | |
| - Fix build on Windows. | |
| - Minor improvements. | |
| Overview of changes leading to 0.9.8 | |
| Tuesday, December 4, 2012 | |
| ==================================== | |
| - Actually implement hb_shape_plan_get_shaper (). | |
| - Make UCDB data tables const. | |
| - Lots of internal refactoring in OTLayout tables. | |
| - Flesh out hb_ot_layout_lookup_collect_glyphs(). | |
| New API: | |
| hb_ot_layout_collect_lookups() | |
| hb_ot_layout_get_size_params() | |
| Overview of changes leading to 0.9.7 | |
| Sunday, November 21, 2012 | |
| ==================================== | |
| HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes. | |
| - Fix Arabic contextual joining using pre-context text. | |
| - Fix Sinhala "split matra" mess. | |
| - Fix Khmer shaping with broken fonts. | |
| - Implement Thai "PUA" shaping for old fonts. | |
| - Do NOT route Kharoshthi script through the Indic shaper. | |
| - Disable fallback positioning for Indic and Thai shapers. | |
| - Misc fixes. | |
| hb-shape / hb-view changes: | |
| - Add --text-before and --text-after | |
| - Add --bot / --eot / --preserve-default-ignorables | |
| - hb-shape --output-format=json | |
| New API: | |
| hb_buffer_clear() | |
| hb_buffer_flags_t | |
| HB_BUFFER_FLAGS_DEFAULT | |
| HB_BUFFER_FLAG_BOT | |
| HB_BUFFER_FLAG_EOT | |
| HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES | |
| hb_buffer_set_flags() | |
| hb_buffer_get_flags() | |
| HB_BUFFER_SERIALIZE_FLAGS | |
| hb_buffer_serialize_glyphs() | |
| hb_buffer_deserialize_glyphs() | |
| hb_buffer_serialize_list_formats() | |
| hb_set_add_range() | |
| hb_set_del_range() | |
| hb_set_get_population() | |
| hb_set_next_range() | |
| hb_face_[sg]et_glyph_count() | |
| hb_segment_properties_t | |
| HB_SEGMENT_PROPERTIES_DEFAULT | |
| hb_segment_properties_equal() | |
| hb_segment_properties_hash() | |
| hb_buffer_set_segment_properties() | |
| hb_buffer_get_segment_properties() | |
| hb_ot_layout_glyph_class_t | |
| hb_ot_layout_get_glyph_class() | |
| hb_ot_layout_get_glyphs_in_class() | |
| hb_shape_plan_t | |
| hb_shape_plan_create() | |
| hb_shape_plan_create_cached() | |
| hb_shape_plan_get_empty() | |
| hb_shape_plan_reference() | |
| hb_shape_plan_destroy() | |
| hb_shape_plan_set_user_data() | |
| hb_shape_plan_get_user_data() | |
| hb_shape_plan_execute() | |
| hb_shape_plan_get_shaper() | |
| hb_ot_shape_plan_collect_lookups() | |
| API changes: | |
| - Remove "mask" parameter from hb_buffer_add(). | |
| - Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup(). | |
| - hb-set.h API const correction. | |
| - Renamed hb_set_min/max() to hb_set_get_min/max(). | |
| - Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups(). | |
| - Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties(). | |
| Overview of changes leading to 0.9.6 | |
| Sunday, November 13, 2012 | |
| ==================================== | |
| - Don't clear pre-context text if no new context is provided. | |
| - Fix ReverseChainingSubstLookup, which was totally borked. | |
| - Adjust output format of hb-shape a bit. | |
| - Include config.h.in in-tree. Makes it easier for alternate build systems. | |
| - Fix hb_buffer_set_length(buffer, 0) invalid memory allocation. | |
| - Use ICU LayoutEngine's C API instead of C++. Avoids much headache. | |
| - Drop glyphs for all of Unicode Default_Ignorable characters. | |
| - Misc build fixes. | |
| Arabic shaper: | |
| - Enable 'dlig' and 'mset' features in Arabic shaper. | |
| - Implement 'Phags-pa shaping, improve Mongolian. | |
| Indic shaper: | |
| - Decompose Sinhala split matras the way old HarfBuzz / Pango did. | |
| - Initial support for Consonant Medials. | |
| - Start adding new-style Myanmar shaping. | |
| - Make reph and 'pref' logic introspect the font. | |
| - Route Meetei-Mayek through the Indic shaper. | |
| - Don't apply 'liga' in Indic shaper. | |
| - Improve Malayalam pre-base reordering Ra interaction with Chillus. | |
| Overview of changes leading to 0.9.5 | |
| Sunday, October 14, 2012 | |
| ==================================== | |
| - Synthetic-GSUB Arabic fallback shaping. | |
| - Misc Indic improvements. | |
| - Add build system support for pthread. | |
| - Imported UCDN for in-tree Unicode callbacks implementation. | |
| - Context-aware Arabic joining. | |
| - Misc other fixes. | |
| - New API: | |
| hb_feature_to/from-string() | |
| hb_buffer_[sg]et_content_type() | |
| Overview of changes leading to 0.9.4 | |
| Tuesday, Sep 03, 2012 | |
| ==================================== | |
| - Indic improvements with old-spec Malayalam. | |
| - Better fallback glyph positioning, specially with Thai / Lao marks. | |
| - Implement dotted-circle insertion. | |
| - Better Arabic fallback shaping / ligation. | |
| - Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name. | |
| - Misc fixes. | |
| Overview of changes leading to 0.9.3 | |
| Friday, Aug 18, 2012 | |
| ==================================== | |
| - Fixed fallback mark positioning for left-to-right text. | |
| - Improve mark positioning for the remaining combining classes. | |
| - Unbreak Thai and fallback Arabic shaping. | |
| - Port Arabic shaper to shape-plan caching. | |
| - Use new ICU normalizer functions. | |
| Overview of changes leading to 0.9.2 | |
| Friday, Aug 10, 2012 | |
| ==================================== | |
| - Over a thousand commits! This is the first major release of HarfBuzz. | |
| - HarfBuzz is feature-complete now! It should be in par, or better, than | |
| both Pango's shapers and old HarfBuzz / Qt shapers. | |
| - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer. | |
| - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic, | |
| Sinhala, N'ko, Mongolian, and Mandaic. | |
| - New Thai / Lao shaper. | |
| - Tibetan / Hangul support in the generic shaper. | |
| - Synthetic GDEF support for fonts without a GDEF table. | |
| - Fallback mark positioning for fonts without a GPOS table. | |
| - Unicode normalization shaping heuristic during glyph mapping. | |
| - New experimental Graphite2 backend. | |
| - New Uniscribe backend (primarily for testing). | |
| - New CoreText backend (primarily for testing). | |
| - Major optimization and speedup. | |
| - Test suites and testing infrastructure (work in progress). | |
| - Greatly improved hb-view cmdline tool. | |
| - hb-shape cmdline tool. | |
| - Unicode 6.1 support. | |
| Summary of API changes: | |
| o Changed API: | |
| - Users are expected to only include main header files now (ie. hb.h, | |
| hb-glib.h, hb-ft.h, ...) | |
| - All struct tag names had their initial underscore removed. | |
| Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now. | |
| - All set_user_data() functions now take a "replace" boolean parameter. | |
| - hb_buffer_create() takes zero arguments now. | |
| Use hb_buffer_pre_allocate() to pre-allocate. | |
| - hb_buffer_add_utf*() now accept -1 for length parameteres, | |
| meaning "nul-terminated". | |
| - hb_direction_t enum values changed. | |
| - All *_from_string() APIs now take a length parameter to allow for | |
| non-nul-terminated strings. A -1 length means "nul-terminated". | |
| - Typedef for hb_language_t changed. | |
| - hb_get_table_func_t renamed to hb_reference_table_func_t. | |
| - hb_ot_layout_table_choose_script() | |
| - Various renames in hb-unicode.h. | |
| o New API: | |
| - hb_buffer_guess_properties() | |
| Automatically called by hb_shape(). | |
| - hb_buffer_normalize_glyphs() | |
| - hb_tag_from_string() | |
| - hb-coretext.h | |
| - hb-uniscribe.h | |
| - hb_face_reference_blob() | |
| - hb_face_[sg]et_index() | |
| - hb_face_set_upem() | |
| - hb_font_get_glyph_name_func_t | |
| hb_font_get_glyph_from_name_func_t | |
| hb_font_funcs_set_glyph_name_func() | |
| hb_font_funcs_set_glyph_from_name_func() | |
| hb_font_get_glyph_name() | |
| hb_font_get_glyph_from_name() | |
| hb_font_glyph_to_string() | |
| hb_font_glyph_from_string() | |
| - hb_font_set_funcs_data() | |
| - hb_ft_font_set_funcs() | |
| - hb_ft_font_get_face() | |
| - hb-gobject.h (work in progress) | |
| - hb_ot_shape_glyphs_closure() | |
| hb_ot_layout_substitute_closure_lookup() | |
| - hb-set.h | |
| - hb_shape_full() | |
| - hb_unicode_combining_class_t | |
| - hb_unicode_compose_func_t | |
| hb_unicode_decompose_func_t | |
| hb_unicode_decompose_compatibility_func_t | |
| hb_unicode_funcs_set_compose_func() | |
| hb_unicode_funcs_set_decompose_func() | |
| hb_unicode_funcs_set_decompose_compatibility_func() | |
| hb_unicode_compose() | |
| hb_unicode_decompose() | |
| hb_unicode_decompose_compatibility() | |
| o Removed API: | |
| - hb_ft_get_font_funcs() | |
| - hb_ot_layout_substitute_start() | |
| hb_ot_layout_substitute_lookup() | |
| hb_ot_layout_substitute_finish() | |
| hb_ot_layout_position_start() | |
| hb_ot_layout_position_lookup() | |
| hb_ot_layout_position_finish() | |
| Overview of changes leading to 0.6.0 | |
| Friday, May 27, 2011 | |
| ==================================== | |
| - Vertical text support in GPOS | |
| - Almost all API entries have unit tests now, under test/ | |
| - All thread-safety issues are fixed | |
| Summary of API changes follows. | |
| * Simple Types API: | |
| o New API: | |
| HB_LANGUAGE_INVALID | |
| hb_language_get_default() | |
| hb_direction_to_string() | |
| hb_direction_from_string() | |
| hb_script_get_horizontal_direction() | |
| HB_UNTAG() | |
| o Renamed API: | |
| hb_category_t renamed to hb_unicode_general_category_t | |
| o Changed API: | |
| hb_language_t is a typed pointers now | |
| o Removed API: | |
| HB_TAG_STR() | |
| * Use ISO 15924 tags for hb_script_t: | |
| o New API: | |
| hb_script_from_iso15924_tag() | |
| hb_script_to_iso15924_tag() | |
| hb_script_from_string() | |
| o Changed API: | |
| HB_SCRIPT_* enum members changed value. | |
| * Buffer API streamlined: | |
| o New API: | |
| hb_buffer_reset() | |
| hb_buffer_set_length() | |
| hb_buffer_allocation_successful() | |
| o Renamed API: | |
| hb_buffer_ensure() renamed to hb_buffer_pre_allocate() | |
| hb_buffer_add_glyph() renamed to hb_buffer_add() | |
| o Removed API: | |
| hb_buffer_clear() | |
| hb_buffer_clear_positions() | |
| o Changed API: | |
| hb_buffer_get_glyph_infos() takes an out length parameter now | |
| hb_buffer_get_glyph_positions() takes an out length parameter now | |
| * Blob API streamlined: | |
| o New API: | |
| hb_blob_get_data() | |
| hb_blob_get_data_writable() | |
| o Renamed API: | |
| hb_blob_create_empty() renamed to hb_blob_get_empty() | |
| o Removed API: | |
| hb_blob_lock() | |
| hb_blob_unlock() | |
| hb_blob_is_writable() | |
| hb_blob_try_writable() | |
| o Changed API: | |
| hb_blob_create() takes user_data before destroy now | |
| * Unicode functions API: | |
| o Unicode function vectors can subclass other unicode function vectors now. | |
| Unimplemented callbacks in the subclass automatically chainup to the parent. | |
| o All hb_unicode_funcs_t callbacks take a user_data now. Their setters | |
| take a user_data and its respective destroy callback. | |
| o New API: | |
| hb_unicode_funcs_get_empty() | |
| hb_unicode_funcs_get_default() | |
| hb_unicode_funcs_get_parent() | |
| o Changed API: | |
| hb_unicode_funcs_create() now takes a parent_funcs. | |
| o Removed func getter functions: | |
| hb_unicode_funcs_get_mirroring_func() | |
| hb_unicode_funcs_get_general_category_func() | |
| hb_unicode_funcs_get_script_func() | |
| hb_unicode_funcs_get_combining_class_func() | |
| hb_unicode_funcs_get_eastasian_width_func() | |
| * Face API: | |
| o Renamed API: | |
| hb_face_get_table() renamed to hb_face_reference_table() | |
| hb_face_create_for_data() renamed to hb_face_create() | |
| o Changed API: | |
| hb_face_create_for_tables() takes user_data before destroy now | |
| hb_face_reference_table() returns empty blob instead of NULL | |
| hb_get_table_func_t accepts the face as first parameter now | |
| * Font API: | |
| o Fonts can subclass other fonts now. Unimplemented callbacks in the | |
| subclass automatically chainup to the parent. When chaining up, | |
| scale is adjusted if the parent font has a different scale. | |
| o All hb_font_funcs_t callbacks take a user_data now. Their setters | |
| take a user_data and its respective destroy callback. | |
| o New API: | |
| hb_font_get_parent() | |
| hb_font_funcs_get_empty() | |
| hb_font_create_sub_font() | |
| o Removed API: | |
| hb_font_funcs_copy() | |
| hb_font_unset_funcs() | |
| o Removed func getter functions: | |
| hb_font_funcs_get_glyph_func() | |
| hb_font_funcs_get_glyph_advance_func() | |
| hb_font_funcs_get_glyph_extents_func() | |
| hb_font_funcs_get_contour_point_func() | |
| hb_font_funcs_get_kerning_func() | |
| o Changed API: | |
| hb_font_create() takes a face and references it now | |
| hb_font_set_funcs() takes user_data before destroy now | |
| hb_font_set_scale() accepts signed integers now | |
| hb_font_get_contour_point_func_t now takes glyph first, then point_index | |
| hb_font_get_glyph_func_t returns a success boolean now | |
| * Changed object model: | |
| o All object types have a _get_empty() now: | |
| hb_blob_get_empty() | |
| hb_buffer_get_empty() | |
| hb_face_get_empty() | |
| hb_font_get_empty() | |
| hb_font_funcs_get_empty() | |
| hb_unicode_funcs_get_empty() | |
| o Added _set_user_data() and _get_user_data() for all object types: | |
| hb_blob_get_user_data() | |
| hb_blob_set_user_data() | |
| hb_buffer_get_user_data() | |
| hb_buffer_set_user_data() | |
| hb_face_get_user_data() | |
| hb_face_set_user_data() | |
| hb_font_funcs_get_user_data() | |
| hb_font_funcs_set_user_data() | |
| hb_font_get_user_data() | |
| hb_font_set_user_data() | |
| hb_unicode_funcs_get_user_data() | |
| hb_unicode_funcs_set_user_data() | |
| o Removed the _get_reference_count() from all object types: | |
| hb_blob_get_reference_count() | |
| hb_buffer_get_reference_count() | |
| hb_face_get_reference_count() | |
| hb_font_funcs_get_reference_count() | |
| hb_font_get_reference_count() | |
| hb_unicode_funcs_get_reference_count() | |
| o Added _make_immutable() and _is_immutable() for all object types except for buffer: | |
| hb_blob_make_immutable() | |
| hb_blob_is_immutable() | |
| hb_face_make_immutable() | |
| hb_face_is_immutable() | |
| * Changed API for vertical text support | |
| o The following callbacks where removed: | |
| hb_font_get_glyph_advance_func_t | |
| hb_font_get_kerning_func_t | |
| o The following new callbacks added instead: | |
| hb_font_get_glyph_h_advance_func_t | |
| hb_font_get_glyph_v_advance_func_t | |
| hb_font_get_glyph_h_origin_func_t | |
| hb_font_get_glyph_v_origin_func_t | |
| hb_font_get_glyph_h_kerning_func_t | |
| hb_font_get_glyph_v_kerning_func_t | |
| o The following API removed as such: | |
| hb_font_funcs_set_glyph_advance_func() | |
| hb_font_funcs_set_kerning_func() | |
| hb_font_get_glyph_advance() | |
| hb_font_get_kerning() | |
| o New API added instead: | |
| hb_font_funcs_set_glyph_h_advance_func() | |
| hb_font_funcs_set_glyph_v_advance_func() | |
| hb_font_funcs_set_glyph_h_origin_func() | |
| hb_font_funcs_set_glyph_v_origin_func() | |
| hb_font_funcs_set_glyph_h_kerning_func() | |
| hb_font_funcs_set_glyph_v_kerning_func() | |
| hb_font_get_glyph_h_advance() | |
| hb_font_get_glyph_v_advance() | |
| hb_font_get_glyph_h_origin() | |
| hb_font_get_glyph_v_origin() | |
| hb_font_get_glyph_h_kerning() | |
| hb_font_get_glyph_v_kerning() | |
| o The following higher-leve API added for convenience: | |
| hb_font_get_glyph_advance_for_direction() | |
| hb_font_get_glyph_origin_for_direction() | |
| hb_font_add_glyph_origin_for_direction() | |
| hb_font_subtract_glyph_origin_for_direction() | |
| hb_font_get_glyph_kerning_for_direction() | |
| hb_font_get_glyph_extents_for_origin() | |
| hb_font_get_glyph_contour_point_for_origin() | |
| * OpenType Layout API: | |
| o New API: | |
| hb_ot_layout_position_start() | |
| hb_ot_layout_substitute_start() | |
| hb_ot_layout_substitute_finish() | |
| * Glue code: | |
| o New API: | |
| hb_glib_script_to_script() | |
| hb_glib_script_from_script() | |
| hb_icu_script_to_script() | |
| hb_icu_script_from_script() | |
| * Version API added: | |
| o New API: | |
| HB_VERSION_MAJOR | |
| HB_VERSION_MINOR | |
| HB_VERSION_MICRO | |
| HB_VERSION_STRING | |
| HB_VERSION_CHECK() | |
| hb_version() | |
| hb_version_string() | |
| hb_version_check() | |