Bug 1655413 [wpt PR 24763] - Make CSP default-src without 'unsafe-eval' block eval...
[gecko.git] / gfx / harfbuzz / NEWS
blob90b2ce7247730204ccc51fba62186552c684d29a
1 Overview of changes leading to 2.6.8
2 Monday, June 22, 2020
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.
10 - New API:
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
23   using meson.
26 Overview of changes leading to 2.6.6
27 Tuesday, May 12, 2020
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.
41 - New API:
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 ====================================
49 - Small bug fix.
50 - Build fixes.
53 Overview of changes leading to 2.6.3
54 Monday, October 28, 2019
55 ====================================
56 - Misc small fixes, mostly to build-related issues.
57 - New API:
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.
86 - New API:
87 +hb_font_set_var_named_instance()
88 +hb_gdi_face_create()
89 +hb_ot_layout_baseline_tag_t
90 +hb_ot_layout_get_baseline()
91 +hb_ot_meta_tag_t
92 +hb_ot_meta_get_entry_tags()
93 +hb_ot_meta_reference_entry()
94 +hb_ot_metrics_tag_t
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
112   HB_TINY.
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
121 Friday, May 31, 2019
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
132 Friday, May 24, 2019
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
136   dropped.
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
139   UCDN.
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 ====================================
148 - Unicode 12.
149 - Misc fixes.
150 - Subsetter improvements.
151 - New API:
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 ====================================
159 - AAT bug fixes.
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.
172 New API in hb-aat.h:
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'.
189 New API:
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()
206 Deprecated API:
207 +HB_OT_VAR_NO_AXIS_INDEX
208 +hb_ot_var_axis_t
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 ====================================
233 - AAT improvements:
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
245     San Francisco fonts.
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
252   in vertical layout.
253 - Various fuzzer-found bug fixes.
255 Changed API:
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
262 New API:
264 +hb_color_t
265 +HB_COLOR
266 +hb_color_get_alpha()
267 +hb_color_get_red()
268 +hb_color_get_green()
269 +hb_color_get_blue()
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()
278 +hb_ot_color_layer_t
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()
285 +hb_ot_name_id_t
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
312 +hb_ot_name_entry_t
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
332   subclassed fonts.
333 - Implement variation-kerning format in kerx table, although without
334   variation.
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
344   GSUB/GPOS.
345 - Apply TrueType kern table internally, instead of relying on
346   hb_font_t callbacks.
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.
358 API changes:
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,
365   sub_font it.
367 - New hb_font_funcs_set_nominal_glyphs_func() allows speeding
368   up character to glyph mapping.
370 New API:
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()
380 +hb_name_id_t
381 +HB_NAME_ID_INVALID
382 +HB_OT_MAX_TAGS_PER_SCRIPT
383 +hb_ot_tags_from_script_and_language()
384 +hb_ot_tags_to_script_and_language()
386 Deprecated API:
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.
410 - Face-builder API.
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.
416 New API:
417 +HB_UNICODE_MAX
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.
432 - API changes:
433   The following functions do NOT reference their return value before
434   returning:
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.
468 - Indic bug fixes.
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.
516 - New build options:
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()
523 +hb_face_count()
525 A hashmap implementation:
526 +hb-map.h
527 +HB_MAP_VALUE_INVALID
528 +hb_map_t
529 +hb_map_create()
530 +hb_map_get_empty()
531 +hb_map_reference()
532 +hb_map_destroy()
533 +hb_map_set_user_data()
534 +hb_map_get_user_data()
535 +hb_map_allocation_successful()
536 +hb_map_clear()
537 +hb_map_is_empty()
538 +hb_map_get_population()
539 +hb_map_set()
540 +hb_map_get()
541 +hb_map_del()
542 +hb_map_has()
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.
553 - New API:
554 hb_blob_copy_writable_or_fail()
555 HB_OT_TAG_BASE
556 hb_set_previous()
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.
566 - Misc bug fixes.
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).
583 - Misc fixes.
586 Overview of changes leading to 1.7.2
587 Monday, December 4, 2017
588 ====================================
590 - Optimize hb_set_add_range().
591 - Misc fixes.
592 - New API:
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 ====================================
608 - Minor Indic fixes.
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".
613 - Graphite fix.
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.
622 - Misc fixes.
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
644 - Deprecated API:
645   hb_set_invert()
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
657   us!
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
674     codepoints.
676 New API:
677 +hb_face_get_table_tags()
678 +hb_font_set_ptem()
679 +hb_font_get_ptem()
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
689   works as expected.
690 - Add --unicodes to hb-view / hb-shape.
691 - [indic] Treat Consonant_With_Stacker as consonant.  This will need
692   further tweaking.
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
711   the above property.
713   Some corner cases of the implementation are still not quite working.
714   Those will be fixed in subsequent releases.
716 - New API:
718 hb_buffer_append()
720 hb_glyph_flags_t
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
737 hb_buffer_diff
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.
746 - Build fixes.
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.
756 - Misc build fixes.
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.
789 - Misc fixes.
790 - New API:
791   hb_font_set_face()
792 - Deprecate API:
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.
802 - New API:
804 hb_variation_t
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()
812 hb-ot-var.h:
813 hb_ot_var_axis_t
814 hb_ot_var_has_data()
815 hb_ot_var_get_axis_count()
816 hb_ot_var_get_axes()
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.
824 - Misc fixes.
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
834   have very old glib.
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
843   new API is:
845 New API:
846 hb_font_set_var_coords_normalized()
848   with supporting API:
850 New API:
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
864   future.
866 - Fix regression in GDEF glyph class processing.
867 - Add decompositions for Chakma, Limbu, and Balinese in USE shaper.
868 - Misc fixes.
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.
884 New API:
885 HB_OT_TAG_MATH
886 HB_OT_MATH_SCRIPT
887 hb_ot_math_constant_t
888 hb_ot_math_kern_t
889 hb_ot_math_glyph_variant_t
890 hb_ot_math_glyph_part_flags_t
891 hb_ot_math_glyph_part_t
892 hb_ot_math_has_data
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.
916 - Misc fixes.
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).
931 - Misc fixes.
934 Overview of changes leading to 1.2.7
935 Monday, May 2, 2016
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
969   change.
970 - Misc build and other minor fixes.
971 - API changes:
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()
1000 New API:
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()
1008 Deprecated API:
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
1053   what Windows does.
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.
1061 - Minor speedup.
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.
1074 - Misc bug fixes.
1075 - New API:
1077   * Font extents:
1078       hb_font_extents_t
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.
1101 - API changes:
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
1127   U+2010 HYPHEN.
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.
1133 - API changes:
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.
1160 - Misc fixes.
1162 - New API:
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.
1169 - API changes:
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.
1203 - Misc build fixes.
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.
1233 - Misc fixes.
1234 - Removed HB_NO_MERGE_CLUSTERS hack.
1235 - New API:
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.
1250 - Misc fixes.
1253 Overview of changes leading to 0.9.40
1254 Friday, March 20, 2015
1255 =====================================
1257 - Another hb-coretext crasher fix.  Ouch!
1258 - Happy Norouz!
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
1267   expected.
1268 - Misc build fixes.
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
1279   x / y size.
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.
1287   See README.python.
1288 - Misc fixes.
1289 - API additions:
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.
1311 - Misc build fixes.
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.
1325 - Misc fixes:
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
1330 - API changes:
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
1338     clear_contents().
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.
1359 - Build fixes.
1360 - API changes:
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
1367     had code like this:
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
1393     EOT flag.
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'
1413   together.
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.
1432 - Build fixes.
1433 - New API:
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
1443     new API.
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
1452     Arabic shaper.
1453   * All the other new scripts to through the generic shaper for
1454     now.
1455 - Minor Indic improvements.
1456 - Fix graphite2 backend cluster mapping [crasher!]
1457 - API changes:
1458   * New HB_SCRIPT_* values for Unicode 7.0 scripts.
1459   * New function hb_ot_layout_language_get_required_feature().
1460 - Build fixes.
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
1471     Unicode blocks.
1472   * Allow digits and a some punctuation as consonant placeholders.
1473 - Build fixes.
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.
1486 - Build fixes.
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 =====================================
1509 - Misc fixes.
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.
1516 - New files:
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.
1563 - API Changes:
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.
1575 - Misc fixes.
1576 - API changes:
1578   * Add HB_SET_VALUE_INVALID
1580 Overview of changes leading to 0.9.20
1581 Thursday, August 29, 2013
1582 =====================================
1584 General:
1585 - Misc substitute_closure() fixes.
1586 - Build fixes.
1588 Documentation:
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
1596   --with-gobject.
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.
1601 OpenType shaper:
1602 - Apply 'mark' in Myanmar shaper.
1603 - Don't apply 'dlig' by default.
1605 Uniscribe shaper:
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.
1611 CoreText shaper:
1612 - Support user features.
1614 Source changes:
1615 - hb_face_t code moved to hb-face.h / hb-face.cc.
1616 - Added hb-deprecated.h.
1618 API changes:
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 =====================================
1632 - Build fixes.
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.
1637 - Misc bug fixes.
1639 Overview of changes leading to 0.9.18
1640 Tuesday, May 28, 2013
1641 =====================================
1643 New build system:
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
1655   options,
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 =====================================
1671 - Build fixes.
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
1684   profiling.
1686 Overview of changes leading to 0.9.15
1687 Friday, April 05, 2013
1688 =====================================
1690 - Build fixes.
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 =====================================
1700 - Build fixes.
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.
1704 - Indic fixes:
1705   * Fix Malayalam pre-base reordering interaction with post-forms.
1706   * Further adjust ZWJ handling.  Should fix known regressions from
1707     0.9.13.
1710 Overview of changes leading to 0.9.13
1711 Thursday, February 25, 2013
1712 =====================================
1714 - Build fixes.
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.
1728 API changes:
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.
1744 - Minor bug fix.
1746 Overview of changes leading to 0.9.11
1747 Thursday, January 10, 2013
1748 =====================================
1750 - Build fixes.
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.
1756 API changes:
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.
1773 New API:
1775 hb_graphite2_face_get_gr_face()
1776 hb_graphite2_font_get_gr_font()
1777 hb_coretext_face_get_cg_font()
1779 Modified API:
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().
1802 New API:
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.
1821 - Misc fixes.
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
1831 New API:
1833 hb_buffer_clear()
1835 hb_buffer_flags_t
1837 HB_BUFFER_FLAGS_DEFAULT
1838 HB_BUFFER_FLAG_BOT
1839 HB_BUFFER_FLAG_EOT
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()
1850 hb_set_add_range()
1851 hb_set_del_range()
1852 hb_set_get_population()
1853 hb_set_next_range()
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()
1869 hb_shape_plan_t
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()
1883 API changes:
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.
1905 - Misc build fixes.
1907 Arabic shaper:
1908 - Enable 'dlig' and 'mset' features in Arabic shaper.
1909 - Implement 'Phags-pa shaping, improve Mongolian.
1911 Indic shaper:
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.
1936 - Misc other fixes.
1938 - New API:
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.
1959 - Misc fixes.
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:
2021 o Changed API:
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.
2050 o New API:
2052   - hb_buffer_guess_properties()
2053     Automatically called by hb_shape().
2055   - hb_buffer_normalize_glyphs()
2057   - hb_tag_from_string()
2059   - hb-coretext.h
2061   - hb-uniscribe.h
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()
2086   - hb-set.h
2088   - hb_shape_full()
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()
2102 o Removed API:
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.
2126 * Simple Types API:
2128   o New API:
2129     HB_LANGUAGE_INVALID
2130     hb_language_get_default()
2131     hb_direction_to_string()
2132     hb_direction_from_string()
2133     hb_script_get_horizontal_direction()
2134     HB_UNTAG()
2136   o Renamed API:
2137     hb_category_t renamed to hb_unicode_general_category_t
2139   o Changed API:
2140     hb_language_t is a typed pointers now
2142   o Removed API:
2143     HB_TAG_STR()
2146 * Use ISO 15924 tags for hb_script_t:
2148   o New API:
2149     hb_script_from_iso15924_tag()
2150     hb_script_to_iso15924_tag()
2151     hb_script_from_string()
2153   o Changed API:
2154     HB_SCRIPT_* enum members changed value.
2157 * Buffer API streamlined:
2159   o New API:
2160     hb_buffer_reset()
2161     hb_buffer_set_length()
2162     hb_buffer_allocation_successful()
2164   o Renamed API:
2165     hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
2166     hb_buffer_add_glyph() renamed to hb_buffer_add()
2168   o Removed API:
2169     hb_buffer_clear()
2170     hb_buffer_clear_positions()
2172   o Changed API:
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:
2179   o New API:
2180     hb_blob_get_data()
2181     hb_blob_get_data_writable()
2183   o Renamed API:
2184     hb_blob_create_empty() renamed to hb_blob_get_empty()
2186   o Removed API:
2187     hb_blob_lock()
2188     hb_blob_unlock()
2189     hb_blob_is_writable()
2190     hb_blob_try_writable()
2192   o Changed API:
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.
2204   o New API:
2205     hb_unicode_funcs_get_empty()
2206     hb_unicode_funcs_get_default()
2207     hb_unicode_funcs_get_parent()
2209   o Changed API:
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()
2220 * Face API:
2222   o Renamed API:
2223     hb_face_get_table() renamed to hb_face_reference_table()
2224     hb_face_create_for_data() renamed to hb_face_create()
2226   o Changed API:
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
2231 * Font API:
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.
2240   o New API:
2241     hb_font_get_parent()
2242     hb_font_funcs_get_empty()
2243     hb_font_create_sub_font()
2245   o Removed API:
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()
2256   o Changed API:
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:
2267     hb_blob_get_empty()
2268     hb_buffer_get_empty()
2269     hb_face_get_empty()
2270     hb_font_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:
2349   o New API:
2350     hb_ot_layout_position_start()
2351     hb_ot_layout_substitute_start()
2352     hb_ot_layout_substitute_finish()
2355 * Glue code:
2357   o New API:
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:
2366   o New API:
2367     HB_VERSION_MAJOR
2368     HB_VERSION_MINOR
2369     HB_VERSION_MICRO
2370     HB_VERSION_STRING
2371     HB_VERSION_CHECK()
2372     hb_version()
2373     hb_version_string()
2374     hb_version_check()