1Overview of changes leading to 3.4.0
2Sunday, February 13, 2022
3====================================
4- Perform sanity checks on shaping results is now part of “harfbuzz” library
5  and can be enabled by setting the buffer flag HB_BUFFER_FLAG_VERIFY.
6  (Behdad Esfahbod)
7- Arabic Mark Transient Reordering Algorithm have been updated to revision 6.
8  (Khaled Hosny)
9- ISO 15924 code for mathematical notation, ‘Zmth’, now maps to the OpenType
10  ‘math’ tag. (Alexis King)
11- It is now possible to get at once all math kerning values for a given glyph
12  at a given corner. (Alexis King)
13- Fix locale_t portability issues on systems the typdef’s it to a void pointer.
14  (Behdad Esfahbod)
15
16- New API:
17+HB_BUFFER_FLAG_VERIFY
18+HB_OT_TAG_MATH_SCRIPT
19+HB_SCRIPT_MATH
20+hb_ot_math_kern_entry_t
21+hb_ot_math_get_glyph_kernings
22
23- Deprecated API
24+HB_OT_MATH_SCRIPT
25
26
27Overview of changes leading to 3.3.2
28Sunday, February 6, 2022
29====================================
30- Revert splitting of pair positioning values introduced in 3.3.0 as it proved
31  problematic. (Behdad Esfahbod)
32
33
34Overview of changes leading to 3.3.1
35Monday, January 31, 2022
36====================================
37- Fix heap-use-after-free in harfbuzz-subset introduced in previous release.
38  (Garret Rieger)
39
40
41Overview of changes leading to 3.3.0
42Monday, January 31, 2022
43====================================
44- Improved documentation. (Matthias Clasen)
45- Internal code cleanup, using C++ standard library more. (Behdad Esfahbod)
46- The low 16-bits of face index will be used by hb_face_create() to select a
47  face inside a font collection file format, while the high 16-bits will be
48  used by hb_font_create() to load the named instance. (Behdad Esfahbod)
49- Glyph positions and other font metrics now apply synthetic slant set by
50  hb_font_set_synthetic_slant(), for improved positioning for synthetically
51  slanted fonts. (Behdad Esfahbod)
52- Fixed unintentional locale dependency in hb_variation_to_string() for decimal
53  point representation. (Matthias Clasen)
54- When applying pair positioning (kerning) the positioning value is split
55  between the two sides of the pair for improved cursor positioning between
56  such pairs. (Behdad Esfahbod)
57- Introduced new HB_GLYPH_FLAG_UNSAFE_TO_CONCAT, to be used in conjunction
58  with HB_GLYPH_FLAG_UNSAFE_TO_BREAK for optimizing re-shaping during line
59  breaking. Check the documentation for further details. (Behdad Esfahbod)
60- Improved handling of macrolanguages when mapping BCP 47 codes to OpenType
61  tags. (David Corbett)
62
63- New API:
64+HB_GLYPH_FLAG_UNSAFE_TO_CONCAT
65+hb_segment_properties_overlay()
66+hb_buffer_create_similar()
67+hb_font_set_synthetic_slant()
68+hb_font_get_synthetic_slant()
69+hb_font_get_var_coords_design()
70
71
72Overview of changes leading to 3.2.0
73Friday, November 26, 2021
74====================================
75“harfbuzz” library improvements:
76- Fixed shaping of Apple Color Emoji flags in right-to-left context. (Behdad Esfahbod)
77- Fixed positioning of CFF fonts in HB_TINY profile. (Behdad Esfahbod)
78- OpenType 1.9 language tags update. (David Corbett)
79- Add HB_NO_VERTICAL config option.
80- Add HB_CONFIG_OVERRIDE_H for easier configuration. (Behdad Esfahbod)
81
82“harfbuzz-subset” library improvements:
83- Improved packing of cmap, loca, and Ligature tables. (Garret Rieger)
84- Significantly improved overflow-resolution strategy in the repacker. (Garret Rieger)
85
86
87Overview of changes leading to 3.1.2
88Friday, November 26, 2021
89====================================
90- hb-shape / hb-view: revert treating text on the commandline as single
91  paragraph (was introduced in 3.0.0); add new --single-par to do that.
92  (Behdad Esfahbod)
93- Subsetter bug fixes. (Garret Rieger, Qunxin Liu, Behdad Esfahbod)
94
95
96Overview of changes leading to 3.1.1
97Wednesday, November 8, 2021
98====================================
99- Work around GCC cast-align error/warning on some platforms. (Behdad Esfahbod)
100- Documentation improvements. (Matthias Clasen)
101
102
103Overview of changes leading to 3.1.0
104Wednesday, November 3, 2021
105====================================
106- Better offset-overflow handling in the subsetter library. (Garret Rieger)
107- Improved Unicode 14 properties in the USE shaper, and various other USE
108  shaper fixes. (David Corbett)
109- MATH and COLR v1 tables subsetting support, and various other subsetter fixes.
110  (Qunxin Liu)
111- Support for Pwo Karen / Ason Chin medial la. (Simon Cozens)
112- Apply GPOS positioning when substituting with morx table, if kerx is missing.
113  (Behdad Esfahbod)
114- Apply calt and clig features across syllable boundaries in Indic shaper.
115  (Behdad Esfahbod)
116- meson option for enabling Graphite 2 has been renamed to graphite2.
117- Build and documentation fixes.
118
119- New API:
120+hb_buffer_set_not_found_glyph()
121+hb_buffer_get_not_found_glyph()
122
123
124Overview of changes leading to 3.0.0
125Friday, September 17, 2021
126====================================
127- Unicode 14.0 support (David Corbett).
128- The hb-subset API and the harfbuzz-subset library's ABI are now declared
129  stable. The harfbuzz-subset library would not have been possible without the
130  work of Garret Rieger and Qunxin Liu from Google Fonts, and the earlier work
131  of Michiharu Ariza from Adobe.
132- The hb-style API is now stable and no longer experimental.
133
134- New API:
135+hb_style_tag_t
136+hb_style_get_value()
137+hb_subset_input_t
138+hb_subset_flags_t
139+hb_subset_sets_t
140+hb_subset_input_create_or_fail()
141+hb_subset_input_reference()
142+hb_subset_input_destroy()
143+hb_subset_input_set_user_data()
144+hb_subset_input_get_user_data()
145+hb_subset_input_unicode_set()
146+hb_subset_input_glyph_set()
147+hb_subset_input_set()
148+hb_subset_input_get_flags()
149+hb_subset_input_set_flags()
150+hb_subset_or_fail()
151
152- Removed old unstable harfbuzz-subset API:
153-hb_subset_input_nameid_set()
154-hb_subset_input_namelangid_set()
155-hb_subset_input_layout_features_set()
156-hb_subset_input_no_subset_tables_set()
157-hb_subset_input_drop_tables_set()
158-hb_subset_input_set_drop_hints()
159-hb_subset_input_get_drop_hints()
160-hb_subset_input_set_desubroutinize()
161-hb_subset_input_get_desubroutinize()
162-hb_subset_input_set_retain_gids()
163-hb_subset_input_get_retain_gids()
164-hb_subset_input_set_name_legacy()
165-hb_subset_input_get_name_legacy()
166-hb_subset_input_set_overlaps_flag()
167-hb_subset_input_get_overlaps_flag()
168-hb_subset_input_set_notdef_outline()
169-hb_subset_input_get_notdef_outline()
170-hb_subset_input_set_no_prune_unicode_ranges()
171-hb_subset_input_get_no_prune_unicode_ranges()
172-hb_subset()
173
174
175Overview of changes leading to 2.9.1
176Tuesday, September 7, 2021
177====================================
178- Final subset API is in place and if no issues are discovered, it will be the
179  stable subset API of HarfBuzz 3.0.0. Old API is kept to ease transition, but
180  will be removed in 3.0.0.
181- Various fuzzer-found bug fixes.
182- hb_buffer_append() now handles the pre- and post-context which previously
183  were left unchanged in the destination buffer.
184- hb-view / hb-shape now accept following new arguments:
185  o --unicodes-before/after: takes a list of hex numbers that represent Unicode
186    codepoints.
187- Undeprecated API:
188  hb_set_invert()
189
190
191Overview of changes leading to 2.9.0
192Wednesday, August 18, 2021
193History Repeats Itself (Afghanistan)
194====================================
195- Subsetter API is being stabilized, with the first stable API to happen in
196  3.0.0 release (https://github.com/harfbuzz/harfbuzz/issues/3078).
197- Support multiple variation axes with same tag, aka HOI.
198- The “coretext” testing shaper now passes font variations to CoreText.
199- hb-shape/hb-view does not break line at new lines unless text is read from
200  file.
201- hb-view and hb-subset has a --batch now, similar to hb-shape.
202- The --batch mode now uses ; as argument separator instead of : used previously.
203- The --batch in hb-shape does not expect 0th argument anymore. That is, the
204  lines read are interpreted as argv[1:], instead of argv[0:].
205- The --batch option has been undocumented. We are ready to document it; send
206  feedback if you find it useful.
207- hb-subset got arguments revamps. Added much-requested --gids-file, --glyphs,
208  --glyphs-file, --unicodes-file, supporting ranges in --unicodes.
209- Various bug fixes.
210
211
212Overview of changes leading to 2.8.2
213Tuesday, July 8, 2021
214====================================
215- Shaping LTR digits for RTL scripts now makes the native direction of the
216  digits LTR, applying shaping and positioning rules on the same glyph order as
217  Uniscribe. (Jonathan Kew, Khaled Hosny).
218- Subsetting COLR v1 and CPAL tables is now supported. (Garret Rieger, Qunxin Liu)
219- Various fixes and improvements to the subsetter. (Garret Rieger, Qunxin Liu, Behdad)
220- When applying morx table, mark glyph widths should not be zeroed. (Jonathan Kew)
221- GPOS is preferred over kerx, if GSUB was applied. (Behdad)
222- Regional_Indicator pairs are grouped together when clustering. (Behdad)
223- New API:
224+hb_blob_create_or_fail()
225+hb_blob_create_from_file_or_fail()
226+hb_set_copy()
227
228
229Overview of changes leading to 2.8.1
230Tuesday, May 4, 2021
231====================================
232- Subsetter now fully supports GSUB/GPOS/GDEF tables (including variations); as
233  such, layout tables are retained by subsetter by default. (Garret Rieger, Qunxin Liu)
234- Build scripts no longer check for FontConfig as HarfBuzz does not use it.
235- hb-view supports iTerm2 and kitty inline image protocols (Khaled Hosny),
236  it can also use Chafa for terminal graphics if available (Hans Petter Jansson).
237
238Overview of changes leading to 2.8.0
239Tuesday, March 16, 2021
240====================================
241- Shape joining scripts other than Arabic/Syriac using the Universal Shaping Engine.
242  Previously these were shaped using the generalized Arabic shaper. (David Corbett)
243- Fix regression in shaping of U+0B55 ORIYA SIGN OVERLINE. (David Corbett)
244- Update language tags. (David Corbett)
245- Variations: reduce error: do not round each interpolated delta. (Just van Rossum)
246- Documentation improvements. (Khaled Hosny, Nathan Willis)
247- Subsetter improvements: subsets most, if not all, lookup types now. (Garret Rieger, Qunxin Liu)
248- Fuzzer-found fixes and other improvements when memory failures happen. (Behdad)
249- Removed most atomic implementations now that we have C++11 atomic impl. (Behdad)
250- General codebase upkeep; using more C++11 features: constexpr constructors, etc. (Behdad)
251
252
253Overview of changes leading to 2.7.4
254Sunday, December 27, 2020
255====================================
256- Fix missing --enable-introspection configure option from previous release
257  tarball.
258- Documentation updates.
259
260
261Overview of changes leading to 2.7.3
262Wednesday, December 23, 2020
263====================================
264- Update USE shaper to 2020-08-13 specification, and other improvements.
265- Don’t disable liga feature in myanmar shaper, to match Uniscribe.
266- Improvements to language and script tags handling.
267- Update language system tag registry to OpenType 1.8.4
268- Support for serializing and deserializing Unicode buffers. Serialized buffers
269  are now delimited with `<>` or `[]` based on whether it is a Unicode or
270  glyphs buffer.
271- Increase buffer work limits to handle fonts with many complex lookups.
272- Handle more shaping operations in trace output.
273- Memory access fixes.
274- More OOM fixes.
275- Improved documentation.
276- Build system improvements.
277- New API:
278+hb_buffer_has_positions()
279+hb_buffer_serialize()
280+hb_buffer_serialize_unicode()
281+hb_buffer_deserialize_unicode()
282
283
284Overview of changes leading to 2.7.2
285Saturday, August 29, 2020
286====================================
287- Fix a regression in the previous release that caused a crash with Kaithi.
288- More OOM fixes.
289
290
291Overview of changes leading to 2.7.1
292Thursday, August 13, 2020
293====================================
294- ot-funcs now handles variable empty glyphs better when hvar/vvar isn't present.
295- Reverted a GDEF processing regression.
296- A couple of fixes to handle OOM better.
297
298
299Overview of changes leading to 2.7.0
300Saturday, July 25, 2020
301====================================
302- Use an implementation for round that always rounds up, some minor fluctuations
303  are expected on var font specially when hb-ot callback is used.
304- Fix an AAT's `kerx` issue on broken rendering of Devanagari Sangam MN.
305- Remove AAT's `lcar` table support from _get_ligature_carets API, not even much
306  use on macOS installed fonts (only two files).  GDEF support is the recommended
307  one and expected to work properly after issues fixed two releases ago.
308- Minor memory fixes to handle OOM better specially in hb-ft.
309- Minor .so files versioning scheme change and remove stable/unstable scheme
310  differences, was never used in practice (always default to stable scheme).
311- We are now suggesting careful packaging of the library using meson,
312  https://github.com/harfbuzz/harfbuzz/wiki/Notes-on-migration-to-meson
313  for more information.
314- Distribution package URL is changed, either use GitHub generated tarballs,
315  `https://github.com/harfbuzz/harfbuzz/archive/$pkgver.tar.gz`
316  or, even more preferably use commit hash of the release and git checkouts like,
317  `git+https://github.com/harfbuzz/harfbuzz#commit=$commit`
318
319
320Overview of changes leading to 2.6.8
321Monday, June 22, 2020
322====================================
323- New API to fetch glyph alternates from GSUB table.
324- hb-coretext build fix for macOS < 10.10.
325- Meson build fixes, cmake port removal is postponed but please prepare for
326  it and give us feedback.
327  Autotools is still our main build system however please consider
328  experimenting with meson also for packaging the library.
329- New API:
330+hb_ot_layout_lookup_get_glyph_alternates()
331
332
333Overview of changes leading to 2.6.7
334Wednesday, June 3, 2020
335====================================
336- Update to Unicode 13.0.0.
337- Fix hb_ot_layout_get_ligature_carets for fonts without lcar table, it was
338  completely broken for all the other fonts since 2.1.2.
339- As a part of our migration to meson, this release will be the last one
340  to provide cmake port files but autotools still is our main build system.
341  There is a possibility that the next version or the after be released
342  using meson.
343
344
345Overview of changes leading to 2.6.6
346Tuesday, May 12, 2020
347====================================
348- A fix in AAT kerning for Geeza Pro.
349- Better support for resource fork fonts on macOS.
350
351
352Overview of changes leading to 2.6.5
353Friday, April 17, 2020
354====================================
355- Add experimental meson build system.  Autotools is still the primary
356  and supported build system.
357- AAT is now always preferred for horizontal scripts when both AAT and OT
358  layout tables exist at the same time.
359- Subsetter improvements.
360- New API:
361+hb_ft_font_lock_face()
362+hb_ft_font_unlock_face()
363
364
365Overview of changes leading to 2.6.4
366Monday, October 29, 2019
367====================================
368- Small bug fix.
369- Build fixes.
370
371
372Overview of changes leading to 2.6.3
373Monday, October 28, 2019
374====================================
375- Misc small fixes, mostly to build-related issues.
376- New API:
377+hb_font_get_nominal_glyphs()
378
379
380Overview of changes leading to 2.6.2
381Monday, September 30, 2019
382====================================
383- Misc small fixes, mostly to build-related issues.
384
385
386Overview of changes leading to 2.6.1
387Thursday, August 22, 2019
388====================================
389- Fix regression with hb_font_create_sub_font scaling introduced in 2.6.0.
390- Change interpretation of font PTEM size / CoreText font size handling.
391  See https://github.com/harfbuzz/harfbuzz/pull/1484
392- hb-ot-font: Prefer symbol cmap subtable if present.
393- Apply 'dist'/'abvm'/'blwm' features to all scripts.
394- Drop experimental DirectWrite API.
395
396
397Overview of changes leading to 2.6.0
398Tuesday, August 13, 2019
399====================================
400- New OpenType metrics, baseline, and metadata table access APIs.
401- New API to set font variations to a named-instance.
402- New hb-gdi.h header and API for creating hb_face_t from HFONT.
403- Amalgam: Provide a single-file harfbuzz.cc file for easier alternate building.
404- More size-reduction configurable options, enabled by HB_TINY.
405- New API:
406+hb_font_set_var_named_instance()
407+hb_gdi_face_create()
408+hb_ot_layout_baseline_tag_t
409+hb_ot_layout_get_baseline()
410+hb_ot_meta_tag_t
411+hb_ot_meta_get_entry_tags()
412+hb_ot_meta_reference_entry()
413+hb_ot_metrics_tag_t
414+hb_ot_metrics_get_position()
415+hb_ot_metrics_get_variation()
416+hb_ot_metrics_get_x_variation()
417+hb_ot_metrics_get_y_variation()
418
419
420Overview of changes leading to 2.5.3
421Wednesday, June 26, 2019
422====================================
423- Fix UCD script data for Unicode 10+ scripts.  This was broken since 2.5.0.
424- More optimizations for HB_TINY.
425
426
427Overview of changes leading to 2.5.2
428Thursday, June 20, 2019
429====================================
430- More hb-config.hh facilities to shrink library size, namely when built as
431  HB_TINY.
432- New documentation of custom configurations in CONFIG.md.
433- Fix build on gcc 4.8.  That's supported again.
434- Universal Shaping Engine improvements thanks to David Corbett.
435- API Changes: Undeprecate some horizontal-kerning API and re-enable in hb-ft,
436  such that Type1 fonts will continue kerning.
437
438
439Overview of changes leading to 2.5.1
440Friday, May 31, 2019
441====================================
442- Fix build with various versions of Visual Studio.
443- Improved documentation, thanks to Nathan Willis.
444- Bugfix in subsetting glyf table.
445- Improved scripts for cross-compiling for Windows using mingw.
446- Rename HB_MATH_GLYPH_PART_FLAG_EXTENDER to HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER.
447  A deprecated macro is added for backwards-compatibility.
448
449
450Overview of changes leading to 2.5.0
451Friday, May 24, 2019
452====================================
453- This release does not include much functional changes, but includes major internal
454  code-base changes.  We now require C++11.  Support for gcc 4.8 and earlier has been
455  dropped.
456- New hb-config.hh facility for compiling smaller library for embedded and web usecases.
457- New Unicode Character Database implementation that is half the size of previously-used
458  UCDN.
459- Subsetter improvements.
460- Improved documentation, thanks to Nathan Willis.
461- Misc shaping fixes.
462
463
464Overview of changes leading to 2.4.0
465Monday, March 25, 2019
466====================================
467- Unicode 12.
468- Misc fixes.
469- Subsetter improvements.
470- New API:
471HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE
472hb_directwrite_face_create()
473
474
475Overview of changes leading to 2.3.1
476Wednesday, January 30, 2019
477====================================
478- AAT bug fixes.
479- Misc internal housekeeping cleanup.
480
481
482Overview of changes leading to 2.3.0
483Thursday, December 20, 2018
484====================================
485- Fix regression on big-endian architectures.  Ouch!
486- Misc bug and build fixes.
487- Fix subsetting of simple GSUB/GDEF.
488- Merge CFF / CFF2 support contributed by Adobe.  This mostly involves
489  the subsetter, but also get_glyph_extents on CFF fonts.
490
491New API in hb-aat.h:
492+hb_aat_layout_has_substitution()
493+hb_aat_layout_has_positioning()
494+hb_aat_layout_has_tracking()
495
496
497Overview of changes leading to 2.2.0
498Thursday, November 29, 2018
499====================================
500- Misc shaping bug fixes.
501- Add font variations named-instance API.
502- Deprecate font variations axis enumeration API and add replacement.
503- AAT shaping improvements:
504  o Fixed 'kern' table Format 2 implementation.
505  o Implement 'feat' table API for feature detection.
506  o Blacklist 'GSUB' table of fonts from 'MUTF' foundry that also have 'morx'.
507
508New API:
509+hb_aat_layout_feature_type_t
510+hb_aat_layout_feature_selector_t
511+hb_aat_layout_get_feature_types()
512+hb_aat_layout_feature_type_get_name_id
513+hb_aat_layout_feature_selector_info_t
514+HB_AAT_LAYOUT_NO_SELECTOR_INDEX
515+hb_aat_layout_feature_type_get_selector_infos()
516+hb_ot_var_axis_flags_t
517+hb_ot_var_axis_info_t
518+hb_ot_var_get_axis_infos()
519+hb_ot_var_find_axis_info()
520+hb_ot_var_get_named_instance_count()
521+hb_ot_var_named_instance_get_subfamily_name_id()
522+hb_ot_var_named_instance_get_postscript_name_id()
523+hb_ot_var_named_instance_get_design_coords()
524
525Deprecated API:
526+HB_OT_VAR_NO_AXIS_INDEX
527+hb_ot_var_axis_t
528+hb_ot_var_get_axes()
529+hb_ot_var_find_axis()
530
531
532Overview of changes leading to 2.1.3
533Friday, November 16, 2018
534====================================
535- Fix AAT 'mort' shaping, which was broken in 2.1.2
536
537
538Overview of changes leading to 2.1.2
539Friday, November 16, 2018
540====================================
541- Various internal changes.
542- AAT shaping improvements:
543  o Implement kern table Format 1 state-machine-based kerning.
544  o Implement cross-stream kerning (cursive positioning, etc).
545  o Ignore emptyish GSUB tables (zero scripts) if morx present.
546  o Don't apply GPOS if morx is being applied.  Matches Apple.
547
548
549-Overview of changes leading to 2.1.1
550Monday, November 5, 2018
551====================================
552- AAT improvements:
553  o Implement 'mort' table.
554  o Implement 'kern' subtables Format 1 and Format 3.
555
556
557Overview of changes leading to 2.1.0
558Tuesday, October 30, 2018
559====================================
560- AAT shaping improvements:
561  o Allow user controlling AAT features, for whole buffer only currently.
562  o Several 'morx' fixes.
563  o Implement tuple-kerns in 'kerx'; Fixes kerning with Apple default
564    San Francisco fonts.
565- Support for color fonts:
566  o COLR/CPAL API to fetch color layers.
567  o SVG table to fetch SVG documents.
568  o CBDT/sbix API to fetch PNG images.
569- New 'name' table API.
570- hb-ot-font now uses 'VORG' table to correctly position CFF glyphs
571  in vertical layout.
572- Various fuzzer-found bug fixes.
573
574Changed API:
575
576A type and a macro added in 2.0.0 were renamed:
577
578hb_name_id_t -> hb_ot_name_id_t
579HB_NAME_ID_INVALID -> HB_OT_NAME_ID_INVALID
580
581New API:
582
583+hb_color_t
584+HB_COLOR
585+hb_color_get_alpha()
586+hb_color_get_red()
587+hb_color_get_green()
588+hb_color_get_blue()
589+hb_ot_color_has_palettes()
590+hb_ot_color_palette_get_count()
591+hb_ot_color_palette_get_name_id()
592+hb_ot_color_palette_color_get_name_id()
593+hb_ot_color_palette_flags_t
594+hb_ot_color_palette_get_flags()
595+hb_ot_color_palette_get_colors()
596+hb_ot_color_has_layers()
597+hb_ot_color_layer_t
598+hb_ot_color_glyph_get_layers()
599+hb_ot_color_has_svg()
600+hb_ot_color_glyph_reference_svg()
601+hb_ot_color_has_png()
602+hb_ot_color_glyph_reference_png()
603
604+hb_ot_name_id_t
605+HB_OT_NAME_ID_INVALID
606+HB_OT_NAME_ID_COPYRIGHT
607+HB_OT_NAME_ID_FONT_FAMILY
608+HB_OT_NAME_ID_FONT_SUBFAMILY
609+HB_OT_NAME_ID_UNIQUE_ID
610+HB_OT_NAME_ID_FULL_NAME
611+HB_OT_NAME_ID_VERSION_STRING
612+HB_OT_NAME_ID_POSTSCRIPT_NAME
613+HB_OT_NAME_ID_TRADEMARK
614+HB_OT_NAME_ID_MANUFACTURER
615+HB_OT_NAME_ID_DESIGNER
616+HB_OT_NAME_ID_DESCRIPTION
617+HB_OT_NAME_ID_VENDOR_URL
618+HB_OT_NAME_ID_DESIGNER_URL
619+HB_OT_NAME_ID_LICENSE
620+HB_OT_NAME_ID_LICENSE_URL
621+HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY
622+HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY
623+HB_OT_NAME_ID_MAC_FULL_NAME
624+HB_OT_NAME_ID_SAMPLE_TEXT
625+HB_OT_NAME_ID_CID_FINDFONT_NAME
626+HB_OT_NAME_ID_WWS_FAMILY
627+HB_OT_NAME_ID_WWS_SUBFAMILY
628+HB_OT_NAME_ID_LIGHT_BACKGROUND
629+HB_OT_NAME_ID_DARK_BACKGROUND
630+HB_OT_NAME_ID_VARIATIONS_PS_PREFIX
631+hb_ot_name_entry_t
632+hb_ot_name_list_names()
633+hb_ot_name_get_utf8()
634+hb_ot_name_get_utf16()
635+hb_ot_name_get_utf32()
636
637
638Overview of changes leading to 2.0.2
639Saturday, October 20, 2018
640====================================
641- Fix two minor memory access issues in AAT tables.
642
643
644Overview of changes leading to 2.0.1
645Friday, October 19, 2018
646====================================
647- Fix hb-version.h reported release version that went wrong (1.8.0)
648  with previous release.
649- Fix extrapolation in 'trak' table.
650- Fix hb-font infinite-recursion issue with some font funcs and
651  subclassed fonts.
652- Implement variation-kerning format in kerx table, although without
653  variation.
654- Fix return value of hb_map_is_empty().
655
656
657Overview of changes leading to 2.0.0
658Thursday, October 18, 2018
659====================================
660- Added AAT shaping support (morx/kerx/trak).
661  Automatically used if GSUB/GPOS are not available respectively.
662  Set HB_OPTIONS=aat env var to have morx/kerx preferred over
663  GSUB/GPOS.
664- Apply TrueType kern table internally, instead of relying on
665  hb_font_t callbacks.
666- Khmer shaper significantly rewritten to better match Uniscribe.
667- Indic3 tags ('dev3', etc) are passed to USE shaper.
668- .dfont Mac font containers implemented.
669- Script- and language-mapping revamped to better use BCP 47.
670- Misc USE and Indic fixes.
671- Misc everything fixes.
672- Too many things to list.  Biggest release since 0.9.1, with
673  over 500 commits in just over 5 weeks!  Didn't intend it to
674  be a big release.  Just happened to become.
675- hb-ft now locks underlying FT_Face during use.
676
677API changes:
678
679- Newly-created hb_font_t's now have our internal "hb-ot-font"
680  callbacks set on them, so they should work out of the box
681  without any callbacks set.  If callbacks are set, everything
682  is back to what it was before, the fallback callbacks are
683  null.  If you to get the internal implementation modified,
684  sub_font it.
685
686- New hb_font_funcs_set_nominal_glyphs_func() allows speeding
687  up character to glyph mapping.
688
689New API:
690+HB_FEATURE_GLOBAL_START
691+HB_FEATURE_GLOBAL_END
692+hb_buffer_set_invisible_glyph()
693+hb_buffer_get_invisible_glyph()
694+hb_font_funcs_set_nominal_glyphs_func()
695+hb_ot_layout_table_select_script()
696+hb_ot_layout_script_select_language()
697+hb_ot_layout_feature_get_name_ids()
698+hb_ot_layout_feature_get_characters()
699+hb_name_id_t
700+HB_NAME_ID_INVALID
701+HB_OT_MAX_TAGS_PER_SCRIPT
702+hb_ot_tags_from_script_and_language()
703+hb_ot_tags_to_script_and_language()
704
705Deprecated API:
706-hb_font_funcs_set_glyph_func()
707-hb_unicode_eastasian_width_func_t
708-hb_unicode_funcs_set_eastasian_width_func()
709-hb_unicode_eastasian_width()
710-hb_unicode_decompose_compatibility_func_t
711-HB_UNICODE_MAX_DECOMPOSITION_LEN
712-hb_unicode_funcs_set_decompose_compatibility_func()
713-hb_unicode_decompose_compatibility()
714-hb_font_funcs_set_glyph_h_kerning_func()
715-hb_font_funcs_set_glyph_v_kerning_func()
716-hb_font_get_glyph_h_kerning()
717-hb_font_get_glyph_v_kerning()
718-hb_font_get_glyph_kerning_for_direction()
719-hb_ot_layout_table_choose_script()
720-hb_ot_layout_script_find_language()
721-hb_ot_tags_from_script()
722-hb_ot_tag_from_language()
723
724
725Overview of changes leading to 1.9.0
726Monday, September 10, 2018
727====================================
728- Added 'cmap' API to hb_face_t.
729- Face-builder API.
730- hb-ot-font re-creation should be much leaner now, as the
731  font tables it uses are cached on hb_face_t now.
732- Internal source header file name changes:
733  hb-*-private.hh is renamed to hb-*.hh.
734
735New API:
736+HB_UNICODE_MAX
737+hb_face_collect_unicodes()
738+hb_face_collect_variation_selectors()
739+hb_face_collect_variation_unicodes()
740+hb_face_builder_create()
741+hb_face_builder_add_table()
742
743
744Overview of changes leading to 1.8.8
745Tuesday, August 14, 2018
746====================================
747- Fix hb-icu crash on architectures where compare_exchange_weak() can
748  fail falsely.  This bug was introduced in 1.8.4.
749  https://bugs.chromium.org/p/chromium/issues/detail?id=873568
750- More internal refactoring of atomic operations and singletons.
751- API changes:
752  The following functions do NOT reference their return value before
753  returning:
754  * hb_unicode_funcs_get_default()
755  * hb_glib_get_unicode_funcs()
756  * hb_icu_get_unicode_funcs()
757  This is consistent with their naming ("get", instead of "reference")
758  as well as how they are used in the wild (ie. no one calls destroy()
759  on their return value.)
760
761
762Overview of changes leading to 1.8.7
763Wednesday, August 8, 2018
764====================================
765- Fix assertion failure with GDEF-blacklisted fonts.
766
767
768Overview of changes leading to 1.8.6
769Tuesday, August 7, 2018
770====================================
771- Internal code shuffling.
772- New API to speed up getting advance widths for implementations
773  that have heavy overhead in get_h_advance callback:
774+hb_font_funcs_set_glyph_h_advances_func
775+hb_font_funcs_set_glyph_v_advances_func
776+hb_font_get_glyph_advances_for_direction
777+hb_font_get_glyph_h_advances
778+hb_font_get_glyph_h_advances_func_t
779+hb_font_get_glyph_v_advances
780+hb_font_get_glyph_v_advances_func_t
781
782
783Overview of changes leading to 1.8.5
784Wednesday, August 1, 2018
785====================================
786- Major Khmer shaper improvements to better match Microsoft.
787- Indic bug fixes.
788- Internal improvements to atomic operations.
789
790
791Overview of changes leading to 1.8.4
792Tuesday, July 17, 2018
793====================================
794- Fix build on non-C++11.
795- Use C++-style GCC atomics and C++11 atomics.
796
797
798Overview of changes leading to 1.8.3
799Wednesday, July 11, 2018
800====================================
801- A couple of Indic / USE bug fixes.
802- Disable vectorization, as it was causing unaligned access bus error on
803  certain 32bit architectures.
804
805
806Overview of changes leading to 1.8.2
807Tuesday, July 3, 2018
808====================================
809- Fix infinite loop in Khmer shaper.
810- Improve hb_blob_create_from_file() for streams.
811
812
813Overview of changes leading to 1.8.1
814Tuesday, June 12, 2018
815====================================
816- Fix hb-version.h file generation; last two releases went out with wrong ones.
817- Add correctness bug in hb_set_t operations, introduced in 1.7.7.
818- Remove HB_SUBSET_BUILTIN build option.  Not necessary.
819
820
821Overview of changes leading to 1.8.0
822Tuesday, June 5, 2018
823====================================
824- Update to Unicode 11.0.0.
825
826
827Overview of changes leading to 1.7.7
828Tuesday, June 5, 2018
829====================================
830- Lots of internal changes, but not yet exposed externally.
831- All HarfBuzz objects are significantly smaller in size now.
832- Sinhala: Position repha on top of post-consonant, not base.
833  This better matches Windows 10 behavior, which was changed
834  from previous Windows versions.
835- New build options:
836  o New cpp macro HB_NO_ATEXIT
837  o New cpp macro HB_SUBSET_BUILTIN
838- Significant libharfbuzz-subset changes. API subject to change.
839- New API in libharfbuzz:
840
841+hb_blob_create_from_file()
842+hb_face_count()
843
844A hashmap implementation:
845+hb-map.h
846+HB_MAP_VALUE_INVALID
847+hb_map_t
848+hb_map_create()
849+hb_map_get_empty()
850+hb_map_reference()
851+hb_map_destroy()
852+hb_map_set_user_data()
853+hb_map_get_user_data()
854+hb_map_allocation_successful()
855+hb_map_clear()
856+hb_map_is_empty()
857+hb_map_get_population()
858+hb_map_set()
859+hb_map_get()
860+hb_map_del()
861+hb_map_has()
862
863
864Overview of changes leading to 1.7.6
865Wednesday, March 7, 2018
866====================================
867
868- Fix to hb_set_t binary operations. Ouch.
869- New experimental harfbuzz-subset library. All of hb-subset.h
870  is experimental right now and API WILL change.
871
872- New API:
873hb_blob_copy_writable_or_fail()
874HB_OT_TAG_BASE
875hb_set_previous()
876hb_set_previous_range()
877
878
879Overview of changes leading to 1.7.5
880Tuesday, January 30, 2018
881====================================
882
883- Separate Khmer shaper from Indic.
884- First stab at AAT morx. Not hooked up.
885- Misc bug fixes.
886
887
888Overview of changes leading to 1.7.4
889Wednesday, December 20, 2017
890====================================
891
892- Fix collect_glyphs() regression caused by hb_set_t changes.
893
894
895Overview of changes leading to 1.7.3
896Monday, December 18, 2017
897====================================
898
899- hb_set_t performance tuning and optimizations.
900- Speed up collect_glyphs() and reject garbage data.
901- In hb_coretext_font_create() set font point-size (ptem).
902- Misc fixes.
903
904
905Overview of changes leading to 1.7.2
906Monday, December 4, 2017
907====================================
908
909- Optimize hb_set_add_range().
910- Misc fixes.
911- New API:
912hb_coretext_font_create()
913
914
915Overview of changes leading to 1.7.1
916Tuesday, November 14, 2017
917====================================
918
919- Fix atexit object destruction regression.
920- Fix minor integer-overflow.
921
922
923Overview of changes leading to 1.7.0
924Monday, November 13, 2017
925====================================
926
927- Minor Indic fixes.
928- Implement kerning and glyph names in hb-ot-font.
929- Various DSO optimization re .data and .bss sizes.
930- Make C++11 optional; build fixes.
931- Mark all other backends "unsafe-to-break".
932- Graphite fix.
933
934
935Overview of changes leading to 1.6.3
936Thursday, October 26th, 2017
937====================================
938
939- Fix hb_set_t some more.  Should be solid now.
940- Implement get_glyph_name() for hb-ot-font.
941- Misc fixes.
942
943
944Overview of changes leading to 1.6.2
945Monday, October 23nd, 2017
946====================================
947
948- Yesterday's release had a bad crasher; don't use it.  That's what
949  happens when one works on Sunday...
950  https://github.com/harfbuzz/harfbuzz/issues/578
951- Build fixes for FreeBSD and Chrome Android.
952
953
954Overview of changes leading to 1.6.1
955Sunday, October 22nd, 2017
956====================================
957
958- Don't skip over COMBINING GRAPHEME JOINER when ligating, etc.
959  To be refined: https://github.com/harfbuzz/harfbuzz/issues/554
960- Faster hb_set_t implementation.
961- Don't use deprecated ICU API.
962- Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0
963- Deprecated API:
964  hb_set_invert()
965
966
967Overview of changes leading to 1.6.0
968Friday, October the 13th, 2017
969====================================
970
971- Update to Unicode 10.
972
973- Various Indic and Universal Shaping Engine fixes as a result of
974  HarfBuzz Hackfest with Jonathan Kew at Web Engines Hackfest at
975  the Igalia offices in A Coruña, Spain.  Thanks Igalia for having
976  us!
977
978- Implement Unicode Arabic Mark Ordering Algorithm UTR#53.
979
980- Implement optical sizing / tracking in CoreText backend, using
981  new API hb_font_set_ptem().
982
983- Allow notifying hb_font_t that underlying FT_Face changed sizing,
984  using new API hb_ft_font_changed().
985
986- More Graphite backend RTL fixes.
987
988- Fix caching of variable font shaping plans.
989
990- hb-view / hb-shape now accept following new arguments:
991
992  o --unicodes: takes a list of hex numbers that represent Unicode
993    codepoints.
994
995New API:
996+hb_face_get_table_tags()
997+hb_font_set_ptem()
998+hb_font_get_ptem()
999+hb_ft_font_changed()
1000
1001
1002Overview of changes leading to 1.5.1
1003Tuesday, September 5, 2017
1004====================================
1005
1006- Fix "unsafe-to-break" in fallback shaping and other corner cases.
1007  All our tests pass with --verify now, meaning unsafe-to-break API
1008  works as expected.
1009- Add --unicodes to hb-view / hb-shape.
1010- [indic] Treat Consonant_With_Stacker as consonant.  This will need
1011  further tweaking.
1012- hb_buffer_diff() tweaks.
1013
1014
1015Overview of changes leading to 1.5.0
1016Wednesday, August 23, 2017
1017====================================
1018
1019- Misc new API, for appending a buffer to another, and for comparing
1020  contents of two buffers for types of differences.
1021
1022- New "unsafe-to-break" API.  Can be used to speed up reshaping
1023  in line-breaking situations.  Essentially, after shaping, it returns
1024  positions in the input string (some of the cluster boundaries) that
1025  are "safe to break" in that if the text is segmented at that position
1026  and two sides reshaped and concatenated, the shaping result is
1027  exactly the same as shaping the text in one piece.
1028
1029  hb-view and hb-shape and hb-shape now take --verify, which verifies
1030  the above property.
1031
1032  Some corner cases of the implementation are still not quite working.
1033  Those will be fixed in subsequent releases.
1034
1035- New API:
1036
1037hb_buffer_append()
1038
1039hb_glyph_flags_t
1040HB_GLYPH_FLAG_UNSAFE_TO_BREAK
1041HB_GLYPH_FLAG_DEFINED
1042hb_glyph_info_get_glyph_flags()
1043
1044HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS
1045
1046hb_buffer_diff_flags_t
1047HB_BUFFER_DIFF_FLAG_EQUAL
1048HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH
1049HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH
1050HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT
1051HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT
1052HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH
1053HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH
1054HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH
1055HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH
1056hb_buffer_diff
1057
1058
1059Overview of changes leading to 1.4.8
1060Tuesday, August 8, 2017
1061====================================
1062
1063- Major fix to avar table handling.
1064- Rename hb-shape --show-message to --trace.
1065- Build fixes.
1066
1067
1068Overview of changes leading to 1.4.7
1069Tuesday, July 18, 2017
1070====================================
1071
1072- Multiple Indic, Tibetan, and Cham fixes.
1073- CoreText: Allow disabling kerning.
1074- Adjust Arabic feature order again.
1075- Misc build fixes.
1076
1077
1078Overview of changes leading to 1.4.6
1079Sunday, April 23, 2017
1080====================================
1081
1082- Graphite2: Fix RTL positioning issue.
1083- Backlist GDEF of more versions of Padauk and Tahoma.
1084- New, experimental, cmake alternative build system.
1085
1086
1087Overview of changes leading to 1.4.5
1088Friday, March 10, 2017
1089====================================
1090
1091- Revert "Fix Context lookup application when moving back after a glyph..."
1092  This introduced memory access problems.  To be fixed properly soon.
1093
1094
1095Overview of changes leading to 1.4.4
1096Sunday, March 5, 2017
1097====================================
1098
1099- Fix Context lookup application when moving back after a glyph deletion.
1100- Fix buffer-overrun in Bengali.
1101
1102
1103Overview of changes leading to 1.4.3
1104Saturday, February 25, 2017
1105====================================
1106
1107- Route Adlam script to Arabic shaper.
1108- Misc fixes.
1109- New API:
1110  hb_font_set_face()
1111- Deprecate API:
1112  hb_graphite2_font_get_gr_font()
1113
1114
1115Overview of changes leading to 1.4.2
1116Monday, January 23, 2017
1117====================================
1118
1119- Implement OpenType Font Variation tables avar/fvar/HVAR/VVAR.
1120- hb-shape and hb-view now accept --variations.
1121- New API:
1122
1123hb_variation_t
1124hb_variation_from_string()
1125hb_variation_to_string()
1126
1127hb_font_set_variations()
1128hb_font_set_var_coords_design()
1129hb_font_get_var_coords_normalized()
1130
1131hb-ot-var.h:
1132hb_ot_var_axis_t
1133hb_ot_var_has_data()
1134hb_ot_var_get_axis_count()
1135hb_ot_var_get_axes()
1136hb_ot_var_find_axis()
1137hb_ot_var_normalize_variations()
1138hb_ot_var_normalize_coords()
1139
1140- MVAR to be implemented later.  Access to named instances to be
1141  implemented later as well.
1142
1143- Misc fixes.
1144
1145
1146Overview of changes leading to 1.4.1
1147Thursday, January 5, 2017
1148====================================
1149
1150- Always build and use UCDN for Unicode data by default.
1151  Reduces dependence on version of Unicode data in glib,
1152  specially in the Windows bundles we are shipping, which
1153  have very old glib.
1154
1155
1156Overview of changes leading to 1.4.0
1157Thursday, January 5, 2017
1158====================================
1159
1160- Merged "OpenType GX" branch which adds core of support for
1161  OpenType 1.8 Font Variations.  To that extent, the relevant
1162  new API is:
1163
1164New API:
1165hb_font_set_var_coords_normalized()
1166
1167  with supporting API:
1168
1169New API:
1170HB_OT_LAYOUT_NO_VARIATIONS_INDEX
1171hb_ot_layout_table_find_feature_variations()
1172hb_ot_layout_feature_with_variations_get_lookups()
1173hb_shape_plan_create2()
1174hb_shape_plan_create_cached2()
1175
1176  Currently variations in GSUB/GPOS/GDEF are fully supported,
1177  and no other tables are supported.  In particular, fvar/avar
1178  are NOT supported, hence the hb_font_set_var_coords_normalized()
1179  taking normalized coordinates.  API to take design coordinates
1180  will be added in the future.
1181
1182  HVAR/VVAR/MVAR support will also be added to hb-ot-font in the
1183  future.
1184
1185- Fix regression in GDEF glyph class processing.
1186- Add decompositions for Chakma, Limbu, and Balinese in USE shaper.
1187- Misc fixes.
1188
1189
1190Overview of changes leading to 1.3.4
1191Monday, December 5, 2016
1192====================================
1193
1194- Fix vertical glyph origin in hb-ot-font.
1195- Implement CBDT/CBLC color font glyph extents in hb-ot-font.
1196
1197
1198Overview of changes leading to 1.3.3
1199Wednesday, September 28, 2016
1200====================================
1201
1202- Implement parsing of OpenType MATH table.
1203New API:
1204HB_OT_TAG_MATH
1205HB_OT_MATH_SCRIPT
1206hb_ot_math_constant_t
1207hb_ot_math_kern_t
1208hb_ot_math_glyph_variant_t
1209hb_ot_math_glyph_part_flags_t
1210hb_ot_math_glyph_part_t
1211hb_ot_math_has_data
1212hb_ot_math_get_constant
1213hb_ot_math_get_glyph_italics_correction
1214hb_ot_math_get_glyph_top_accent_attachment
1215hb_ot_math_get_glyph_kerning
1216hb_ot_math_is_glyph_extended_shape
1217hb_ot_math_get_glyph_variants
1218hb_ot_math_get_min_connector_overlap
1219hb_ot_math_get_glyph_assembly
1220
1221
1222Overview of changes leading to 1.3.2
1223Wednesday, September 27, 2016
1224====================================
1225
1226- Fix build of hb-coretext on older OS X versions.
1227
1228
1229Overview of changes leading to 1.3.1
1230Wednesday, September 7, 2016
1231====================================
1232
1233- Blacklist bad GDEF of more fonts (Padauk).
1234- More CoreText backend crash fixes with OS X 10.9.5.
1235- Misc fixes.
1236
1237
1238Overview of changes leading to 1.3.0
1239Thursday, July 21, 2016
1240====================================
1241
1242- Update to Unicode 9.0.0
1243- Move Javanese from Indic shaper to Universal Shaping Engine.
1244- Allow MultipleSubst to delete a glyph (matching Windows engine).
1245- Update Universal Shaping Engine to latest draft from Microsoft.
1246- DirectWrite backend improvements.  Note: this backend is for testing ONLY.
1247- CoreText backend improvements with unreachable fonts.
1248- Implement symbol fonts (cmap 3.0.0) in hb-ft and hb-ot-font.
1249- Blacklist bad GDEF of more fonts (Tahoma & others).
1250- Misc fixes.
1251
1252
1253Overview of changes leading to 1.2.7
1254Monday, May 2, 2016
1255====================================
1256
1257- Blacklist another version of Times New Roman (Bold) Italic from Windows 7.
1258- Fix Mongolian Free Variation Selectors shaping with certain fonts.
1259- Fix Tibetan shorthand contractions shaping.
1260- Improved list of language tag mappings.
1261- Unbreak build on Windows CE.
1262- Make 'glyf' table loading lazy in hb-ot-font.
1263
1264
1265Overview of changes leading to 1.2.6
1266Friday, April 8, 2016
1267====================================
1268
1269- Blacklist GDEF table of another set of Times New Roman (Bold) Italic.
1270- DirectWrite backend improvements.  Note: DirectWrite backend is
1271  exclusively for our internal testing and should NOT be used in any
1272  production system whatsoever.
1273
1274
1275Overview of changes leading to 1.2.5
1276Monday, April 4, 2016
1277====================================
1278
1279- Fix GDEF mark-filtering-set, which was broken in 1.2.3.
1280
1281
1282Overview of changes leading to 1.2.4
1283Thursday, March 17, 2016
1284====================================
1285
1286- Synthesize GDEF glyph class for any glyph that does not have one in GDEF.
1287  I really hope we don't discover broken fonts that shape badly with this
1288  change.
1289- Misc build and other minor fixes.
1290- API changes:
1291  - Added HB_NDEBUG.  It's fine for production systems to define this to
1292    disable high-overhead debugging checks.  However, I also reduced the
1293    overhead of those checks, so it's a non-issue right now.  You can
1294    forget it.  Just not defining anything at all is fine.
1295
1296
1297Overview of changes leading to 1.2.3
1298Thursday, February 25, 2016
1299====================================
1300
1301- Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic,
1302  due to bug in glyph class of ASCII double-quote character.  This should
1303  address "regression" introduced in 1.2.0 when we switched mark zeroing
1304  in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE.
1305  This fourth release in a week should finally stabilize things...
1306
1307- hb-ot-font's get_glyph() implementation saw some optimizations.  Though,
1308  might be really hard to measure in real-world situations.
1309
1310- Also, two rather small API changes:
1311
1312We now disable some time-consuming internal bookkeeping if built with NDEBUG
1313defined.  This is a first time that we use NDEBUG to disable debug code.  If
1314there exist production systems that do NOT want to enable NDEBUG, please let
1315me know and I'll add HB_NDEBUG.
1316
1317Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph()
1318
1319New API:
1320- hb_font_get_nominal_glyph_func_t
1321- hb_font_get_variation_glyph_func_t
1322- hb_font_funcs_set_nominal_glyph_func()
1323- hb_font_funcs_set_variation_glyph_func()
1324- hb_font_get_nominal_glyph()
1325- hb_font_get_variation_glyph()
1326
1327Deprecated API:
1328- hb_font_get_glyph_func_t
1329- hb_font_funcs_set_glyph_func()
1330
1331Clients that implement their own font-funcs are encouraged to replace
1332their get_glyph() implementation with a get_nominal_glyph() and
1333get_variation_glyph() pair.  The variation version can assume that
1334variation_selector argument is not zero.  Old (deprecated) functions
1335will continue working indefinitely using internal gymnastics; it is
1336just more efficient to use the new functions.
1337
1338
1339Overview of changes leading to 1.2.2
1340Wednesday, February 24, 2016
1341====================================
1342
1343- Fix regression with mark positioning with fonts that have
1344  non-zero mark advances.  This was introduced in 1.2.0 while
1345  trying to make mark and cursive attachments to work together.
1346  I have partially reverted that, so this version is much more
1347  like what we had before.  All clients who updated to 1.2.0
1348  should update to this version.
1349
1350
1351Overview of changes leading to 1.2.1
1352Tuesday, February 23, 2016
1353====================================
1354
1355- CoreText: Fix bug with wrong scale if font scale was changed later.
1356  https://github.com/libass/libass/issues/212
1357- CoreText: Drastically speed up font initialization.
1358- CoreText: Fix tiny leak.
1359- Group ZWJ/ZWNJ with previous syllable under cluster-level=0.
1360  https://github.com/harfbuzz/harfbuzz/issues/217
1361- Add test/shaping/README.md about how to add tests to the suite.
1362
1363
1364Overview of changes leading to 1.2.0
1365Friday, February 19, 2016
1366====================================
1367
1368- Fix various issues (hangs mostly) in case of memory allocation failure.
1369- Change mark zeroing types of most shapers from BY_UNICODE_LATE to
1370  BY_GDEF_LATE.  This seems to be what Uniscribe does.
1371- Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY.  That's
1372  what Windows does.
1373- Allow GPOS cursive connection on marks, and fix the interaction with
1374  mark attachment.  This work resulted in some changes to how mark
1375  attachments work.  See:
1376  https://github.com/harfbuzz/harfbuzz/issues/211
1377  https://github.com/harfbuzz/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
1378- Graphite2 shaper: improved negative advance handling (eg. Nastaliq).
1379- Add nmake-based build system for Windows.
1380- Minor speedup.
1381- Misc. improvements.
1382
1383
1384Overview of changes leading to 1.1.3
1385Monday, January 11, 2016
1386====================================
1387
1388- Ported Indic shaper to Unicode 8.0 data.
1389- Universal Shaping Engine fixes.
1390- Speed up CoreText shaper when font fallback happens in CoreText.
1391- Documentation improvements, thanks to Khaled Hosny.
1392- Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi.
1393- Misc bug fixes.
1394- New API:
1395
1396  * Font extents:
1397      hb_font_extents_t
1398      hb_font_get_font_extents_func_t
1399      hb_font_get_font_h_extents_func_t
1400      hb_font_get_font_v_extents_func_t
1401      hb_font_funcs_set_font_h_extents_func
1402      hb_font_funcs_set_font_v_extents_func
1403      hb_font_get_h_extents
1404      hb_font_get_v_extents
1405      hb_font_get_extents_for_direction
1406
1407  * Buffer message (aka debug):
1408      hb_buffer_message_func_t
1409      hb_buffer_set_message_func()
1410    Actual message protocol to be fleshed out later.
1411
1412
1413Overview of changes leading to 1.1.2
1414Wednesday, November 26, 2015
1415====================================
1416
1417- Fix badly-broken fallback shaper that affected terminology.
1418  https://github.com/harfbuzz/harfbuzz/issues/187
1419- Fix y_scaling in Graphite shaper.
1420- API changes:
1421  * An unset glyph_h_origin() function in font-funcs now (sensibly)
1422    implies horizontal origin at 0,0.  Ie, the nil callback returns
1423    true instead of false.  As such, implementations that have a
1424    glyph_h_origin() that simply returns true, can remove that function
1425    with HarfBuzz >= 1.1.2.  This results in a tiny speedup.
1426
1427
1428Overview of changes leading to 1.1.1
1429Wednesday, November 24, 2015
1430====================================
1431
1432- Build fixes, specially for hb-coretext.
1433
1434
1435Overview of changes leading to 1.1.0
1436Wednesday, November 18, 2015
1437====================================
1438
1439- Implement 'stch' stretch feature for Syriac Abbreviation Mark.
1440  https://github.com/harfbuzz/harfbuzz/issues/141
1441- Disable use of decompose_compatibility() callback.
1442- Implement "shaping" of various Unicode space characters, even
1443  if the font does not support them.
1444  https://github.com/harfbuzz/harfbuzz/issues/153
1445- If font does not support U+2011 NO-BREAK HYPHEN, fallback to
1446  U+2010 HYPHEN.
1447- Changes resulting from libFuzzer continuous fuzzing:
1448  * Reject font tables that need more than 8 edits,
1449  * Bound buffer growth during shaping to 32x,
1450  * Fix assertions and other issues at OOM / buffer max-growth.
1451- Misc fixes and optimizations.
1452- API changes:
1453  * All fonts created with hb_font_create() now inherit from
1454    (ie. have parent) hb_font_get_empty().
1455
1456
1457Overview of changes leading to 1.0.6
1458Thursday, October 15, 2015
1459====================================
1460
1461- Reduce max nesting level in OT lookups from 8 to 6.
1462  Should not affect any real font as far as I know.
1463- Fix memory access issue in ot-font.
1464- Revert default load-flags of fonts created using hb_ft_font_create()
1465  back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING.  This was changed in
1466  last release (1.0.5), but caused major issues, so revert.
1467  https://github.com/harfbuzz/harfbuzz/issues/143
1468
1469
1470Overview of changes leading to 1.0.5
1471Tuesday, October 13, 2015
1472====================================
1473
1474- Fix multiple memory access bugs discovered using libFuzzer.
1475  https://github.com/harfbuzz/harfbuzz/issues/139
1476  Everyone should upgrade to this version as soon as possible.
1477  We now have continuous fuzzing set up, to avoid issues like
1478  these creeping in again.
1479- Misc fixes.
1480
1481- New API:
1482  * hb_font_set_parent().
1483  * hb_ft_font_[sg]et_load_flags()
1484    The default flags for fonts created using hb_ft_font_create()
1485    has changed to default to FT_LOAD_DEFAULT now.  Previously it
1486    was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING.
1487
1488- API changes:
1489  * Fonts now default to units-per-EM as their scale, instead of 0.
1490  * hb_font_create_sub_font() does NOT make parent font immutable
1491    anymore.  hb_font_make_immutable() does.
1492
1493
1494Overview of changes leading to 1.0.4
1495Wednesday, September 30, 2015
1496====================================
1497
1498- Fix minor out-of-bounds read error.
1499
1500
1501Overview of changes leading to 1.0.3
1502Tuesday, September 1, 2015
1503====================================
1504
1505- Start of user documentation, from Simon Cozens!
1506- Implement glyph_extents() for TrueType fonts in hb-ot-font.
1507- Improve GPOS cursive attachments with conflicting lookups.
1508- More fixes for cluster-level = 1.
1509- Uniscribe positioning fix.
1510
1511
1512Overview of changes leading to 1.0.2
1513Wednesday, August 19, 2015
1514====================================
1515
1516- Fix shaping with cluster-level > 0.
1517- Fix Uniscribe backend font-size scaling.
1518- Declare dependencies in harfbuzz.pc.
1519  FreeType is not declared though, to avoid bugs in pkg-config
1520  0.26 with recursive dependencies.
1521- Slightly improved debug infrastructure.  More to come later.
1522- Misc build fixes.
1523
1524
1525Overview of changes leading to 1.0.1
1526Monday, July 27, 2015
1527====================================
1528
1529- Fix out-of-bounds access in USE shaper.
1530
1531
1532Overview of changes leading to 1.0.0
1533Sunday, July 26, 2015
1534====================================
1535
1536- Implement Universal Shaping Engine:
1537  https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
1538  http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/
1539- Bump version to 1.0.0.  The soname was NOT bumped.
1540
1541
1542Overview of changes leading to 0.9.42
1543Thursday, July 26, 2015
1544=====================================
1545
1546- New API to allow for retrieving finer-grained cluster
1547  mappings if the client desires to handle them.  Default
1548  behavior is unchanged.
1549- Fix cluster merging when removing default-ignorables.
1550- Update to Unicode 8.0
1551- hb-graphite2 fixes.
1552- Misc fixes.
1553- Removed HB_NO_MERGE_CLUSTERS hack.
1554- New API:
1555  hb_buffer_cluster_level_t enum
1556  hb_buffer_get_cluster_level()
1557  hb_buffer_set_cluster_level()
1558  hb-shape / hb-view --cluster-level
1559
1560
1561Overview of changes leading to 0.9.41
1562Thursday, June 18, 2015
1563=====================================
1564
1565- Fix hb-coretext with trailing whitespace in right-to-left.
1566- New API: hb_buffer_reverse_range().
1567- Allow implementing atomic ops in config.h.
1568- Fix hb_language_t in language bindings.
1569- Misc fixes.
1570
1571
1572Overview of changes leading to 0.9.40
1573Friday, March 20, 2015
1574=====================================
1575
1576- Another hb-coretext crasher fix.  Ouch!
1577- Happy Norouz!
1578
1579
1580Overview of changes leading to 0.9.39
1581Wednesday, March 4, 2015
1582=====================================
1583
1584- Critical hb-coretext fixes.
1585- Optimizations and refactoring; no functional change
1586  expected.
1587- Misc build fixes.
1588
1589
1590Overview of changes leading to 0.9.38
1591Friday, January 23, 2015
1592=====================================
1593
1594- Fix minor out-of-bounds access in Indic shaper.
1595- Change New Tai Lue shaping engine from South-East Asian to default,
1596  reflecting change in Unicode encoding model.
1597- Add hb-shape --font-size.  Can take up to two numbers for separate
1598  x / y size.
1599- Fix CoreText and FreeType scale issues with negative scales.
1600- Reject blobs larger than 2GB.  This might break some icu-le-hb clients
1601  that need security fixes.  See:
1602  http://www.icu-project.org/trac/ticket/11450
1603- Avoid accessing font tables during face destruction, in casce rogue
1604  clients released face data already.
1605- Fix up gobject-introspection a bit.  Python bindings kinda working.
1606  See README.python.
1607- Misc fixes.
1608- API additions:
1609  hb_ft_face_create_referenced()
1610  hb_ft_font_create_referenced()
1611
1612
1613Overview of changes leading to 0.9.37
1614Wednesday, December 17, 2014
1615=====================================
1616
1617- Fix out-of-bounds access in Context lookup format 3.
1618- Indic: Allow ZWJ/ZWNJ before syllable modifiers.
1619
1620
1621Overview of changes leading to 0.9.36
1622Thursday, November 20, 2014
1623=====================================
1624
1625- First time that three months went by without a release since
1626  0.9.2 was released on August 10, 2012!
1627- Fix performance bug in hb_ot_collect_glyphs():
1628  https://bugzilla.mozilla.org/show_bug.cgi?id=1090869
1629- Add basic vertical-text support to hb-ot-font.
1630- Misc build fixes.
1631
1632
1633Overview of changes leading to 0.9.35
1634Saturday, August 13, 2014
1635=====================================
1636
1637- Fix major shape-plan caching bug when more than one shaper were
1638  provided to hb_shape_full() (as exercised by XeTeX).
1639  http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html
1640- Fix Arabic fallback shaping regression.  This was broken in 0.9.32.
1641- Major hb-coretext fixes.  That backend is complete now, including
1642  respecing buffer direction and language, down to vertical writing.
1643- Build fixes for Windows CE.  Should build fine now.
1644- Misc fixes:
1645  Use atexit() only if it's safe to call from shared library
1646  https://bugs.freedesktop.org/show_bug.cgi?id=82246
1647  Mandaic had errors in its Unicode Joining_Type
1648  https://bugs.freedesktop.org/show_bug.cgi?id=82306
1649- API changes:
1650
1651  * hb_buffer_clear_contents() does not reset buffer flags now.
1652
1653    After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
1654    need to set flags for different pieces of text.  The flags now
1655    are something the client sets up once, depending on how it
1656    actually uses the buffer.  As such, don't clear it in
1657    clear_contents().
1658
1659    I don't expect any changes to be needed to any existing client.
1660
1661
1662Overview of changes leading to 0.9.34
1663Saturday, August 2, 2014
1664=====================================
1665
1666- hb_feature_from_string() now accepts CSS font-feature-settings format.
1667- As a result, hb-shape / hb-view --features also accept CSS-style strings.
1668  Eg, "'liga' off" is accepted now.
1669- Add old-spec Myanmar shaper:
1670  https://bugs.freedesktop.org/show_bug.cgi?id=81775
1671- Don't apply 'calt' in Hangul shaper.
1672- Fix mark advance zeroing for Hebrew shaper:
1673  https://bugs.freedesktop.org/show_bug.cgi?id=76767
1674- Implement Windows-1256 custom Arabic shaping.  Only built on Windows,
1675  and requires help from get_glyph().  Used by Firefox.
1676  https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
1677- Disable 'liga' in vertical text.
1678- Build fixes.
1679- API changes:
1680
1681  * Make HB_BUFFER_FLAG_BOT/EOT easier to use.
1682
1683    Previously, we expected users to provide BOT/EOT flags when the
1684    text *segment* was at paragraph boundaries.  This meant that for
1685    clients that provide full paragraph to HarfBuzz (eg. Pango), they
1686    had code like this:
1687
1688      hb_buffer_set_flags (hb_buffer,
1689                           (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
1690                           (item_offset + item_length == paragraph_length ?
1691                            HB_BUFFER_FLAG_EOT : 0));
1692
1693      hb_buffer_add_utf8 (hb_buffer,
1694                          paragraph_text, paragraph_length,
1695                          item_offset, item_length);
1696
1697    After this change such clients can simply say:
1698
1699      hb_buffer_set_flags (hb_buffer,
1700                           HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
1701
1702      hb_buffer_add_utf8 (hb_buffer,
1703                          paragraph_text, paragraph_length,
1704                          item_offset, item_length);
1705
1706    Ie, HarfBuzz itself checks whether the segment is at the beginning/end
1707    of the paragraph.  Clients that only pass item-at-a-time to HarfBuzz
1708    continue not setting any flags whatsoever.
1709
1710    Another way to put it is: if there's pre-context text in the buffer,
1711    HarfBuzz ignores the BOT flag.  If there's post-context, it ignores
1712    EOT flag.
1713
1714
1715Overview of changes leading to 0.9.33
1716Tuesday, July 22, 2014
1717=====================================
1718
1719- Turn off ARabic 'cswh' feature that was accidentally turned on.
1720- Add HB_TAG_MAX_SIGNED.
1721- Make hb_face_make_immutable() really make face immutable!
1722- Windows build fixes.
1723
1724
1725Overview of changes leading to 0.9.32
1726Thursday, July 17, 2014
1727=====================================
1728
1729- Apply Arabic shaping features in spec order exactly.
1730- Another fix for Mongolian free variation selectors.
1731- For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt'
1732  together.
1733- Minor adjustment to U+FFFD logic.
1734- Fix hb-coretext build.
1735
1736
1737Overview of changes leading to 0.9.31
1738Wednesday, July 16, 2014
1739=====================================
1740
1741- Only accept valid UTF-8/16/32; we missed many cases before.
1742- Better shaping of invalid UTF-8/16/32.  Falls back to
1743  U+FFFD REPLACEMENT CHARACTER now.
1744- With all changes in this release, the buffer will contain fully
1745  valid Unicode after hb_buffer_add_utf8/16/32 no matter how
1746  broken the input is.  This can be overridden though.  See below.
1747- Fix Mongolian Variation Selectors for fonts without GDEF.
1748- Fix minor invalid buffer access.
1749- Accept zh-Hant and zh-Hans language tags.  hb_ot_tag_to_language()
1750  now uses these instead of private tags.
1751- Build fixes.
1752- New API:
1753  * hb_buffer_add_codepoints().  This does what hb_buffer_add_utf32()
1754    used to do, ie. no validity check on the input at all.  add_utf32
1755    now replaces invalid Unicode codepoints with the replacement
1756    character (see below).
1757  * hb_buffer_set_replacement_codepoint()
1758  * hb_buffer_get_replacement_codepoint()
1759    Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when
1760    we detected broken input, we replaced that with (hb_codepoint_t)-1.
1761    This has changed to use U+FFFD now, but can be changed using these
1762    new API.
1763
1764
1765Overview of changes leading to 0.9.30
1766Wednesday, July 9, 2014
1767=====================================
1768
1769- Update to Unicode 7.0.0:
1770  * New scripts Manichaean and Psalter Pahlavi are shaped using
1771    Arabic shaper.
1772  * All the other new scripts to through the generic shaper for
1773    now.
1774- Minor Indic improvements.
1775- Fix graphite2 backend cluster mapping [crasher!]
1776- API changes:
1777  * New HB_SCRIPT_* values for Unicode 7.0 scripts.
1778  * New function hb_ot_layout_language_get_required_feature().
1779- Build fixes.
1780
1781
1782Overview of changes leading to 0.9.29
1783Thursday, May 29, 2014
1784=====================================
1785
1786- Implement cmap in hb-ot-font.h.  No variation-selectors yet.
1787- Myanmar: Allow MedialYa+Asat.
1788- Various Indic fixes:
1789  * Support most characters in Extended Devanagary and Vedic
1790    Unicode blocks.
1791  * Allow digits and a some punctuation as consonant placeholders.
1792- Build fixes.
1793
1794
1795Overview of changes leading to 0.9.28
1796Monday, April 28, 2014
1797=====================================
1798
1799- Unbreak old-spec Indic shaping. (bug 76705)
1800- Fix shaping of U+17DD and U+0FC6.
1801- Add HB_NO_MERGE_CLUSTERS build option.  NOT to be enabled by default
1802  for shipping libraries.  It's an option for further experimentation
1803  right now.  When we are sure how to do it properly, we will add
1804  public run-time API for the functionality.
1805- Build fixes.
1806
1807
1808Overview of changes leading to 0.9.27
1809Tuesday, March 18, 2014
1810=====================================
1811
1812- Don't use "register" storage class specifier
1813- Wrap definition of free_langs() with HAVE_ATEXIT
1814- Add coretext_aat shaper and hb_coretext_face_create() constructor
1815- If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
1816- Add Myanmar test case from OpenType Myanmar spec
1817- Only do fallback Hebrew composition if no GPOS 'mark' available
1818- Allow bootstrapping without gtk-doc
1819- Use AM_MISSING_PROG for ragel and git
1820- Typo in ucdn's Makefile.am
1821- Improve MemoryBarrier() implementation
1822
1823
1824Overview of changes leading to 0.9.26
1825Thursday, January 30, 2014
1826=====================================
1827
1828- Misc fixes.
1829- Fix application of 'rtlm' feature.
1830- Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH.
1831- New header: hb-ot-shape.h
1832- Uniscribe: fix scratch-buffer accounting.
1833- Reorder Tai Tham SAKOT to after tone-marks.
1834- Add Hangul shaper.
1835- New files:
1836  hb-ot-shape-complex-hangul.cc
1837  hb-ot-shape-complex-hebrew.cc
1838  hb-ot-shape-complex-tibetan.cc
1839- Disable 'cswh' feature in Arabic shaper.
1840- Coretext: better handle surrogate pairs.
1841- Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE.
1842
1843
1844Overview of changes leading to 0.9.25
1845Wednesday, December 4, 2013
1846=====================================
1847
1848- Myanmar shaper improvements.
1849- Avoid font fallback in CoreText backend.
1850- Additional OpenType language tag mappiongs.
1851- More aggressive shape-plan caching.
1852- Build with / require automake 1.13.
1853- Build with libtool 2.4.2.418 alpha to support ppc64le.
1854
1855
1856Overview of changes leading to 0.9.24
1857Tuesday, November 13, 2013
1858=====================================
1859
1860- Misc compiler warning fixes with clang.
1861- No functional changes.
1862
1863
1864Overview of changes leading to 0.9.23
1865Monday, October 28, 2013
1866=====================================
1867
1868- "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
1869- Fix (Chain)Context recursion with non-monotone lookup positions.
1870- Misc Indic bug fixes.
1871- New Javanese / Buginese shaping, similar to Windows 8.1.
1872
1873
1874Overview of changes leading to 0.9.22
1875Thursday, October 3, 2013
1876=====================================
1877
1878- Fix use-after-end-of-scope in hb_language_from_string().
1879- Fix hiding of default_ignorables if font doesn't have space glyph.
1880- Protect against out-of-range lookup indices.
1881
1882- API Changes:
1883
1884  * Added hb_ot_layout_table_get_lookup_count()
1885
1886
1887Overview of changes leading to 0.9.21
1888Monday, September 16, 2013
1889=====================================
1890
1891- Rename gobject-introspection library name from harfbuzz to HarfBuzz.
1892- Remove (long disabled) hb-old and hb-icu-le test shapers.
1893- Misc gtk-doc and gobject-introspection annotations.
1894- Misc fixes.
1895- API changes:
1896
1897  * Add HB_SET_VALUE_INVALID
1898
1899Overview of changes leading to 0.9.20
1900Thursday, August 29, 2013
1901=====================================
1902
1903General:
1904- Misc substitute_closure() fixes.
1905- Build fixes.
1906
1907Documentation:
1908- gtk-doc boilerplate integrated.  Docs are built now, but
1909  contain no contents.  By next release hopefully we have
1910  some content in.  Enable using --enable-gtk-doc.
1911
1912GObject and Introspection:
1913- Added harfbuzz-gobject library (hb-gobject.h) that has type
1914  bindings for all HarfBuzz objects and enums.  Enable using
1915  --with-gobject.
1916- Added gobject-introspection boilerplate.  Nothing useful
1917  right now.  Work in progress.  Gets enabled automatically if
1918  --with-gobject is used.  Override with --disable-introspection.
1919
1920OpenType shaper:
1921- Apply 'mark' in Myanmar shaper.
1922- Don't apply 'dlig' by default.
1923
1924Uniscribe shaper:
1925- Support user features.
1926- Fix loading of fonts that are also installed on the system.
1927- Fix shaping of Arabic Presentation Forms.
1928- Fix build with wide chars.
1929
1930CoreText shaper:
1931- Support user features.
1932
1933Source changes:
1934- hb_face_t code moved to hb-face.h / hb-face.cc.
1935- Added hb-deprecated.h.
1936
1937API changes:
1938- Added HB_DISABLE_DEPRECATED.
1939- Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
1940  HB_SCRIPT_CANADIAN_SYLLABICS.
1941- Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
1942  HB_BUFFER_FLAG_DEFAULT.
1943- Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
1944  HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
1945
1946
1947Overview of changes leading to 0.9.19
1948Tuesday, July 16, 2013
1949=====================================
1950
1951- Build fixes.
1952- Better handling of multiple variation selectors in a row.
1953- Pass on variation selector to GSUB if not consumed by cmap.
1954- Fix undefined memory access.
1955- Add Javanese config to Indic shaper.
1956- Misc bug fixes.
1957
1958Overview of changes leading to 0.9.18
1959Tuesday, May 28, 2013
1960=====================================
1961
1962New build system:
1963
1964- All unneeded code is all disabled by default,
1965
1966- Uniscribe and CoreText shapers can be enabled with their --with options,
1967
1968- icu_le and old shapers cannot be enabled for now,
1969
1970- glib, freetype, and cairo will be detected automatically.
1971  They can be force on/off'ed with their --with options,
1972
1973- icu and graphite2 are default off, can be enabled with their --with
1974  options,
1975
1976Moreover, ICU support is now build into a separate library:
1977libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
1978Distros can enable ICU now without every application on earth
1979getting linked to via libharfbuzz.so.
1980
1981For distros I recommend that they make sure they are building --with-glib
1982--with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
1983And package harfbuzz and harfbuzz-icu separately.
1984
1985
1986Overview of changes leading to 0.9.17
1987Monday, May 20, 2013
1988=====================================
1989
1990- Build fixes.
1991- Fix bug in hb_set_get_min().
1992- Fix regression with Arabic mark positioning / width-zeroing.
1993
1994Overview of changes leading to 0.9.16
1995Friday, April 19, 2013
1996=====================================
1997
1998- Major speedup in OpenType lookup processing.  With the Amiri
1999  Arabic font, this release is over 3x faster than previous
2000  release.  All scripts / languages should see this speedup.
2001
2002- New --num-iterations option for hb-shape / hb-view; useful for
2003  profiling.
2004
2005Overview of changes leading to 0.9.15
2006Friday, April 05, 2013
2007=====================================
2008
2009- Build fixes.
2010- Fix crasher in graphite2 shaper.
2011- Fix Arabic mark width zeroing regression.
2012- Don't compose Hangul jamo into Unicode syllables.
2013
2014
2015Overview of changes leading to 0.9.14
2016Thursday, March 21, 2013
2017=====================================
2018
2019- Build fixes.
2020- Fix time-consuming sanitize with malicious fonts.
2021- Implement hb_buffer_deserialize_glyphs() for both json and text.
2022- Do not ignore Hangul filler characters.
2023- Indic fixes:
2024  * Fix Malayalam pre-base reordering interaction with post-forms.
2025  * Further adjust ZWJ handling.  Should fix known regressions from
2026    0.9.13.
2027
2028
2029Overview of changes leading to 0.9.13
2030Thursday, February 25, 2013
2031=====================================
2032
2033- Build fixes.
2034- Ngapi HarfBuzz Hackfest in London (February 2013):
2035  * Fixed all known Indic bugs,
2036  * New Win8-style Myanmar shaper,
2037  * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
2038  * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
2039    matching GSUB/GPOS lookups,
2040  * Fix 'Phags-Pa U+A872 shaping,
2041  * Fix partial disabling of default-on features,
2042  * Allow disabling of TrueType kerning.
2043- Fix possible crasher with broken fonts with overlapping tables.
2044- Removed generated files from git again.  So, one needs ragel to
2045  bootstrap from the git tree.
2046
2047API changes:
2048- hb_shape() and related APIs now abort if buffer direction is
2049  HB_DIRECTION_INVALID.  Previously, hb_shape() was calling
2050  hb_buffer_guess_segment_properties() on the buffer before
2051  shaping.  The heuristics in that function are fragile.  If the
2052  user really wants the old behvaior, they can call that function
2053  right before calling hb_shape() to get the old behavior.
2054- hb_blob_create_sub_blob() always creates sub-blob with
2055  HB_MEMORY_MODE_READONLY.  See comments for the reason.
2056
2057
2058Overview of changes leading to 0.9.12
2059Thursday, January 18, 2013
2060=====================================
2061
2062- Build fixes for Sun compiler.
2063- Minor bug fix.
2064
2065Overview of changes leading to 0.9.11
2066Thursday, January 10, 2013
2067=====================================
2068
2069- Build fixes.
2070- Fix GPOS mark attachment with null Anchor offsets.
2071- [Indic] Fix old-spec reordering of viramas if sequence ends in one.
2072- Fix multi-threaded shaper data creation crash.
2073- Add atomic ops for Solaris.
2074
2075API changes:
2076- Rename hb_buffer_clear() to hb_buffer_clear_contents().
2077
2078
2079Overview of changes leading to 0.9.10
2080Thursday, January 3, 2013
2081=====================================
2082
2083- [Indic] Fixed rendering of Malayalam dot-reph
2084- Updated OT language tags.
2085- Updated graphite2 backend.
2086- Improved hb_ot_layout_get_size_params() logic.
2087- Improve hb-shape/hb-view help output.
2088- Fixed hb-set.h implementation to not crash.
2089- Fixed various issues with hb_ot_layout_collect_lookups().
2090- Various build fixes.
2091
2092New API:
2093
2094hb_graphite2_face_get_gr_face()
2095hb_graphite2_font_get_gr_font()
2096hb_coretext_face_get_cg_font()
2097
2098Modified API:
2099
2100hb_ot_layout_get_size_params()
2101
2102
2103Overview of changes leading to 0.9.9
2104Wednesday, December 5, 2012
2105====================================
2106
2107- Fix build on Windows.
2108- Minor improvements.
2109
2110
2111Overview of changes leading to 0.9.8
2112Tuesday, December 4, 2012
2113====================================
2114
2115
2116- Actually implement hb_shape_plan_get_shaper ().
2117- Make UCDB data tables const.
2118- Lots of internal refactoring in OTLayout tables.
2119- Flesh out hb_ot_layout_lookup_collect_glyphs().
2120
2121New API:
2122
2123hb_ot_layout_collect_lookups()
2124hb_ot_layout_get_size_params()
2125
2126
2127Overview of changes leading to 0.9.7
2128Sunday, November 21, 2012
2129====================================
2130
2131
2132HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
2133
2134- Fix Arabic contextual joining using pre-context text.
2135- Fix Sinhala "split matra" mess.
2136- Fix Khmer shaping with broken fonts.
2137- Implement Thai "PUA" shaping for old fonts.
2138- Do NOT route Kharoshthi script through the Indic shaper.
2139- Disable fallback positioning for Indic and Thai shapers.
2140- Misc fixes.
2141
2142
2143hb-shape / hb-view changes:
2144
2145- Add --text-before and --text-after
2146- Add --bot / --eot / --preserve-default-ignorables
2147- hb-shape --output-format=json
2148
2149
2150New API:
2151
2152hb_buffer_clear()
2153
2154hb_buffer_flags_t
2155
2156HB_BUFFER_FLAGS_DEFAULT
2157HB_BUFFER_FLAG_BOT
2158HB_BUFFER_FLAG_EOT
2159HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
2160
2161hb_buffer_set_flags()
2162hb_buffer_get_flags()
2163
2164HB_BUFFER_SERIALIZE_FLAGS
2165hb_buffer_serialize_glyphs()
2166hb_buffer_deserialize_glyphs()
2167hb_buffer_serialize_list_formats()
2168
2169hb_set_add_range()
2170hb_set_del_range()
2171hb_set_get_population()
2172hb_set_next_range()
2173
2174hb_face_[sg]et_glyph_count()
2175
2176hb_segment_properties_t
2177HB_SEGMENT_PROPERTIES_DEFAULT
2178hb_segment_properties_equal()
2179hb_segment_properties_hash()
2180
2181hb_buffer_set_segment_properties()
2182hb_buffer_get_segment_properties()
2183
2184hb_ot_layout_glyph_class_t
2185hb_ot_layout_get_glyph_class()
2186hb_ot_layout_get_glyphs_in_class()
2187
2188hb_shape_plan_t
2189hb_shape_plan_create()
2190hb_shape_plan_create_cached()
2191hb_shape_plan_get_empty()
2192hb_shape_plan_reference()
2193hb_shape_plan_destroy()
2194hb_shape_plan_set_user_data()
2195hb_shape_plan_get_user_data()
2196hb_shape_plan_execute()
2197hb_shape_plan_get_shaper()
2198
2199hb_ot_shape_plan_collect_lookups()
2200
2201
2202API changes:
2203
2204- Remove "mask" parameter from hb_buffer_add().
2205- Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
2206- hb-set.h API const correction.
2207- Renamed hb_set_min/max() to hb_set_get_min/max().
2208- Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
2209- Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
2210
2211
2212
2213Overview of changes leading to 0.9.6
2214Sunday, November 13, 2012
2215====================================
2216
2217- Don't clear pre-context text if no new context is provided.
2218- Fix ReverseChainingSubstLookup, which was totally borked.
2219- Adjust output format of hb-shape a bit.
2220- Include config.h.in in-tree.  Makes it easier for alternate build systems.
2221- Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
2222- Use ICU LayoutEngine's C API instead of C++.  Avoids much headache.
2223- Drop glyphs for all of Unicode Default_Ignorable characters.
2224- Misc build fixes.
2225
2226Arabic shaper:
2227- Enable 'dlig' and 'mset' features in Arabic shaper.
2228- Implement 'Phags-pa shaping, improve Mongolian.
2229
2230Indic shaper:
2231- Decompose Sinhala split matras the way old HarfBuzz / Pango did.
2232- Initial support for Consonant Medials.
2233- Start adding new-style Myanmar shaping.
2234- Make reph and 'pref' logic introspect the font.
2235- Route Meetei-Mayek through the Indic shaper.
2236- Don't apply 'liga' in Indic shaper.
2237- Improve Malayalam pre-base reordering Ra interaction with Chillus.
2238
2239
2240
2241Overview of changes leading to 0.9.5
2242Sunday, October 14, 2012
2243====================================
2244
2245- Synthetic-GSUB Arabic fallback shaping.
2246
2247- Misc Indic improvements.
2248
2249- Add build system support for pthread.
2250
2251- Imported UCDN for in-tree Unicode callbacks implementation.
2252
2253- Context-aware Arabic joining.
2254
2255- Misc other fixes.
2256
2257- New API:
2258
2259  hb_feature_to/from-string()
2260  hb_buffer_[sg]et_content_type()
2261
2262
2263
2264Overview of changes leading to 0.9.4
2265Tuesday, Sep 03, 2012
2266====================================
2267
2268- Indic improvements with old-spec Malayalam.
2269
2270- Better fallback glyph positioning, specially with Thai / Lao marks.
2271
2272- Implement dotted-circle insertion.
2273
2274- Better Arabic fallback shaping / ligation.
2275
2276- Added ICU LayoutEngine backend for testing.  Call it by the 'icu_le' name.
2277
2278- Misc fixes.
2279
2280
2281
2282Overview of changes leading to 0.9.3
2283Friday, Aug 18, 2012
2284====================================
2285
2286- Fixed fallback mark positioning for left-to-right text.
2287
2288- Improve mark positioning for the remaining combining classes.
2289
2290- Unbreak Thai and fallback Arabic shaping.
2291
2292- Port Arabic shaper to shape-plan caching.
2293
2294- Use new ICU normalizer functions.
2295
2296
2297
2298Overview of changes leading to 0.9.2
2299Friday, Aug 10, 2012
2300====================================
2301
2302- Over a thousand commits!  This is the first major release of HarfBuzz.
2303
2304- HarfBuzz is feature-complete now!  It should be in par, or better, than
2305  both Pango's shapers and old HarfBuzz / Qt shapers.
2306
2307- New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
2308
2309- Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
2310  Sinhala, N'ko, Mongolian, and Mandaic.
2311
2312- New Thai / Lao shaper.
2313
2314- Tibetan / Hangul support in the generic shaper.
2315
2316- Synthetic GDEF support for fonts without a GDEF table.
2317
2318- Fallback mark positioning for fonts without a GPOS table.
2319
2320- Unicode normalization shaping heuristic during glyph mapping.
2321
2322- New experimental Graphite2 backend.
2323
2324- New Uniscribe backend (primarily for testing).
2325
2326- New CoreText backend (primarily for testing).
2327
2328- Major optimization and speedup.
2329
2330- Test suites and testing infrastructure (work in progress).
2331
2332- Greatly improved hb-view cmdline tool.
2333
2334- hb-shape cmdline tool.
2335
2336- Unicode 6.1 support.
2337
2338Summary of API changes:
2339
2340o Changed API:
2341
2342  - Users are expected to only include main header files now (ie. hb.h,
2343    hb-glib.h, hb-ft.h, ...)
2344
2345  - All struct tag names had their initial underscore removed.
2346    Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
2347
2348  - All set_user_data() functions now take a "replace" boolean parameter.
2349
2350  - hb_buffer_create() takes zero arguments now.
2351    Use hb_buffer_pre_allocate() to pre-allocate.
2352
2353  - hb_buffer_add_utf*() now accept -1 for length parameters,
2354    meaning "nul-terminated".
2355
2356  - hb_direction_t enum values changed.
2357
2358  - All *_from_string() APIs now take a length parameter to allow for
2359    non-nul-terminated strings. A -1 length means "nul-terminated".
2360
2361  - Typedef for hb_language_t changed.
2362
2363  - hb_get_table_func_t renamed to hb_reference_table_func_t.
2364
2365  - hb_ot_layout_table_choose_script()
2366
2367  - Various renames in hb-unicode.h.
2368
2369o New API:
2370
2371  - hb_buffer_guess_properties()
2372    Automatically called by hb_shape().
2373
2374  - hb_buffer_normalize_glyphs()
2375
2376  - hb_tag_from_string()
2377
2378  - hb-coretext.h
2379
2380  - hb-uniscribe.h
2381
2382  - hb_face_reference_blob()
2383  - hb_face_[sg]et_index()
2384  - hb_face_set_upem()
2385
2386  - hb_font_get_glyph_name_func_t
2387    hb_font_get_glyph_from_name_func_t
2388    hb_font_funcs_set_glyph_name_func()
2389    hb_font_funcs_set_glyph_from_name_func()
2390    hb_font_get_glyph_name()
2391    hb_font_get_glyph_from_name()
2392    hb_font_glyph_to_string()
2393    hb_font_glyph_from_string()
2394
2395  - hb_font_set_funcs_data()
2396
2397  - hb_ft_font_set_funcs()
2398  - hb_ft_font_get_face()
2399
2400  - hb-gobject.h (work in progress)
2401
2402  - hb_ot_shape_glyphs_closure()
2403    hb_ot_layout_substitute_closure_lookup()
2404
2405  - hb-set.h
2406
2407  - hb_shape_full()
2408
2409  - hb_unicode_combining_class_t
2410
2411  - hb_unicode_compose_func_t
2412    hb_unicode_decompose_func_t
2413    hb_unicode_decompose_compatibility_func_t
2414    hb_unicode_funcs_set_compose_func()
2415    hb_unicode_funcs_set_decompose_func()
2416    hb_unicode_funcs_set_decompose_compatibility_func()
2417    hb_unicode_compose()
2418    hb_unicode_decompose()
2419    hb_unicode_decompose_compatibility()
2420
2421o Removed API:
2422
2423  - hb_ft_get_font_funcs()
2424
2425  - hb_ot_layout_substitute_start()
2426    hb_ot_layout_substitute_lookup()
2427    hb_ot_layout_substitute_finish()
2428    hb_ot_layout_position_start()
2429    hb_ot_layout_position_lookup()
2430    hb_ot_layout_position_finish()
2431
2432
2433
2434Overview of changes leading to 0.6.0
2435Friday, May 27, 2011
2436====================================
2437
2438- Vertical text support in GPOS
2439- Almost all API entries have unit tests now, under test/
2440- All thread-safety issues are fixed
2441
2442Summary of API changes follows.
2443
2444
2445* Simple Types API:
2446
2447  o New API:
2448    HB_LANGUAGE_INVALID
2449    hb_language_get_default()
2450    hb_direction_to_string()
2451    hb_direction_from_string()
2452    hb_script_get_horizontal_direction()
2453    HB_UNTAG()
2454
2455  o Renamed API:
2456    hb_category_t renamed to hb_unicode_general_category_t
2457
2458  o Changed API:
2459    hb_language_t is a typed pointers now
2460
2461  o Removed API:
2462    HB_TAG_STR()
2463
2464
2465* Use ISO 15924 tags for hb_script_t:
2466
2467  o New API:
2468    hb_script_from_iso15924_tag()
2469    hb_script_to_iso15924_tag()
2470    hb_script_from_string()
2471
2472  o Changed API:
2473    HB_SCRIPT_* enum members changed value.
2474
2475
2476* Buffer API streamlined:
2477
2478  o New API:
2479    hb_buffer_reset()
2480    hb_buffer_set_length()
2481    hb_buffer_allocation_successful()
2482
2483  o Renamed API:
2484    hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
2485    hb_buffer_add_glyph() renamed to hb_buffer_add()
2486
2487  o Removed API:
2488    hb_buffer_clear()
2489    hb_buffer_clear_positions()
2490
2491  o Changed API:
2492    hb_buffer_get_glyph_infos() takes an out length parameter now
2493    hb_buffer_get_glyph_positions() takes an out length parameter now
2494
2495
2496* Blob API streamlined:
2497
2498  o New API:
2499    hb_blob_get_data()
2500    hb_blob_get_data_writable()
2501
2502  o Renamed API:
2503    hb_blob_create_empty() renamed to hb_blob_get_empty()
2504
2505  o Removed API:
2506    hb_blob_lock()
2507    hb_blob_unlock()
2508    hb_blob_is_writable()
2509    hb_blob_try_writable()
2510
2511  o Changed API:
2512    hb_blob_create() takes user_data before destroy now
2513
2514
2515* Unicode functions API:
2516
2517  o Unicode function vectors can subclass other unicode function vectors now.
2518    Unimplemented callbacks in the subclass automatically chainup to the parent.
2519
2520  o All hb_unicode_funcs_t callbacks take a user_data now.  Their setters
2521    take a user_data and its respective destroy callback.
2522
2523  o New API:
2524    hb_unicode_funcs_get_empty()
2525    hb_unicode_funcs_get_default()
2526    hb_unicode_funcs_get_parent()
2527
2528  o Changed API:
2529    hb_unicode_funcs_create() now takes a parent_funcs.
2530
2531  o Removed func getter functions:
2532    hb_unicode_funcs_get_mirroring_func()
2533    hb_unicode_funcs_get_general_category_func()
2534    hb_unicode_funcs_get_script_func()
2535    hb_unicode_funcs_get_combining_class_func()
2536    hb_unicode_funcs_get_eastasian_width_func()
2537
2538
2539* Face API:
2540
2541  o Renamed API:
2542    hb_face_get_table() renamed to hb_face_reference_table()
2543    hb_face_create_for_data() renamed to hb_face_create()
2544
2545  o Changed API:
2546    hb_face_create_for_tables() takes user_data before destroy now
2547    hb_face_reference_table() returns empty blob instead of NULL
2548    hb_get_table_func_t accepts the face as first parameter now
2549
2550* Font API:
2551
2552  o Fonts can subclass other fonts now.  Unimplemented callbacks in the
2553    subclass automatically chainup to the parent.  When chaining up,
2554    scale is adjusted if the parent font has a different scale.
2555
2556  o All hb_font_funcs_t callbacks take a user_data now.  Their setters
2557    take a user_data and its respective destroy callback.
2558
2559  o New API:
2560    hb_font_get_parent()
2561    hb_font_funcs_get_empty()
2562    hb_font_create_sub_font()
2563
2564  o Removed API:
2565    hb_font_funcs_copy()
2566    hb_font_unset_funcs()
2567
2568  o Removed func getter functions:
2569    hb_font_funcs_get_glyph_func()
2570    hb_font_funcs_get_glyph_advance_func()
2571    hb_font_funcs_get_glyph_extents_func()
2572    hb_font_funcs_get_contour_point_func()
2573    hb_font_funcs_get_kerning_func()
2574
2575  o Changed API:
2576    hb_font_create() takes a face and references it now
2577    hb_font_set_funcs() takes user_data before destroy now
2578    hb_font_set_scale() accepts signed integers now
2579    hb_font_get_contour_point_func_t now takes glyph first, then point_index
2580    hb_font_get_glyph_func_t returns a success boolean now
2581
2582
2583* Changed object model:
2584
2585  o All object types have a _get_empty() now:
2586    hb_blob_get_empty()
2587    hb_buffer_get_empty()
2588    hb_face_get_empty()
2589    hb_font_get_empty()
2590    hb_font_funcs_get_empty()
2591    hb_unicode_funcs_get_empty()
2592
2593  o Added _set_user_data() and _get_user_data() for all object types:
2594    hb_blob_get_user_data()
2595    hb_blob_set_user_data()
2596    hb_buffer_get_user_data()
2597    hb_buffer_set_user_data()
2598    hb_face_get_user_data()
2599    hb_face_set_user_data()
2600    hb_font_funcs_get_user_data()
2601    hb_font_funcs_set_user_data()
2602    hb_font_get_user_data()
2603    hb_font_set_user_data()
2604    hb_unicode_funcs_get_user_data()
2605    hb_unicode_funcs_set_user_data()
2606
2607  o Removed the _get_reference_count() from all object types:
2608    hb_blob_get_reference_count()
2609    hb_buffer_get_reference_count()
2610    hb_face_get_reference_count()
2611    hb_font_funcs_get_reference_count()
2612    hb_font_get_reference_count()
2613    hb_unicode_funcs_get_reference_count()
2614
2615  o Added _make_immutable() and _is_immutable() for all object types except for buffer:
2616    hb_blob_make_immutable()
2617    hb_blob_is_immutable()
2618    hb_face_make_immutable()
2619    hb_face_is_immutable()
2620
2621
2622* Changed API for vertical text support
2623
2624  o The following callbacks where removed:
2625    hb_font_get_glyph_advance_func_t
2626    hb_font_get_kerning_func_t
2627
2628  o The following new callbacks added instead:
2629    hb_font_get_glyph_h_advance_func_t
2630    hb_font_get_glyph_v_advance_func_t
2631    hb_font_get_glyph_h_origin_func_t
2632    hb_font_get_glyph_v_origin_func_t
2633    hb_font_get_glyph_h_kerning_func_t
2634    hb_font_get_glyph_v_kerning_func_t
2635
2636  o The following API removed as such:
2637    hb_font_funcs_set_glyph_advance_func()
2638    hb_font_funcs_set_kerning_func()
2639    hb_font_get_glyph_advance()
2640    hb_font_get_kerning()
2641
2642  o New API added instead:
2643    hb_font_funcs_set_glyph_h_advance_func()
2644    hb_font_funcs_set_glyph_v_advance_func()
2645    hb_font_funcs_set_glyph_h_origin_func()
2646    hb_font_funcs_set_glyph_v_origin_func()
2647    hb_font_funcs_set_glyph_h_kerning_func()
2648    hb_font_funcs_set_glyph_v_kerning_func()
2649    hb_font_get_glyph_h_advance()
2650    hb_font_get_glyph_v_advance()
2651    hb_font_get_glyph_h_origin()
2652    hb_font_get_glyph_v_origin()
2653    hb_font_get_glyph_h_kerning()
2654    hb_font_get_glyph_v_kerning()
2655
2656  o The following higher-leve API added for convenience:
2657    hb_font_get_glyph_advance_for_direction()
2658    hb_font_get_glyph_origin_for_direction()
2659    hb_font_add_glyph_origin_for_direction()
2660    hb_font_subtract_glyph_origin_for_direction()
2661    hb_font_get_glyph_kerning_for_direction()
2662    hb_font_get_glyph_extents_for_origin()
2663    hb_font_get_glyph_contour_point_for_origin()
2664
2665
2666* OpenType Layout API:
2667
2668  o New API:
2669    hb_ot_layout_position_start()
2670    hb_ot_layout_substitute_start()
2671    hb_ot_layout_substitute_finish()
2672
2673
2674* Glue code:
2675
2676  o New API:
2677    hb_glib_script_to_script()
2678    hb_glib_script_from_script()
2679    hb_icu_script_to_script()
2680    hb_icu_script_from_script()
2681
2682
2683* Version API added:
2684
2685  o New API:
2686    HB_VERSION_MAJOR
2687    HB_VERSION_MINOR
2688    HB_VERSION_MICRO
2689    HB_VERSION_STRING
2690    HB_VERSION_CHECK()
2691    hb_version()
2692    hb_version_string()
2693    hb_version_check()
2694
2695
2696