1 Overview of changes leading to 0.9.35
2 Saturday, August 13, 2014
3 =====================================
5 - Fix major shape-plan caching bug when more than one shaper were
6 provided to hb_shape_full() (as exercised by XeTeX).
7 http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html
8 - Fix Arabic fallback shaping regression. This was broken in 0.9.32.
9 - Major hb-coretext fixes. That backend is complete now, including
10 respecing buffer direction and language, down to vertical writing.
11 - Build fixes for Windows CE. Should build fine now.
13 Use atexit() only if it's safe to call from shared library
14 https://bugs.freedesktop.org/show_bug.cgi?id=82246
15 Mandaic had errors in its Unicode Joining_Type
16 https://bugs.freedesktop.org/show_bug.cgi?id=82306
19 * hb_buffer_clear_contents() does not reset buffer flags now.
21 After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
22 need to set flags for different pieces of text. The flags now
23 are something the client sets up once, depending on how it
24 actually uses the buffer. As such, don't clear it in
27 I don't expect any changes to be needed to any existing client.
30 Overview of changes leading to 0.9.34
31 Saturday, August 2, 2014
32 =====================================
34 - hb_feature_from_string() now accepts CSS font-feature-settings format.
35 - As a result, hb-shape / hb-view --features also accept CSS-style strings.
36 Eg, "'liga' off" is accepted now.
37 - Add old-spec Myanmar shaper:
38 https://bugs.freedesktop.org/show_bug.cgi?id=81775
39 - Don't apply 'calt' in Hangul shaper.
40 - Fix mark advance zeroing for Hebrew shaper:
41 https://bugs.freedesktop.org/show_bug.cgi?id=76767
42 - Implement Windows-1256 custom Arabic shaping. Only built on Windows,
43 and requires help from get_glyph(). Used by Firefox.
44 https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
45 - Disable 'liga' in vertical text.
49 * Make HB_BUFFER_FLAG_BOT/EOT easier to use.
51 Previously, we expected users to provide BOT/EOT flags when the
52 text *segment* was at paragraph boundaries. This meant that for
53 clients that provide full paragraph to HarfBuzz (eg. Pango), they
56 hb_buffer_set_flags (hb_buffer,
57 (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
58 (item_offset + item_length == paragraph_length ?
59 HB_BUFFER_FLAG_EOT : 0));
61 hb_buffer_add_utf8 (hb_buffer,
62 paragraph_text, paragraph_length,
63 item_offset, item_length);
65 After this change such clients can simply say:
67 hb_buffer_set_flags (hb_buffer,
68 HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
70 hb_buffer_add_utf8 (hb_buffer,
71 paragraph_text, paragraph_length,
72 item_offset, item_length);
74 Ie, HarfBuzz itself checks whether the segment is at the beginning/end
75 of the paragraph. Clients that only pass item-at-a-time to HarfBuzz
76 continue not setting any flags whatsoever.
78 Another way to put it is: if there's pre-context text in the buffer,
79 HarfBuzz ignores the BOT flag. If there's post-context, it ignores
83 Overview of changes leading to 0.9.33
84 Tuesday, July 22, 2014
85 =====================================
87 - Turn off ARabic 'cswh' feature that was accidentally turned on.
88 - Add HB_TAG_MAX_SIGNED.
89 - Make hb_face_make_immutable() really make face immutable!
90 - Windows build fixes.
93 Overview of changes leading to 0.9.32
94 Thursday, July 17, 2014
95 =====================================
97 - Apply Arabic shaping features in spec order exactly.
98 - Another fix for Mongolian free variation selectors.
99 - For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt'
101 - Minor adjustment to U+FFFD logic.
102 - Fix hb-coretext build.
105 Overview of changes leading to 0.9.31
106 Wednesday, July 16, 2014
107 =====================================
109 - Only accept valid UTF-8/16/32; we missed many cases before.
110 - Better shaping of invalid UTF-8/16/32. Falls back to
111 U+FFFD REPLACEMENT CHARACTER now.
112 - With all changes in this release, the buffer will contain fully
113 valid Unicode after hb_buffer_add_utf8/16/32 no matter how
114 broken the input is. This can be overriden though. See below.
115 - Fix Mongolian Variation Selectors for fonts without GDEF.
116 - Fix minor invalid buffer access.
117 - Accept zh-Hant and zh-Hans language tags. hb_ot_tag_to_language()
118 now uses these instead of private tags.
121 * hb_buffer_add_codepoints(). This does what hb_buffer_add_utf32()
122 used to do, ie. no validity check on the input at all. add_utf32
123 now replaces invalid Unicode codepoints with the replacement
124 character (see below).
125 * hb_buffer_set_replacement_codepoint()
126 * hb_buffer_get_replacement_codepoint()
127 Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when
128 we detected broken input, we replaced that with (hb_codepoint_t)-1.
129 This has changed to use U+FFFD now, but can be changed using these
133 Overview of changes leading to 0.9.30
134 Wednesday, July 9, 2014
135 =====================================
137 - Update to Unicode 7.0.0:
138 * New scripts Manichaean and Psalter Pahlavi are shaped using
140 * All the other new scripts to through the generic shaper for
142 - Minor Indic improvements.
143 - Fix graphite2 backend cluster mapping [crasher!]
145 * New HB_SCRIPT_* values for Unicode 7.0 scripts.
146 * New function hb_ot_layout_language_get_required_feature().
150 Overview of changes leading to 0.9.29
151 Thursday, May 29, 2014
152 =====================================
154 - Implement cmap in hb-ot-font.h. No variation-selectors yet.
155 - Myanmar: Allow MedialYa+Asat.
156 - Various Indic fixes:
157 * Support most characters in Extended Devanagary and Vedic
159 * Allow digits and a some punctuation as consonant placeholders.
163 Overview of changes leading to 0.9.28
164 Monday, April 28, 2014
165 =====================================
167 - Unbreak old-spec Indic shaping. (bug 76705)
168 - Fix shaping of U+17DD and U+0FC6.
169 - Add HB_NO_MERGE_CLUSTERS build option. NOT to be enabled by default
170 for shipping libraries. It's an option for further experimentation
171 right now. When we are sure how to do it properly, we will add
172 public run-time API for the functionality.
176 Overview of changes leading to 0.9.27
177 Tuesday, March 18, 2014
178 =====================================
180 - Don't use "register" storage class specifier
181 - Wrap definition of free_langs() with HAVE_ATEXIT
182 - Add coretext_aat shaper and hb_coretext_face_create() constructor
183 - If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
184 - Add Myanmar test case from OpenType Myanmar spec
185 - Only do fallback Hebrew composition if no GPOS 'mark' available
186 - Allow bootstrapping without gtk-doc
187 - Use AM_MISSING_PROG for ragel and git
188 - Typo in ucdn's Makefile.am
189 - Improve MemoryBarrier() implementation
192 Overview of changes leading to 0.9.26
193 Thursday, January 30, 2014
194 =====================================
197 - Fix application of 'rtlm' feature.
198 - Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH.
199 - New header: hb-ot-shape.h
200 - Uniscribe: fix scratch-buffer accounting.
201 - Reorder Tai Tham SAKOT to after tone-marks.
204 hb-ot-shape-complex-hangul.cc
205 hb-ot-shape-complex-hebrew.cc
206 hb-ot-shape-complex-tibetan.cc
207 - Disable 'cswh' feature in Arabic shaper.
208 - Coretext: better handle surrogate pairs.
209 - Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE.
212 Overview of changes leading to 0.9.25
213 Wednesday, December 4, 2013
214 =====================================
216 - Myanmar shaper improvements.
217 - Avoid font fallback in CoreText backend.
218 - Additional OpenType language tag mappiongs.
219 - More aggressive shape-plan caching.
220 - Build with / require automake 1.13.
221 - Build with libtool 2.4.2.418 alpha to support ppc64le.
224 Overview of changes leading to 0.9.24
225 Tuesday, November 13, 2013
226 =====================================
228 - Misc compiler warning fixes with clang.
229 - No functional changes.
232 Overview of changes leading to 0.9.23
233 Monday, October 28, 2013
234 =====================================
236 - "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
237 - Fix (Chain)Context recursion with non-monotone lookup positions.
238 - Misc Indic bug fixes.
239 - New Javanese / Buginese shaping, similar to Windows 8.1.
242 Overview of changes leading to 0.9.22
243 Thursday, October 3, 2013
244 =====================================
246 - Fix use-after-end-of-scope in hb_language_from_string().
247 - Fix hiding of default_ignorables if font doesn't have space glyph.
248 - Protect against out-of-range lookup indices.
252 * Added hb_ot_layout_table_get_lookup_count()
255 Overview of changes leading to 0.9.21
256 Monday, September 16, 2013
257 =====================================
259 - Rename gobject-introspection library name from harfbuzz to HarfBuzz.
260 - Remove (long disabled) hb-old and hb-icu-le test shapers.
261 - Misc gtk-doc and gobject-introspection annotations.
265 * Add HB_SET_VALUE_INVALID
267 Overview of changes leading to 0.9.20
268 Thursday, August 29, 2013
269 =====================================
272 - Misc substitute_closure() fixes.
276 - gtk-doc boilerplate integrated. Docs are built now, but
277 contain no contents. By next release hopefully we have
278 some content in. Enable using --enable-gtk-doc.
280 GObject and Introspection:
281 - Added harfbuzz-gobject library (hb-gobject.h) that has type
282 bindings for all HarfBuzz objects and enums. Enable using
284 - Added gobject-introspection boilerplate. Nothing useful
285 right now. Work in progress. Gets enabled automatically if
286 --with-gobject is used. Override with --disable-introspection.
289 - Apply 'mark' in Myanmar shaper.
290 - Don't apply 'dlig' by default.
293 - Support user features.
294 - Fix loading of fonts that are also installed on the system.
295 - Fix shaping of Arabic Presentation Forms.
296 - Fix build with wide chars.
299 - Support user features.
302 - hb_face_t code moved to hb-face.h / hb-face.cc.
303 - Added hb-deprecated.h.
306 - Added HB_DISABLE_DEPRECATED.
307 - Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
308 HB_SCRIPT_CANADIAN_SYLLABICS.
309 - Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
310 HB_BUFFER_FLAG_DEFAULT.
311 - Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
312 HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
315 Overview of changes leading to 0.9.19
316 Tuesday, July 16, 2013
317 =====================================
320 - Better handling of multiple variation selectors in a row.
321 - Pass on variation selector to GSUB if not consumed by cmap.
322 - Fix undefined memory access.
323 - Add Javanese config to Indic shaper.
326 Overview of changes leading to 0.9.18
327 Tuesday, May 28, 2013
328 =====================================
332 - All unneeded code is all disabled by default,
334 - Uniscribe and CoreText shapers can be enabled with their --with options,
336 - icu_le and old shapers cannot be enabled for now,
338 - glib, freetype, and cairo will be detected automatically.
339 They can be force on/off'ed with their --with options,
341 - icu and graphite2 are default off, can be enabled with their --with
344 Moreover, ICU support is now build into a separate library:
345 libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
346 Distros can enable ICU now without every application on earth
347 getting linked to via libharfbuzz.so.
349 For distros I recommend that they make sure they are building --with-glib
350 --with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
351 And package harfbuzz and harfbuzz-icu separately.
354 Overview of changes leading to 0.9.17
356 =====================================
359 - Fix bug in hb_set_get_min().
360 - Fix regression with Arabic mark positioning / width-zeroing.
362 Overview of changes leading to 0.9.16
363 Friday, April 19, 2013
364 =====================================
366 - Major speedup in OpenType lookup processing. With the Amiri
367 Arabic font, this release is over 3x faster than previous
368 release. All scripts / languages should see this speedup.
370 - New --num-iterations option for hb-shape / hb-view; useful for
373 Overview of changes leading to 0.9.15
374 Friday, April 05, 2013
375 =====================================
378 - Fix crasher in graphite2 shaper.
379 - Fix Arabic mark width zeroing regression.
380 - Don't compose Hangul jamo into Unicode syllables.
383 Overview of changes leading to 0.9.14
384 Thursday, March 21, 2013
385 =====================================
388 - Fix time-consuming sanitize with malicious fonts.
389 - Implement hb_buffer_deserialize_glyphs() for both json and text.
390 - Do not ignore Hangul filler characters.
392 * Fix Malayalam pre-base reordering interaction with post-forms.
393 * Further adjust ZWJ handling. Should fix known regressions from
397 Overview of changes leading to 0.9.13
398 Thursday, February 25, 2013
399 =====================================
402 - Ngapi HarfBuzz Hackfest in London (February 2013):
403 * Fixed all known Indic bugs,
404 * New Win8-style Myanmar shaper,
405 * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
406 * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
407 matching GSUB/GPOS lookups,
408 * Fix 'Phags-Pa U+A872 shaping,
409 * Fix partial disabling of default-on features,
410 * Allow disabling of TrueType kerning.
411 - Fix possible crasher with broken fonts with overlapping tables.
412 - Removed generated files from git again. So, one needs ragel to
413 bootstrap from the git tree.
416 - hb_shape() and related APIs now abort if buffer direction is
417 HB_DIRECTION_INVALID. Previously, hb_shape() was calling
418 hb_buffer_guess_segment_properties() on the buffer before
419 shaping. The heuristics in that function are fragile. If the
420 user really wants the old behvaior, they can call that function
421 right before calling hb_shape() to get the old behavior.
422 - hb_blob_create_sub_blob() always creates sub-blob with
423 HB_MEMORY_MODE_READONLY. See comments for the reason.
426 Overview of changes leading to 0.9.12
427 Thursday, January 18, 2013
428 =====================================
430 - Build fixes for Sun compiler.
433 Overview of changes leading to 0.9.11
434 Thursday, January 10, 2013
435 =====================================
438 - Fix GPOS mark attachment with null Anchor offsets.
439 - [Indic] Fix old-spec reordering of viramas if sequence ends in one.
440 - Fix multi-threaded shaper data creation crash.
441 - Add atomic ops for Solaris.
444 - Rename hb_buffer_clear() to hb_buffer_clear_contents().
447 Overview of changes leading to 0.9.10
448 Thursday, January 3, 2013
449 =====================================
451 - [Indic] Fixed rendering of Malayalam dot-reph
452 - Updated OT language tags.
453 - Updated graphite2 backend.
454 - Improved hb_ot_layout_get_size_params() logic.
455 - Improve hb-shape/hb-view help output.
456 - Fixed hb-set.h implementation to not crash.
457 - Fixed various issues with hb_ot_layout_collect_lookups().
458 - Various build fixes.
462 hb_graphite2_face_get_gr_face()
463 hb_graphite2_font_get_gr_font()
464 hb_coretext_face_get_cg_font()
468 hb_ot_layout_get_size_params()
471 Overview of changes leading to 0.9.9
472 Wednesday, December 5, 2012
473 ====================================
475 - Fix build on Windows.
476 - Minor improvements.
479 Overview of changes leading to 0.9.8
480 Tuesday, December 4, 2012
481 ====================================
484 - Actually implement hb_shape_plan_get_shaper ().
485 - Make UCDB data tables const.
486 - Lots of internal refactoring in OTLayout tables.
487 - Flesh out hb_ot_layout_lookup_collect_glyphs().
491 hb_ot_layout_collect_lookups()
492 hb_ot_layout_get_size_params()
495 Overview of changes leading to 0.9.7
496 Sunday, November 21, 2012
497 ====================================
500 HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
502 - Fix Arabic contextual joining using pre-context text.
503 - Fix Sinhala "split matra" mess.
504 - Fix Khmer shaping with broken fonts.
505 - Implement Thai "PUA" shaping for old fonts.
506 - Do NOT route Kharoshthi script through the Indic shaper.
507 - Disable fallback positioning for Indic and Thai shapers.
511 hb-shape / hb-view changes:
513 - Add --text-before and --text-after
514 - Add --bot / --eot / --preserve-default-ignorables
515 - hb-shape --output-format=json
524 HB_BUFFER_FLAGS_DEFAULT
527 HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
529 hb_buffer_set_flags()
530 hb_buffer_get_flags()
532 HB_BUFFER_SERIALIZE_FLAGS
533 hb_buffer_serialize_glyphs()
534 hb_buffer_deserialize_glyphs()
535 hb_buffer_serialize_list_formats()
539 hb_set_get_population()
542 hb_face_[sg]et_glyph_count()
544 hb_segment_properties_t
545 HB_SEGMENT_PROPERTIES_DEFAULT
546 hb_segment_properties_equal()
547 hb_segment_properties_hash()
549 hb_buffer_set_segment_properties()
550 hb_buffer_get_segment_properties()
552 hb_ot_layout_glyph_class_t
553 hb_ot_layout_get_glyph_class()
554 hb_ot_layout_get_glyphs_in_class()
557 hb_shape_plan_create()
558 hb_shape_plan_create_cached()
559 hb_shape_plan_get_empty()
560 hb_shape_plan_reference()
561 hb_shape_plan_destroy()
562 hb_shape_plan_set_user_data()
563 hb_shape_plan_get_user_data()
564 hb_shape_plan_execute()
565 hb_shape_plan_get_shaper()
567 hb_ot_shape_plan_collect_lookups()
572 - Remove "mask" parameter from hb_buffer_add().
573 - Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
574 - hb-set.h API const correction.
575 - Renamed hb_set_min/max() to hb_set_get_min/max().
576 - Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
577 - Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
581 Overview of changes leading to 0.9.6
582 Sunday, November 13, 2012
583 ====================================
585 - Don't clear pre-context text if no new context is provided.
586 - Fix ReverseChainingSubstLookup, which was totally borked.
587 - Adjust output format of hb-shape a bit.
588 - Include config.h.in in-tree. Makes it easier for alternate build systems.
589 - Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
590 - Use ICU LayoutEngine's C API instead of C++. Avoids much headache.
591 - Drop glyphs for all of Unicode Default_Ignorable characters.
595 - Enable 'dlig' and 'mset' features in Arabic shaper.
596 - Implement 'Phags-pa shaping, improve Mongolian.
599 - Decompose Sinhala split matras the way old HarfBuzz / Pango did.
600 - Initial support for Consonant Medials.
601 - Start adding new-style Myanmar shaping.
602 - Make reph and 'pref' logic introspect the font.
603 - Route Meetei-Mayek through the Indic shaper.
604 - Don't apply 'liga' in Indic shaper.
605 - Improve Malayalam pre-base reordering Ra interaction with Chillus.
609 Overview of changes leading to 0.9.5
610 Sunday, October 14, 2012
611 ====================================
613 - Synthetic-GSUB Arabic fallback shaping.
615 - Misc Indic improvements.
617 - Add build system support for pthread.
619 - Imported UCDN for in-tree Unicode callbacks implementation.
621 - Context-aware Arabic joining.
627 hb_feature_to/from-string()
628 hb_buffer_[sg]et_content_type()
632 Overview of changes leading to 0.9.4
633 Tuesday, Sep 03, 2012
634 ====================================
636 - Indic improvements with old-spec Malayalam.
638 - Better fallback glyph positioning, specially with Thai / Lao marks.
640 - Implement dotted-circle insertion.
642 - Better Arabic fallback shaping / ligation.
644 - Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name.
650 Overview of changes leading to 0.9.3
652 ====================================
654 - Fixed fallback mark positioning for left-to-right text.
656 - Improve mark positioning for the remaining combining classes.
658 - Unbreak Thai and fallback Arabic shaping.
660 - Port Arabic shaper to shape-plan caching.
662 - Use new ICU normalizer functions.
666 Overview of changes leading to 0.9.2
668 ====================================
670 - Over a thousand commits! This is the first major release of HarfBuzz.
672 - HarfBuzz is feature-complete now! It should be in par, or better, than
673 both Pango's shapers and old HarfBuzz / Qt shapers.
675 - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
677 - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
678 Sinhala, N'ko, Mongolian, and Mandaic.
680 - New Thai / Lao shaper.
682 - Tibetan / Hangul support in the generic shaper.
684 - Synthetic GDEF support for fonts without a GDEF table.
686 - Fallback mark positioning for fonts without a GPOS table.
688 - Unicode normalization shaping heuristic during glyph mapping.
690 - New experimental Graphite2 backend.
692 - New Uniscribe backend (primarily for testing).
694 - New CoreText backend (primarily for testing).
696 - Major optimization and speedup.
698 - Test suites and testing infrastructure (work in progress).
700 - Greatly improved hb-view cmdline tool.
702 - hb-shape cmdline tool.
704 - Unicode 6.1 support.
706 Summary of API changes:
710 - Users are expected to only include main header files now (ie. hb.h,
711 hb-glib.h, hb-ft.h, ...)
713 - All struct tag names had their initial underscore removed.
714 Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
716 - All set_user_data() functions now take a "replace" boolean parameter.
718 - hb_buffer_create() takes zero arguments now.
719 Use hb_buffer_pre_allocate() to pre-allocate.
721 - hb_buffer_add_utf*() now accept -1 for length parameteres,
722 meaning "nul-terminated".
724 - hb_direction_t enum values changed.
726 - All *_from_string() APIs now take a length parameter to allow for
727 non-nul-terminated strings. A -1 length means "nul-terminated".
729 - Typedef for hb_language_t changed.
731 - hb_get_table_func_t renamed to hb_reference_table_func_t.
733 - hb_ot_layout_table_choose_script()
735 - Various renames in hb-unicode.h.
739 - hb_buffer_guess_properties()
740 Automatically called by hb_shape().
742 - hb_buffer_normalize_glyphs()
744 - hb_tag_from_string()
750 - hb_face_reference_blob()
751 - hb_face_[sg]et_index()
754 - hb_font_get_glyph_name_func_t
755 hb_font_get_glyph_from_name_func_t
756 hb_font_funcs_set_glyph_name_func()
757 hb_font_funcs_set_glyph_from_name_func()
758 hb_font_get_glyph_name()
759 hb_font_get_glyph_from_name()
760 hb_font_glyph_to_string()
761 hb_font_glyph_from_string()
763 - hb_font_set_funcs_data()
765 - hb_ft_font_set_funcs()
766 - hb_ft_font_get_face()
768 - hb-gobject.h (work in progress)
770 - hb_ot_shape_glyphs_closure()
771 hb_ot_layout_substitute_closure_lookup()
777 - hb_unicode_combining_class_t
779 - hb_unicode_compose_func_t
780 hb_unicode_decompose_func_t
781 hb_unicode_decompose_compatibility_func_t
782 hb_unicode_funcs_set_compose_func()
783 hb_unicode_funcs_set_decompose_func()
784 hb_unicode_funcs_set_decompose_compatibility_func()
786 hb_unicode_decompose()
787 hb_unicode_decompose_compatibility()
791 - hb_ft_get_font_funcs()
793 - hb_ot_layout_substitute_start()
794 hb_ot_layout_substitute_lookup()
795 hb_ot_layout_substitute_finish()
796 hb_ot_layout_position_start()
797 hb_ot_layout_position_lookup()
798 hb_ot_layout_position_finish()
802 Overview of changes leading to 0.6.0
804 ====================================
806 - Vertical text support in GPOS
807 - Almost all API entries have unit tests now, under test/
808 - All thread-safety issues are fixed
810 Summary of API changes follows.
817 hb_language_get_default()
818 hb_direction_to_string()
819 hb_direction_from_string()
820 hb_script_get_horizontal_direction()
824 hb_category_t renamed to hb_unicode_general_category_t
827 hb_language_t is a typed pointers now
833 * Use ISO 15924 tags for hb_script_t:
836 hb_script_from_iso15924_tag()
837 hb_script_to_iso15924_tag()
838 hb_script_from_string()
841 HB_SCRIPT_* enum members changed value.
844 * Buffer API streamlined:
848 hb_buffer_set_length()
849 hb_buffer_allocation_successful()
852 hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
853 hb_buffer_add_glyph() renamed to hb_buffer_add()
857 hb_buffer_clear_positions()
860 hb_buffer_get_glyph_infos() takes an out length parameter now
861 hb_buffer_get_glyph_positions() takes an out length parameter now
864 * Blob API streamlined:
868 hb_blob_get_data_writable()
871 hb_blob_create_empty() renamed to hb_blob_get_empty()
876 hb_blob_is_writable()
877 hb_blob_try_writable()
880 hb_blob_create() takes user_data before destroy now
883 * Unicode functions API:
885 o Unicode function vectors can subclass other unicode function vectors now.
886 Unimplemented callbacks in the subclass automatically chainup to the parent.
888 o All hb_unicode_funcs_t callbacks take a user_data now. Their setters
889 take a user_data and its respective destroy callback.
892 hb_unicode_funcs_get_empty()
893 hb_unicode_funcs_get_default()
894 hb_unicode_funcs_get_parent()
897 hb_unicode_funcs_create() now takes a parent_funcs.
899 o Removed func getter functions:
900 hb_unicode_funcs_get_mirroring_func()
901 hb_unicode_funcs_get_general_category_func()
902 hb_unicode_funcs_get_script_func()
903 hb_unicode_funcs_get_combining_class_func()
904 hb_unicode_funcs_get_eastasian_width_func()
910 hb_face_get_table() renamed to hb_face_reference_table()
911 hb_face_create_for_data() renamed to hb_face_create()
914 hb_face_create_for_tables() takes user_data before destroy now
915 hb_face_reference_table() returns empty blob instead of NULL
916 hb_get_table_func_t accepts the face as first parameter now
920 o Fonts can subclass other fonts now. Unimplemented callbacks in the
921 subclass automatically chainup to the parent. When chaining up,
922 scale is adjusted if the parent font has a different scale.
924 o All hb_font_funcs_t callbacks take a user_data now. Their setters
925 take a user_data and its respective destroy callback.
929 hb_font_funcs_get_empty()
930 hb_font_create_sub_font()
934 hb_font_unset_funcs()
936 o Removed func getter functions:
937 hb_font_funcs_get_glyph_func()
938 hb_font_funcs_get_glyph_advance_func()
939 hb_font_funcs_get_glyph_extents_func()
940 hb_font_funcs_get_contour_point_func()
941 hb_font_funcs_get_kerning_func()
944 hb_font_create() takes a face and references it now
945 hb_font_set_funcs() takes user_data before destroy now
946 hb_font_set_scale() accepts signed integers now
947 hb_font_get_contour_point_func_t now takes glyph first, then point_index
948 hb_font_get_glyph_func_t returns a success boolean now
951 * Changed object model:
953 o All object types have a _get_empty() now:
955 hb_buffer_get_empty()
958 hb_font_funcs_get_empty()
959 hb_unicode_funcs_get_empty()
961 o Added _set_user_data() and _get_user_data() for all object types:
962 hb_blob_get_user_data()
963 hb_blob_set_user_data()
964 hb_buffer_get_user_data()
965 hb_buffer_set_user_data()
966 hb_face_get_user_data()
967 hb_face_set_user_data()
968 hb_font_funcs_get_user_data()
969 hb_font_funcs_set_user_data()
970 hb_font_get_user_data()
971 hb_font_set_user_data()
972 hb_unicode_funcs_get_user_data()
973 hb_unicode_funcs_set_user_data()
975 o Removed the _get_reference_count() from all object types:
976 hb_blob_get_reference_count()
977 hb_buffer_get_reference_count()
978 hb_face_get_reference_count()
979 hb_font_funcs_get_reference_count()
980 hb_font_get_reference_count()
981 hb_unicode_funcs_get_reference_count()
983 o Added _make_immutable() and _is_immutable() for all object types except for buffer:
984 hb_blob_make_immutable()
985 hb_blob_is_immutable()
986 hb_face_make_immutable()
987 hb_face_is_immutable()
990 * Changed API for vertical text support
992 o The following callbacks where removed:
993 hb_font_get_glyph_advance_func_t
994 hb_font_get_kerning_func_t
996 o The following new callbacks added instead:
997 hb_font_get_glyph_h_advance_func_t
998 hb_font_get_glyph_v_advance_func_t
999 hb_font_get_glyph_h_origin_func_t
1000 hb_font_get_glyph_v_origin_func_t
1001 hb_font_get_glyph_h_kerning_func_t
1002 hb_font_get_glyph_v_kerning_func_t
1004 o The following API removed as such:
1005 hb_font_funcs_set_glyph_advance_func()
1006 hb_font_funcs_set_kerning_func()
1007 hb_font_get_glyph_advance()
1008 hb_font_get_kerning()
1010 o New API added instead:
1011 hb_font_funcs_set_glyph_h_advance_func()
1012 hb_font_funcs_set_glyph_v_advance_func()
1013 hb_font_funcs_set_glyph_h_origin_func()
1014 hb_font_funcs_set_glyph_v_origin_func()
1015 hb_font_funcs_set_glyph_h_kerning_func()
1016 hb_font_funcs_set_glyph_v_kerning_func()
1017 hb_font_get_glyph_h_advance()
1018 hb_font_get_glyph_v_advance()
1019 hb_font_get_glyph_h_origin()
1020 hb_font_get_glyph_v_origin()
1021 hb_font_get_glyph_h_kerning()
1022 hb_font_get_glyph_v_kerning()
1024 o The following higher-leve API added for convenience:
1025 hb_font_get_glyph_advance_for_direction()
1026 hb_font_get_glyph_origin_for_direction()
1027 hb_font_add_glyph_origin_for_direction()
1028 hb_font_subtract_glyph_origin_for_direction()
1029 hb_font_get_glyph_kerning_for_direction()
1030 hb_font_get_glyph_extents_for_origin()
1031 hb_font_get_glyph_contour_point_for_origin()
1034 * OpenType Layout API:
1037 hb_ot_layout_position_start()
1038 hb_ot_layout_substitute_start()
1039 hb_ot_layout_substitute_finish()
1045 hb_glib_script_to_script()
1046 hb_glib_script_from_script()
1047 hb_icu_script_to_script()
1048 hb_icu_script_from_script()
1051 * Version API added: