1 Overview of changes leading to 2.6.7
2 Wednesday, June 3, 2020
3 ====================================
4 - Update to Unicode 13.0.0.
5 - Fix hb_ot_layout_get_ligature_carets for fonts without lcar table, it was
6 completely broken for all the other fonts since 2.1.2.
7 - As a part of our migration to meson, this release will be the last one
8 to provide cmake port files but autotools still is our main build system.
9 There is a possibility that the next version or the after be released
13 Overview of changes leading to 2.6.6
15 ====================================
16 - A fix in AAT kerning for Geeza Pro.
17 - Better support for resource fork fonts on macOS.
20 Overview of changes leading to 2.6.5
21 Friday, April 17, 2020
22 ====================================
23 - Add experimental meson build system. Autotools is still the primary
24 and supported build system.
25 - AAT is now always preferred for horizontal scripts when both AAT and OT
26 layout tables exist at the same time.
27 - Subsetter improvements.
29 +hb_ft_font_lock_face()
30 +hb_ft_font_unlock_face()
33 Overview of changes leading to 2.6.4
34 Monday, October 29, 2019
35 ====================================
40 Overview of changes leading to 2.6.3
41 Monday, October 28, 2019
42 ====================================
43 - Misc small fixes, mostly to build-related issues.
45 +hb_font_get_nominal_glyphs()
48 Overview of changes leading to 2.6.2
49 Monday, September 30, 2019
50 ====================================
51 - Misc small fixes, mostly to build-related issues.
54 Overview of changes leading to 2.6.1
55 Thursday, August 22, 2019
56 ====================================
57 - Fix regression with hb_font_create_sub_font scaling introduced in 2.6.0.
58 - Change interpretation of font PTEM size / CoreText font size handling.
59 See https://github.com/harfbuzz/harfbuzz/pull/1484
60 - hb-ot-font: Prefer symbol cmap subtable if present.
61 - Apply 'dist'/'abvm'/'blwm' features to all scripts.
62 - Drop experimental DirectWrite API.
65 Overview of changes leading to 2.6.0
66 Tuesday, August 13, 2019
67 ====================================
68 - New OpenType metrics, baseline, and metadata table access APIs.
69 - New API to set font variations to a named-instance.
70 - New hb-gdi.h header and API for creating hb_face_t from HFONT.
71 - Amalgam: Provide a single-file harfbuzz.cc file for easier alternate building.
72 - More size-reduction configurable options, enabled by HB_TINY.
74 +hb_font_set_var_named_instance()
76 +hb_ot_layout_baseline_tag_t
77 +hb_ot_layout_get_baseline()
79 +hb_ot_meta_get_entry_tags()
80 +hb_ot_meta_reference_entry()
82 +hb_ot_metrics_get_position()
83 +hb_ot_metrics_get_variation()
84 +hb_ot_metrics_get_x_variation()
85 +hb_ot_metrics_get_y_variation()
88 Overview of changes leading to 2.5.3
89 Wednesday, June 26, 2019
90 ====================================
91 - Fix UCD script data for Unicode 10+ scripts. This was broken since 2.5.0.
92 - More optimizations for HB_TINY.
95 Overview of changes leading to 2.5.2
96 Thursday, June 20, 2019
97 ====================================
98 - More hb-config.hh facilities to shrink library size, namely when built as
100 - New documentation of custom configurations in CONFIG.md.
101 - Fix build on gcc 4.8. That's supported again.
102 - Universal Shaping Engine improvements thanks to David Corbett.
103 - API Changes: Undeprecate some horizontal-kerning API and re-enable in hb-ft,
104 such that Type1 fonts will continue kerning.
107 Overview of changes leading to 2.5.1
109 ====================================
110 - Fix build with various versions of Visual Studio.
111 - Improved documentation, thanks to Nathan Willis.
112 - Bugfix in subsetting glyf table.
113 - Improved scripts for cross-compiling for Windows using mingw.
114 - Rename HB_MATH_GLYPH_PART_FLAG_EXTENDER to HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER.
115 A deprecated macro is added for backwards-compatibility.
118 Overview of changes leading to 2.5.0
120 ====================================
121 - This release does not include much functional changes, but includes major internal
122 code-base changes. We now require C++11. Support for gcc 4.8 and earlier has been
124 - New hb-config.hh facility for compiling smaller library for embedded and web usecases.
125 - New Unicode Character Databse implementation that is half the size of previously-used
127 - Subsetter improvements.
128 - Improved documentation, thanks to Nathan Willis.
129 - Misc shaping fixes.
132 Overview of changes leading to 2.4.0
133 Monday, March 25, 2019
134 ====================================
137 - Subsetter improvements.
139 HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE
140 hb_directwrite_face_create()
143 Overview of changes leading to 2.3.1
144 Wednesday, January 30, 2019
145 ====================================
147 - Misc internal housekeeping cleanup.
150 Overview of changes leading to 2.3.0
151 Thursday, December 20, 2018
152 ====================================
153 - Fix regression on big-endian architectures. Ouch!
154 - Misc bug and build fixes.
155 - Fix subsetting of simple GSUB/GDEF.
156 - Merge CFF / CFF2 support contributed by Adobe. This mostly involves
157 the subsetter, but also get_glyph_extents on CFF fonts.
160 +hb_aat_layout_has_substitution()
161 +hb_aat_layout_has_positioning()
162 +hb_aat_layout_has_tracking()
165 Overview of changes leading to 2.2.0
166 Thursday, November 29, 2018
167 ====================================
168 - Misc shaping bug fixes.
169 - Add font variations named-instance API.
170 - Deprecate font variations axis enumeration API and add replacement.
171 - AAT shaping improvements:
172 o Fixed 'kern' table Format 2 implementation.
173 o Implement 'feat' table API for feature detection.
174 o Blacklist 'GSUB' table of fonts from 'MUTF' foundry that also have 'morx'.
177 +hb_aat_layout_feature_type_t
178 +hb_aat_layout_feature_selector_t
179 +hb_aat_layout_get_feature_types()
180 +hb_aat_layout_feature_type_get_name_id
181 +hb_aat_layout_feature_selector_info_t
182 +HB_AAT_LAYOUT_NO_SELECTOR_INDEX
183 +hb_aat_layout_feature_type_get_selector_infos()
184 +hb_ot_var_axis_flags_t
185 +hb_ot_var_axis_info_t
186 +hb_ot_var_get_axis_infos()
187 +hb_ot_var_find_axis_info()
188 +hb_ot_var_get_named_instance_count()
189 +hb_ot_var_named_instance_get_subfamily_name_id()
190 +hb_ot_var_named_instance_get_postscript_name_id()
191 +hb_ot_var_named_instance_get_design_coords()
194 +HB_OT_VAR_NO_AXIS_INDEX
196 +hb_ot_var_get_axes()
197 +hb_ot_var_find_axis()
200 Overview of changes leading to 2.1.3
201 Friday, November 16, 2018
202 ====================================
203 - Fix AAT 'mort' shaping, which was broken in 2.1.2
206 Overview of changes leading to 2.1.2
207 Friday, November 16, 2018
208 ====================================
209 - Various internal changes.
210 - AAT shaping improvements:
211 o Implement kern table Format 1 state-machine-based kerning.
212 o Implement cross-stream kerning (cursive positioning, etc).
213 o Ignore emptyish GSUB tables (zero scripts) if morx present.
214 o Don't apply GPOS if morx is being applied. Matches Apple.
217 -Overview of changes leading to 2.1.1
218 Monday, November 5, 2018
219 ====================================
221 o Implement 'mort' table.
222 o Implement 'kern' subtables Format 1 and Format 3.
225 Overview of changes leading to 2.1.0
226 Tuesday, October 30, 2018
227 ====================================
228 - AAT shaping improvements:
229 o Allow user controlling AAT features, for whole buffer only currently.
230 o Several 'morx' fixes.
231 o Implement tuple-kerns in 'kerx'; Fixes kerning with Apple default
233 - Support for color fonts:
234 o COLR/CPAL API to fetch color layers.
235 o SVG table to fetch SVG documents.
236 o CBDT/sbix API to fetch PNG images.
237 - New 'name' table API.
238 - hb-ot-font now uses 'VORG' table to correctly position CFF glyphs
240 - Various fuzzer-found bug fixes.
244 A type and a macro added in 2.0.0 were renamed:
246 hb_name_id_t -> hb_ot_name_id_t
247 HB_NAME_ID_INVALID -> HB_OT_NAME_ID_INVALID
253 +hb_color_get_alpha()
255 +hb_color_get_green()
257 +hb_ot_color_has_palettes()
258 +hb_ot_color_palette_get_count()
259 +hb_ot_color_palette_get_name_id()
260 +hb_ot_color_palette_color_get_name_id()
261 +hb_ot_color_palette_flags_t
262 +hb_ot_color_palette_get_flags()
263 +hb_ot_color_palette_get_colors()
264 +hb_ot_color_has_layers()
266 +hb_ot_color_glyph_get_layers()
267 +hb_ot_color_has_svg()
268 +hb_ot_color_glyph_reference_svg()
269 +hb_ot_color_has_png()
270 +hb_ot_color_glyph_reference_png()
273 +HB_OT_NAME_ID_INVALID
274 +HB_OT_NAME_ID_COPYRIGHT
275 +HB_OT_NAME_ID_FONT_FAMILY
276 +HB_OT_NAME_ID_FONT_SUBFAMILY
277 +HB_OT_NAME_ID_UNIQUE_ID
278 +HB_OT_NAME_ID_FULL_NAME
279 +HB_OT_NAME_ID_VERSION_STRING
280 +HB_OT_NAME_ID_POSTSCRIPT_NAME
281 +HB_OT_NAME_ID_TRADEMARK
282 +HB_OT_NAME_ID_MANUFACTURER
283 +HB_OT_NAME_ID_DESIGNER
284 +HB_OT_NAME_ID_DESCRIPTION
285 +HB_OT_NAME_ID_VENDOR_URL
286 +HB_OT_NAME_ID_DESIGNER_URL
287 +HB_OT_NAME_ID_LICENSE
288 +HB_OT_NAME_ID_LICENSE_URL
289 +HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY
290 +HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY
291 +HB_OT_NAME_ID_MAC_FULL_NAME
292 +HB_OT_NAME_ID_SAMPLE_TEXT
293 +HB_OT_NAME_ID_CID_FINDFONT_NAME
294 +HB_OT_NAME_ID_WWS_FAMILY
295 +HB_OT_NAME_ID_WWS_SUBFAMILY
296 +HB_OT_NAME_ID_LIGHT_BACKGROUND
297 +HB_OT_NAME_ID_DARK_BACKGROUND
298 +HB_OT_NAME_ID_VARIATIONS_PS_PREFIX
300 +hb_ot_name_list_names()
301 +hb_ot_name_get_utf8()
302 +hb_ot_name_get_utf16()
303 +hb_ot_name_get_utf32()
306 Overview of changes leading to 2.0.2
307 Saturday, October 20, 2018
308 ====================================
309 - Fix two minor memory access issues in AAT tables.
312 Overview of changes leading to 2.0.1
313 Friday, October 19, 2018
314 ====================================
315 - Fix hb-version.h reported release version that went wrong (1.8.0)
316 with previous release.
317 - Fix extrapolation in 'trak' table.
318 - Fix hb-font infinite-recursion issue with some font funcs and
320 - Implement variation-kerning format in kerx table, although without
322 - Fix return value of hb_map_is_empty().
325 Overview of changes leading to 2.0.0
326 Thursday, October 18, 2018
327 ====================================
328 - Added AAT shaping support (morx/kerx/trak).
329 Automatically used if GSUB/GPOS are not available respectively.
330 Set HB_OPTIONS=aat env var to have morx/kerx preferred over
332 - Apply TrueType kern table internally, instead of relying on
334 - Khmer shaper significantly rewritten to better match Uniscribe.
335 - Indic3 tags ('dev3', etc) are passed to USE shaper.
336 - .dfont Mac font containers implemented.
337 - Script- and language-mapping revamped to better use BCP 47.
338 - Misc USE and Indic fixes.
339 - Misc everything fixes.
340 - Too many things to list. Biggest release since 0.9.1, with
341 over 500 commits in just over 5 weeks! Didn't intend it to
342 be a big release. Just happened to become.
343 - hb-ft now locks underlying FT_Face during use.
347 - Newly-created hb_font_t's now have our internal "hb-ot-font"
348 callbacks set on them, so they should work out of the box
349 without any callbacks set. If callbacks are set, everything
350 is back to what it was before, the fallback callbacks are
351 null. If you to get the internal implementation modified,
354 - New hb_font_funcs_set_nominal_glyphs_func() allows speeding
355 up character to glyph mapping.
358 +HB_FEATURE_GLOBAL_START
359 +HB_FEATURE_GLOBAL_END
360 +hb_buffer_set_invisible_glyph()
361 +hb_buffer_get_invisible_glyph()
362 +hb_font_funcs_set_nominal_glyphs_func()
363 +hb_ot_layout_table_select_script()
364 +hb_ot_layout_script_select_language()
365 +hb_ot_layout_feature_get_name_ids()
366 +hb_ot_layout_feature_get_characters()
369 +HB_OT_MAX_TAGS_PER_SCRIPT
370 +hb_ot_tags_from_script_and_language()
371 +hb_ot_tags_to_script_and_language()
374 -hb_font_funcs_set_glyph_func()
375 -hb_unicode_eastasian_width_func_t
376 -hb_unicode_funcs_set_eastasian_width_func()
377 -hb_unicode_eastasian_width()
378 -hb_unicode_decompose_compatibility_func_t
379 -HB_UNICODE_MAX_DECOMPOSITION_LEN
380 -hb_unicode_funcs_set_decompose_compatibility_func()
381 -hb_unicode_decompose_compatibility()
382 -hb_font_funcs_set_glyph_h_kerning_func()
383 -hb_font_funcs_set_glyph_v_kerning_func()
384 -hb_font_get_glyph_h_kerning()
385 -hb_font_get_glyph_v_kerning()
386 -hb_font_get_glyph_kerning_for_direction()
387 -hb_ot_layout_table_choose_script()
388 -hb_ot_layout_script_find_language()
389 -hb_ot_tags_from_script()
390 -hb_ot_tag_from_language()
393 Overview of changes leading to 1.9.0
394 Monday, September 10, 2018
395 ====================================
396 - Added 'cmap' API to hb_face_t.
398 - hb-ot-font re-creation should be much leaner now, as the
399 font tables it uses are cached on hb_face_t now.
400 - Internal source header file name changes:
401 hb-*-private.hh is renamed to hb-*.hh.
405 +hb_face_collect_unicodes()
406 +hb_face_collect_variation_selectors()
407 +hb_face_collect_variation_unicodes()
408 +hb_face_builder_create()
409 +hb_face_builder_add_table()
412 Overview of changes leading to 1.8.8
413 Tuesday, August 14, 2018
414 ====================================
415 - Fix hb-icu crash on architectures where compare_exchange_weak() can
416 fail falsely. This bug was introduced in 1.8.4.
417 https://bugs.chromium.org/p/chromium/issues/detail?id=873568
418 - More internal refactoring of atomic operations and singletons.
420 The following functions do NOT reference their return value before
422 * hb_unicode_funcs_get_default()
423 * hb_glib_get_unicode_funcs()
424 * hb_icu_get_unicode_funcs()
425 This is consistent with their naming ("get", instead of "reference")
426 as well as how they are used in the wild (ie. no one calls destroy()
427 on their return value.)
430 Overview of changes leading to 1.8.7
431 Wednesday, August 8, 2018
432 ====================================
433 - Fix assertion failure with GDEF-blacklisted fonts.
436 Overview of changes leading to 1.8.6
437 Tuesday, August 7, 2018
438 ====================================
439 - Internal code shuffling.
440 - New API to speed up getting advance widths for implementations
441 that have heavy overhead in get_h_advance callback:
442 +hb_font_funcs_set_glyph_h_advances_func
443 +hb_font_funcs_set_glyph_v_advances_func
444 +hb_font_get_glyph_advances_for_direction
445 +hb_font_get_glyph_h_advances
446 +hb_font_get_glyph_h_advances_func_t
447 +hb_font_get_glyph_v_advances
448 +hb_font_get_glyph_v_advances_func_t
451 Overview of changes leading to 1.8.5
452 Wednesday, August 1, 2018
453 ====================================
454 - Major Khmer shaper improvements to better match Microsoft.
456 - Internal improvements to atomic operations.
459 Overview of changes leading to 1.8.4
460 Tuesday, July 17, 2018
461 ====================================
462 - Fix build on non-C++11.
463 - Use C++-style GCC atomics and C++11 atomics.
466 Overview of changes leading to 1.8.3
467 Wednesday, July 11, 2018
468 ====================================
469 - A couple of Indic / USE bug fixes.
470 - Disable vectorization, as it was causing unaligned access bus error on
471 certain 32bit architectures.
474 Overview of changes leading to 1.8.2
475 Tuesday, July 3, 2018
476 ====================================
477 - Fix infinite loop in Khmer shaper.
478 - Improve hb_blob_create_from_file() for streams.
481 Overview of changes leading to 1.8.1
482 Tuesday, June 12, 2018
483 ====================================
484 - Fix hb-version.h file generation; last two releases went out with wrong ones.
485 - Add correctness bug in hb_set_t operations, introduced in 1.7.7.
486 - Remove HB_SUBSET_BUILTIN build option. Not necessary.
489 Overview of changes leading to 1.8.0
490 Tuesday, June 5, 2018
491 ====================================
492 - Update to Unicode 11.0.0.
495 Overview of changes leading to 1.7.7
496 Tuesday, June 5, 2018
497 ====================================
498 - Lots of internal changes, but not yet exposed externally.
499 - All HarfBuzz objects are significantly smaller in size now.
500 - Sinhala: Position repha on top of post-consonant, not base.
501 This better matches Windows 10 behavior, which was changed
502 from previous Windows versions.
504 o New cpp macro HB_NO_ATEXIT
505 o New cpp macro HB_SUBSET_BUILTIN
506 - Significant libharfbuzz-subset changes. API subject to change.
507 - New API in libharfbuzz:
509 +hb_blob_create_from_file()
512 A hashmap implementation:
514 +HB_MAP_VALUE_INVALID
520 +hb_map_set_user_data()
521 +hb_map_get_user_data()
522 +hb_map_allocation_successful()
525 +hb_map_get_population()
532 Overview of changes leading to 1.7.6
533 Wednesday, March 7, 2018
534 ====================================
536 - Fix to hb_set_t binary operations. Ouch.
537 - New experimental harfbuzz-subset library. All of hb-subset.h
538 is experimental right now and API WILL change.
541 hb_blob_copy_writable_or_fail()
544 hb_set_previous_range()
547 Overview of changes leading to 1.7.5
548 Tuesday, January 30, 2018
549 ====================================
551 - Separate Khmer shaper from Indic.
552 - First stab at AAT morx. Not hooked up.
556 Overview of changes leading to 1.7.4
557 Wednesday, December 20, 2017
558 ====================================
560 - Fix collect_glyphs() regression caused by hb_set_t changes.
563 Overview of changes leading to 1.7.3
564 Monday, December 18, 2017
565 ====================================
567 - hb_set_t performance tuning and optimizations.
568 - Speed up collect_glyphs() and reject garbage data.
569 - In hb_coretext_font_create() set font point-size (ptem).
573 Overview of changes leading to 1.7.2
574 Monday, December 4, 2017
575 ====================================
577 - Optimize hb_set_add_range().
580 hb_coretext_font_create()
583 Overview of changes leading to 1.7.1
584 Tuesday, November 14, 2017
585 ====================================
587 - Fix atexit object destruction regression.
588 - Fix minor integer-overflow.
591 Overview of changes leading to 1.7.0
592 Monday, November 13, 2017
593 ====================================
596 - Implement kerning and glyph names in hb-ot-font.
597 - Various DSO optimization re .data and .bss sizes.
598 - Make C++11 optional; build fixes.
599 - Mark all other backends "unsafe-to-break".
603 Overview of changes leading to 1.6.3
604 Thursday, October 26th, 2017
605 ====================================
607 - Fix hb_set_t some more. Should be solid now.
608 - Implement get_glyph_name() for hb-ot-font.
612 Overview of changes leading to 1.6.2
613 Monday, October 23nd, 2017
614 ====================================
616 - Yesterday's release had a bad crasher; don't use it. That's what
617 happens when one works on Sunday...
618 https://github.com/harfbuzz/harfbuzz/issues/578
619 - Build fixes for FreeBSD and Chrome Android.
622 Overview of changes leading to 1.6.1
623 Sunday, October 22nd, 2017
624 ====================================
626 - Don't skip over COMBINING GRAPHEME JOINER when ligating, etc.
627 To be refined: https://github.com/harfbuzz/harfbuzz/issues/554
628 - Faster hb_set_t implementation.
629 - Don't use deprecated ICU API.
630 - Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0
635 Overview of changes leading to 1.6.0
636 Friday, October the 13th, 2017
637 ====================================
639 - Update to Unicode 10.
641 - Various Indic and Universal Shaping Engine fixes as a result of
642 HarfBuzz Hackfest with Jonathan Kew at Web Engines Hackfest at
643 the Igalia offices in A Coruña, Spain. Thanks Igalia for having
646 - Implement Unicode Arabic Mark Ordering Algorithm UTR#53.
648 - Implement optical sizing / tracking in CoreText backend, using
649 new API hb_font_set_ptem().
651 - Allow notifying hb_font_t that underlying FT_Face changed sizing,
652 using new API hb_ft_font_changed().
654 - More Graphite backend RTL fixes.
656 - Fix caching of variable font shaping plans.
658 - hb-view / hb-shape now accept following new arguments:
660 o --unicodes: takes a list of hex numbers that represent Unicode
664 +hb_face_get_table_tags()
667 +hb_ft_font_changed()
670 Overview of changes leading to 1.5.1
671 Tuesday, September 5, 2017
672 ====================================
674 - Fix "unsafe-to-break" in fallback shaping and other corner cases.
675 All our tests pass with --verify now, meaning unsafe-to-break API
677 - Add --unicodes to hb-view / hb-shape.
678 - [indic] Treat Consonant_With_Stacker as consonant. This will need
680 - hb_buffer_diff() tweaks.
683 Overview of changes leading to 1.5.0
684 Wednesday, August 23, 2017
685 ====================================
687 - Misc new API, for appending a buffer to another, and for comparing
688 contents of two buffers for types of differences.
690 - New "unsafe-to-break" API. Can be used to speed up reshaping
691 in line-breaking situations. Essentially, after shaping, it returns
692 positions in the input string (some of the cluster boundaries) that
693 are "safe to break" in that if the text is segmented at that position
694 and two sides reshaped and concatenated, the shaping result is
695 exactly the same as shaping the text in one piece.
697 hb-view and hb-shape and hb-shape now take --verify, which verifies
700 Some corner cases of the implementation are still not quite working.
701 Those will be fixed in subsequent releases.
708 HB_GLYPH_FLAG_UNSAFE_TO_BREAK
709 HB_GLYPH_FLAG_DEFINED
710 hb_glyph_info_get_glyph_flags()
712 HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS
714 hb_buffer_diff_flags_t
715 HB_BUFFER_DIFF_FLAG_EQUAL
716 HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH
717 HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH
718 HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT
719 HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT
720 HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH
721 HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH
722 HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH
723 HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH
727 Overview of changes leading to 1.4.8
728 Tuesday, August 8, 2017
729 ====================================
731 - Major fix to avar table handling.
732 - Rename hb-shape --show-message to --trace.
736 Overview of changes leading to 1.4.7
737 Tuesday, July 18, 2017
738 ====================================
740 - Multiple Indic, Tibetan, and Cham fixes.
741 - CoreText: Allow disabling kerning.
742 - Adjust Arabic feature order again.
746 Overview of changes leading to 1.4.6
747 Sunday, April 23, 2017
748 ====================================
750 - Graphite2: Fix RTL positioning issue.
751 - Backlist GDEF of more versions of Padauk and Tahoma.
752 - New, experimental, cmake alternative build system.
755 Overview of changes leading to 1.4.5
756 Friday, March 10, 2017
757 ====================================
759 - Revert "Fix Context lookup application when moving back after a glyph..."
760 This introduced memory access problems. To be fixed properly soon.
763 Overview of changes leading to 1.4.4
764 Sunday, March 5, 2017
765 ====================================
767 - Fix Context lookup application when moving back after a glyph deletion.
768 - Fix buffer-overrun in Bengali.
771 Overview of changes leading to 1.4.3
772 Saturday, February 25, 2017
773 ====================================
775 - Route Adlam script to Arabic shaper.
780 hb_graphite2_font_get_gr_font()
783 Overview of changes leading to 1.4.2
784 Monday, January 23, 2017
785 ====================================
787 - Implement OpenType Font Variation tables avar/fvar/HVAR/VVAR.
788 - hb-shape and hb-view now accept --variations.
792 hb_variation_from_string()
793 hb_variation_to_string()
795 hb_font_set_variations()
796 hb_font_set_var_coords_design()
797 hb_font_get_var_coords_normalized()
802 hb_ot_var_get_axis_count()
804 hb_ot_var_find_axis()
805 hb_ot_var_normalize_variations()
806 hb_ot_var_normalize_coords()
808 - MVAR to be implemented later. Access to named instances to be
809 implemented later as well.
814 Overview of changes leading to 1.4.1
815 Thursday, January 5, 2017
816 ====================================
818 - Always build and use UCDN for Unicode data by default.
819 Reduces dependence on version of Unicode data in glib,
820 specially in the Windows bundles we are shipping, which
824 Overview of changes leading to 1.4.0
825 Thursday, January 5, 2017
826 ====================================
828 - Merged "OpenType GX" branch which adds core of support for
829 OpenType 1.8 Font Variations. To that extent, the relevant
833 hb_font_set_var_coords_normalized()
838 HB_OT_LAYOUT_NO_VARIATIONS_INDEX
839 hb_ot_layout_table_find_feature_variations()
840 hb_ot_layout_feature_with_variations_get_lookups()
841 hb_shape_plan_create2()
842 hb_shape_plan_create_cached2()
844 Currently variations in GSUB/GPOS/GDEF are fully supported,
845 and no other tables are supported. In particular, fvar/avar
846 are NOT supported, hence the hb_font_set_var_coords_normalized()
847 taking normalized coordinates. API to take design coordinates
848 will be added in the future.
850 HVAR/VVAR/MVAR support will also be added to hb-ot-font in the
853 - Fix regression in GDEF glyph class processing.
854 - Add decompositions for Chakma, Limbu, and Balinese in USE shaper.
858 Overview of changes leading to 1.3.4
859 Monday, December 5, 2016
860 ====================================
862 - Fix vertical glyph origin in hb-ot-font.
863 - Implement CBDT/CBLC color font glyph extents in hb-ot-font.
866 Overview of changes leading to 1.3.3
867 Wednesday, September 28, 2016
868 ====================================
870 - Implement parsing of OpenType MATH table.
874 hb_ot_math_constant_t
876 hb_ot_math_glyph_variant_t
877 hb_ot_math_glyph_part_flags_t
878 hb_ot_math_glyph_part_t
880 hb_ot_math_get_constant
881 hb_ot_math_get_glyph_italics_correction
882 hb_ot_math_get_glyph_top_accent_attachment
883 hb_ot_math_get_glyph_kerning
884 hb_ot_math_is_glyph_extended_shape
885 hb_ot_math_get_glyph_variants
886 hb_ot_math_get_min_connector_overlap
887 hb_ot_math_get_glyph_assembly
890 Overview of changes leading to 1.3.2
891 Wednesday, September 27, 2016
892 ====================================
894 - Fix build of hb-coretext on older OS X versions.
897 Overview of changes leading to 1.3.1
898 Wednesday, September 7, 2016
899 ====================================
901 - Blacklist bad GDEF of more fonts (Padauk).
902 - More CoreText backend crash fixes with OS X 10.9.5.
906 Overview of changes leading to 1.3.0
907 Thursday, July 21, 2016
908 ====================================
910 - Update to Unicode 9.0.0
911 - Move Javanese from Indic shaper to Universal Shaping Engine.
912 - Allow MultipleSubst to delete a glyph (matching Windows engine).
913 - Update Universal Shaping Engine to latest draft from Microsoft.
914 - DirectWrite backend improvements. Note: this backend is for testing ONLY.
915 - CoreText backend improvements with unreachable fonts.
916 - Implement symbol fonts (cmap 3.0.0) in hb-ft and hb-ot-font.
917 - Blacklist bad GDEF of more fonts (Tahoma & others).
921 Overview of changes leading to 1.2.7
923 ====================================
925 - Blacklist another version of Times New Roman (Bold) Italic from Windows 7.
926 - Fix Mongolian Free Variation Selectors shaping with certain fonts.
927 - Fix Tibetan shorthand contractions shaping.
928 - Improved list of language tag mappings.
929 - Unbreak build on Windows CE.
930 - Make 'glyf' table loading lazy in hb-ot-font.
933 Overview of changes leading to 1.2.6
934 Friday, April 8, 2016
935 ====================================
937 - Blacklist GDEF table of another set of Times New Roman (Bold) Italic.
938 - DirectWrite backend improvements. Note: DirectWrite backend is
939 exclusively for our internal testing and should NOT be used in any
940 production system whatsoever.
943 Overview of changes leading to 1.2.5
944 Monday, April 4, 2016
945 ====================================
947 - Fix GDEF mark-filtering-set, which was broken in 1.2.3.
950 Overview of changes leading to 1.2.4
951 Thursday, March 17, 2016
952 ====================================
954 - Synthesize GDEF glyph class for any glyph that does not have one in GDEF.
955 I really hope we don't discover broken fonts that shape badly with this
957 - Misc build and other minor fixes.
959 - Added HB_NDEBUG. It's fine for production systems to define this to
960 disable high-overhead debugging checks. However, I also reduced the
961 overhead of those checks, so it's a non-issue right now. You can
962 forget it. Just not defining anything at all is fine.
965 Overview of changes leading to 1.2.3
966 Thursday, February 25, 2016
967 ====================================
969 - Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic,
970 due to bug in glyph class of ASCII double-quote character. This should
971 address "regression" introduced in 1.2.0 when we switched mark zeroing
972 in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE.
973 This fourth release in a week should finally stablize things...
975 - hb-ot-font's get_glyph() implementation saw some optimizations. Though,
976 might be really hard to measure in real-world situations.
978 - Also, two rather small API changes:
980 We now disable some time-consuming internal bookkeeping if built with NDEBUG
981 defined. This is a first time that we use NDEBUG to disable debug code. If
982 there exist production systems that do NOT want to enable NDEBUG, please let
983 me know and I'll add HB_NDEBUG.
985 Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph()
988 - hb_font_get_nominal_glyph_func_t
989 - hb_font_get_variation_glyph_func_t
990 - hb_font_funcs_set_nominal_glyph_func()
991 - hb_font_funcs_set_variation_glyph_func()
992 - hb_font_get_nominal_glyph()
993 - hb_font_get_variation_glyph()
996 - hb_font_get_glyph_func_t
997 - hb_font_funcs_set_glyph_func()
999 Clients that implement their own font-funcs are encouraged to replace
1000 their get_glyph() implementation with a get_nominal_glyph() and
1001 get_variation_glyph() pair. The variation version can assume that
1002 variation_selector argument is not zero. Old (deprecated) functions
1003 will continue working indefinitely using internal gymnastics; it is
1004 just more efficient to use the new functions.
1007 Overview of changes leading to 1.2.2
1008 Wednesday, February 24, 2016
1009 ====================================
1011 - Fix regression with mark positioning with fonts that have
1012 non-zero mark advances. This was introduced in 1.2.0 while
1013 trying to make mark and cursive attachments to work together.
1014 I have partially reverted that, so this version is much more
1015 like what we had before. All clients who updated to 1.2.0
1016 should update to this version.
1019 Overview of changes leading to 1.2.1
1020 Tuesday, February 23, 2016
1021 ====================================
1023 - CoreText: Fix bug with wrong scale if font scale was changed later.
1024 https://github.com/libass/libass/issues/212
1025 - CoreText: Drastically speed up font initialization.
1026 - CoreText: Fix tiny leak.
1027 - Group ZWJ/ZWNJ with previous syllable under cluster-level=0.
1028 https://github.com/harfbuzz/harfbuzz/issues/217
1029 - Add test/shaping/README.md about how to add tests to the suite.
1032 Overview of changes leading to 1.2.0
1033 Friday, February 19, 2016
1034 ====================================
1036 - Fix various issues (hangs mostly) in case of memory allocation failure.
1037 - Change mark zeroing types of most shapers from BY_UNICODE_LATE to
1038 BY_GDEF_LATE. This seems to be what Uniscribe does.
1039 - Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY. That's
1041 - Allow GPOS cursive connection on marks, and fix the interaction with
1042 mark attachment. This work resulted in some changes to how mark
1043 attachments work. See:
1044 https://github.com/harfbuzz/harfbuzz/issues/211
1045 https://github.com/harfbuzz/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
1046 - Graphite2 shaper: improved negative advance handling (eg. Nastaliq).
1047 - Add nmake-based build system for Windows.
1049 - Misc. improvements.
1052 Overview of changes leading to 1.1.3
1053 Monday, January 11, 2016
1054 ====================================
1056 - Ported Indic shaper to Unicode 8.0 data.
1057 - Universal Shaping Engine fixes.
1058 - Speed up CoreText shaper when font fallback happens in CoreText.
1059 - Documentation improvements, thanks to Khaled Hosny.
1060 - Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi.
1066 hb_font_get_font_extents_func_t
1067 hb_font_get_font_h_extents_func_t
1068 hb_font_get_font_v_extents_func_t
1069 hb_font_funcs_set_font_h_extents_func
1070 hb_font_funcs_set_font_v_extents_func
1071 hb_font_get_h_extents
1072 hb_font_get_v_extents
1073 hb_font_get_extents_for_direction
1075 * Buffer message (aka debug):
1076 hb_buffer_message_func_t
1077 hb_buffer_set_message_func()
1078 Actual message protocol to be fleshed out later.
1081 Overview of changes leading to 1.1.2
1082 Wednesday, November 26, 2015
1083 ====================================
1085 - Fix badly-broken fallback shaper that affected terminology.
1086 https://github.com/harfbuzz/harfbuzz/issues/187
1087 - Fix y_scaling in Graphite shaper.
1089 * An unset glyph_h_origin() function in font-funcs now (sensibly)
1090 implies horizontal origin at 0,0. Ie, the nil callback returns
1091 true instead of false. As such, implementations that have a
1092 glyph_h_origin() that simply returns true, can remove that function
1093 with HarfBuzz >= 1.1.2. This results in a tiny speedup.
1096 Overview of changes leading to 1.1.1
1097 Wednesday, November 24, 2015
1098 ====================================
1100 - Build fixes, specially for hb-coretext.
1103 Overview of changes leading to 1.1.0
1104 Wednesday, November 18, 2015
1105 ====================================
1107 - Implement 'stch' stretch feature for Syriac Abbreviation Mark.
1108 https://github.com/harfbuzz/harfbuzz/issues/141
1109 - Disable use of decompose_compatibility() callback.
1110 - Implement "shaping" of various Unicode space characters, even
1111 if the font does not support them.
1112 https://github.com/harfbuzz/harfbuzz/issues/153
1113 - If font does not support U+2011 NO-BREAK HYPHEN, fallback to
1115 - Changes resulting from libFuzzer continuous fuzzing:
1116 * Reject font tables that need more than 8 edits,
1117 * Bound buffer growth during shaping to 32x,
1118 * Fix assertions and other issues at OOM / buffer max-growth.
1119 - Misc fixes and optimizations.
1121 * All fonts created with hb_font_create() now inherit from
1122 (ie. have parent) hb_font_get_empty().
1125 Overview of changes leading to 1.0.6
1126 Thursday, October 15, 2015
1127 ====================================
1129 - Reduce max nesting level in OT lookups from 8 to 6.
1130 Should not affect any real font as far as I know.
1131 - Fix memory access issue in ot-font.
1132 - Revert default load-flags of fonts created using hb_ft_font_create()
1133 back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in
1134 last release (1.0.5), but caused major issues, so revert.
1135 https://github.com/harfbuzz/harfbuzz/issues/143
1138 Overview of changes leading to 1.0.5
1139 Tuesday, October 13, 2015
1140 ====================================
1142 - Fix multiple memory access bugs discovered using libFuzzer.
1143 https://github.com/harfbuzz/harfbuzz/issues/139
1144 Everyone should upgrade to this version as soon as possible.
1145 We now have continuous fuzzing set up, to avoid issues like
1146 these creeping in again.
1150 * hb_font_set_parent().
1151 * hb_ft_font_[sg]et_load_flags()
1152 The default flags for fonts created using hb_ft_font_create()
1153 has changed to default to FT_LOAD_DEFAULT now. Previously it
1154 was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING.
1157 * Fonts now default to units-per-EM as their scale, instead of 0.
1158 * hb_font_create_sub_font() does NOT make parent font immutable
1159 anymore. hb_font_make_immutable() does.
1162 Overview of changes leading to 1.0.4
1163 Wednesday, September 30, 2015
1164 ====================================
1166 - Fix minor out-of-bounds read error.
1169 Overview of changes leading to 1.0.3
1170 Tuesday, September 1, 2015
1171 ====================================
1173 - Start of user documentation, from Simon Cozens!
1174 - Implement glyph_extents() for TrueType fonts in hb-ot-font.
1175 - Improve GPOS cursive attachments with conflicting lookups.
1176 - More fixes for cluster-level = 1.
1177 - Uniscribe positioning fix.
1180 Overview of changes leading to 1.0.2
1181 Wednesday, August 19, 2015
1182 ====================================
1184 - Fix shaping with cluster-level > 0.
1185 - Fix Uniscribe backend font-size scaling.
1186 - Declare dependencies in harfbuzz.pc.
1187 FreeType is not declared though, to avoid bugs in pkg-config
1188 0.26 with recursive dependencies.
1189 - Slightly improved debug infrastructure. More to come later.
1193 Overview of changes leading to 1.0.1
1194 Monday, July 27, 2015
1195 ====================================
1197 - Fix out-of-bounds access in USE shaper.
1200 Overview of changes leading to 1.0.0
1201 Sunday, July 26, 2015
1202 ====================================
1204 - Implement Universal Shaping Engine:
1205 https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
1206 http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/
1207 - Bump version to 1.0.0. The soname was NOT bumped.
1210 Overview of changes leading to 0.9.42
1211 Thursday, July 26, 2015
1212 =====================================
1214 - New API to allow for retrieving finer-grained cluster
1215 mappings if the client desires to handle them. Default
1216 behavior is unchanged.
1217 - Fix cluster merging when removing default-ignorables.
1218 - Update to Unicode 8.0
1219 - hb-graphite2 fixes.
1221 - Removed HB_NO_MERGE_CLUSTERS hack.
1223 hb_buffer_cluster_level_t enum
1224 hb_buffer_get_cluster_level()
1225 hb_buffer_set_cluster_level()
1226 hb-shape / hb-view --cluster-level
1229 Overview of changes leading to 0.9.41
1230 Thursday, June 18, 2015
1231 =====================================
1233 - Fix hb-coretext with trailing whitespace in right-to-left.
1234 - New API: hb_buffer_reverse_range().
1235 - Allow implementing atomic ops in config.h.
1236 - Fix hb_language_t in language bindings.
1240 Overview of changes leading to 0.9.40
1241 Friday, March 20, 2015
1242 =====================================
1244 - Another hb-coretext crasher fix. Ouch!
1248 Overview of changes leading to 0.9.39
1249 Wednesday, March 4, 2015
1250 =====================================
1252 - Critical hb-coretext fixes.
1253 - Optimizations and refactoring; no functional change
1258 Overview of changes leading to 0.9.38
1259 Friday, January 23, 2015
1260 =====================================
1262 - Fix minor out-of-bounds access in Indic shaper.
1263 - Change New Tai Lue shaping engine from South-East Asian to default,
1264 reflecting change in Unicode encoding model.
1265 - Add hb-shape --font-size. Can take up to two numbers for separate
1267 - Fix CoreText and FreeType scale issues with negative scales.
1268 - Reject blobs larger than 2GB. This might break some icu-le-hb clients
1269 that need security fixes. See:
1270 http://www.icu-project.org/trac/ticket/11450
1271 - Avoid accessing font tables during face destruction, in casce rogue
1272 clients released face data already.
1273 - Fix up gobject-introspection a bit. Python bindings kinda working.
1277 hb_ft_face_create_referenced()
1278 hb_ft_font_create_referenced()
1281 Overview of changes leading to 0.9.37
1282 Wednesday, December 17, 2014
1283 =====================================
1285 - Fix out-of-bounds access in Context lookup format 3.
1286 - Indic: Allow ZWJ/ZWNJ before syllable modifiers.
1289 Overview of changes leading to 0.9.36
1290 Thursday, November 20, 2014
1291 =====================================
1293 - First time that three months went by without a release since
1294 0.9.2 was released on August 10, 2012!
1295 - Fix performance bug in hb_ot_collect_glyphs():
1296 https://bugzilla.mozilla.org/show_bug.cgi?id=1090869
1297 - Add basic vertical-text support to hb-ot-font.
1301 Overview of changes leading to 0.9.35
1302 Saturday, August 13, 2014
1303 =====================================
1305 - Fix major shape-plan caching bug when more than one shaper were
1306 provided to hb_shape_full() (as exercised by XeTeX).
1307 http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html
1308 - Fix Arabic fallback shaping regression. This was broken in 0.9.32.
1309 - Major hb-coretext fixes. That backend is complete now, including
1310 respecing buffer direction and language, down to vertical writing.
1311 - Build fixes for Windows CE. Should build fine now.
1313 Use atexit() only if it's safe to call from shared library
1314 https://bugs.freedesktop.org/show_bug.cgi?id=82246
1315 Mandaic had errors in its Unicode Joining_Type
1316 https://bugs.freedesktop.org/show_bug.cgi?id=82306
1319 * hb_buffer_clear_contents() does not reset buffer flags now.
1321 After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
1322 need to set flags for different pieces of text. The flags now
1323 are something the client sets up once, depending on how it
1324 actually uses the buffer. As such, don't clear it in
1327 I don't expect any changes to be needed to any existing client.
1330 Overview of changes leading to 0.9.34
1331 Saturday, August 2, 2014
1332 =====================================
1334 - hb_feature_from_string() now accepts CSS font-feature-settings format.
1335 - As a result, hb-shape / hb-view --features also accept CSS-style strings.
1336 Eg, "'liga' off" is accepted now.
1337 - Add old-spec Myanmar shaper:
1338 https://bugs.freedesktop.org/show_bug.cgi?id=81775
1339 - Don't apply 'calt' in Hangul shaper.
1340 - Fix mark advance zeroing for Hebrew shaper:
1341 https://bugs.freedesktop.org/show_bug.cgi?id=76767
1342 - Implement Windows-1256 custom Arabic shaping. Only built on Windows,
1343 and requires help from get_glyph(). Used by Firefox.
1344 https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
1345 - Disable 'liga' in vertical text.
1349 * Make HB_BUFFER_FLAG_BOT/EOT easier to use.
1351 Previously, we expected users to provide BOT/EOT flags when the
1352 text *segment* was at paragraph boundaries. This meant that for
1353 clients that provide full paragraph to HarfBuzz (eg. Pango), they
1356 hb_buffer_set_flags (hb_buffer,
1357 (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
1358 (item_offset + item_length == paragraph_length ?
1359 HB_BUFFER_FLAG_EOT : 0));
1361 hb_buffer_add_utf8 (hb_buffer,
1362 paragraph_text, paragraph_length,
1363 item_offset, item_length);
1365 After this change such clients can simply say:
1367 hb_buffer_set_flags (hb_buffer,
1368 HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
1370 hb_buffer_add_utf8 (hb_buffer,
1371 paragraph_text, paragraph_length,
1372 item_offset, item_length);
1374 Ie, HarfBuzz itself checks whether the segment is at the beginning/end
1375 of the paragraph. Clients that only pass item-at-a-time to HarfBuzz
1376 continue not setting any flags whatsoever.
1378 Another way to put it is: if there's pre-context text in the buffer,
1379 HarfBuzz ignores the BOT flag. If there's post-context, it ignores
1383 Overview of changes leading to 0.9.33
1384 Tuesday, July 22, 2014
1385 =====================================
1387 - Turn off ARabic 'cswh' feature that was accidentally turned on.
1388 - Add HB_TAG_MAX_SIGNED.
1389 - Make hb_face_make_immutable() really make face immutable!
1390 - Windows build fixes.
1393 Overview of changes leading to 0.9.32
1394 Thursday, July 17, 2014
1395 =====================================
1397 - Apply Arabic shaping features in spec order exactly.
1398 - Another fix for Mongolian free variation selectors.
1399 - For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt'
1401 - Minor adjustment to U+FFFD logic.
1402 - Fix hb-coretext build.
1405 Overview of changes leading to 0.9.31
1406 Wednesday, July 16, 2014
1407 =====================================
1409 - Only accept valid UTF-8/16/32; we missed many cases before.
1410 - Better shaping of invalid UTF-8/16/32. Falls back to
1411 U+FFFD REPLACEMENT CHARACTER now.
1412 - With all changes in this release, the buffer will contain fully
1413 valid Unicode after hb_buffer_add_utf8/16/32 no matter how
1414 broken the input is. This can be overridden though. See below.
1415 - Fix Mongolian Variation Selectors for fonts without GDEF.
1416 - Fix minor invalid buffer access.
1417 - Accept zh-Hant and zh-Hans language tags. hb_ot_tag_to_language()
1418 now uses these instead of private tags.
1421 * hb_buffer_add_codepoints(). This does what hb_buffer_add_utf32()
1422 used to do, ie. no validity check on the input at all. add_utf32
1423 now replaces invalid Unicode codepoints with the replacement
1424 character (see below).
1425 * hb_buffer_set_replacement_codepoint()
1426 * hb_buffer_get_replacement_codepoint()
1427 Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when
1428 we detected broken input, we replaced that with (hb_codepoint_t)-1.
1429 This has changed to use U+FFFD now, but can be changed using these
1433 Overview of changes leading to 0.9.30
1434 Wednesday, July 9, 2014
1435 =====================================
1437 - Update to Unicode 7.0.0:
1438 * New scripts Manichaean and Psalter Pahlavi are shaped using
1440 * All the other new scripts to through the generic shaper for
1442 - Minor Indic improvements.
1443 - Fix graphite2 backend cluster mapping [crasher!]
1445 * New HB_SCRIPT_* values for Unicode 7.0 scripts.
1446 * New function hb_ot_layout_language_get_required_feature().
1450 Overview of changes leading to 0.9.29
1451 Thursday, May 29, 2014
1452 =====================================
1454 - Implement cmap in hb-ot-font.h. No variation-selectors yet.
1455 - Myanmar: Allow MedialYa+Asat.
1456 - Various Indic fixes:
1457 * Support most characters in Extended Devanagary and Vedic
1459 * Allow digits and a some punctuation as consonant placeholders.
1463 Overview of changes leading to 0.9.28
1464 Monday, April 28, 2014
1465 =====================================
1467 - Unbreak old-spec Indic shaping. (bug 76705)
1468 - Fix shaping of U+17DD and U+0FC6.
1469 - Add HB_NO_MERGE_CLUSTERS build option. NOT to be enabled by default
1470 for shipping libraries. It's an option for further experimentation
1471 right now. When we are sure how to do it properly, we will add
1472 public run-time API for the functionality.
1476 Overview of changes leading to 0.9.27
1477 Tuesday, March 18, 2014
1478 =====================================
1480 - Don't use "register" storage class specifier
1481 - Wrap definition of free_langs() with HAVE_ATEXIT
1482 - Add coretext_aat shaper and hb_coretext_face_create() constructor
1483 - If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
1484 - Add Myanmar test case from OpenType Myanmar spec
1485 - Only do fallback Hebrew composition if no GPOS 'mark' available
1486 - Allow bootstrapping without gtk-doc
1487 - Use AM_MISSING_PROG for ragel and git
1488 - Typo in ucdn's Makefile.am
1489 - Improve MemoryBarrier() implementation
1492 Overview of changes leading to 0.9.26
1493 Thursday, January 30, 2014
1494 =====================================
1497 - Fix application of 'rtlm' feature.
1498 - Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH.
1499 - New header: hb-ot-shape.h
1500 - Uniscribe: fix scratch-buffer accounting.
1501 - Reorder Tai Tham SAKOT to after tone-marks.
1502 - Add Hangul shaper.
1504 hb-ot-shape-complex-hangul.cc
1505 hb-ot-shape-complex-hebrew.cc
1506 hb-ot-shape-complex-tibetan.cc
1507 - Disable 'cswh' feature in Arabic shaper.
1508 - Coretext: better handle surrogate pairs.
1509 - Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE.
1512 Overview of changes leading to 0.9.25
1513 Wednesday, December 4, 2013
1514 =====================================
1516 - Myanmar shaper improvements.
1517 - Avoid font fallback in CoreText backend.
1518 - Additional OpenType language tag mappiongs.
1519 - More aggressive shape-plan caching.
1520 - Build with / require automake 1.13.
1521 - Build with libtool 2.4.2.418 alpha to support ppc64le.
1524 Overview of changes leading to 0.9.24
1525 Tuesday, November 13, 2013
1526 =====================================
1528 - Misc compiler warning fixes with clang.
1529 - No functional changes.
1532 Overview of changes leading to 0.9.23
1533 Monday, October 28, 2013
1534 =====================================
1536 - "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
1537 - Fix (Chain)Context recursion with non-monotone lookup positions.
1538 - Misc Indic bug fixes.
1539 - New Javanese / Buginese shaping, similar to Windows 8.1.
1542 Overview of changes leading to 0.9.22
1543 Thursday, October 3, 2013
1544 =====================================
1546 - Fix use-after-end-of-scope in hb_language_from_string().
1547 - Fix hiding of default_ignorables if font doesn't have space glyph.
1548 - Protect against out-of-range lookup indices.
1552 * Added hb_ot_layout_table_get_lookup_count()
1555 Overview of changes leading to 0.9.21
1556 Monday, September 16, 2013
1557 =====================================
1559 - Rename gobject-introspection library name from harfbuzz to HarfBuzz.
1560 - Remove (long disabled) hb-old and hb-icu-le test shapers.
1561 - Misc gtk-doc and gobject-introspection annotations.
1565 * Add HB_SET_VALUE_INVALID
1567 Overview of changes leading to 0.9.20
1568 Thursday, August 29, 2013
1569 =====================================
1572 - Misc substitute_closure() fixes.
1576 - gtk-doc boilerplate integrated. Docs are built now, but
1577 contain no contents. By next release hopefully we have
1578 some content in. Enable using --enable-gtk-doc.
1580 GObject and Introspection:
1581 - Added harfbuzz-gobject library (hb-gobject.h) that has type
1582 bindings for all HarfBuzz objects and enums. Enable using
1584 - Added gobject-introspection boilerplate. Nothing useful
1585 right now. Work in progress. Gets enabled automatically if
1586 --with-gobject is used. Override with --disable-introspection.
1589 - Apply 'mark' in Myanmar shaper.
1590 - Don't apply 'dlig' by default.
1593 - Support user features.
1594 - Fix loading of fonts that are also installed on the system.
1595 - Fix shaping of Arabic Presentation Forms.
1596 - Fix build with wide chars.
1599 - Support user features.
1602 - hb_face_t code moved to hb-face.h / hb-face.cc.
1603 - Added hb-deprecated.h.
1606 - Added HB_DISABLE_DEPRECATED.
1607 - Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
1608 HB_SCRIPT_CANADIAN_SYLLABICS.
1609 - Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
1610 HB_BUFFER_FLAG_DEFAULT.
1611 - Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
1612 HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
1615 Overview of changes leading to 0.9.19
1616 Tuesday, July 16, 2013
1617 =====================================
1620 - Better handling of multiple variation selectors in a row.
1621 - Pass on variation selector to GSUB if not consumed by cmap.
1622 - Fix undefined memory access.
1623 - Add Javanese config to Indic shaper.
1626 Overview of changes leading to 0.9.18
1627 Tuesday, May 28, 2013
1628 =====================================
1632 - All unneeded code is all disabled by default,
1634 - Uniscribe and CoreText shapers can be enabled with their --with options,
1636 - icu_le and old shapers cannot be enabled for now,
1638 - glib, freetype, and cairo will be detected automatically.
1639 They can be force on/off'ed with their --with options,
1641 - icu and graphite2 are default off, can be enabled with their --with
1644 Moreover, ICU support is now build into a separate library:
1645 libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
1646 Distros can enable ICU now without every application on earth
1647 getting linked to via libharfbuzz.so.
1649 For distros I recommend that they make sure they are building --with-glib
1650 --with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
1651 And package harfbuzz and harfbuzz-icu separately.
1654 Overview of changes leading to 0.9.17
1655 Monday, May 20, 2013
1656 =====================================
1659 - Fix bug in hb_set_get_min().
1660 - Fix regression with Arabic mark positioning / width-zeroing.
1662 Overview of changes leading to 0.9.16
1663 Friday, April 19, 2013
1664 =====================================
1666 - Major speedup in OpenType lookup processing. With the Amiri
1667 Arabic font, this release is over 3x faster than previous
1668 release. All scripts / languages should see this speedup.
1670 - New --num-iterations option for hb-shape / hb-view; useful for
1673 Overview of changes leading to 0.9.15
1674 Friday, April 05, 2013
1675 =====================================
1678 - Fix crasher in graphite2 shaper.
1679 - Fix Arabic mark width zeroing regression.
1680 - Don't compose Hangul jamo into Unicode syllables.
1683 Overview of changes leading to 0.9.14
1684 Thursday, March 21, 2013
1685 =====================================
1688 - Fix time-consuming sanitize with malicious fonts.
1689 - Implement hb_buffer_deserialize_glyphs() for both json and text.
1690 - Do not ignore Hangul filler characters.
1692 * Fix Malayalam pre-base reordering interaction with post-forms.
1693 * Further adjust ZWJ handling. Should fix known regressions from
1697 Overview of changes leading to 0.9.13
1698 Thursday, February 25, 2013
1699 =====================================
1702 - Ngapi HarfBuzz Hackfest in London (February 2013):
1703 * Fixed all known Indic bugs,
1704 * New Win8-style Myanmar shaper,
1705 * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
1706 * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
1707 matching GSUB/GPOS lookups,
1708 * Fix 'Phags-Pa U+A872 shaping,
1709 * Fix partial disabling of default-on features,
1710 * Allow disabling of TrueType kerning.
1711 - Fix possible crasher with broken fonts with overlapping tables.
1712 - Removed generated files from git again. So, one needs ragel to
1713 bootstrap from the git tree.
1716 - hb_shape() and related APIs now abort if buffer direction is
1717 HB_DIRECTION_INVALID. Previously, hb_shape() was calling
1718 hb_buffer_guess_segment_properties() on the buffer before
1719 shaping. The heuristics in that function are fragile. If the
1720 user really wants the old behvaior, they can call that function
1721 right before calling hb_shape() to get the old behavior.
1722 - hb_blob_create_sub_blob() always creates sub-blob with
1723 HB_MEMORY_MODE_READONLY. See comments for the reason.
1726 Overview of changes leading to 0.9.12
1727 Thursday, January 18, 2013
1728 =====================================
1730 - Build fixes for Sun compiler.
1733 Overview of changes leading to 0.9.11
1734 Thursday, January 10, 2013
1735 =====================================
1738 - Fix GPOS mark attachment with null Anchor offsets.
1739 - [Indic] Fix old-spec reordering of viramas if sequence ends in one.
1740 - Fix multi-threaded shaper data creation crash.
1741 - Add atomic ops for Solaris.
1744 - Rename hb_buffer_clear() to hb_buffer_clear_contents().
1747 Overview of changes leading to 0.9.10
1748 Thursday, January 3, 2013
1749 =====================================
1751 - [Indic] Fixed rendering of Malayalam dot-reph
1752 - Updated OT language tags.
1753 - Updated graphite2 backend.
1754 - Improved hb_ot_layout_get_size_params() logic.
1755 - Improve hb-shape/hb-view help output.
1756 - Fixed hb-set.h implementation to not crash.
1757 - Fixed various issues with hb_ot_layout_collect_lookups().
1758 - Various build fixes.
1762 hb_graphite2_face_get_gr_face()
1763 hb_graphite2_font_get_gr_font()
1764 hb_coretext_face_get_cg_font()
1768 hb_ot_layout_get_size_params()
1771 Overview of changes leading to 0.9.9
1772 Wednesday, December 5, 2012
1773 ====================================
1775 - Fix build on Windows.
1776 - Minor improvements.
1779 Overview of changes leading to 0.9.8
1780 Tuesday, December 4, 2012
1781 ====================================
1784 - Actually implement hb_shape_plan_get_shaper ().
1785 - Make UCDB data tables const.
1786 - Lots of internal refactoring in OTLayout tables.
1787 - Flesh out hb_ot_layout_lookup_collect_glyphs().
1791 hb_ot_layout_collect_lookups()
1792 hb_ot_layout_get_size_params()
1795 Overview of changes leading to 0.9.7
1796 Sunday, November 21, 2012
1797 ====================================
1800 HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
1802 - Fix Arabic contextual joining using pre-context text.
1803 - Fix Sinhala "split matra" mess.
1804 - Fix Khmer shaping with broken fonts.
1805 - Implement Thai "PUA" shaping for old fonts.
1806 - Do NOT route Kharoshthi script through the Indic shaper.
1807 - Disable fallback positioning for Indic and Thai shapers.
1811 hb-shape / hb-view changes:
1813 - Add --text-before and --text-after
1814 - Add --bot / --eot / --preserve-default-ignorables
1815 - hb-shape --output-format=json
1824 HB_BUFFER_FLAGS_DEFAULT
1827 HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
1829 hb_buffer_set_flags()
1830 hb_buffer_get_flags()
1832 HB_BUFFER_SERIALIZE_FLAGS
1833 hb_buffer_serialize_glyphs()
1834 hb_buffer_deserialize_glyphs()
1835 hb_buffer_serialize_list_formats()
1839 hb_set_get_population()
1842 hb_face_[sg]et_glyph_count()
1844 hb_segment_properties_t
1845 HB_SEGMENT_PROPERTIES_DEFAULT
1846 hb_segment_properties_equal()
1847 hb_segment_properties_hash()
1849 hb_buffer_set_segment_properties()
1850 hb_buffer_get_segment_properties()
1852 hb_ot_layout_glyph_class_t
1853 hb_ot_layout_get_glyph_class()
1854 hb_ot_layout_get_glyphs_in_class()
1857 hb_shape_plan_create()
1858 hb_shape_plan_create_cached()
1859 hb_shape_plan_get_empty()
1860 hb_shape_plan_reference()
1861 hb_shape_plan_destroy()
1862 hb_shape_plan_set_user_data()
1863 hb_shape_plan_get_user_data()
1864 hb_shape_plan_execute()
1865 hb_shape_plan_get_shaper()
1867 hb_ot_shape_plan_collect_lookups()
1872 - Remove "mask" parameter from hb_buffer_add().
1873 - Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
1874 - hb-set.h API const correction.
1875 - Renamed hb_set_min/max() to hb_set_get_min/max().
1876 - Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
1877 - Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
1881 Overview of changes leading to 0.9.6
1882 Sunday, November 13, 2012
1883 ====================================
1885 - Don't clear pre-context text if no new context is provided.
1886 - Fix ReverseChainingSubstLookup, which was totally borked.
1887 - Adjust output format of hb-shape a bit.
1888 - Include config.h.in in-tree. Makes it easier for alternate build systems.
1889 - Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
1890 - Use ICU LayoutEngine's C API instead of C++. Avoids much headache.
1891 - Drop glyphs for all of Unicode Default_Ignorable characters.
1895 - Enable 'dlig' and 'mset' features in Arabic shaper.
1896 - Implement 'Phags-pa shaping, improve Mongolian.
1899 - Decompose Sinhala split matras the way old HarfBuzz / Pango did.
1900 - Initial support for Consonant Medials.
1901 - Start adding new-style Myanmar shaping.
1902 - Make reph and 'pref' logic introspect the font.
1903 - Route Meetei-Mayek through the Indic shaper.
1904 - Don't apply 'liga' in Indic shaper.
1905 - Improve Malayalam pre-base reordering Ra interaction with Chillus.
1909 Overview of changes leading to 0.9.5
1910 Sunday, October 14, 2012
1911 ====================================
1913 - Synthetic-GSUB Arabic fallback shaping.
1915 - Misc Indic improvements.
1917 - Add build system support for pthread.
1919 - Imported UCDN for in-tree Unicode callbacks implementation.
1921 - Context-aware Arabic joining.
1927 hb_feature_to/from-string()
1928 hb_buffer_[sg]et_content_type()
1932 Overview of changes leading to 0.9.4
1933 Tuesday, Sep 03, 2012
1934 ====================================
1936 - Indic improvements with old-spec Malayalam.
1938 - Better fallback glyph positioning, specially with Thai / Lao marks.
1940 - Implement dotted-circle insertion.
1942 - Better Arabic fallback shaping / ligation.
1944 - Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name.
1950 Overview of changes leading to 0.9.3
1951 Friday, Aug 18, 2012
1952 ====================================
1954 - Fixed fallback mark positioning for left-to-right text.
1956 - Improve mark positioning for the remaining combining classes.
1958 - Unbreak Thai and fallback Arabic shaping.
1960 - Port Arabic shaper to shape-plan caching.
1962 - Use new ICU normalizer functions.
1966 Overview of changes leading to 0.9.2
1967 Friday, Aug 10, 2012
1968 ====================================
1970 - Over a thousand commits! This is the first major release of HarfBuzz.
1972 - HarfBuzz is feature-complete now! It should be in par, or better, than
1973 both Pango's shapers and old HarfBuzz / Qt shapers.
1975 - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
1977 - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
1978 Sinhala, N'ko, Mongolian, and Mandaic.
1980 - New Thai / Lao shaper.
1982 - Tibetan / Hangul support in the generic shaper.
1984 - Synthetic GDEF support for fonts without a GDEF table.
1986 - Fallback mark positioning for fonts without a GPOS table.
1988 - Unicode normalization shaping heuristic during glyph mapping.
1990 - New experimental Graphite2 backend.
1992 - New Uniscribe backend (primarily for testing).
1994 - New CoreText backend (primarily for testing).
1996 - Major optimization and speedup.
1998 - Test suites and testing infrastructure (work in progress).
2000 - Greatly improved hb-view cmdline tool.
2002 - hb-shape cmdline tool.
2004 - Unicode 6.1 support.
2006 Summary of API changes:
2010 - Users are expected to only include main header files now (ie. hb.h,
2011 hb-glib.h, hb-ft.h, ...)
2013 - All struct tag names had their initial underscore removed.
2014 Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
2016 - All set_user_data() functions now take a "replace" boolean parameter.
2018 - hb_buffer_create() takes zero arguments now.
2019 Use hb_buffer_pre_allocate() to pre-allocate.
2021 - hb_buffer_add_utf*() now accept -1 for length parameteres,
2022 meaning "nul-terminated".
2024 - hb_direction_t enum values changed.
2026 - All *_from_string() APIs now take a length parameter to allow for
2027 non-nul-terminated strings. A -1 length means "nul-terminated".
2029 - Typedef for hb_language_t changed.
2031 - hb_get_table_func_t renamed to hb_reference_table_func_t.
2033 - hb_ot_layout_table_choose_script()
2035 - Various renames in hb-unicode.h.
2039 - hb_buffer_guess_properties()
2040 Automatically called by hb_shape().
2042 - hb_buffer_normalize_glyphs()
2044 - hb_tag_from_string()
2050 - hb_face_reference_blob()
2051 - hb_face_[sg]et_index()
2052 - hb_face_set_upem()
2054 - hb_font_get_glyph_name_func_t
2055 hb_font_get_glyph_from_name_func_t
2056 hb_font_funcs_set_glyph_name_func()
2057 hb_font_funcs_set_glyph_from_name_func()
2058 hb_font_get_glyph_name()
2059 hb_font_get_glyph_from_name()
2060 hb_font_glyph_to_string()
2061 hb_font_glyph_from_string()
2063 - hb_font_set_funcs_data()
2065 - hb_ft_font_set_funcs()
2066 - hb_ft_font_get_face()
2068 - hb-gobject.h (work in progress)
2070 - hb_ot_shape_glyphs_closure()
2071 hb_ot_layout_substitute_closure_lookup()
2077 - hb_unicode_combining_class_t
2079 - hb_unicode_compose_func_t
2080 hb_unicode_decompose_func_t
2081 hb_unicode_decompose_compatibility_func_t
2082 hb_unicode_funcs_set_compose_func()
2083 hb_unicode_funcs_set_decompose_func()
2084 hb_unicode_funcs_set_decompose_compatibility_func()
2085 hb_unicode_compose()
2086 hb_unicode_decompose()
2087 hb_unicode_decompose_compatibility()
2091 - hb_ft_get_font_funcs()
2093 - hb_ot_layout_substitute_start()
2094 hb_ot_layout_substitute_lookup()
2095 hb_ot_layout_substitute_finish()
2096 hb_ot_layout_position_start()
2097 hb_ot_layout_position_lookup()
2098 hb_ot_layout_position_finish()
2102 Overview of changes leading to 0.6.0
2103 Friday, May 27, 2011
2104 ====================================
2106 - Vertical text support in GPOS
2107 - Almost all API entries have unit tests now, under test/
2108 - All thread-safety issues are fixed
2110 Summary of API changes follows.
2117 hb_language_get_default()
2118 hb_direction_to_string()
2119 hb_direction_from_string()
2120 hb_script_get_horizontal_direction()
2124 hb_category_t renamed to hb_unicode_general_category_t
2127 hb_language_t is a typed pointers now
2133 * Use ISO 15924 tags for hb_script_t:
2136 hb_script_from_iso15924_tag()
2137 hb_script_to_iso15924_tag()
2138 hb_script_from_string()
2141 HB_SCRIPT_* enum members changed value.
2144 * Buffer API streamlined:
2148 hb_buffer_set_length()
2149 hb_buffer_allocation_successful()
2152 hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
2153 hb_buffer_add_glyph() renamed to hb_buffer_add()
2157 hb_buffer_clear_positions()
2160 hb_buffer_get_glyph_infos() takes an out length parameter now
2161 hb_buffer_get_glyph_positions() takes an out length parameter now
2164 * Blob API streamlined:
2168 hb_blob_get_data_writable()
2171 hb_blob_create_empty() renamed to hb_blob_get_empty()
2176 hb_blob_is_writable()
2177 hb_blob_try_writable()
2180 hb_blob_create() takes user_data before destroy now
2183 * Unicode functions API:
2185 o Unicode function vectors can subclass other unicode function vectors now.
2186 Unimplemented callbacks in the subclass automatically chainup to the parent.
2188 o All hb_unicode_funcs_t callbacks take a user_data now. Their setters
2189 take a user_data and its respective destroy callback.
2192 hb_unicode_funcs_get_empty()
2193 hb_unicode_funcs_get_default()
2194 hb_unicode_funcs_get_parent()
2197 hb_unicode_funcs_create() now takes a parent_funcs.
2199 o Removed func getter functions:
2200 hb_unicode_funcs_get_mirroring_func()
2201 hb_unicode_funcs_get_general_category_func()
2202 hb_unicode_funcs_get_script_func()
2203 hb_unicode_funcs_get_combining_class_func()
2204 hb_unicode_funcs_get_eastasian_width_func()
2210 hb_face_get_table() renamed to hb_face_reference_table()
2211 hb_face_create_for_data() renamed to hb_face_create()
2214 hb_face_create_for_tables() takes user_data before destroy now
2215 hb_face_reference_table() returns empty blob instead of NULL
2216 hb_get_table_func_t accepts the face as first parameter now
2220 o Fonts can subclass other fonts now. Unimplemented callbacks in the
2221 subclass automatically chainup to the parent. When chaining up,
2222 scale is adjusted if the parent font has a different scale.
2224 o All hb_font_funcs_t callbacks take a user_data now. Their setters
2225 take a user_data and its respective destroy callback.
2228 hb_font_get_parent()
2229 hb_font_funcs_get_empty()
2230 hb_font_create_sub_font()
2233 hb_font_funcs_copy()
2234 hb_font_unset_funcs()
2236 o Removed func getter functions:
2237 hb_font_funcs_get_glyph_func()
2238 hb_font_funcs_get_glyph_advance_func()
2239 hb_font_funcs_get_glyph_extents_func()
2240 hb_font_funcs_get_contour_point_func()
2241 hb_font_funcs_get_kerning_func()
2244 hb_font_create() takes a face and references it now
2245 hb_font_set_funcs() takes user_data before destroy now
2246 hb_font_set_scale() accepts signed integers now
2247 hb_font_get_contour_point_func_t now takes glyph first, then point_index
2248 hb_font_get_glyph_func_t returns a success boolean now
2251 * Changed object model:
2253 o All object types have a _get_empty() now:
2255 hb_buffer_get_empty()
2258 hb_font_funcs_get_empty()
2259 hb_unicode_funcs_get_empty()
2261 o Added _set_user_data() and _get_user_data() for all object types:
2262 hb_blob_get_user_data()
2263 hb_blob_set_user_data()
2264 hb_buffer_get_user_data()
2265 hb_buffer_set_user_data()
2266 hb_face_get_user_data()
2267 hb_face_set_user_data()
2268 hb_font_funcs_get_user_data()
2269 hb_font_funcs_set_user_data()
2270 hb_font_get_user_data()
2271 hb_font_set_user_data()
2272 hb_unicode_funcs_get_user_data()
2273 hb_unicode_funcs_set_user_data()
2275 o Removed the _get_reference_count() from all object types:
2276 hb_blob_get_reference_count()
2277 hb_buffer_get_reference_count()
2278 hb_face_get_reference_count()
2279 hb_font_funcs_get_reference_count()
2280 hb_font_get_reference_count()
2281 hb_unicode_funcs_get_reference_count()
2283 o Added _make_immutable() and _is_immutable() for all object types except for buffer:
2284 hb_blob_make_immutable()
2285 hb_blob_is_immutable()
2286 hb_face_make_immutable()
2287 hb_face_is_immutable()
2290 * Changed API for vertical text support
2292 o The following callbacks where removed:
2293 hb_font_get_glyph_advance_func_t
2294 hb_font_get_kerning_func_t
2296 o The following new callbacks added instead:
2297 hb_font_get_glyph_h_advance_func_t
2298 hb_font_get_glyph_v_advance_func_t
2299 hb_font_get_glyph_h_origin_func_t
2300 hb_font_get_glyph_v_origin_func_t
2301 hb_font_get_glyph_h_kerning_func_t
2302 hb_font_get_glyph_v_kerning_func_t
2304 o The following API removed as such:
2305 hb_font_funcs_set_glyph_advance_func()
2306 hb_font_funcs_set_kerning_func()
2307 hb_font_get_glyph_advance()
2308 hb_font_get_kerning()
2310 o New API added instead:
2311 hb_font_funcs_set_glyph_h_advance_func()
2312 hb_font_funcs_set_glyph_v_advance_func()
2313 hb_font_funcs_set_glyph_h_origin_func()
2314 hb_font_funcs_set_glyph_v_origin_func()
2315 hb_font_funcs_set_glyph_h_kerning_func()
2316 hb_font_funcs_set_glyph_v_kerning_func()
2317 hb_font_get_glyph_h_advance()
2318 hb_font_get_glyph_v_advance()
2319 hb_font_get_glyph_h_origin()
2320 hb_font_get_glyph_v_origin()
2321 hb_font_get_glyph_h_kerning()
2322 hb_font_get_glyph_v_kerning()
2324 o The following higher-leve API added for convenience:
2325 hb_font_get_glyph_advance_for_direction()
2326 hb_font_get_glyph_origin_for_direction()
2327 hb_font_add_glyph_origin_for_direction()
2328 hb_font_subtract_glyph_origin_for_direction()
2329 hb_font_get_glyph_kerning_for_direction()
2330 hb_font_get_glyph_extents_for_origin()
2331 hb_font_get_glyph_contour_point_for_origin()
2334 * OpenType Layout API:
2337 hb_ot_layout_position_start()
2338 hb_ot_layout_substitute_start()
2339 hb_ot_layout_substitute_finish()
2345 hb_glib_script_to_script()
2346 hb_glib_script_from_script()
2347 hb_icu_script_to_script()
2348 hb_icu_script_from_script()
2351 * Version API added: