1 Overview of changes leading to 2.6.8
3 ====================================
4 - New API to fetch glyph alternates from GSUB table.
5 - hb-coretext build fix for macOS < 10.10.
6 - Meson build fixes, cmake port removal is postponed but please prepare for
7 it and give us feedback.
8 Autotools is still our main build system however please consider
9 experimenting with meson also for packaging the library.
11 +hb_ot_layout_lookup_get_glyph_alternates()
14 Overview of changes leading to 2.6.7
15 Wednesday, June 3, 2020
16 ====================================
17 - Update to Unicode 13.0.0.
18 - Fix hb_ot_layout_get_ligature_carets for fonts without lcar table, it was
19 completely broken for all the other fonts since 2.1.2.
20 - As a part of our migration to meson, this release will be the last one
21 to provide cmake port files but autotools still is our main build system.
22 There is a possibility that the next version or the after be released
26 Overview of changes leading to 2.6.6
28 ====================================
29 - A fix in AAT kerning for Geeza Pro.
30 - Better support for resource fork fonts on macOS.
33 Overview of changes leading to 2.6.5
34 Friday, April 17, 2020
35 ====================================
36 - Add experimental meson build system. Autotools is still the primary
37 and supported build system.
38 - AAT is now always preferred for horizontal scripts when both AAT and OT
39 layout tables exist at the same time.
40 - Subsetter improvements.
42 +hb_ft_font_lock_face()
43 +hb_ft_font_unlock_face()
46 Overview of changes leading to 2.6.4
47 Monday, October 29, 2019
48 ====================================
53 Overview of changes leading to 2.6.3
54 Monday, October 28, 2019
55 ====================================
56 - Misc small fixes, mostly to build-related issues.
58 +hb_font_get_nominal_glyphs()
61 Overview of changes leading to 2.6.2
62 Monday, September 30, 2019
63 ====================================
64 - Misc small fixes, mostly to build-related issues.
67 Overview of changes leading to 2.6.1
68 Thursday, August 22, 2019
69 ====================================
70 - Fix regression with hb_font_create_sub_font scaling introduced in 2.6.0.
71 - Change interpretation of font PTEM size / CoreText font size handling.
72 See https://github.com/harfbuzz/harfbuzz/pull/1484
73 - hb-ot-font: Prefer symbol cmap subtable if present.
74 - Apply 'dist'/'abvm'/'blwm' features to all scripts.
75 - Drop experimental DirectWrite API.
78 Overview of changes leading to 2.6.0
79 Tuesday, August 13, 2019
80 ====================================
81 - New OpenType metrics, baseline, and metadata table access APIs.
82 - New API to set font variations to a named-instance.
83 - New hb-gdi.h header and API for creating hb_face_t from HFONT.
84 - Amalgam: Provide a single-file harfbuzz.cc file for easier alternate building.
85 - More size-reduction configurable options, enabled by HB_TINY.
87 +hb_font_set_var_named_instance()
89 +hb_ot_layout_baseline_tag_t
90 +hb_ot_layout_get_baseline()
92 +hb_ot_meta_get_entry_tags()
93 +hb_ot_meta_reference_entry()
95 +hb_ot_metrics_get_position()
96 +hb_ot_metrics_get_variation()
97 +hb_ot_metrics_get_x_variation()
98 +hb_ot_metrics_get_y_variation()
101 Overview of changes leading to 2.5.3
102 Wednesday, June 26, 2019
103 ====================================
104 - Fix UCD script data for Unicode 10+ scripts. This was broken since 2.5.0.
105 - More optimizations for HB_TINY.
108 Overview of changes leading to 2.5.2
109 Thursday, June 20, 2019
110 ====================================
111 - More hb-config.hh facilities to shrink library size, namely when built as
113 - New documentation of custom configurations in CONFIG.md.
114 - Fix build on gcc 4.8. That's supported again.
115 - Universal Shaping Engine improvements thanks to David Corbett.
116 - API Changes: Undeprecate some horizontal-kerning API and re-enable in hb-ft,
117 such that Type1 fonts will continue kerning.
120 Overview of changes leading to 2.5.1
122 ====================================
123 - Fix build with various versions of Visual Studio.
124 - Improved documentation, thanks to Nathan Willis.
125 - Bugfix in subsetting glyf table.
126 - Improved scripts for cross-compiling for Windows using mingw.
127 - Rename HB_MATH_GLYPH_PART_FLAG_EXTENDER to HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER.
128 A deprecated macro is added for backwards-compatibility.
131 Overview of changes leading to 2.5.0
133 ====================================
134 - This release does not include much functional changes, but includes major internal
135 code-base changes. We now require C++11. Support for gcc 4.8 and earlier has been
137 - New hb-config.hh facility for compiling smaller library for embedded and web usecases.
138 - New Unicode Character Databse implementation that is half the size of previously-used
140 - Subsetter improvements.
141 - Improved documentation, thanks to Nathan Willis.
142 - Misc shaping fixes.
145 Overview of changes leading to 2.4.0
146 Monday, March 25, 2019
147 ====================================
150 - Subsetter improvements.
152 HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE
153 hb_directwrite_face_create()
156 Overview of changes leading to 2.3.1
157 Wednesday, January 30, 2019
158 ====================================
160 - Misc internal housekeeping cleanup.
163 Overview of changes leading to 2.3.0
164 Thursday, December 20, 2018
165 ====================================
166 - Fix regression on big-endian architectures. Ouch!
167 - Misc bug and build fixes.
168 - Fix subsetting of simple GSUB/GDEF.
169 - Merge CFF / CFF2 support contributed by Adobe. This mostly involves
170 the subsetter, but also get_glyph_extents on CFF fonts.
173 +hb_aat_layout_has_substitution()
174 +hb_aat_layout_has_positioning()
175 +hb_aat_layout_has_tracking()
178 Overview of changes leading to 2.2.0
179 Thursday, November 29, 2018
180 ====================================
181 - Misc shaping bug fixes.
182 - Add font variations named-instance API.
183 - Deprecate font variations axis enumeration API and add replacement.
184 - AAT shaping improvements:
185 o Fixed 'kern' table Format 2 implementation.
186 o Implement 'feat' table API for feature detection.
187 o Blacklist 'GSUB' table of fonts from 'MUTF' foundry that also have 'morx'.
190 +hb_aat_layout_feature_type_t
191 +hb_aat_layout_feature_selector_t
192 +hb_aat_layout_get_feature_types()
193 +hb_aat_layout_feature_type_get_name_id
194 +hb_aat_layout_feature_selector_info_t
195 +HB_AAT_LAYOUT_NO_SELECTOR_INDEX
196 +hb_aat_layout_feature_type_get_selector_infos()
197 +hb_ot_var_axis_flags_t
198 +hb_ot_var_axis_info_t
199 +hb_ot_var_get_axis_infos()
200 +hb_ot_var_find_axis_info()
201 +hb_ot_var_get_named_instance_count()
202 +hb_ot_var_named_instance_get_subfamily_name_id()
203 +hb_ot_var_named_instance_get_postscript_name_id()
204 +hb_ot_var_named_instance_get_design_coords()
207 +HB_OT_VAR_NO_AXIS_INDEX
209 +hb_ot_var_get_axes()
210 +hb_ot_var_find_axis()
213 Overview of changes leading to 2.1.3
214 Friday, November 16, 2018
215 ====================================
216 - Fix AAT 'mort' shaping, which was broken in 2.1.2
219 Overview of changes leading to 2.1.2
220 Friday, November 16, 2018
221 ====================================
222 - Various internal changes.
223 - AAT shaping improvements:
224 o Implement kern table Format 1 state-machine-based kerning.
225 o Implement cross-stream kerning (cursive positioning, etc).
226 o Ignore emptyish GSUB tables (zero scripts) if morx present.
227 o Don't apply GPOS if morx is being applied. Matches Apple.
230 -Overview of changes leading to 2.1.1
231 Monday, November 5, 2018
232 ====================================
234 o Implement 'mort' table.
235 o Implement 'kern' subtables Format 1 and Format 3.
238 Overview of changes leading to 2.1.0
239 Tuesday, October 30, 2018
240 ====================================
241 - AAT shaping improvements:
242 o Allow user controlling AAT features, for whole buffer only currently.
243 o Several 'morx' fixes.
244 o Implement tuple-kerns in 'kerx'; Fixes kerning with Apple default
246 - Support for color fonts:
247 o COLR/CPAL API to fetch color layers.
248 o SVG table to fetch SVG documents.
249 o CBDT/sbix API to fetch PNG images.
250 - New 'name' table API.
251 - hb-ot-font now uses 'VORG' table to correctly position CFF glyphs
253 - Various fuzzer-found bug fixes.
257 A type and a macro added in 2.0.0 were renamed:
259 hb_name_id_t -> hb_ot_name_id_t
260 HB_NAME_ID_INVALID -> HB_OT_NAME_ID_INVALID
266 +hb_color_get_alpha()
268 +hb_color_get_green()
270 +hb_ot_color_has_palettes()
271 +hb_ot_color_palette_get_count()
272 +hb_ot_color_palette_get_name_id()
273 +hb_ot_color_palette_color_get_name_id()
274 +hb_ot_color_palette_flags_t
275 +hb_ot_color_palette_get_flags()
276 +hb_ot_color_palette_get_colors()
277 +hb_ot_color_has_layers()
279 +hb_ot_color_glyph_get_layers()
280 +hb_ot_color_has_svg()
281 +hb_ot_color_glyph_reference_svg()
282 +hb_ot_color_has_png()
283 +hb_ot_color_glyph_reference_png()
286 +HB_OT_NAME_ID_INVALID
287 +HB_OT_NAME_ID_COPYRIGHT
288 +HB_OT_NAME_ID_FONT_FAMILY
289 +HB_OT_NAME_ID_FONT_SUBFAMILY
290 +HB_OT_NAME_ID_UNIQUE_ID
291 +HB_OT_NAME_ID_FULL_NAME
292 +HB_OT_NAME_ID_VERSION_STRING
293 +HB_OT_NAME_ID_POSTSCRIPT_NAME
294 +HB_OT_NAME_ID_TRADEMARK
295 +HB_OT_NAME_ID_MANUFACTURER
296 +HB_OT_NAME_ID_DESIGNER
297 +HB_OT_NAME_ID_DESCRIPTION
298 +HB_OT_NAME_ID_VENDOR_URL
299 +HB_OT_NAME_ID_DESIGNER_URL
300 +HB_OT_NAME_ID_LICENSE
301 +HB_OT_NAME_ID_LICENSE_URL
302 +HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY
303 +HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY
304 +HB_OT_NAME_ID_MAC_FULL_NAME
305 +HB_OT_NAME_ID_SAMPLE_TEXT
306 +HB_OT_NAME_ID_CID_FINDFONT_NAME
307 +HB_OT_NAME_ID_WWS_FAMILY
308 +HB_OT_NAME_ID_WWS_SUBFAMILY
309 +HB_OT_NAME_ID_LIGHT_BACKGROUND
310 +HB_OT_NAME_ID_DARK_BACKGROUND
311 +HB_OT_NAME_ID_VARIATIONS_PS_PREFIX
313 +hb_ot_name_list_names()
314 +hb_ot_name_get_utf8()
315 +hb_ot_name_get_utf16()
316 +hb_ot_name_get_utf32()
319 Overview of changes leading to 2.0.2
320 Saturday, October 20, 2018
321 ====================================
322 - Fix two minor memory access issues in AAT tables.
325 Overview of changes leading to 2.0.1
326 Friday, October 19, 2018
327 ====================================
328 - Fix hb-version.h reported release version that went wrong (1.8.0)
329 with previous release.
330 - Fix extrapolation in 'trak' table.
331 - Fix hb-font infinite-recursion issue with some font funcs and
333 - Implement variation-kerning format in kerx table, although without
335 - Fix return value of hb_map_is_empty().
338 Overview of changes leading to 2.0.0
339 Thursday, October 18, 2018
340 ====================================
341 - Added AAT shaping support (morx/kerx/trak).
342 Automatically used if GSUB/GPOS are not available respectively.
343 Set HB_OPTIONS=aat env var to have morx/kerx preferred over
345 - Apply TrueType kern table internally, instead of relying on
347 - Khmer shaper significantly rewritten to better match Uniscribe.
348 - Indic3 tags ('dev3', etc) are passed to USE shaper.
349 - .dfont Mac font containers implemented.
350 - Script- and language-mapping revamped to better use BCP 47.
351 - Misc USE and Indic fixes.
352 - Misc everything fixes.
353 - Too many things to list. Biggest release since 0.9.1, with
354 over 500 commits in just over 5 weeks! Didn't intend it to
355 be a big release. Just happened to become.
356 - hb-ft now locks underlying FT_Face during use.
360 - Newly-created hb_font_t's now have our internal "hb-ot-font"
361 callbacks set on them, so they should work out of the box
362 without any callbacks set. If callbacks are set, everything
363 is back to what it was before, the fallback callbacks are
364 null. If you to get the internal implementation modified,
367 - New hb_font_funcs_set_nominal_glyphs_func() allows speeding
368 up character to glyph mapping.
371 +HB_FEATURE_GLOBAL_START
372 +HB_FEATURE_GLOBAL_END
373 +hb_buffer_set_invisible_glyph()
374 +hb_buffer_get_invisible_glyph()
375 +hb_font_funcs_set_nominal_glyphs_func()
376 +hb_ot_layout_table_select_script()
377 +hb_ot_layout_script_select_language()
378 +hb_ot_layout_feature_get_name_ids()
379 +hb_ot_layout_feature_get_characters()
382 +HB_OT_MAX_TAGS_PER_SCRIPT
383 +hb_ot_tags_from_script_and_language()
384 +hb_ot_tags_to_script_and_language()
387 -hb_font_funcs_set_glyph_func()
388 -hb_unicode_eastasian_width_func_t
389 -hb_unicode_funcs_set_eastasian_width_func()
390 -hb_unicode_eastasian_width()
391 -hb_unicode_decompose_compatibility_func_t
392 -HB_UNICODE_MAX_DECOMPOSITION_LEN
393 -hb_unicode_funcs_set_decompose_compatibility_func()
394 -hb_unicode_decompose_compatibility()
395 -hb_font_funcs_set_glyph_h_kerning_func()
396 -hb_font_funcs_set_glyph_v_kerning_func()
397 -hb_font_get_glyph_h_kerning()
398 -hb_font_get_glyph_v_kerning()
399 -hb_font_get_glyph_kerning_for_direction()
400 -hb_ot_layout_table_choose_script()
401 -hb_ot_layout_script_find_language()
402 -hb_ot_tags_from_script()
403 -hb_ot_tag_from_language()
406 Overview of changes leading to 1.9.0
407 Monday, September 10, 2018
408 ====================================
409 - Added 'cmap' API to hb_face_t.
411 - hb-ot-font re-creation should be much leaner now, as the
412 font tables it uses are cached on hb_face_t now.
413 - Internal source header file name changes:
414 hb-*-private.hh is renamed to hb-*.hh.
418 +hb_face_collect_unicodes()
419 +hb_face_collect_variation_selectors()
420 +hb_face_collect_variation_unicodes()
421 +hb_face_builder_create()
422 +hb_face_builder_add_table()
425 Overview of changes leading to 1.8.8
426 Tuesday, August 14, 2018
427 ====================================
428 - Fix hb-icu crash on architectures where compare_exchange_weak() can
429 fail falsely. This bug was introduced in 1.8.4.
430 https://bugs.chromium.org/p/chromium/issues/detail?id=873568
431 - More internal refactoring of atomic operations and singletons.
433 The following functions do NOT reference their return value before
435 * hb_unicode_funcs_get_default()
436 * hb_glib_get_unicode_funcs()
437 * hb_icu_get_unicode_funcs()
438 This is consistent with their naming ("get", instead of "reference")
439 as well as how they are used in the wild (ie. no one calls destroy()
440 on their return value.)
443 Overview of changes leading to 1.8.7
444 Wednesday, August 8, 2018
445 ====================================
446 - Fix assertion failure with GDEF-blacklisted fonts.
449 Overview of changes leading to 1.8.6
450 Tuesday, August 7, 2018
451 ====================================
452 - Internal code shuffling.
453 - New API to speed up getting advance widths for implementations
454 that have heavy overhead in get_h_advance callback:
455 +hb_font_funcs_set_glyph_h_advances_func
456 +hb_font_funcs_set_glyph_v_advances_func
457 +hb_font_get_glyph_advances_for_direction
458 +hb_font_get_glyph_h_advances
459 +hb_font_get_glyph_h_advances_func_t
460 +hb_font_get_glyph_v_advances
461 +hb_font_get_glyph_v_advances_func_t
464 Overview of changes leading to 1.8.5
465 Wednesday, August 1, 2018
466 ====================================
467 - Major Khmer shaper improvements to better match Microsoft.
469 - Internal improvements to atomic operations.
472 Overview of changes leading to 1.8.4
473 Tuesday, July 17, 2018
474 ====================================
475 - Fix build on non-C++11.
476 - Use C++-style GCC atomics and C++11 atomics.
479 Overview of changes leading to 1.8.3
480 Wednesday, July 11, 2018
481 ====================================
482 - A couple of Indic / USE bug fixes.
483 - Disable vectorization, as it was causing unaligned access bus error on
484 certain 32bit architectures.
487 Overview of changes leading to 1.8.2
488 Tuesday, July 3, 2018
489 ====================================
490 - Fix infinite loop in Khmer shaper.
491 - Improve hb_blob_create_from_file() for streams.
494 Overview of changes leading to 1.8.1
495 Tuesday, June 12, 2018
496 ====================================
497 - Fix hb-version.h file generation; last two releases went out with wrong ones.
498 - Add correctness bug in hb_set_t operations, introduced in 1.7.7.
499 - Remove HB_SUBSET_BUILTIN build option. Not necessary.
502 Overview of changes leading to 1.8.0
503 Tuesday, June 5, 2018
504 ====================================
505 - Update to Unicode 11.0.0.
508 Overview of changes leading to 1.7.7
509 Tuesday, June 5, 2018
510 ====================================
511 - Lots of internal changes, but not yet exposed externally.
512 - All HarfBuzz objects are significantly smaller in size now.
513 - Sinhala: Position repha on top of post-consonant, not base.
514 This better matches Windows 10 behavior, which was changed
515 from previous Windows versions.
517 o New cpp macro HB_NO_ATEXIT
518 o New cpp macro HB_SUBSET_BUILTIN
519 - Significant libharfbuzz-subset changes. API subject to change.
520 - New API in libharfbuzz:
522 +hb_blob_create_from_file()
525 A hashmap implementation:
527 +HB_MAP_VALUE_INVALID
533 +hb_map_set_user_data()
534 +hb_map_get_user_data()
535 +hb_map_allocation_successful()
538 +hb_map_get_population()
545 Overview of changes leading to 1.7.6
546 Wednesday, March 7, 2018
547 ====================================
549 - Fix to hb_set_t binary operations. Ouch.
550 - New experimental harfbuzz-subset library. All of hb-subset.h
551 is experimental right now and API WILL change.
554 hb_blob_copy_writable_or_fail()
557 hb_set_previous_range()
560 Overview of changes leading to 1.7.5
561 Tuesday, January 30, 2018
562 ====================================
564 - Separate Khmer shaper from Indic.
565 - First stab at AAT morx. Not hooked up.
569 Overview of changes leading to 1.7.4
570 Wednesday, December 20, 2017
571 ====================================
573 - Fix collect_glyphs() regression caused by hb_set_t changes.
576 Overview of changes leading to 1.7.3
577 Monday, December 18, 2017
578 ====================================
580 - hb_set_t performance tuning and optimizations.
581 - Speed up collect_glyphs() and reject garbage data.
582 - In hb_coretext_font_create() set font point-size (ptem).
586 Overview of changes leading to 1.7.2
587 Monday, December 4, 2017
588 ====================================
590 - Optimize hb_set_add_range().
593 hb_coretext_font_create()
596 Overview of changes leading to 1.7.1
597 Tuesday, November 14, 2017
598 ====================================
600 - Fix atexit object destruction regression.
601 - Fix minor integer-overflow.
604 Overview of changes leading to 1.7.0
605 Monday, November 13, 2017
606 ====================================
609 - Implement kerning and glyph names in hb-ot-font.
610 - Various DSO optimization re .data and .bss sizes.
611 - Make C++11 optional; build fixes.
612 - Mark all other backends "unsafe-to-break".
616 Overview of changes leading to 1.6.3
617 Thursday, October 26th, 2017
618 ====================================
620 - Fix hb_set_t some more. Should be solid now.
621 - Implement get_glyph_name() for hb-ot-font.
625 Overview of changes leading to 1.6.2
626 Monday, October 23nd, 2017
627 ====================================
629 - Yesterday's release had a bad crasher; don't use it. That's what
630 happens when one works on Sunday...
631 https://github.com/harfbuzz/harfbuzz/issues/578
632 - Build fixes for FreeBSD and Chrome Android.
635 Overview of changes leading to 1.6.1
636 Sunday, October 22nd, 2017
637 ====================================
639 - Don't skip over COMBINING GRAPHEME JOINER when ligating, etc.
640 To be refined: https://github.com/harfbuzz/harfbuzz/issues/554
641 - Faster hb_set_t implementation.
642 - Don't use deprecated ICU API.
643 - Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0
648 Overview of changes leading to 1.6.0
649 Friday, October the 13th, 2017
650 ====================================
652 - Update to Unicode 10.
654 - Various Indic and Universal Shaping Engine fixes as a result of
655 HarfBuzz Hackfest with Jonathan Kew at Web Engines Hackfest at
656 the Igalia offices in A Coruña, Spain. Thanks Igalia for having
659 - Implement Unicode Arabic Mark Ordering Algorithm UTR#53.
661 - Implement optical sizing / tracking in CoreText backend, using
662 new API hb_font_set_ptem().
664 - Allow notifying hb_font_t that underlying FT_Face changed sizing,
665 using new API hb_ft_font_changed().
667 - More Graphite backend RTL fixes.
669 - Fix caching of variable font shaping plans.
671 - hb-view / hb-shape now accept following new arguments:
673 o --unicodes: takes a list of hex numbers that represent Unicode
677 +hb_face_get_table_tags()
680 +hb_ft_font_changed()
683 Overview of changes leading to 1.5.1
684 Tuesday, September 5, 2017
685 ====================================
687 - Fix "unsafe-to-break" in fallback shaping and other corner cases.
688 All our tests pass with --verify now, meaning unsafe-to-break API
690 - Add --unicodes to hb-view / hb-shape.
691 - [indic] Treat Consonant_With_Stacker as consonant. This will need
693 - hb_buffer_diff() tweaks.
696 Overview of changes leading to 1.5.0
697 Wednesday, August 23, 2017
698 ====================================
700 - Misc new API, for appending a buffer to another, and for comparing
701 contents of two buffers for types of differences.
703 - New "unsafe-to-break" API. Can be used to speed up reshaping
704 in line-breaking situations. Essentially, after shaping, it returns
705 positions in the input string (some of the cluster boundaries) that
706 are "safe to break" in that if the text is segmented at that position
707 and two sides reshaped and concatenated, the shaping result is
708 exactly the same as shaping the text in one piece.
710 hb-view and hb-shape and hb-shape now take --verify, which verifies
713 Some corner cases of the implementation are still not quite working.
714 Those will be fixed in subsequent releases.
721 HB_GLYPH_FLAG_UNSAFE_TO_BREAK
722 HB_GLYPH_FLAG_DEFINED
723 hb_glyph_info_get_glyph_flags()
725 HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS
727 hb_buffer_diff_flags_t
728 HB_BUFFER_DIFF_FLAG_EQUAL
729 HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH
730 HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH
731 HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT
732 HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT
733 HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH
734 HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH
735 HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH
736 HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH
740 Overview of changes leading to 1.4.8
741 Tuesday, August 8, 2017
742 ====================================
744 - Major fix to avar table handling.
745 - Rename hb-shape --show-message to --trace.
749 Overview of changes leading to 1.4.7
750 Tuesday, July 18, 2017
751 ====================================
753 - Multiple Indic, Tibetan, and Cham fixes.
754 - CoreText: Allow disabling kerning.
755 - Adjust Arabic feature order again.
759 Overview of changes leading to 1.4.6
760 Sunday, April 23, 2017
761 ====================================
763 - Graphite2: Fix RTL positioning issue.
764 - Backlist GDEF of more versions of Padauk and Tahoma.
765 - New, experimental, cmake alternative build system.
768 Overview of changes leading to 1.4.5
769 Friday, March 10, 2017
770 ====================================
772 - Revert "Fix Context lookup application when moving back after a glyph..."
773 This introduced memory access problems. To be fixed properly soon.
776 Overview of changes leading to 1.4.4
777 Sunday, March 5, 2017
778 ====================================
780 - Fix Context lookup application when moving back after a glyph deletion.
781 - Fix buffer-overrun in Bengali.
784 Overview of changes leading to 1.4.3
785 Saturday, February 25, 2017
786 ====================================
788 - Route Adlam script to Arabic shaper.
793 hb_graphite2_font_get_gr_font()
796 Overview of changes leading to 1.4.2
797 Monday, January 23, 2017
798 ====================================
800 - Implement OpenType Font Variation tables avar/fvar/HVAR/VVAR.
801 - hb-shape and hb-view now accept --variations.
805 hb_variation_from_string()
806 hb_variation_to_string()
808 hb_font_set_variations()
809 hb_font_set_var_coords_design()
810 hb_font_get_var_coords_normalized()
815 hb_ot_var_get_axis_count()
817 hb_ot_var_find_axis()
818 hb_ot_var_normalize_variations()
819 hb_ot_var_normalize_coords()
821 - MVAR to be implemented later. Access to named instances to be
822 implemented later as well.
827 Overview of changes leading to 1.4.1
828 Thursday, January 5, 2017
829 ====================================
831 - Always build and use UCDN for Unicode data by default.
832 Reduces dependence on version of Unicode data in glib,
833 specially in the Windows bundles we are shipping, which
837 Overview of changes leading to 1.4.0
838 Thursday, January 5, 2017
839 ====================================
841 - Merged "OpenType GX" branch which adds core of support for
842 OpenType 1.8 Font Variations. To that extent, the relevant
846 hb_font_set_var_coords_normalized()
851 HB_OT_LAYOUT_NO_VARIATIONS_INDEX
852 hb_ot_layout_table_find_feature_variations()
853 hb_ot_layout_feature_with_variations_get_lookups()
854 hb_shape_plan_create2()
855 hb_shape_plan_create_cached2()
857 Currently variations in GSUB/GPOS/GDEF are fully supported,
858 and no other tables are supported. In particular, fvar/avar
859 are NOT supported, hence the hb_font_set_var_coords_normalized()
860 taking normalized coordinates. API to take design coordinates
861 will be added in the future.
863 HVAR/VVAR/MVAR support will also be added to hb-ot-font in the
866 - Fix regression in GDEF glyph class processing.
867 - Add decompositions for Chakma, Limbu, and Balinese in USE shaper.
871 Overview of changes leading to 1.3.4
872 Monday, December 5, 2016
873 ====================================
875 - Fix vertical glyph origin in hb-ot-font.
876 - Implement CBDT/CBLC color font glyph extents in hb-ot-font.
879 Overview of changes leading to 1.3.3
880 Wednesday, September 28, 2016
881 ====================================
883 - Implement parsing of OpenType MATH table.
887 hb_ot_math_constant_t
889 hb_ot_math_glyph_variant_t
890 hb_ot_math_glyph_part_flags_t
891 hb_ot_math_glyph_part_t
893 hb_ot_math_get_constant
894 hb_ot_math_get_glyph_italics_correction
895 hb_ot_math_get_glyph_top_accent_attachment
896 hb_ot_math_get_glyph_kerning
897 hb_ot_math_is_glyph_extended_shape
898 hb_ot_math_get_glyph_variants
899 hb_ot_math_get_min_connector_overlap
900 hb_ot_math_get_glyph_assembly
903 Overview of changes leading to 1.3.2
904 Wednesday, September 27, 2016
905 ====================================
907 - Fix build of hb-coretext on older OS X versions.
910 Overview of changes leading to 1.3.1
911 Wednesday, September 7, 2016
912 ====================================
914 - Blacklist bad GDEF of more fonts (Padauk).
915 - More CoreText backend crash fixes with OS X 10.9.5.
919 Overview of changes leading to 1.3.0
920 Thursday, July 21, 2016
921 ====================================
923 - Update to Unicode 9.0.0
924 - Move Javanese from Indic shaper to Universal Shaping Engine.
925 - Allow MultipleSubst to delete a glyph (matching Windows engine).
926 - Update Universal Shaping Engine to latest draft from Microsoft.
927 - DirectWrite backend improvements. Note: this backend is for testing ONLY.
928 - CoreText backend improvements with unreachable fonts.
929 - Implement symbol fonts (cmap 3.0.0) in hb-ft and hb-ot-font.
930 - Blacklist bad GDEF of more fonts (Tahoma & others).
934 Overview of changes leading to 1.2.7
936 ====================================
938 - Blacklist another version of Times New Roman (Bold) Italic from Windows 7.
939 - Fix Mongolian Free Variation Selectors shaping with certain fonts.
940 - Fix Tibetan shorthand contractions shaping.
941 - Improved list of language tag mappings.
942 - Unbreak build on Windows CE.
943 - Make 'glyf' table loading lazy in hb-ot-font.
946 Overview of changes leading to 1.2.6
947 Friday, April 8, 2016
948 ====================================
950 - Blacklist GDEF table of another set of Times New Roman (Bold) Italic.
951 - DirectWrite backend improvements. Note: DirectWrite backend is
952 exclusively for our internal testing and should NOT be used in any
953 production system whatsoever.
956 Overview of changes leading to 1.2.5
957 Monday, April 4, 2016
958 ====================================
960 - Fix GDEF mark-filtering-set, which was broken in 1.2.3.
963 Overview of changes leading to 1.2.4
964 Thursday, March 17, 2016
965 ====================================
967 - Synthesize GDEF glyph class for any glyph that does not have one in GDEF.
968 I really hope we don't discover broken fonts that shape badly with this
970 - Misc build and other minor fixes.
972 - Added HB_NDEBUG. It's fine for production systems to define this to
973 disable high-overhead debugging checks. However, I also reduced the
974 overhead of those checks, so it's a non-issue right now. You can
975 forget it. Just not defining anything at all is fine.
978 Overview of changes leading to 1.2.3
979 Thursday, February 25, 2016
980 ====================================
982 - Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic,
983 due to bug in glyph class of ASCII double-quote character. This should
984 address "regression" introduced in 1.2.0 when we switched mark zeroing
985 in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE.
986 This fourth release in a week should finally stablize things...
988 - hb-ot-font's get_glyph() implementation saw some optimizations. Though,
989 might be really hard to measure in real-world situations.
991 - Also, two rather small API changes:
993 We now disable some time-consuming internal bookkeeping if built with NDEBUG
994 defined. This is a first time that we use NDEBUG to disable debug code. If
995 there exist production systems that do NOT want to enable NDEBUG, please let
996 me know and I'll add HB_NDEBUG.
998 Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph()
1001 - hb_font_get_nominal_glyph_func_t
1002 - hb_font_get_variation_glyph_func_t
1003 - hb_font_funcs_set_nominal_glyph_func()
1004 - hb_font_funcs_set_variation_glyph_func()
1005 - hb_font_get_nominal_glyph()
1006 - hb_font_get_variation_glyph()
1009 - hb_font_get_glyph_func_t
1010 - hb_font_funcs_set_glyph_func()
1012 Clients that implement their own font-funcs are encouraged to replace
1013 their get_glyph() implementation with a get_nominal_glyph() and
1014 get_variation_glyph() pair. The variation version can assume that
1015 variation_selector argument is not zero. Old (deprecated) functions
1016 will continue working indefinitely using internal gymnastics; it is
1017 just more efficient to use the new functions.
1020 Overview of changes leading to 1.2.2
1021 Wednesday, February 24, 2016
1022 ====================================
1024 - Fix regression with mark positioning with fonts that have
1025 non-zero mark advances. This was introduced in 1.2.0 while
1026 trying to make mark and cursive attachments to work together.
1027 I have partially reverted that, so this version is much more
1028 like what we had before. All clients who updated to 1.2.0
1029 should update to this version.
1032 Overview of changes leading to 1.2.1
1033 Tuesday, February 23, 2016
1034 ====================================
1036 - CoreText: Fix bug with wrong scale if font scale was changed later.
1037 https://github.com/libass/libass/issues/212
1038 - CoreText: Drastically speed up font initialization.
1039 - CoreText: Fix tiny leak.
1040 - Group ZWJ/ZWNJ with previous syllable under cluster-level=0.
1041 https://github.com/harfbuzz/harfbuzz/issues/217
1042 - Add test/shaping/README.md about how to add tests to the suite.
1045 Overview of changes leading to 1.2.0
1046 Friday, February 19, 2016
1047 ====================================
1049 - Fix various issues (hangs mostly) in case of memory allocation failure.
1050 - Change mark zeroing types of most shapers from BY_UNICODE_LATE to
1051 BY_GDEF_LATE. This seems to be what Uniscribe does.
1052 - Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY. That's
1054 - Allow GPOS cursive connection on marks, and fix the interaction with
1055 mark attachment. This work resulted in some changes to how mark
1056 attachments work. See:
1057 https://github.com/harfbuzz/harfbuzz/issues/211
1058 https://github.com/harfbuzz/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
1059 - Graphite2 shaper: improved negative advance handling (eg. Nastaliq).
1060 - Add nmake-based build system for Windows.
1062 - Misc. improvements.
1065 Overview of changes leading to 1.1.3
1066 Monday, January 11, 2016
1067 ====================================
1069 - Ported Indic shaper to Unicode 8.0 data.
1070 - Universal Shaping Engine fixes.
1071 - Speed up CoreText shaper when font fallback happens in CoreText.
1072 - Documentation improvements, thanks to Khaled Hosny.
1073 - Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi.
1079 hb_font_get_font_extents_func_t
1080 hb_font_get_font_h_extents_func_t
1081 hb_font_get_font_v_extents_func_t
1082 hb_font_funcs_set_font_h_extents_func
1083 hb_font_funcs_set_font_v_extents_func
1084 hb_font_get_h_extents
1085 hb_font_get_v_extents
1086 hb_font_get_extents_for_direction
1088 * Buffer message (aka debug):
1089 hb_buffer_message_func_t
1090 hb_buffer_set_message_func()
1091 Actual message protocol to be fleshed out later.
1094 Overview of changes leading to 1.1.2
1095 Wednesday, November 26, 2015
1096 ====================================
1098 - Fix badly-broken fallback shaper that affected terminology.
1099 https://github.com/harfbuzz/harfbuzz/issues/187
1100 - Fix y_scaling in Graphite shaper.
1102 * An unset glyph_h_origin() function in font-funcs now (sensibly)
1103 implies horizontal origin at 0,0. Ie, the nil callback returns
1104 true instead of false. As such, implementations that have a
1105 glyph_h_origin() that simply returns true, can remove that function
1106 with HarfBuzz >= 1.1.2. This results in a tiny speedup.
1109 Overview of changes leading to 1.1.1
1110 Wednesday, November 24, 2015
1111 ====================================
1113 - Build fixes, specially for hb-coretext.
1116 Overview of changes leading to 1.1.0
1117 Wednesday, November 18, 2015
1118 ====================================
1120 - Implement 'stch' stretch feature for Syriac Abbreviation Mark.
1121 https://github.com/harfbuzz/harfbuzz/issues/141
1122 - Disable use of decompose_compatibility() callback.
1123 - Implement "shaping" of various Unicode space characters, even
1124 if the font does not support them.
1125 https://github.com/harfbuzz/harfbuzz/issues/153
1126 - If font does not support U+2011 NO-BREAK HYPHEN, fallback to
1128 - Changes resulting from libFuzzer continuous fuzzing:
1129 * Reject font tables that need more than 8 edits,
1130 * Bound buffer growth during shaping to 32x,
1131 * Fix assertions and other issues at OOM / buffer max-growth.
1132 - Misc fixes and optimizations.
1134 * All fonts created with hb_font_create() now inherit from
1135 (ie. have parent) hb_font_get_empty().
1138 Overview of changes leading to 1.0.6
1139 Thursday, October 15, 2015
1140 ====================================
1142 - Reduce max nesting level in OT lookups from 8 to 6.
1143 Should not affect any real font as far as I know.
1144 - Fix memory access issue in ot-font.
1145 - Revert default load-flags of fonts created using hb_ft_font_create()
1146 back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in
1147 last release (1.0.5), but caused major issues, so revert.
1148 https://github.com/harfbuzz/harfbuzz/issues/143
1151 Overview of changes leading to 1.0.5
1152 Tuesday, October 13, 2015
1153 ====================================
1155 - Fix multiple memory access bugs discovered using libFuzzer.
1156 https://github.com/harfbuzz/harfbuzz/issues/139
1157 Everyone should upgrade to this version as soon as possible.
1158 We now have continuous fuzzing set up, to avoid issues like
1159 these creeping in again.
1163 * hb_font_set_parent().
1164 * hb_ft_font_[sg]et_load_flags()
1165 The default flags for fonts created using hb_ft_font_create()
1166 has changed to default to FT_LOAD_DEFAULT now. Previously it
1167 was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING.
1170 * Fonts now default to units-per-EM as their scale, instead of 0.
1171 * hb_font_create_sub_font() does NOT make parent font immutable
1172 anymore. hb_font_make_immutable() does.
1175 Overview of changes leading to 1.0.4
1176 Wednesday, September 30, 2015
1177 ====================================
1179 - Fix minor out-of-bounds read error.
1182 Overview of changes leading to 1.0.3
1183 Tuesday, September 1, 2015
1184 ====================================
1186 - Start of user documentation, from Simon Cozens!
1187 - Implement glyph_extents() for TrueType fonts in hb-ot-font.
1188 - Improve GPOS cursive attachments with conflicting lookups.
1189 - More fixes for cluster-level = 1.
1190 - Uniscribe positioning fix.
1193 Overview of changes leading to 1.0.2
1194 Wednesday, August 19, 2015
1195 ====================================
1197 - Fix shaping with cluster-level > 0.
1198 - Fix Uniscribe backend font-size scaling.
1199 - Declare dependencies in harfbuzz.pc.
1200 FreeType is not declared though, to avoid bugs in pkg-config
1201 0.26 with recursive dependencies.
1202 - Slightly improved debug infrastructure. More to come later.
1206 Overview of changes leading to 1.0.1
1207 Monday, July 27, 2015
1208 ====================================
1210 - Fix out-of-bounds access in USE shaper.
1213 Overview of changes leading to 1.0.0
1214 Sunday, July 26, 2015
1215 ====================================
1217 - Implement Universal Shaping Engine:
1218 https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
1219 http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/
1220 - Bump version to 1.0.0. The soname was NOT bumped.
1223 Overview of changes leading to 0.9.42
1224 Thursday, July 26, 2015
1225 =====================================
1227 - New API to allow for retrieving finer-grained cluster
1228 mappings if the client desires to handle them. Default
1229 behavior is unchanged.
1230 - Fix cluster merging when removing default-ignorables.
1231 - Update to Unicode 8.0
1232 - hb-graphite2 fixes.
1234 - Removed HB_NO_MERGE_CLUSTERS hack.
1236 hb_buffer_cluster_level_t enum
1237 hb_buffer_get_cluster_level()
1238 hb_buffer_set_cluster_level()
1239 hb-shape / hb-view --cluster-level
1242 Overview of changes leading to 0.9.41
1243 Thursday, June 18, 2015
1244 =====================================
1246 - Fix hb-coretext with trailing whitespace in right-to-left.
1247 - New API: hb_buffer_reverse_range().
1248 - Allow implementing atomic ops in config.h.
1249 - Fix hb_language_t in language bindings.
1253 Overview of changes leading to 0.9.40
1254 Friday, March 20, 2015
1255 =====================================
1257 - Another hb-coretext crasher fix. Ouch!
1261 Overview of changes leading to 0.9.39
1262 Wednesday, March 4, 2015
1263 =====================================
1265 - Critical hb-coretext fixes.
1266 - Optimizations and refactoring; no functional change
1271 Overview of changes leading to 0.9.38
1272 Friday, January 23, 2015
1273 =====================================
1275 - Fix minor out-of-bounds access in Indic shaper.
1276 - Change New Tai Lue shaping engine from South-East Asian to default,
1277 reflecting change in Unicode encoding model.
1278 - Add hb-shape --font-size. Can take up to two numbers for separate
1280 - Fix CoreText and FreeType scale issues with negative scales.
1281 - Reject blobs larger than 2GB. This might break some icu-le-hb clients
1282 that need security fixes. See:
1283 http://www.icu-project.org/trac/ticket/11450
1284 - Avoid accessing font tables during face destruction, in casce rogue
1285 clients released face data already.
1286 - Fix up gobject-introspection a bit. Python bindings kinda working.
1290 hb_ft_face_create_referenced()
1291 hb_ft_font_create_referenced()
1294 Overview of changes leading to 0.9.37
1295 Wednesday, December 17, 2014
1296 =====================================
1298 - Fix out-of-bounds access in Context lookup format 3.
1299 - Indic: Allow ZWJ/ZWNJ before syllable modifiers.
1302 Overview of changes leading to 0.9.36
1303 Thursday, November 20, 2014
1304 =====================================
1306 - First time that three months went by without a release since
1307 0.9.2 was released on August 10, 2012!
1308 - Fix performance bug in hb_ot_collect_glyphs():
1309 https://bugzilla.mozilla.org/show_bug.cgi?id=1090869
1310 - Add basic vertical-text support to hb-ot-font.
1314 Overview of changes leading to 0.9.35
1315 Saturday, August 13, 2014
1316 =====================================
1318 - Fix major shape-plan caching bug when more than one shaper were
1319 provided to hb_shape_full() (as exercised by XeTeX).
1320 http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html
1321 - Fix Arabic fallback shaping regression. This was broken in 0.9.32.
1322 - Major hb-coretext fixes. That backend is complete now, including
1323 respecing buffer direction and language, down to vertical writing.
1324 - Build fixes for Windows CE. Should build fine now.
1326 Use atexit() only if it's safe to call from shared library
1327 https://bugs.freedesktop.org/show_bug.cgi?id=82246
1328 Mandaic had errors in its Unicode Joining_Type
1329 https://bugs.freedesktop.org/show_bug.cgi?id=82306
1332 * hb_buffer_clear_contents() does not reset buffer flags now.
1334 After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
1335 need to set flags for different pieces of text. The flags now
1336 are something the client sets up once, depending on how it
1337 actually uses the buffer. As such, don't clear it in
1340 I don't expect any changes to be needed to any existing client.
1343 Overview of changes leading to 0.9.34
1344 Saturday, August 2, 2014
1345 =====================================
1347 - hb_feature_from_string() now accepts CSS font-feature-settings format.
1348 - As a result, hb-shape / hb-view --features also accept CSS-style strings.
1349 Eg, "'liga' off" is accepted now.
1350 - Add old-spec Myanmar shaper:
1351 https://bugs.freedesktop.org/show_bug.cgi?id=81775
1352 - Don't apply 'calt' in Hangul shaper.
1353 - Fix mark advance zeroing for Hebrew shaper:
1354 https://bugs.freedesktop.org/show_bug.cgi?id=76767
1355 - Implement Windows-1256 custom Arabic shaping. Only built on Windows,
1356 and requires help from get_glyph(). Used by Firefox.
1357 https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
1358 - Disable 'liga' in vertical text.
1362 * Make HB_BUFFER_FLAG_BOT/EOT easier to use.
1364 Previously, we expected users to provide BOT/EOT flags when the
1365 text *segment* was at paragraph boundaries. This meant that for
1366 clients that provide full paragraph to HarfBuzz (eg. Pango), they
1369 hb_buffer_set_flags (hb_buffer,
1370 (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
1371 (item_offset + item_length == paragraph_length ?
1372 HB_BUFFER_FLAG_EOT : 0));
1374 hb_buffer_add_utf8 (hb_buffer,
1375 paragraph_text, paragraph_length,
1376 item_offset, item_length);
1378 After this change such clients can simply say:
1380 hb_buffer_set_flags (hb_buffer,
1381 HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
1383 hb_buffer_add_utf8 (hb_buffer,
1384 paragraph_text, paragraph_length,
1385 item_offset, item_length);
1387 Ie, HarfBuzz itself checks whether the segment is at the beginning/end
1388 of the paragraph. Clients that only pass item-at-a-time to HarfBuzz
1389 continue not setting any flags whatsoever.
1391 Another way to put it is: if there's pre-context text in the buffer,
1392 HarfBuzz ignores the BOT flag. If there's post-context, it ignores
1396 Overview of changes leading to 0.9.33
1397 Tuesday, July 22, 2014
1398 =====================================
1400 - Turn off ARabic 'cswh' feature that was accidentally turned on.
1401 - Add HB_TAG_MAX_SIGNED.
1402 - Make hb_face_make_immutable() really make face immutable!
1403 - Windows build fixes.
1406 Overview of changes leading to 0.9.32
1407 Thursday, July 17, 2014
1408 =====================================
1410 - Apply Arabic shaping features in spec order exactly.
1411 - Another fix for Mongolian free variation selectors.
1412 - For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt'
1414 - Minor adjustment to U+FFFD logic.
1415 - Fix hb-coretext build.
1418 Overview of changes leading to 0.9.31
1419 Wednesday, July 16, 2014
1420 =====================================
1422 - Only accept valid UTF-8/16/32; we missed many cases before.
1423 - Better shaping of invalid UTF-8/16/32. Falls back to
1424 U+FFFD REPLACEMENT CHARACTER now.
1425 - With all changes in this release, the buffer will contain fully
1426 valid Unicode after hb_buffer_add_utf8/16/32 no matter how
1427 broken the input is. This can be overridden though. See below.
1428 - Fix Mongolian Variation Selectors for fonts without GDEF.
1429 - Fix minor invalid buffer access.
1430 - Accept zh-Hant and zh-Hans language tags. hb_ot_tag_to_language()
1431 now uses these instead of private tags.
1434 * hb_buffer_add_codepoints(). This does what hb_buffer_add_utf32()
1435 used to do, ie. no validity check on the input at all. add_utf32
1436 now replaces invalid Unicode codepoints with the replacement
1437 character (see below).
1438 * hb_buffer_set_replacement_codepoint()
1439 * hb_buffer_get_replacement_codepoint()
1440 Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when
1441 we detected broken input, we replaced that with (hb_codepoint_t)-1.
1442 This has changed to use U+FFFD now, but can be changed using these
1446 Overview of changes leading to 0.9.30
1447 Wednesday, July 9, 2014
1448 =====================================
1450 - Update to Unicode 7.0.0:
1451 * New scripts Manichaean and Psalter Pahlavi are shaped using
1453 * All the other new scripts to through the generic shaper for
1455 - Minor Indic improvements.
1456 - Fix graphite2 backend cluster mapping [crasher!]
1458 * New HB_SCRIPT_* values for Unicode 7.0 scripts.
1459 * New function hb_ot_layout_language_get_required_feature().
1463 Overview of changes leading to 0.9.29
1464 Thursday, May 29, 2014
1465 =====================================
1467 - Implement cmap in hb-ot-font.h. No variation-selectors yet.
1468 - Myanmar: Allow MedialYa+Asat.
1469 - Various Indic fixes:
1470 * Support most characters in Extended Devanagary and Vedic
1472 * Allow digits and a some punctuation as consonant placeholders.
1476 Overview of changes leading to 0.9.28
1477 Monday, April 28, 2014
1478 =====================================
1480 - Unbreak old-spec Indic shaping. (bug 76705)
1481 - Fix shaping of U+17DD and U+0FC6.
1482 - Add HB_NO_MERGE_CLUSTERS build option. NOT to be enabled by default
1483 for shipping libraries. It's an option for further experimentation
1484 right now. When we are sure how to do it properly, we will add
1485 public run-time API for the functionality.
1489 Overview of changes leading to 0.9.27
1490 Tuesday, March 18, 2014
1491 =====================================
1493 - Don't use "register" storage class specifier
1494 - Wrap definition of free_langs() with HAVE_ATEXIT
1495 - Add coretext_aat shaper and hb_coretext_face_create() constructor
1496 - If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
1497 - Add Myanmar test case from OpenType Myanmar spec
1498 - Only do fallback Hebrew composition if no GPOS 'mark' available
1499 - Allow bootstrapping without gtk-doc
1500 - Use AM_MISSING_PROG for ragel and git
1501 - Typo in ucdn's Makefile.am
1502 - Improve MemoryBarrier() implementation
1505 Overview of changes leading to 0.9.26
1506 Thursday, January 30, 2014
1507 =====================================
1510 - Fix application of 'rtlm' feature.
1511 - Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH.
1512 - New header: hb-ot-shape.h
1513 - Uniscribe: fix scratch-buffer accounting.
1514 - Reorder Tai Tham SAKOT to after tone-marks.
1515 - Add Hangul shaper.
1517 hb-ot-shape-complex-hangul.cc
1518 hb-ot-shape-complex-hebrew.cc
1519 hb-ot-shape-complex-tibetan.cc
1520 - Disable 'cswh' feature in Arabic shaper.
1521 - Coretext: better handle surrogate pairs.
1522 - Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE.
1525 Overview of changes leading to 0.9.25
1526 Wednesday, December 4, 2013
1527 =====================================
1529 - Myanmar shaper improvements.
1530 - Avoid font fallback in CoreText backend.
1531 - Additional OpenType language tag mappiongs.
1532 - More aggressive shape-plan caching.
1533 - Build with / require automake 1.13.
1534 - Build with libtool 2.4.2.418 alpha to support ppc64le.
1537 Overview of changes leading to 0.9.24
1538 Tuesday, November 13, 2013
1539 =====================================
1541 - Misc compiler warning fixes with clang.
1542 - No functional changes.
1545 Overview of changes leading to 0.9.23
1546 Monday, October 28, 2013
1547 =====================================
1549 - "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
1550 - Fix (Chain)Context recursion with non-monotone lookup positions.
1551 - Misc Indic bug fixes.
1552 - New Javanese / Buginese shaping, similar to Windows 8.1.
1555 Overview of changes leading to 0.9.22
1556 Thursday, October 3, 2013
1557 =====================================
1559 - Fix use-after-end-of-scope in hb_language_from_string().
1560 - Fix hiding of default_ignorables if font doesn't have space glyph.
1561 - Protect against out-of-range lookup indices.
1565 * Added hb_ot_layout_table_get_lookup_count()
1568 Overview of changes leading to 0.9.21
1569 Monday, September 16, 2013
1570 =====================================
1572 - Rename gobject-introspection library name from harfbuzz to HarfBuzz.
1573 - Remove (long disabled) hb-old and hb-icu-le test shapers.
1574 - Misc gtk-doc and gobject-introspection annotations.
1578 * Add HB_SET_VALUE_INVALID
1580 Overview of changes leading to 0.9.20
1581 Thursday, August 29, 2013
1582 =====================================
1585 - Misc substitute_closure() fixes.
1589 - gtk-doc boilerplate integrated. Docs are built now, but
1590 contain no contents. By next release hopefully we have
1591 some content in. Enable using --enable-gtk-doc.
1593 GObject and Introspection:
1594 - Added harfbuzz-gobject library (hb-gobject.h) that has type
1595 bindings for all HarfBuzz objects and enums. Enable using
1597 - Added gobject-introspection boilerplate. Nothing useful
1598 right now. Work in progress. Gets enabled automatically if
1599 --with-gobject is used. Override with --disable-introspection.
1602 - Apply 'mark' in Myanmar shaper.
1603 - Don't apply 'dlig' by default.
1606 - Support user features.
1607 - Fix loading of fonts that are also installed on the system.
1608 - Fix shaping of Arabic Presentation Forms.
1609 - Fix build with wide chars.
1612 - Support user features.
1615 - hb_face_t code moved to hb-face.h / hb-face.cc.
1616 - Added hb-deprecated.h.
1619 - Added HB_DISABLE_DEPRECATED.
1620 - Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
1621 HB_SCRIPT_CANADIAN_SYLLABICS.
1622 - Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
1623 HB_BUFFER_FLAG_DEFAULT.
1624 - Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
1625 HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
1628 Overview of changes leading to 0.9.19
1629 Tuesday, July 16, 2013
1630 =====================================
1633 - Better handling of multiple variation selectors in a row.
1634 - Pass on variation selector to GSUB if not consumed by cmap.
1635 - Fix undefined memory access.
1636 - Add Javanese config to Indic shaper.
1639 Overview of changes leading to 0.9.18
1640 Tuesday, May 28, 2013
1641 =====================================
1645 - All unneeded code is all disabled by default,
1647 - Uniscribe and CoreText shapers can be enabled with their --with options,
1649 - icu_le and old shapers cannot be enabled for now,
1651 - glib, freetype, and cairo will be detected automatically.
1652 They can be force on/off'ed with their --with options,
1654 - icu and graphite2 are default off, can be enabled with their --with
1657 Moreover, ICU support is now build into a separate library:
1658 libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
1659 Distros can enable ICU now without every application on earth
1660 getting linked to via libharfbuzz.so.
1662 For distros I recommend that they make sure they are building --with-glib
1663 --with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
1664 And package harfbuzz and harfbuzz-icu separately.
1667 Overview of changes leading to 0.9.17
1668 Monday, May 20, 2013
1669 =====================================
1672 - Fix bug in hb_set_get_min().
1673 - Fix regression with Arabic mark positioning / width-zeroing.
1675 Overview of changes leading to 0.9.16
1676 Friday, April 19, 2013
1677 =====================================
1679 - Major speedup in OpenType lookup processing. With the Amiri
1680 Arabic font, this release is over 3x faster than previous
1681 release. All scripts / languages should see this speedup.
1683 - New --num-iterations option for hb-shape / hb-view; useful for
1686 Overview of changes leading to 0.9.15
1687 Friday, April 05, 2013
1688 =====================================
1691 - Fix crasher in graphite2 shaper.
1692 - Fix Arabic mark width zeroing regression.
1693 - Don't compose Hangul jamo into Unicode syllables.
1696 Overview of changes leading to 0.9.14
1697 Thursday, March 21, 2013
1698 =====================================
1701 - Fix time-consuming sanitize with malicious fonts.
1702 - Implement hb_buffer_deserialize_glyphs() for both json and text.
1703 - Do not ignore Hangul filler characters.
1705 * Fix Malayalam pre-base reordering interaction with post-forms.
1706 * Further adjust ZWJ handling. Should fix known regressions from
1710 Overview of changes leading to 0.9.13
1711 Thursday, February 25, 2013
1712 =====================================
1715 - Ngapi HarfBuzz Hackfest in London (February 2013):
1716 * Fixed all known Indic bugs,
1717 * New Win8-style Myanmar shaper,
1718 * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
1719 * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
1720 matching GSUB/GPOS lookups,
1721 * Fix 'Phags-Pa U+A872 shaping,
1722 * Fix partial disabling of default-on features,
1723 * Allow disabling of TrueType kerning.
1724 - Fix possible crasher with broken fonts with overlapping tables.
1725 - Removed generated files from git again. So, one needs ragel to
1726 bootstrap from the git tree.
1729 - hb_shape() and related APIs now abort if buffer direction is
1730 HB_DIRECTION_INVALID. Previously, hb_shape() was calling
1731 hb_buffer_guess_segment_properties() on the buffer before
1732 shaping. The heuristics in that function are fragile. If the
1733 user really wants the old behvaior, they can call that function
1734 right before calling hb_shape() to get the old behavior.
1735 - hb_blob_create_sub_blob() always creates sub-blob with
1736 HB_MEMORY_MODE_READONLY. See comments for the reason.
1739 Overview of changes leading to 0.9.12
1740 Thursday, January 18, 2013
1741 =====================================
1743 - Build fixes for Sun compiler.
1746 Overview of changes leading to 0.9.11
1747 Thursday, January 10, 2013
1748 =====================================
1751 - Fix GPOS mark attachment with null Anchor offsets.
1752 - [Indic] Fix old-spec reordering of viramas if sequence ends in one.
1753 - Fix multi-threaded shaper data creation crash.
1754 - Add atomic ops for Solaris.
1757 - Rename hb_buffer_clear() to hb_buffer_clear_contents().
1760 Overview of changes leading to 0.9.10
1761 Thursday, January 3, 2013
1762 =====================================
1764 - [Indic] Fixed rendering of Malayalam dot-reph
1765 - Updated OT language tags.
1766 - Updated graphite2 backend.
1767 - Improved hb_ot_layout_get_size_params() logic.
1768 - Improve hb-shape/hb-view help output.
1769 - Fixed hb-set.h implementation to not crash.
1770 - Fixed various issues with hb_ot_layout_collect_lookups().
1771 - Various build fixes.
1775 hb_graphite2_face_get_gr_face()
1776 hb_graphite2_font_get_gr_font()
1777 hb_coretext_face_get_cg_font()
1781 hb_ot_layout_get_size_params()
1784 Overview of changes leading to 0.9.9
1785 Wednesday, December 5, 2012
1786 ====================================
1788 - Fix build on Windows.
1789 - Minor improvements.
1792 Overview of changes leading to 0.9.8
1793 Tuesday, December 4, 2012
1794 ====================================
1797 - Actually implement hb_shape_plan_get_shaper ().
1798 - Make UCDB data tables const.
1799 - Lots of internal refactoring in OTLayout tables.
1800 - Flesh out hb_ot_layout_lookup_collect_glyphs().
1804 hb_ot_layout_collect_lookups()
1805 hb_ot_layout_get_size_params()
1808 Overview of changes leading to 0.9.7
1809 Sunday, November 21, 2012
1810 ====================================
1813 HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
1815 - Fix Arabic contextual joining using pre-context text.
1816 - Fix Sinhala "split matra" mess.
1817 - Fix Khmer shaping with broken fonts.
1818 - Implement Thai "PUA" shaping for old fonts.
1819 - Do NOT route Kharoshthi script through the Indic shaper.
1820 - Disable fallback positioning for Indic and Thai shapers.
1824 hb-shape / hb-view changes:
1826 - Add --text-before and --text-after
1827 - Add --bot / --eot / --preserve-default-ignorables
1828 - hb-shape --output-format=json
1837 HB_BUFFER_FLAGS_DEFAULT
1840 HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
1842 hb_buffer_set_flags()
1843 hb_buffer_get_flags()
1845 HB_BUFFER_SERIALIZE_FLAGS
1846 hb_buffer_serialize_glyphs()
1847 hb_buffer_deserialize_glyphs()
1848 hb_buffer_serialize_list_formats()
1852 hb_set_get_population()
1855 hb_face_[sg]et_glyph_count()
1857 hb_segment_properties_t
1858 HB_SEGMENT_PROPERTIES_DEFAULT
1859 hb_segment_properties_equal()
1860 hb_segment_properties_hash()
1862 hb_buffer_set_segment_properties()
1863 hb_buffer_get_segment_properties()
1865 hb_ot_layout_glyph_class_t
1866 hb_ot_layout_get_glyph_class()
1867 hb_ot_layout_get_glyphs_in_class()
1870 hb_shape_plan_create()
1871 hb_shape_plan_create_cached()
1872 hb_shape_plan_get_empty()
1873 hb_shape_plan_reference()
1874 hb_shape_plan_destroy()
1875 hb_shape_plan_set_user_data()
1876 hb_shape_plan_get_user_data()
1877 hb_shape_plan_execute()
1878 hb_shape_plan_get_shaper()
1880 hb_ot_shape_plan_collect_lookups()
1885 - Remove "mask" parameter from hb_buffer_add().
1886 - Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
1887 - hb-set.h API const correction.
1888 - Renamed hb_set_min/max() to hb_set_get_min/max().
1889 - Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
1890 - Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
1894 Overview of changes leading to 0.9.6
1895 Sunday, November 13, 2012
1896 ====================================
1898 - Don't clear pre-context text if no new context is provided.
1899 - Fix ReverseChainingSubstLookup, which was totally borked.
1900 - Adjust output format of hb-shape a bit.
1901 - Include config.h.in in-tree. Makes it easier for alternate build systems.
1902 - Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
1903 - Use ICU LayoutEngine's C API instead of C++. Avoids much headache.
1904 - Drop glyphs for all of Unicode Default_Ignorable characters.
1908 - Enable 'dlig' and 'mset' features in Arabic shaper.
1909 - Implement 'Phags-pa shaping, improve Mongolian.
1912 - Decompose Sinhala split matras the way old HarfBuzz / Pango did.
1913 - Initial support for Consonant Medials.
1914 - Start adding new-style Myanmar shaping.
1915 - Make reph and 'pref' logic introspect the font.
1916 - Route Meetei-Mayek through the Indic shaper.
1917 - Don't apply 'liga' in Indic shaper.
1918 - Improve Malayalam pre-base reordering Ra interaction with Chillus.
1922 Overview of changes leading to 0.9.5
1923 Sunday, October 14, 2012
1924 ====================================
1926 - Synthetic-GSUB Arabic fallback shaping.
1928 - Misc Indic improvements.
1930 - Add build system support for pthread.
1932 - Imported UCDN for in-tree Unicode callbacks implementation.
1934 - Context-aware Arabic joining.
1940 hb_feature_to/from-string()
1941 hb_buffer_[sg]et_content_type()
1945 Overview of changes leading to 0.9.4
1946 Tuesday, Sep 03, 2012
1947 ====================================
1949 - Indic improvements with old-spec Malayalam.
1951 - Better fallback glyph positioning, specially with Thai / Lao marks.
1953 - Implement dotted-circle insertion.
1955 - Better Arabic fallback shaping / ligation.
1957 - Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name.
1963 Overview of changes leading to 0.9.3
1964 Friday, Aug 18, 2012
1965 ====================================
1967 - Fixed fallback mark positioning for left-to-right text.
1969 - Improve mark positioning for the remaining combining classes.
1971 - Unbreak Thai and fallback Arabic shaping.
1973 - Port Arabic shaper to shape-plan caching.
1975 - Use new ICU normalizer functions.
1979 Overview of changes leading to 0.9.2
1980 Friday, Aug 10, 2012
1981 ====================================
1983 - Over a thousand commits! This is the first major release of HarfBuzz.
1985 - HarfBuzz is feature-complete now! It should be in par, or better, than
1986 both Pango's shapers and old HarfBuzz / Qt shapers.
1988 - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
1990 - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
1991 Sinhala, N'ko, Mongolian, and Mandaic.
1993 - New Thai / Lao shaper.
1995 - Tibetan / Hangul support in the generic shaper.
1997 - Synthetic GDEF support for fonts without a GDEF table.
1999 - Fallback mark positioning for fonts without a GPOS table.
2001 - Unicode normalization shaping heuristic during glyph mapping.
2003 - New experimental Graphite2 backend.
2005 - New Uniscribe backend (primarily for testing).
2007 - New CoreText backend (primarily for testing).
2009 - Major optimization and speedup.
2011 - Test suites and testing infrastructure (work in progress).
2013 - Greatly improved hb-view cmdline tool.
2015 - hb-shape cmdline tool.
2017 - Unicode 6.1 support.
2019 Summary of API changes:
2023 - Users are expected to only include main header files now (ie. hb.h,
2024 hb-glib.h, hb-ft.h, ...)
2026 - All struct tag names had their initial underscore removed.
2027 Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
2029 - All set_user_data() functions now take a "replace" boolean parameter.
2031 - hb_buffer_create() takes zero arguments now.
2032 Use hb_buffer_pre_allocate() to pre-allocate.
2034 - hb_buffer_add_utf*() now accept -1 for length parameteres,
2035 meaning "nul-terminated".
2037 - hb_direction_t enum values changed.
2039 - All *_from_string() APIs now take a length parameter to allow for
2040 non-nul-terminated strings. A -1 length means "nul-terminated".
2042 - Typedef for hb_language_t changed.
2044 - hb_get_table_func_t renamed to hb_reference_table_func_t.
2046 - hb_ot_layout_table_choose_script()
2048 - Various renames in hb-unicode.h.
2052 - hb_buffer_guess_properties()
2053 Automatically called by hb_shape().
2055 - hb_buffer_normalize_glyphs()
2057 - hb_tag_from_string()
2063 - hb_face_reference_blob()
2064 - hb_face_[sg]et_index()
2065 - hb_face_set_upem()
2067 - hb_font_get_glyph_name_func_t
2068 hb_font_get_glyph_from_name_func_t
2069 hb_font_funcs_set_glyph_name_func()
2070 hb_font_funcs_set_glyph_from_name_func()
2071 hb_font_get_glyph_name()
2072 hb_font_get_glyph_from_name()
2073 hb_font_glyph_to_string()
2074 hb_font_glyph_from_string()
2076 - hb_font_set_funcs_data()
2078 - hb_ft_font_set_funcs()
2079 - hb_ft_font_get_face()
2081 - hb-gobject.h (work in progress)
2083 - hb_ot_shape_glyphs_closure()
2084 hb_ot_layout_substitute_closure_lookup()
2090 - hb_unicode_combining_class_t
2092 - hb_unicode_compose_func_t
2093 hb_unicode_decompose_func_t
2094 hb_unicode_decompose_compatibility_func_t
2095 hb_unicode_funcs_set_compose_func()
2096 hb_unicode_funcs_set_decompose_func()
2097 hb_unicode_funcs_set_decompose_compatibility_func()
2098 hb_unicode_compose()
2099 hb_unicode_decompose()
2100 hb_unicode_decompose_compatibility()
2104 - hb_ft_get_font_funcs()
2106 - hb_ot_layout_substitute_start()
2107 hb_ot_layout_substitute_lookup()
2108 hb_ot_layout_substitute_finish()
2109 hb_ot_layout_position_start()
2110 hb_ot_layout_position_lookup()
2111 hb_ot_layout_position_finish()
2115 Overview of changes leading to 0.6.0
2116 Friday, May 27, 2011
2117 ====================================
2119 - Vertical text support in GPOS
2120 - Almost all API entries have unit tests now, under test/
2121 - All thread-safety issues are fixed
2123 Summary of API changes follows.
2130 hb_language_get_default()
2131 hb_direction_to_string()
2132 hb_direction_from_string()
2133 hb_script_get_horizontal_direction()
2137 hb_category_t renamed to hb_unicode_general_category_t
2140 hb_language_t is a typed pointers now
2146 * Use ISO 15924 tags for hb_script_t:
2149 hb_script_from_iso15924_tag()
2150 hb_script_to_iso15924_tag()
2151 hb_script_from_string()
2154 HB_SCRIPT_* enum members changed value.
2157 * Buffer API streamlined:
2161 hb_buffer_set_length()
2162 hb_buffer_allocation_successful()
2165 hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
2166 hb_buffer_add_glyph() renamed to hb_buffer_add()
2170 hb_buffer_clear_positions()
2173 hb_buffer_get_glyph_infos() takes an out length parameter now
2174 hb_buffer_get_glyph_positions() takes an out length parameter now
2177 * Blob API streamlined:
2181 hb_blob_get_data_writable()
2184 hb_blob_create_empty() renamed to hb_blob_get_empty()
2189 hb_blob_is_writable()
2190 hb_blob_try_writable()
2193 hb_blob_create() takes user_data before destroy now
2196 * Unicode functions API:
2198 o Unicode function vectors can subclass other unicode function vectors now.
2199 Unimplemented callbacks in the subclass automatically chainup to the parent.
2201 o All hb_unicode_funcs_t callbacks take a user_data now. Their setters
2202 take a user_data and its respective destroy callback.
2205 hb_unicode_funcs_get_empty()
2206 hb_unicode_funcs_get_default()
2207 hb_unicode_funcs_get_parent()
2210 hb_unicode_funcs_create() now takes a parent_funcs.
2212 o Removed func getter functions:
2213 hb_unicode_funcs_get_mirroring_func()
2214 hb_unicode_funcs_get_general_category_func()
2215 hb_unicode_funcs_get_script_func()
2216 hb_unicode_funcs_get_combining_class_func()
2217 hb_unicode_funcs_get_eastasian_width_func()
2223 hb_face_get_table() renamed to hb_face_reference_table()
2224 hb_face_create_for_data() renamed to hb_face_create()
2227 hb_face_create_for_tables() takes user_data before destroy now
2228 hb_face_reference_table() returns empty blob instead of NULL
2229 hb_get_table_func_t accepts the face as first parameter now
2233 o Fonts can subclass other fonts now. Unimplemented callbacks in the
2234 subclass automatically chainup to the parent. When chaining up,
2235 scale is adjusted if the parent font has a different scale.
2237 o All hb_font_funcs_t callbacks take a user_data now. Their setters
2238 take a user_data and its respective destroy callback.
2241 hb_font_get_parent()
2242 hb_font_funcs_get_empty()
2243 hb_font_create_sub_font()
2246 hb_font_funcs_copy()
2247 hb_font_unset_funcs()
2249 o Removed func getter functions:
2250 hb_font_funcs_get_glyph_func()
2251 hb_font_funcs_get_glyph_advance_func()
2252 hb_font_funcs_get_glyph_extents_func()
2253 hb_font_funcs_get_contour_point_func()
2254 hb_font_funcs_get_kerning_func()
2257 hb_font_create() takes a face and references it now
2258 hb_font_set_funcs() takes user_data before destroy now
2259 hb_font_set_scale() accepts signed integers now
2260 hb_font_get_contour_point_func_t now takes glyph first, then point_index
2261 hb_font_get_glyph_func_t returns a success boolean now
2264 * Changed object model:
2266 o All object types have a _get_empty() now:
2268 hb_buffer_get_empty()
2271 hb_font_funcs_get_empty()
2272 hb_unicode_funcs_get_empty()
2274 o Added _set_user_data() and _get_user_data() for all object types:
2275 hb_blob_get_user_data()
2276 hb_blob_set_user_data()
2277 hb_buffer_get_user_data()
2278 hb_buffer_set_user_data()
2279 hb_face_get_user_data()
2280 hb_face_set_user_data()
2281 hb_font_funcs_get_user_data()
2282 hb_font_funcs_set_user_data()
2283 hb_font_get_user_data()
2284 hb_font_set_user_data()
2285 hb_unicode_funcs_get_user_data()
2286 hb_unicode_funcs_set_user_data()
2288 o Removed the _get_reference_count() from all object types:
2289 hb_blob_get_reference_count()
2290 hb_buffer_get_reference_count()
2291 hb_face_get_reference_count()
2292 hb_font_funcs_get_reference_count()
2293 hb_font_get_reference_count()
2294 hb_unicode_funcs_get_reference_count()
2296 o Added _make_immutable() and _is_immutable() for all object types except for buffer:
2297 hb_blob_make_immutable()
2298 hb_blob_is_immutable()
2299 hb_face_make_immutable()
2300 hb_face_is_immutable()
2303 * Changed API for vertical text support
2305 o The following callbacks where removed:
2306 hb_font_get_glyph_advance_func_t
2307 hb_font_get_kerning_func_t
2309 o The following new callbacks added instead:
2310 hb_font_get_glyph_h_advance_func_t
2311 hb_font_get_glyph_v_advance_func_t
2312 hb_font_get_glyph_h_origin_func_t
2313 hb_font_get_glyph_v_origin_func_t
2314 hb_font_get_glyph_h_kerning_func_t
2315 hb_font_get_glyph_v_kerning_func_t
2317 o The following API removed as such:
2318 hb_font_funcs_set_glyph_advance_func()
2319 hb_font_funcs_set_kerning_func()
2320 hb_font_get_glyph_advance()
2321 hb_font_get_kerning()
2323 o New API added instead:
2324 hb_font_funcs_set_glyph_h_advance_func()
2325 hb_font_funcs_set_glyph_v_advance_func()
2326 hb_font_funcs_set_glyph_h_origin_func()
2327 hb_font_funcs_set_glyph_v_origin_func()
2328 hb_font_funcs_set_glyph_h_kerning_func()
2329 hb_font_funcs_set_glyph_v_kerning_func()
2330 hb_font_get_glyph_h_advance()
2331 hb_font_get_glyph_v_advance()
2332 hb_font_get_glyph_h_origin()
2333 hb_font_get_glyph_v_origin()
2334 hb_font_get_glyph_h_kerning()
2335 hb_font_get_glyph_v_kerning()
2337 o The following higher-leve API added for convenience:
2338 hb_font_get_glyph_advance_for_direction()
2339 hb_font_get_glyph_origin_for_direction()
2340 hb_font_add_glyph_origin_for_direction()
2341 hb_font_subtract_glyph_origin_for_direction()
2342 hb_font_get_glyph_kerning_for_direction()
2343 hb_font_get_glyph_extents_for_origin()
2344 hb_font_get_glyph_contour_point_for_origin()
2347 * OpenType Layout API:
2350 hb_ot_layout_position_start()
2351 hb_ot_layout_substitute_start()
2352 hb_ot_layout_substitute_finish()
2358 hb_glib_script_to_script()
2359 hb_glib_script_from_script()
2360 hb_icu_script_to_script()
2361 hb_icu_script_from_script()
2364 * Version API added: