blob: c9af0f36853aa43dfdc44d3944baa359a1b4043d [file] [log] [blame]
Behdad Esfahbod54d332d2018-09-10 11:37:24 +02001Overview of changes leading to 1.9.0
2Monday, September 10, 2018
3====================================
4- Added 'cmap' API to hb_face_t.
5- Face-builder API.
6- hb-ot-font re-creation should be much leaner now, as the
7 font tables it uses are cached on hb_face_t now.
8- Internal source header file name changes:
9 hb-*-private.hh is renamed to hb-*.hh.
10
11New API:
12+HB_UNICODE_MAX
13+hb_face_collect_unicodes()
14+hb_face_collect_variation_selectors()
15+hb_face_collect_variation_unicodes()
16+hb_face_builder_create()
17+hb_face_builder_add_table()
18
19
Behdad Esfahbod63be5dc2018-08-14 10:59:34 -070020Overview of changes leading to 1.8.8
21Tuesday, August 14, 2018
22====================================
23- Fix hb-icu crash on architectures where compare_exchange_weak() can
24 fail falsely. This bug was introduced in 1.8.4.
25 https://bugs.chromium.org/p/chromium/issues/detail?id=873568
26- More internal refactoring of atomic operations and singletons.
27- API changes:
28 The following functions do NOT reference their return value before
29 returning:
30 * hb_unicode_funcs_get_default()
31 * hb_glib_get_unicode_funcs()
32 * hb_icu_get_unicode_funcs()
33 This is consistent with their naming ("get", instead of "reference")
34 as well as how they are used in the wild (ie. no one calls destroy()
35 on their return value.)
36
37
Behdad Esfahbodb6fdcf42018-08-08 21:54:08 -070038Overview of changes leading to 1.8.7
39Wednesday, August 8, 2018
40====================================
41- Fix assertion failure with GDEF-blacklisted fonts.
42
43
Behdad Esfahbode49a38b2018-08-07 09:55:42 -070044Overview of changes leading to 1.8.6
45Tuesday, August 7, 2018
46====================================
47- Internal code shuffling.
48- New API to speed up getting advance widths for implementations
49 that have heavy overhead in get_h_advance callback:
50+hb_font_funcs_set_glyph_h_advances_func
51+hb_font_funcs_set_glyph_v_advances_func
52+hb_font_get_glyph_advances_for_direction
53+hb_font_get_glyph_h_advances
54+hb_font_get_glyph_h_advances_func_t
55+hb_font_get_glyph_v_advances
56+hb_font_get_glyph_v_advances_func_t
57
58
Behdad Esfahbod44d1fb32018-08-01 14:51:51 -070059Overview of changes leading to 1.8.5
60Wednesday, August 1, 2018
61====================================
62- Major Khmer shaper improvements to better match Microsoft.
63- Indic bug fixes.
64- Internal improvements to atomic operations.
65
66
Behdad Esfahbod68310a62018-07-17 13:20:40 +020067Overview of changes leading to 1.8.4
68Tuesday, July 17, 2018
69====================================
70- Fix build on non-C++11.
71- Use C++-style GCC atomics and C++11 atomics.
72
73
Behdad Esfahbod2b767672018-07-11 15:27:13 +020074Overview of changes leading to 1.8.3
75Wednesday, July 11, 2018
76====================================
77- A couple of Indic / USE bug fixes.
78- Disable vectorization, as it was causing unaligned access bus error on
79 certain 32bit architectures.
80
81
Behdad Esfahbod343e8c62018-07-03 12:43:59 +043082Overview of changes leading to 1.8.2
83Tuesday, July 3, 2018
84====================================
85- Fix infinite loop in Khmer shaper.
86- Improve hb_blob_create_from_file() for streams.
87
88
Behdad Esfahbod3654d9b2018-06-12 19:38:04 -040089Overview of changes leading to 1.8.1
90Tuesday, June 12, 2018
91====================================
92- Fix hb-version.h file generation; last two releases went out with wrong ones.
93- Add correctness bug in hb_set_t operations, introduced in 1.7.7.
94- Remove HB_SUBSET_BUILTIN build option. Not necessary.
95
Behdad Esfahbod343e8c62018-07-03 12:43:59 +043096
Behdad Esfahbod37986aa2018-06-05 18:04:40 -070097Overview of changes leading to 1.8.0
98Tuesday, June 5, 2018
99====================================
100- Update to Unicode 11.0.0.
101
Behdad Esfahbod3654d9b2018-06-12 19:38:04 -0400102
Behdad Esfahboddf01f3e2018-06-05 15:17:39 -0700103Overview of changes leading to 1.7.7
104Tuesday, June 5, 2018
105====================================
106- Lots of internal changes, but not yet exposed externally.
107- All HarfBuzz objects are significantly smaller in size now.
108- Sinhala: Position repha on top of post-consonant, not base.
109 This better matches Windows 10 behavior, which was changed
110 from previous Windows versions.
111- New build options:
112 o New cpp macro HB_NO_ATEXIT
113 o New cpp macro HB_SUBSET_BUILTIN
114- Significant libharfbuzz-subset changes. API subject to change.
115- New API in libharfbuzz:
116
117+hb_blob_create_from_file()
118+hb_face_count()
119
120A hashmap implementation:
121+hb-map.h
122+HB_MAP_VALUE_INVALID
123+hb_map_t
124+hb_map_create()
125+hb_map_get_empty()
126+hb_map_reference()
127+hb_map_destroy()
128+hb_map_set_user_data()
129+hb_map_get_user_data()
130+hb_map_allocation_successful()
131+hb_map_clear()
132+hb_map_is_empty()
133+hb_map_get_population()
134+hb_map_set()
135+hb_map_get()
136+hb_map_del()
137+hb_map_has()
138
139
Behdad Esfahbodff2f8142018-03-07 16:05:14 +0100140Overview of changes leading to 1.7.6
141Wednesday, March 7, 2018
142====================================
143
144- Fix to hb_set_t binary operations. Ouch.
145- New experimental harfbuzz-subset library. All of hb-subset.h
146 is experimental right now and API WILL change.
147
148- New API:
149hb_blob_copy_writable_or_fail()
150HB_OT_TAG_BASE
151hb_set_previous()
152hb_set_previous_range()
153
154
Behdad Esfahbodf0b700d2018-01-30 11:16:51 -0800155Overview of changes leading to 1.7.5
156Tuesday, January 30, 2018
157====================================
158
159- Separate Khmer shaper from Indic.
160- First stab at AAT morx. Not hooked up.
161- Misc bug fixes.
162
163
Behdad Esfahbod007a2a42017-12-20 12:09:00 -0500164Overview of changes leading to 1.7.4
165Wednesday, December 20, 2017
166====================================
167
168- Fix collect_glyphs() regression caused by hb_set_t changes.
169
170
Behdad Esfahbodb5bbb792017-12-18 09:18:51 -0500171Overview of changes leading to 1.7.3
172Monday, December 18, 2017
173====================================
174
175- hb_set_t performance tuning and optimizations.
176- Speed up collect_glyphs() and reject garbage data.
177- In hb_coretext_font_create() set font point-size (ptem).
178- Misc fixes.
179
180
Behdad Esfahbod843f7f72017-12-04 08:52:39 -0800181Overview of changes leading to 1.7.2
182Monday, December 4, 2017
183====================================
184
185- Optimize hb_set_add_range().
186- Misc fixes.
187- New API:
188hb_coretext_font_create()
189
190
Behdad Esfahbodf93c6f82017-11-14 11:09:19 -0800191Overview of changes leading to 1.7.1
192Tuesday, November 14, 2017
193====================================
194
195- Fix atexit object destruction regression.
196- Fix minor integer-overflow.
197
198
Behdad Esfahbode5d70982017-11-13 09:42:37 -0800199Overview of changes leading to 1.7.0
200Monday, November 13, 2017
201====================================
202
203- Minor Indic fixes.
204- Implement kerning and glyph names in hb-ot-font.
205- Various DSO optimization re .data and .bss sizes.
206- Make C++11 optional; build fixes.
207- Mark all other backends "unsafe-to-break".
208- Graphite fix.
209
210
Behdad Esfahbod223686d2017-10-26 12:52:02 -0600211Overview of changes leading to 1.6.3
212Thursday, October 26th, 2017
213====================================
214
215- Fix hb_set_t some more. Should be solid now.
216- Implement get_glyph_name() for hb-ot-font.
217- Misc fixes.
218
219
Behdad Esfahbod3b7388a2017-10-23 14:35:16 -0400220Overview of changes leading to 1.6.2
221Monday, October 23nd, 2017
222====================================
223
224- Yesterday's release had a bad crasher; don't use it. That's what
225 happens when one works on Sunday...
ebraminio7c6937e2017-11-20 14:49:22 -0500226 https://github.com/harfbuzz/harfbuzz/issues/578
Behdad Esfahbod3b7388a2017-10-23 14:35:16 -0400227- Build fixes for FreeBSD and Chrome Android.
228
229
Behdad Esfahbod0ca915e2017-10-22 17:38:33 -0400230Overview of changes leading to 1.6.1
231Sunday, October 22nd, 2017
232====================================
233
234- Don't skip over COMBINING GRAPHEME JOINER when ligating, etc.
ebraminio7c6937e2017-11-20 14:49:22 -0500235 To be refined: https://github.com/harfbuzz/harfbuzz/issues/554
Behdad Esfahbod0ca915e2017-10-22 17:38:33 -0400236- Faster hb_set_t implementation.
237- Don't use deprecated ICU API.
238- Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0
239- Deprecated API:
240 hb_set_invert()
241
242
Behdad Esfahbod25846cc2017-10-13 16:30:33 +0200243Overview of changes leading to 1.6.0
244Friday, October the 13th, 2017
245====================================
246
247- Update to Unicode 10.
248
249- Various Indic and Universal Shaping Engine fixes as a result of
250 HarfBuzz Hackfest with Jonathan Kew at Web Engines Hackfest at
251 the Igalia offices in A Coruña, Spain. Thanks Igalia for having
252 us!
253
254- Implement Unicode Arabic Mark Ordering Algorithm UTR#53.
255
256- Implement optical sizing / tracking in CoreText backend, using
257 new API hb_font_set_ptem().
258
259- Allow notifying hb_font_t that underlying FT_Face changed sizing,
260 using new API hb_ft_font_changed().
261
262- More Graphite backend RTL fixes.
263
264- Fix caching of variable font shaping plans.
265
266- hb-view / hb-shape now accept following new arguments:
267
268 o --unicodes: takes a list of hex numbers that represent Unicode
269 codepoints.
270
271New API:
272+hb_face_get_table_tags()
273+hb_font_set_ptem()
274+hb_font_get_ptem()
275+hb_ft_font_changed()
276
277
Behdad Esfahboda984e0c2017-09-05 11:18:35 -0700278Overview of changes leading to 1.5.1
279Tuesday, September 5, 2017
280====================================
281
282- Fix "unsafe-to-break" in fallback shaping and other corner cases.
283 All our tests pass with --verify now, meaning unsafe-to-break API
284 works as expected.
285- Add --unicodes to hb-view / hb-shape.
286- [indic] Treat Consonant_With_Stacker as consonant. This will need
287 further tweaking.
288- hb_buffer_diff() tweaks.
289
290
Behdad Esfahbode8b364b2017-08-23 15:00:45 -0700291Overview of changes leading to 1.5.0
292Wednesday, August 23, 2017
293====================================
294
295- Misc new API, for appending a buffer to another, and for comparing
296 contents of two buffers for types of differences.
297
298- New "unsafe-to-break" API. Can be used to speed up reshaping
299 in line-breaking situations. Essentially, after shaping, it returns
300 positions in the input string (some of the cluster boundaries) that
301 are "safe to break" in that if the text is segmented at that position
302 and two sides reshaped and concatenated, the shaping result is
303 exactly the same as shaping the text in one piece.
304
305 hb-view and hb-shape and hb-shape now take --verify, which verifies
306 the above property.
307
308 Some corner cases of the implementation are still not quite working.
309 Those will be fixed in subsequent releases.
310
311- New API:
312
313hb_buffer_append()
314
315hb_glyph_flags_t
316HB_GLYPH_FLAG_UNSAFE_TO_BREAK
317HB_GLYPH_FLAG_DEFINED
318hb_glyph_info_get_glyph_flags()
319
320HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS
321
322hb_buffer_diff_flags_t
323HB_BUFFER_DIFF_FLAG_EQUAL
324HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH
325HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH
326HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT
327HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT
328HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH
329HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH
330HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH
331HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH
332hb_buffer_diff
333
334
Behdad Esfahbod79177922017-08-08 13:17:03 -0700335Overview of changes leading to 1.4.8
336Tuesday, August 8, 2017
337====================================
338
339- Major fix to avar table handling.
340- Rename hb-shape --show-message to --trace.
341- Build fixes.
342
343
Behdad Esfahbodfc15e602017-07-18 11:24:42 -0700344Overview of changes leading to 1.4.7
345Tuesday, July 18, 2017
346====================================
347
348- Multiple Indic, Tibetan, and Cham fixes.
349- CoreText: Allow disabling kerning.
350- Adjust Arabic feature order again.
351- Misc build fixes.
352
353
Behdad Esfahbod141b33d2017-04-23 16:19:13 -0700354Overview of changes leading to 1.4.6
355Sunday, April 23, 2017
356====================================
357
358- Graphite2: Fix RTL positioning issue.
359- Backlist GDEF of more versions of Padauk and Tahoma.
360- New, experimental, cmake alternative build system.
361
362
Behdad Esfahbod60e25862017-03-10 23:02:28 -0800363Overview of changes leading to 1.4.5
364Friday, March 10, 2017
365====================================
366
367- Revert "Fix Context lookup application when moving back after a glyph..."
368 This introduced memory access problems. To be fixed properly soon.
369
370
Behdad Esfahbod8e42c3c2017-03-05 13:54:56 -0800371Overview of changes leading to 1.4.4
372Sunday, March 5, 2017
373====================================
374
375- Fix Context lookup application when moving back after a glyph deletion.
376- Fix buffer-overrun in Bengali.
377
378
Behdad Esfahbod6685d282017-02-25 11:35:05 -0800379Overview of changes leading to 1.4.3
380Saturday, February 25, 2017
381====================================
382
383- Route Adlam script to Arabic shaper.
384- Misc fixes.
385- New API:
386 hb_font_set_face()
387- Deprecate API:
388 hb_graphite2_font_get_gr_font()
389
390
Behdad Esfahbod6af6c112017-01-23 18:35:00 -0800391Overview of changes leading to 1.4.2
392Monday, January 23, 2017
393====================================
394
395- Implement OpenType Font Variation tables avar/fvar/HVAR/VVAR.
396- hb-shape and hb-view now accept --variations.
397- New API:
398
399hb_variation_t
400hb_variation_from_string()
401hb_variation_to_string()
402
403hb_font_set_variations()
404hb_font_set_var_coords_design()
405hb_font_get_var_coords_normalized()
406
407hb-ot-var.h:
408hb_ot_var_axis_t
409hb_ot_var_has_data()
410hb_ot_var_get_axis_count()
411hb_ot_var_get_axes()
412hb_ot_var_find_axis()
413hb_ot_var_normalize_variations()
414hb_ot_var_normalize_coords()
415
416- MVAR to be implemented later. Access to named instances to be
417 implemented later as well.
418
419- Misc fixes.
420
421
Behdad Esfahbodaf596a52017-01-05 20:24:41 -0800422Overview of changes leading to 1.4.1
423Thursday, January 5, 2017
424====================================
425
426- Always build and use UCDN for Unicode data by default.
427 Reduces dependence on version of Unicode data in glib,
428 specially in the Windows bundles we are shipping, which
429 have very old glib.
430
431
Behdad Esfahbodf3397062017-01-05 01:27:49 -0800432Overview of changes leading to 1.4.0
433Thursday, January 5, 2017
434====================================
435
436- Merged "OpenType GX" branch which adds core of support for
437 OpenType 1.8 Font Variations. To that extent, the relevant
438 new API is:
439
440New API:
441hb_font_set_var_coords_normalized()
442
443 with supporting API:
444
445New API:
446HB_OT_LAYOUT_NO_VARIATIONS_INDEX
447hb_ot_layout_table_find_feature_variations()
448hb_ot_layout_feature_with_variations_get_lookups()
449hb_shape_plan_create2()
450hb_shape_plan_create_cached2()
451
452 Currently variations in GSUB/GPOS/GDEF are fully supported,
453 and no other tables are supported. In particular, fvar/avar
454 are NOT supported, hence the hb_font_set_var_coords_normalized()
455 taking normalized coordinates. API to take design coordinates
456 will be added in the future.
457
458 HVAR/VVAR/MVAR support will also be added to hb-ot-font in the
459 future.
460
461- Fix regression in GDEF glyph class processing.
462- Add decompositions for Chakma, Limbu, and Balinese in USE shaper.
463- Misc fixes.
464
465
Behdad Esfahbodb843c6d2016-12-05 13:42:28 -0800466Overview of changes leading to 1.3.4
467Monday, December 5, 2016
468====================================
469
470- Fix vertical glyph origin in hb-ot-font.
471- Implement CBDT/CBLC color font glyph extents in hb-ot-font.
472
473
Behdad Esfahbod966ac7e2016-10-26 16:17:15 +0200474Overview of changes leading to 1.3.3
475Wednesday, September 28, 2016
476====================================
477
478- Implement parsing of OpenType MATH table.
479New API:
480HB_OT_TAG_MATH
481HB_OT_MATH_SCRIPT
482hb_ot_math_constant_t
483hb_ot_math_kern_t
484hb_ot_math_glyph_variant_t
485hb_ot_math_glyph_part_flags_t
486hb_ot_math_glyph_part_t
487hb_ot_math_has_data
488hb_ot_math_get_constant
489hb_ot_math_get_glyph_italics_correction
490hb_ot_math_get_glyph_top_accent_attachment
491hb_ot_math_get_glyph_kerning
492hb_ot_math_is_glyph_extended_shape
493hb_ot_math_get_glyph_variants
494hb_ot_math_get_min_connector_overlap
495hb_ot_math_get_glyph_assembly
496
497
Behdad Esfahbodf73a87d2016-09-27 13:50:54 +0200498Overview of changes leading to 1.3.2
499Wednesday, September 27, 2016
500====================================
501
502- Fix build of hb-coretext on older OS X versions.
503
504
Behdad Esfahbodd22ab6c2016-09-07 14:28:47 -0700505Overview of changes leading to 1.3.1
506Wednesday, September 7, 2016
507====================================
508
509- Blacklist bad GDEF of more fonts (Padauk).
510- More CoreText backend crash fixes with OS X 10.9.5.
511- Misc fixes.
512
513
Behdad Esfahboda732e002016-07-21 01:58:00 -0700514Overview of changes leading to 1.3.0
515Thursday, July 21, 2016
516====================================
517
518- Update to Unicode 9.0.0
519- Move Javanese from Indic shaper to Universal Shaping Engine.
520- Allow MultipleSubst to delete a glyph (matching Windows engine).
521- Update Universal Shaping Engine to latest draft from Microsoft.
522- DirectWrite backend improvements. Note: this backend is for testing ONLY.
523- CoreText backend improvements with unreachable fonts.
524- Implement symbol fonts (cmap 3.0.0) in hb-ft and hb-ot-font.
525- Blacklist bad GDEF of more fonts (Tahoma & others).
526- Misc fixes.
527
528
Behdad Esfahboda5b7b0d2016-05-02 10:44:13 +0200529Overview of changes leading to 1.2.7
530Monday, May 2, 2016
531====================================
532
533- Blacklist another version of Times New Roman (Bold) Italic from Windows 7.
534- Fix Mongolian Free Variation Selectors shaping with certain fonts.
535- Fix Tibetan shorthand contractions shaping.
536- Improved list of language tag mappings.
537- Unbreak build on Windows CE.
538- Make 'glyf' table loading lazy in hb-ot-font.
539
540
Behdad Esfahbod00ea66f2016-04-08 13:51:01 -0700541Overview of changes leading to 1.2.6
542Friday, April 8, 2016
543====================================
544
545- Blacklist GDEF table of another set of Times New Roman (Bold) Italic.
546- DirectWrite backend improvements. Note: DirectWrite backend is
547 exclusively for our internal testing and should NOT be used in any
548 production system whatsoever.
549
550
Behdad Esfahboda0331b52016-04-04 16:25:32 -0700551Overview of changes leading to 1.2.5
552Monday, April 4, 2016
553====================================
554
555- Fix GDEF mark-filtering-set, which was broken in 1.2.3.
556
557
Behdad Esfahbod0251b0c2016-03-17 14:37:11 -0700558Overview of changes leading to 1.2.4
559Thursday, March 17, 2016
560====================================
561
562- Synthesize GDEF glyph class for any glyph that does not have one in GDEF.
563 I really hope we don't discover broken fonts that shape badly with this
564 change.
565- Misc build and other minor fixes.
566- API changes:
567 - Added HB_NDEBUG. It's fine for production systems to define this to
568 disable high-overhead debugging checks. However, I also reduced the
569 overhead of those checks, so it's a non-issue right now. You can
570 forget it. Just not defining anything at all is fine.
571
572
Behdad Esfahbod75568b02016-02-25 12:26:26 +0900573Overview of changes leading to 1.2.3
574Thursday, February 25, 2016
575====================================
576
577- Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic,
578 due to bug in glyph class of ASCII double-quote character. This should
579 address "regression" introduced in 1.2.0 when we switched mark zeroing
580 in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE.
581 This fourth release in a week should finally stablize things...
582
583- hb-ot-font's get_glyph() implementation saw some optimizations. Though,
584 might be really hard to measure in real-world situations.
585
586- Also, two rather small API changes:
587
588We now disable some time-consuming internal bookkeeping if built with NDEBUG
589defined. This is a first time that we use NDEBUG to disable debug code. If
590there exist production systems that do NOT want to enable NDEBUG, please let
591me know and I'll add HB_NDEBUG.
592
593Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph()
594
595New API:
596- hb_font_get_nominal_glyph_func_t
597- hb_font_get_variation_glyph_func_t
598- hb_font_funcs_set_nominal_glyph_func()
599- hb_font_funcs_set_variation_glyph_func()
600- hb_font_get_nominal_glyph()
601- hb_font_get_variation_glyph()
602
603Deprecated API:
604- hb_font_get_glyph_func_t
605- hb_font_funcs_set_glyph_func()
606
607Clients that implement their own font-funcs are encouraged to replace
608their get_glyph() implementation with a get_nominal_glyph() and
609get_variation_glyph() pair. The variation version can assume that
610variation_selector argument is not zero. Old (deprecated) functions
611will continue working indefinitely using internal gymnastics; it is
612just more efficient to use the new functions.
613
614
Behdad Esfahbodb30a9712016-02-24 17:32:22 +0900615Overview of changes leading to 1.2.2
616Wednesday, February 24, 2016
617====================================
618
619- Fix regression with mark positioning with fonts that have
620 non-zero mark advances. This was introduced in 1.2.0 while
621 trying to make mark and cursive attachments to work together.
622 I have partially reverted that, so this version is much more
623 like what we had before. All clients who updated to 1.2.0
624 should update to this version.
625
626
Behdad Esfahboddabf32a2016-02-23 15:38:43 +0900627Overview of changes leading to 1.2.1
Behdad Esfahbodb30a9712016-02-24 17:32:22 +0900628Tuesday, February 23, 2016
Behdad Esfahboddabf32a2016-02-23 15:38:43 +0900629====================================
630
631- CoreText: Fix bug with wrong scale if font scale was changed later.
632 https://github.com/libass/libass/issues/212
633- CoreText: Drastically speed up font initialization.
634- CoreText: Fix tiny leak.
635- Group ZWJ/ZWNJ with previous syllable under cluster-level=0.
ebraminio7c6937e2017-11-20 14:49:22 -0500636 https://github.com/harfbuzz/harfbuzz/issues/217
Behdad Esfahboddabf32a2016-02-23 15:38:43 +0900637- Add test/shaping/README.md about how to add tests to the suite.
638
639
Behdad Esfahbod27847ca2016-02-19 15:56:50 +0700640Overview of changes leading to 1.2.0
641Friday, February 19, 2016
642====================================
643
644- Fix various issues (hangs mostly) in case of memory allocation failure.
645- Change mark zeroing types of most shapers from BY_UNICODE_LATE to
646 BY_GDEF_LATE. This seems to be what Uniscribe does.
647- Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY. That's
648 what Windows does.
649- Allow GPOS cursive connection on marks, and fix the interaction with
650 mark attachment. This work resulted in some changes to how mark
651 attachments work. See:
ebraminio7c6937e2017-11-20 14:49:22 -0500652 https://github.com/harfbuzz/harfbuzz/issues/211
653 https://github.com/harfbuzz/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
Behdad Esfahbod27847ca2016-02-19 15:56:50 +0700654- Graphite2 shaper: improved negative advance handling (eg. Nastaliq).
655- Add nmake-based build system for Windows.
656- Minor speedup.
657- Misc. improvements.
658
659
Behdad Esfahbod11441292016-01-11 13:16:35 +0000660Overview of changes leading to 1.1.3
661Monday, January 11, 2016
662====================================
663
664- Ported Indic shaper to Unicode 8.0 data.
665- Universal Shaping Engine fixes.
666- Speed up CoreText shaper when font fallback happens in CoreText.
667- Documentation improvements, thanks to Khaled Hosny.
668- Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi.
669- Misc bug fixes.
670- New API:
671
672 * Font extents:
673 hb_font_extents_t
674 hb_font_get_font_extents_func_t
675 hb_font_get_font_h_extents_func_t
676 hb_font_get_font_v_extents_func_t
677 hb_font_funcs_set_font_h_extents_func
678 hb_font_funcs_set_font_v_extents_func
679 hb_font_get_h_extents
680 hb_font_get_v_extents
681 hb_font_get_extents_for_direction
682
683 * Buffer message (aka debug):
684 hb_buffer_message_func_t
685 hb_buffer_set_message_func()
686 Actual message protocol to be fleshed out later.
687
688
Behdad Esfahbodd44d52b2015-11-26 19:35:43 -0500689Overview of changes leading to 1.1.2
690Wednesday, November 26, 2015
691====================================
692
693- Fix badly-broken fallback shaper that affected terminology.
ebraminio7c6937e2017-11-20 14:49:22 -0500694 https://github.com/harfbuzz/harfbuzz/issues/187
Behdad Esfahbodd44d52b2015-11-26 19:35:43 -0500695- Fix y_scaling in Graphite shaper.
696- API changes:
697 * An unset glyph_h_origin() function in font-funcs now (sensibly)
698 implies horizontal origin at 0,0. Ie, the nil callback returns
699 true instead of false. As such, implementations that have a
700 glyph_h_origin() that simply returns true, can remove that function
701 with HarfBuzz >= 1.1.2. This results in a tiny speedup.
702
703
Behdad Esfahbodb24e93e2015-11-24 13:18:20 -0600704Overview of changes leading to 1.1.1
705Wednesday, November 24, 2015
706====================================
707
708- Build fixes, specially for hb-coretext.
709
710
Behdad Esfahbode1118ae2015-11-18 23:40:47 -0800711Overview of changes leading to 1.1.0
712Wednesday, November 18, 2015
713====================================
714
715- Implement 'stch' stretch feature for Syriac Abbreviation Mark.
ebraminio7c6937e2017-11-20 14:49:22 -0500716 https://github.com/harfbuzz/harfbuzz/issues/141
Behdad Esfahbode1118ae2015-11-18 23:40:47 -0800717- Disable use of decompose_compatibility() callback.
718- Implement "shaping" of various Unicode space characters, even
719 if the font does not support them.
ebraminio7c6937e2017-11-20 14:49:22 -0500720 https://github.com/harfbuzz/harfbuzz/issues/153
Behdad Esfahbode1118ae2015-11-18 23:40:47 -0800721- If font does not support U+2011 NO-BREAK HYPHEN, fallback to
722 U+2010 HYPHEN.
723- Changes resulting from libFuzzer continuous fuzzing:
724 * Reject font tables that need more than 8 edits,
725 * Bound buffer growth during shaping to 32x,
726 * Fix assertions and other issues at OOM / buffer max-growth.
727- Misc fixes and optimizations.
728- API changes:
729 * All fonts created with hb_font_create() now inherit from
730 (ie. have parent) hb_font_get_empty().
731
732
Behdad Esfahbod86cadc22015-10-15 20:25:29 -0300733Overview of changes leading to 1.0.6
734Thursday, October 15, 2015
735====================================
736
737- Reduce max nesting level in OT lookups from 8 to 6.
738 Should not affect any real font as far as I know.
739- Fix memory access issue in ot-font.
740- Revert default load-flags of fonts created using hb_ft_font_create()
741 back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in
742 last release (1.0.5), but caused major issues, so revert.
ebraminio7c6937e2017-11-20 14:49:22 -0500743 https://github.com/harfbuzz/harfbuzz/issues/143
Behdad Esfahbod86cadc22015-10-15 20:25:29 -0300744
745
Behdad Esfahbodab170522015-10-13 10:55:33 -0300746Overview of changes leading to 1.0.5
747Tuesday, October 13, 2015
748====================================
749
750- Fix multiple memory access bugs discovered using libFuzzer.
ebraminio7c6937e2017-11-20 14:49:22 -0500751 https://github.com/harfbuzz/harfbuzz/issues/139
Behdad Esfahbodab170522015-10-13 10:55:33 -0300752 Everyone should upgrade to this version as soon as possible.
753 We now have continuous fuzzing set up, to avoid issues like
754 these creeping in again.
755- Misc fixes.
756
757- New API:
758 * hb_font_set_parent().
759 * hb_ft_font_[sg]et_load_flags()
760 The default flags for fonts created using hb_ft_font_create()
761 has changed to default to FT_LOAD_DEFAULT now. Previously it
762 was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING.
763
764- API changes:
765 * Fonts now default to units-per-EM as their scale, instead of 0.
766 * hb_font_create_sub_font() does NOT make parent font immutable
767 anymore. hb_font_make_immutable() does.
768
769
Behdad Esfahbod432ffc42015-09-30 22:51:16 +0100770Overview of changes leading to 1.0.4
771Wednesday, September 30, 2015
772====================================
773
774- Fix minor out-of-bounds read error.
775
776
Behdad Esfahbod7f540532015-09-01 17:03:50 +0100777Overview of changes leading to 1.0.3
778Tuesday, September 1, 2015
779====================================
780
781- Start of user documentation, from Simon Cozens!
782- Implement glyph_extents() for TrueType fonts in hb-ot-font.
783- Improve GPOS cursive attachments with conflicting lookups.
784- More fixes for cluster-level = 1.
785- Uniscribe positioning fix.
786
787
Behdad Esfahbod789b89e2015-08-19 13:39:57 +0100788Overview of changes leading to 1.0.2
789Wednesday, August 19, 2015
790====================================
791
792- Fix shaping with cluster-level > 0.
793- Fix Uniscribe backend font-size scaling.
794- Declare dependencies in harfbuzz.pc.
795 FreeType is not declared though, to avoid bugs in pkg-config
796 0.26 with recursive dependencies.
797- Slightly improved debug infrastructure. More to come later.
798- Misc build fixes.
799
800
Behdad Esfahbod9002c272015-07-27 12:17:54 +0200801Overview of changes leading to 1.0.1
802Monday, July 27, 2015
803====================================
804
805- Fix out-of-bounds access in USE shaper.
806
807
Behdad Esfahbod26044232015-07-26 23:39:10 +0200808Overview of changes leading to 1.0.0
Behdad Esfahbod9002c272015-07-27 12:17:54 +0200809Sunday, July 26, 2015
Behdad Esfahbod26044232015-07-26 23:39:10 +0200810====================================
811
812- Implement Universal Shaping Engine:
813 https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
814 http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/
815- Bump version to 1.0.0. The soname was NOT bumped.
816
817
Behdad Esfahbod2ed6be62015-07-26 19:29:53 +0200818Overview of changes leading to 0.9.42
819Thursday, July 26, 2015
820=====================================
Behdad Esfahbod376d5872015-07-22 16:51:12 +0100821
Behdad Esfahbod2ed6be62015-07-26 19:29:53 +0200822- New API to allow for retrieving finer-grained cluster
823 mappings if the client desires to handle them. Default
824 behavior is unchanged.
825- Fix cluster merging when removing default-ignorables.
826- Update to Unicode 8.0
827- hb-graphite2 fixes.
828- Misc fixes.
Behdad Esfahbod376d5872015-07-22 16:51:12 +0100829- Removed HB_NO_MERGE_CLUSTERS hack.
830- New API:
831 hb_buffer_cluster_level_t enum
832 hb_buffer_get_cluster_level()
833 hb_buffer_set_cluster_level()
834 hb-shape / hb-view --cluster-level
835
Behdad Esfahbod2ed6be62015-07-26 19:29:53 +0200836
Behdad Esfahboda6446d42015-06-18 11:14:56 -0700837Overview of changes leading to 0.9.41
838Thursday, June 18, 2015
839=====================================
840
841- Fix hb-coretext with trailing whitespace in right-to-left.
842- New API: hb_buffer_reverse_range().
843- Allow implementing atomic ops in config.h.
844- Fix hb_language_t in language bindings.
845- Misc fixes.
846
Behdad Esfahbod2ed6be62015-07-26 19:29:53 +0200847
Behdad Esfahbode3671b82015-03-20 18:03:02 -0400848Overview of changes leading to 0.9.40
849Friday, March 20, 2015
850=====================================
851
852- Another hb-coretext crasher fix. Ouch!
853- Happy Norouz!
854
855
Behdad Esfahbod02a04e62015-03-04 12:32:03 -0800856Overview of changes leading to 0.9.39
857Wednesday, March 4, 2015
858=====================================
859
860- Critical hb-coretext fixes.
861- Optimizations and refactoring; no functional change
862 expected.
863- Misc build fixes.
864
865
Behdad Esfahbod28f5e0b2015-01-23 12:45:35 -0800866Overview of changes leading to 0.9.38
867Friday, January 23, 2015
868=====================================
869
870- Fix minor out-of-bounds access in Indic shaper.
871- Change New Tai Lue shaping engine from South-East Asian to default,
872 reflecting change in Unicode encoding model.
873- Add hb-shape --font-size. Can take up to two numbers for separate
874 x / y size.
875- Fix CoreText and FreeType scale issues with negative scales.
876- Reject blobs larger than 2GB. This might break some icu-le-hb clients
877 that need security fixes. See:
878 http://www.icu-project.org/trac/ticket/11450
879- Avoid accessing font tables during face destruction, in casce rogue
880 clients released face data already.
881- Fix up gobject-introspection a bit. Python bindings kinda working.
882 See README.python.
883- Misc fixes.
884- API additions:
885 hb_ft_face_create_referenced()
886 hb_ft_font_create_referenced()
887
888
Behdad Esfahbod66e37402014-12-17 12:09:17 -0800889Overview of changes leading to 0.9.37
890Wednesday, December 17, 2014
891=====================================
892
893- Fix out-of-bounds access in Context lookup format 3.
894- Indic: Allow ZWJ/ZWNJ before syllable modifiers.
895
896
Behdad Esfahbodc0e95ab2014-11-20 14:42:24 -0800897Overview of changes leading to 0.9.36
898Thursday, November 20, 2014
899=====================================
900
901- First time that three months went by without a release since
902 0.9.2 was released on August 10, 2012!
903- Fix performance bug in hb_ot_collect_glyphs():
904 https://bugzilla.mozilla.org/show_bug.cgi?id=1090869
905- Add basic vertical-text support to hb-ot-font.
906- Misc build fixes.
907
908
Behdad Esfahbodcd5a1142014-08-13 12:39:34 -0400909Overview of changes leading to 0.9.35
910Saturday, August 13, 2014
911=====================================
912
913- Fix major shape-plan caching bug when more than one shaper were
914 provided to hb_shape_full() (as exercised by XeTeX).
915 http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html
916- Fix Arabic fallback shaping regression. This was broken in 0.9.32.
917- Major hb-coretext fixes. That backend is complete now, including
918 respecing buffer direction and language, down to vertical writing.
919- Build fixes for Windows CE. Should build fine now.
920- Misc fixes:
921 Use atexit() only if it's safe to call from shared library
922 https://bugs.freedesktop.org/show_bug.cgi?id=82246
923 Mandaic had errors in its Unicode Joining_Type
924 https://bugs.freedesktop.org/show_bug.cgi?id=82306
925- API changes:
926
927 * hb_buffer_clear_contents() does not reset buffer flags now.
928
929 After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
930 need to set flags for different pieces of text. The flags now
931 are something the client sets up once, depending on how it
932 actually uses the buffer. As such, don't clear it in
933 clear_contents().
934
935 I don't expect any changes to be needed to any existing client.
936
937
Behdad Esfahbod91c2c0f2014-08-02 19:24:55 -0400938Overview of changes leading to 0.9.34
939Saturday, August 2, 2014
940=====================================
941
942- hb_feature_from_string() now accepts CSS font-feature-settings format.
943- As a result, hb-shape / hb-view --features also accept CSS-style strings.
944 Eg, "'liga' off" is accepted now.
945- Add old-spec Myanmar shaper:
946 https://bugs.freedesktop.org/show_bug.cgi?id=81775
947- Don't apply 'calt' in Hangul shaper.
948- Fix mark advance zeroing for Hebrew shaper:
949 https://bugs.freedesktop.org/show_bug.cgi?id=76767
950- Implement Windows-1256 custom Arabic shaping. Only built on Windows,
951 and requires help from get_glyph(). Used by Firefox.
952 https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
953- Disable 'liga' in vertical text.
954- Build fixes.
955- API changes:
956
957 * Make HB_BUFFER_FLAG_BOT/EOT easier to use.
958
959 Previously, we expected users to provide BOT/EOT flags when the
960 text *segment* was at paragraph boundaries. This meant that for
961 clients that provide full paragraph to HarfBuzz (eg. Pango), they
962 had code like this:
963
964 hb_buffer_set_flags (hb_buffer,
965 (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
966 (item_offset + item_length == paragraph_length ?
967 HB_BUFFER_FLAG_EOT : 0));
968
969 hb_buffer_add_utf8 (hb_buffer,
970 paragraph_text, paragraph_length,
971 item_offset, item_length);
972
973 After this change such clients can simply say:
974
975 hb_buffer_set_flags (hb_buffer,
976 HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
977
978 hb_buffer_add_utf8 (hb_buffer,
979 paragraph_text, paragraph_length,
980 item_offset, item_length);
981
982 Ie, HarfBuzz itself checks whether the segment is at the beginning/end
983 of the paragraph. Clients that only pass item-at-a-time to HarfBuzz
984 continue not setting any flags whatsoever.
985
986 Another way to put it is: if there's pre-context text in the buffer,
987 HarfBuzz ignores the BOT flag. If there's post-context, it ignores
988 EOT flag.
989
990
Behdad Esfahbod8c1bdb42014-07-22 17:56:43 -0400991Overview of changes leading to 0.9.33
992Tuesday, July 22, 2014
993=====================================
994
995- Turn off ARabic 'cswh' feature that was accidentally turned on.
996- Add HB_TAG_MAX_SIGNED.
997- Make hb_face_make_immutable() really make face immutable!
998- Windows build fixes.
999
1000
Behdad Esfahbod66f30912014-07-17 16:05:47 -04001001Overview of changes leading to 0.9.32
1002Thursday, July 17, 2014
1003=====================================
1004
1005- Apply Arabic shaping features in spec order exactly.
1006- Another fix for Mongolian free variation selectors.
1007- For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt'
1008 together.
1009- Minor adjustment to U+FFFD logic.
1010- Fix hb-coretext build.
1011
1012
Behdad Esfahboda18897f2014-07-16 16:02:15 -04001013Overview of changes leading to 0.9.31
1014Wednesday, July 16, 2014
1015=====================================
1016
1017- Only accept valid UTF-8/16/32; we missed many cases before.
1018- Better shaping of invalid UTF-8/16/32. Falls back to
1019 U+FFFD REPLACEMENT CHARACTER now.
1020- With all changes in this release, the buffer will contain fully
1021 valid Unicode after hb_buffer_add_utf8/16/32 no matter how
Unknown97145df2017-11-03 09:05:00 -04001022 broken the input is. This can be overridden though. See below.
Behdad Esfahboda18897f2014-07-16 16:02:15 -04001023- Fix Mongolian Variation Selectors for fonts without GDEF.
1024- Fix minor invalid buffer access.
1025- Accept zh-Hant and zh-Hans language tags. hb_ot_tag_to_language()
1026 now uses these instead of private tags.
1027- Build fixes.
1028- New API:
1029 * hb_buffer_add_codepoints(). This does what hb_buffer_add_utf32()
1030 used to do, ie. no validity check on the input at all. add_utf32
1031 now replaces invalid Unicode codepoints with the replacement
1032 character (see below).
1033 * hb_buffer_set_replacement_codepoint()
1034 * hb_buffer_get_replacement_codepoint()
1035 Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when
1036 we detected broken input, we replaced that with (hb_codepoint_t)-1.
1037 This has changed to use U+FFFD now, but can be changed using these
1038 new API.
1039
1040
Behdad Esfahbodea001372014-07-09 17:28:43 -04001041Overview of changes leading to 0.9.30
1042Wednesday, July 9, 2014
1043=====================================
Behdad Esfahboda18897f2014-07-16 16:02:15 -04001044
Behdad Esfahbodea001372014-07-09 17:28:43 -04001045- Update to Unicode 7.0.0:
1046 * New scripts Manichaean and Psalter Pahlavi are shaped using
1047 Arabic shaper.
1048 * All the other new scripts to through the generic shaper for
1049 now.
1050- Minor Indic improvements.
1051- Fix graphite2 backend cluster mapping [crasher!]
1052- API changes:
1053 * New HB_SCRIPT_* values for Unicode 7.0 scripts.
1054 * New function hb_ot_layout_language_get_required_feature().
1055- Build fixes.
1056
1057
Behdad Esfahbod5875ad92014-05-29 15:48:16 -04001058Overview of changes leading to 0.9.29
1059Thursday, May 29, 2014
1060=====================================
1061
1062- Implement cmap in hb-ot-font.h. No variation-selectors yet.
1063- Myanmar: Allow MedialYa+Asat.
1064- Various Indic fixes:
1065 * Support most characters in Extended Devanagary and Vedic
1066 Unicode blocks.
1067 * Allow digits and a some punctuation as consonant placeholders.
1068- Build fixes.
1069
Behdad Esfahbodea001372014-07-09 17:28:43 -04001070
Behdad Esfahbod79ecdc32014-04-28 14:24:23 -07001071Overview of changes leading to 0.9.28
1072Monday, April 28, 2014
1073=====================================
1074
1075- Unbreak old-spec Indic shaping. (bug 76705)
1076- Fix shaping of U+17DD and U+0FC6.
1077- Add HB_NO_MERGE_CLUSTERS build option. NOT to be enabled by default
1078 for shipping libraries. It's an option for further experimentation
1079 right now. When we are sure how to do it properly, we will add
1080 public run-time API for the functionality.
1081- Build fixes.
1082
1083
Dominik Röttschesba8c9d92014-03-18 14:39:03 +02001084Overview of changes leading to 0.9.27
1085Tuesday, March 18, 2014
1086=====================================
1087
1088- Don't use "register" storage class specifier
1089- Wrap definition of free_langs() with HAVE_ATEXIT
1090- Add coretext_aat shaper and hb_coretext_face_create() constructor
1091- If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
1092- Add Myanmar test case from OpenType Myanmar spec
1093- Only do fallback Hebrew composition if no GPOS 'mark' available
1094- Allow bootstrapping without gtk-doc
1095- Use AM_MISSING_PROG for ragel and git
1096- Typo in ucdn's Makefile.am
1097- Improve MemoryBarrier() implementation
1098
1099
Behdad Esfahbod189bf232014-01-30 15:14:58 -05001100Overview of changes leading to 0.9.26
1101Thursday, January 30, 2014
1102=====================================
1103
1104- Misc fixes.
1105- Fix application of 'rtlm' feature.
1106- Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH.
1107- New header: hb-ot-shape.h
1108- Uniscribe: fix scratch-buffer accounting.
1109- Reorder Tai Tham SAKOT to after tone-marks.
1110- Add Hangul shaper.
1111- New files:
1112 hb-ot-shape-complex-hangul.cc
1113 hb-ot-shape-complex-hebrew.cc
1114 hb-ot-shape-complex-tibetan.cc
1115- Disable 'cswh' feature in Arabic shaper.
1116- Coretext: better handle surrogate pairs.
1117- Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE.
1118
1119
Behdad Esfahbod860fc9a2013-12-04 20:06:59 -05001120Overview of changes leading to 0.9.25
1121Wednesday, December 4, 2013
1122=====================================
1123
1124- Myanmar shaper improvements.
1125- Avoid font fallback in CoreText backend.
1126- Additional OpenType language tag mappiongs.
1127- More aggressive shape-plan caching.
1128- Build with / require automake 1.13.
1129- Build with libtool 2.4.2.418 alpha to support ppc64le.
1130
1131
Behdad Esfahbod63006942013-11-13 14:54:07 -05001132Overview of changes leading to 0.9.24
1133Tuesday, November 13, 2013
1134=====================================
1135
1136- Misc compiler warning fixes with clang.
1137- No functional changes.
1138
1139
Behdad Esfahboddce79c22013-10-28 20:26:40 +01001140Overview of changes leading to 0.9.23
1141Monday, October 28, 2013
1142=====================================
1143
1144- "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
1145- Fix (Chain)Context recursion with non-monotone lookup positions.
1146- Misc Indic bug fixes.
1147- New Javanese / Buginese shaping, similar to Windows 8.1.
1148
1149
Behdad Esfahbode152d1a2013-10-03 15:09:37 -04001150Overview of changes leading to 0.9.22
1151Thursday, October 3, 2013
1152=====================================
1153
1154- Fix use-after-end-of-scope in hb_language_from_string().
1155- Fix hiding of default_ignorables if font doesn't have space glyph.
1156- Protect against out-of-range lookup indices.
1157
1158- API Changes:
1159
1160 * Added hb_ot_layout_table_get_lookup_count()
1161
1162
Behdad Esfahbodb61f97d2013-09-16 22:07:22 -04001163Overview of changes leading to 0.9.21
1164Monday, September 16, 2013
1165=====================================
1166
1167- Rename gobject-introspection library name from harfbuzz to HarfBuzz.
1168- Remove (long disabled) hb-old and hb-icu-le test shapers.
1169- Misc gtk-doc and gobject-introspection annotations.
1170- Misc fixes.
1171- API changes:
1172
1173 * Add HB_SET_VALUE_INVALID
1174
Behdad Esfahbodf730b5d2013-08-29 15:53:33 -04001175Overview of changes leading to 0.9.20
1176Thursday, August 29, 2013
1177=====================================
1178
1179General:
1180- Misc substitute_closure() fixes.
1181- Build fixes.
1182
1183Documentation:
1184- gtk-doc boilerplate integrated. Docs are built now, but
1185 contain no contents. By next release hopefully we have
1186 some content in. Enable using --enable-gtk-doc.
1187
1188GObject and Introspection:
1189- Added harfbuzz-gobject library (hb-gobject.h) that has type
1190 bindings for all HarfBuzz objects and enums. Enable using
1191 --with-gobject.
1192- Added gobject-introspection boilerplate. Nothing useful
1193 right now. Work in progress. Gets enabled automatically if
1194 --with-gobject is used. Override with --disable-introspection.
1195
1196OpenType shaper:
1197- Apply 'mark' in Myanmar shaper.
1198- Don't apply 'dlig' by default.
1199
1200Uniscribe shaper:
1201- Support user features.
1202- Fix loading of fonts that are also installed on the system.
1203- Fix shaping of Arabic Presentation Forms.
1204- Fix build with wide chars.
1205
1206CoreText shaper:
1207- Support user features.
1208
1209Source changes:
1210- hb_face_t code moved to hb-face.h / hb-face.cc.
1211- Added hb-deprecated.h.
1212
1213API changes:
1214- Added HB_DISABLE_DEPRECATED.
1215- Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
1216 HB_SCRIPT_CANADIAN_SYLLABICS.
1217- Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
1218 HB_BUFFER_FLAG_DEFAULT.
1219- Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
1220 HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
1221
1222
Behdad Esfahbod2b78d672013-07-16 16:06:27 -04001223Overview of changes leading to 0.9.19
1224Tuesday, July 16, 2013
1225=====================================
1226
1227- Build fixes.
1228- Better handling of multiple variation selectors in a row.
1229- Pass on variation selector to GSUB if not consumed by cmap.
1230- Fix undefined memory access.
1231- Add Javanese config to Indic shaper.
1232- Misc bug fixes.
1233
Behdad Esfahbod4014aa42013-05-28 17:28:59 -04001234Overview of changes leading to 0.9.18
1235Tuesday, May 28, 2013
1236=====================================
1237
1238New build system:
1239
1240- All unneeded code is all disabled by default,
1241
1242- Uniscribe and CoreText shapers can be enabled with their --with options,
1243
1244- icu_le and old shapers cannot be enabled for now,
1245
1246- glib, freetype, and cairo will be detected automatically.
1247 They can be force on/off'ed with their --with options,
1248
1249- icu and graphite2 are default off, can be enabled with their --with
1250 options,
1251
1252Moreover, ICU support is now build into a separate library:
1253libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
1254Distros can enable ICU now without every application on earth
1255getting linked to via libharfbuzz.so.
1256
1257For distros I recommend that they make sure they are building --with-glib
1258--with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
1259And package harfbuzz and harfbuzz-icu separately.
1260
1261
Behdad Esfahbodf1b02f42013-05-20 09:23:58 -04001262Overview of changes leading to 0.9.17
1263Monday, May 20, 2013
1264=====================================
1265
1266- Build fixes.
1267- Fix bug in hb_set_get_min().
1268- Fix regression with Arabic mark positioning / width-zeroing.
1269
Behdad Esfahboda408d232013-04-19 16:32:06 -04001270Overview of changes leading to 0.9.16
1271Friday, April 19, 2013
1272=====================================
1273
1274- Major speedup in OpenType lookup processing. With the Amiri
1275 Arabic font, this release is over 3x faster than previous
1276 release. All scripts / languages should see this speedup.
1277
1278- New --num-iterations option for hb-shape / hb-view; useful for
1279 profiling.
1280
Behdad Esfahbod22e47452013-04-05 18:02:43 -04001281Overview of changes leading to 0.9.15
Behdad Esfahboda408d232013-04-19 16:32:06 -04001282Friday, April 05, 2013
Behdad Esfahbod22e47452013-04-05 18:02:43 -04001283=====================================
1284
1285- Build fixes.
1286- Fix crasher in graphite2 shaper.
1287- Fix Arabic mark width zeroing regression.
1288- Don't compose Hangul jamo into Unicode syllables.
1289
1290
Behdad Esfahbodf872a172013-03-21 13:38:06 -04001291Overview of changes leading to 0.9.14
1292Thursday, March 21, 2013
1293=====================================
1294
1295- Build fixes.
1296- Fix time-consuming sanitize with malicious fonts.
1297- Implement hb_buffer_deserialize_glyphs() for both json and text.
1298- Do not ignore Hangul filler characters.
1299- Indic fixes:
1300 * Fix Malayalam pre-base reordering interaction with post-forms.
1301 * Further adjust ZWJ handling. Should fix known regressions from
1302 0.9.13.
1303
1304
Behdad Esfahbod05686b52013-02-25 18:19:20 -05001305Overview of changes leading to 0.9.13
1306Thursday, February 25, 2013
1307=====================================
1308
1309- Build fixes.
1310- Ngapi HarfBuzz Hackfest in London (February 2013):
1311 * Fixed all known Indic bugs,
1312 * New Win8-style Myanmar shaper,
1313 * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
1314 * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
1315 matching GSUB/GPOS lookups,
1316 * Fix 'Phags-Pa U+A872 shaping,
1317 * Fix partial disabling of default-on features,
1318 * Allow disabling of TrueType kerning.
1319- Fix possible crasher with broken fonts with overlapping tables.
1320- Removed generated files from git again. So, one needs ragel to
1321 bootstrap from the git tree.
1322
1323API changes:
1324- hb_shape() and related APIs now abort if buffer direction is
1325 HB_DIRECTION_INVALID. Previously, hb_shape() was calling
1326 hb_buffer_guess_segment_properties() on the buffer before
1327 shaping. The heuristics in that function are fragile. If the
1328 user really wants the old behvaior, they can call that function
1329 right before calling hb_shape() to get the old behavior.
1330- hb_blob_create_sub_blob() always creates sub-blob with
1331 HB_MEMORY_MODE_READONLY. See comments for the reason.
1332
1333
Behdad Esfahbod09b53932013-01-18 17:10:47 -06001334Overview of changes leading to 0.9.12
1335Thursday, January 18, 2013
1336=====================================
1337
1338- Build fixes for Sun compiler.
1339- Minor bug fix.
1340
Behdad Esfahbodcf81fb32013-01-10 09:06:34 -06001341Overview of changes leading to 0.9.11
1342Thursday, January 10, 2013
1343=====================================
1344
1345- Build fixes.
1346- Fix GPOS mark attachment with null Anchor offsets.
1347- [Indic] Fix old-spec reordering of viramas if sequence ends in one.
1348- Fix multi-threaded shaper data creation crash.
1349- Add atomic ops for Solaris.
1350
1351API changes:
1352- Rename hb_buffer_clear() to hb_buffer_clear_contents().
1353
1354
Behdad Esfahbod34e6c3e2013-01-03 00:14:24 -06001355Overview of changes leading to 0.9.10
1356Thursday, January 3, 2013
1357=====================================
1358
1359- [Indic] Fixed rendering of Malayalam dot-reph
1360- Updated OT language tags.
1361- Updated graphite2 backend.
1362- Improved hb_ot_layout_get_size_params() logic.
1363- Improve hb-shape/hb-view help output.
1364- Fixed hb-set.h implementation to not crash.
1365- Fixed various issues with hb_ot_layout_collect_lookups().
1366- Various build fixes.
1367
1368New API:
1369
1370hb_graphite2_face_get_gr_face()
1371hb_graphite2_font_get_gr_font()
1372hb_coretext_face_get_cg_font()
1373
1374Modified API:
1375
1376hb_ot_layout_get_size_params()
1377
1378
Behdad Esfahbodc6408a12012-12-05 17:36:52 -05001379Overview of changes leading to 0.9.9
1380Wednesday, December 5, 2012
1381====================================
1382
1383- Fix build on Windows.
1384- Minor improvements.
1385
1386
Behdad Esfahboda52f51b2012-12-04 15:43:38 -05001387Overview of changes leading to 0.9.8
1388Tuesday, December 4, 2012
1389====================================
1390
1391
1392- Actually implement hb_shape_plan_get_shaper ().
1393- Make UCDB data tables const.
1394- Lots of internal refactoring in OTLayout tables.
1395- Flesh out hb_ot_layout_lookup_collect_glyphs().
1396
1397New API:
1398
1399hb_ot_layout_collect_lookups()
1400hb_ot_layout_get_size_params()
1401
1402
Behdad Esfahbod4c896352012-11-21 01:20:56 -05001403Overview of changes leading to 0.9.7
1404Sunday, November 21, 2012
1405====================================
1406
1407
1408HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
1409
1410- Fix Arabic contextual joining using pre-context text.
1411- Fix Sinhala "split matra" mess.
1412- Fix Khmer shaping with broken fonts.
1413- Implement Thai "PUA" shaping for old fonts.
1414- Do NOT route Kharoshthi script through the Indic shaper.
1415- Disable fallback positioning for Indic and Thai shapers.
1416- Misc fixes.
1417
1418
1419hb-shape / hb-view changes:
1420
1421- Add --text-before and --text-after
1422- Add --bot / --eot / --preserve-default-ignorables
1423- hb-shape --output-format=json
1424
1425
1426New API:
1427
1428hb_buffer_clear()
1429
1430hb_buffer_flags_t
1431
1432HB_BUFFER_FLAGS_DEFAULT
1433HB_BUFFER_FLAG_BOT
1434HB_BUFFER_FLAG_EOT
1435HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
1436
1437hb_buffer_set_flags()
1438hb_buffer_get_flags()
1439
1440HB_BUFFER_SERIALIZE_FLAGS
1441hb_buffer_serialize_glyphs()
1442hb_buffer_deserialize_glyphs()
1443hb_buffer_serialize_list_formats()
1444
1445hb_set_add_range()
1446hb_set_del_range()
1447hb_set_get_population()
1448hb_set_next_range()
1449
1450hb_face_[sg]et_glyph_count()
1451
1452hb_segment_properties_t
1453HB_SEGMENT_PROPERTIES_DEFAULT
1454hb_segment_properties_equal()
1455hb_segment_properties_hash()
1456
1457hb_buffer_set_segment_properties()
1458hb_buffer_get_segment_properties()
1459
1460hb_ot_layout_glyph_class_t
1461hb_ot_layout_get_glyph_class()
1462hb_ot_layout_get_glyphs_in_class()
1463
1464hb_shape_plan_t
1465hb_shape_plan_create()
1466hb_shape_plan_create_cached()
1467hb_shape_plan_get_empty()
1468hb_shape_plan_reference()
1469hb_shape_plan_destroy()
1470hb_shape_plan_set_user_data()
1471hb_shape_plan_get_user_data()
1472hb_shape_plan_execute()
1473hb_shape_plan_get_shaper()
1474
1475hb_ot_shape_plan_collect_lookups()
1476
1477
1478API changes:
1479
1480- Remove "mask" parameter from hb_buffer_add().
1481- Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
1482- hb-set.h API const correction.
1483- Renamed hb_set_min/max() to hb_set_get_min/max().
1484- Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
1485- Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
1486
1487
1488
Behdad Esfahbodda43a922012-11-13 13:48:26 -08001489Overview of changes leading to 0.9.6
1490Sunday, November 13, 2012
1491====================================
1492
1493- Don't clear pre-context text if no new context is provided.
1494- Fix ReverseChainingSubstLookup, which was totally borked.
1495- Adjust output format of hb-shape a bit.
1496- Include config.h.in in-tree. Makes it easier for alternate build systems.
1497- Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
1498- Use ICU LayoutEngine's C API instead of C++. Avoids much headache.
1499- Drop glyphs for all of Unicode Default_Ignorable characters.
1500- Misc build fixes.
1501
1502Arabic shaper:
1503- Enable 'dlig' and 'mset' features in Arabic shaper.
1504- Implement 'Phags-pa shaping, improve Mongolian.
1505
1506Indic shaper:
1507- Decompose Sinhala split matras the way old HarfBuzz / Pango did.
1508- Initial support for Consonant Medials.
1509- Start adding new-style Myanmar shaping.
1510- Make reph and 'pref' logic introspect the font.
1511- Route Meetei-Mayek through the Indic shaper.
1512- Don't apply 'liga' in Indic shaper.
1513- Improve Malayalam pre-base reordering Ra interaction with Chillus.
1514
1515
1516
Behdad Esfahbod13c05842012-10-14 18:37:09 -05001517Overview of changes leading to 0.9.5
1518Sunday, October 14, 2012
1519====================================
1520
1521- Synthetic-GSUB Arabic fallback shaping.
1522
1523- Misc Indic improvements.
1524
1525- Add build system support for pthread.
1526
1527- Imported UCDN for in-tree Unicode callbacks implementation.
1528
1529- Context-aware Arabic joining.
1530
1531- Misc other fixes.
1532
1533- New API:
1534
1535 hb_feature_to/from-string()
1536 hb_buffer_[sg]et_content_type()
1537
1538
1539
Behdad Esfahbodf7e81ce2012-09-04 15:32:37 -04001540Overview of changes leading to 0.9.4
1541Tuesday, Sep 03, 2012
1542====================================
1543
1544- Indic improvements with old-spec Malayalam.
1545
1546- Better fallback glyph positioning, specially with Thai / Lao marks.
1547
1548- Implement dotted-circle insertion.
1549
1550- Better Arabic fallback shaping / ligation.
1551
1552- Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name.
1553
1554- Misc fixes.
1555
1556
1557
Behdad Esfahbod7fe00d12012-08-18 13:59:46 -04001558Overview of changes leading to 0.9.3
1559Friday, Aug 18, 2012
1560====================================
1561
1562- Fixed fallback mark positioning for left-to-right text.
1563
1564- Improve mark positioning for the remaining combining classes.
1565
1566- Unbreak Thai and fallback Arabic shaping.
1567
1568- Port Arabic shaper to shape-plan caching.
1569
1570- Use new ICU normalizer functions.
1571
1572
1573
Behdad Esfahbode297ee42012-08-10 14:49:37 -04001574Overview of changes leading to 0.9.2
Behdad Esfahbod9fe76052012-08-15 17:24:28 -04001575Friday, Aug 10, 2012
Behdad Esfahbode297ee42012-08-10 14:49:37 -04001576====================================
1577
1578- Over a thousand commits! This is the first major release of HarfBuzz.
1579
1580- HarfBuzz is feature-complete now! It should be in par, or better, than
1581 both Pango's shapers and old HarfBuzz / Qt shapers.
1582
1583- New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
1584
1585- Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
1586 Sinhala, N'ko, Mongolian, and Mandaic.
1587
1588- New Thai / Lao shaper.
1589
1590- Tibetan / Hangul support in the generic shaper.
1591
1592- Synthetic GDEF support for fonts without a GDEF table.
1593
1594- Fallback mark positioning for fonts without a GPOS table.
1595
1596- Unicode normalization shaping heuristic during glyph mapping.
1597
1598- New experimental Graphite2 backend.
1599
1600- New Uniscribe backend (primarily for testing).
1601
1602- New CoreText backend (primarily for testing).
1603
1604- Major optimization and speedup.
1605
1606- Test suites and testing infrastructure (work in progress).
1607
1608- Greatly improved hb-view cmdline tool.
1609
1610- hb-shape cmdline tool.
1611
1612- Unicode 6.1 support.
1613
1614Summary of API changes:
1615
1616o Changed API:
1617
1618 - Users are expected to only include main header files now (ie. hb.h,
1619 hb-glib.h, hb-ft.h, ...)
1620
1621 - All struct tag names had their initial underscore removed.
1622 Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
1623
1624 - All set_user_data() functions now take a "replace" boolean parameter.
1625
1626 - hb_buffer_create() takes zero arguments now.
1627 Use hb_buffer_pre_allocate() to pre-allocate.
1628
1629 - hb_buffer_add_utf*() now accept -1 for length parameteres,
1630 meaning "nul-terminated".
1631
1632 - hb_direction_t enum values changed.
1633
1634 - All *_from_string() APIs now take a length parameter to allow for
1635 non-nul-terminated strings. A -1 length means "nul-terminated".
1636
1637 - Typedef for hb_language_t changed.
1638
1639 - hb_get_table_func_t renamed to hb_reference_table_func_t.
1640
1641 - hb_ot_layout_table_choose_script()
1642
1643 - Various renames in hb-unicode.h.
1644
1645o New API:
1646
1647 - hb_buffer_guess_properties()
1648 Automatically called by hb_shape().
1649
1650 - hb_buffer_normalize_glyphs()
1651
1652 - hb_tag_from_string()
1653
1654 - hb-coretext.h
1655
1656 - hb-uniscribe.h
1657
1658 - hb_face_reference_blob()
1659 - hb_face_[sg]et_index()
1660 - hb_face_set_upem()
1661
1662 - hb_font_get_glyph_name_func_t
1663 hb_font_get_glyph_from_name_func_t
1664 hb_font_funcs_set_glyph_name_func()
1665 hb_font_funcs_set_glyph_from_name_func()
1666 hb_font_get_glyph_name()
1667 hb_font_get_glyph_from_name()
1668 hb_font_glyph_to_string()
1669 hb_font_glyph_from_string()
1670
1671 - hb_font_set_funcs_data()
1672
1673 - hb_ft_font_set_funcs()
1674 - hb_ft_font_get_face()
1675
1676 - hb-gobject.h (work in progress)
1677
1678 - hb_ot_shape_glyphs_closure()
1679 hb_ot_layout_substitute_closure_lookup()
1680
1681 - hb-set.h
1682
1683 - hb_shape_full()
1684
1685 - hb_unicode_combining_class_t
1686
1687 - hb_unicode_compose_func_t
1688 hb_unicode_decompose_func_t
1689 hb_unicode_decompose_compatibility_func_t
1690 hb_unicode_funcs_set_compose_func()
1691 hb_unicode_funcs_set_decompose_func()
1692 hb_unicode_funcs_set_decompose_compatibility_func()
1693 hb_unicode_compose()
1694 hb_unicode_decompose()
1695 hb_unicode_decompose_compatibility()
1696
1697o Removed API:
1698
1699 - hb_ft_get_font_funcs()
1700
1701 - hb_ot_layout_substitute_start()
1702 hb_ot_layout_substitute_lookup()
1703 hb_ot_layout_substitute_finish()
1704 hb_ot_layout_position_start()
1705 hb_ot_layout_position_lookup()
1706 hb_ot_layout_position_finish()
1707
1708
1709
Behdad Esfahbodf2455762011-05-25 16:08:06 -04001710Overview of changes leading to 0.6.0
1711Friday, May 27, 2011
1712====================================
1713
1714- Vertical text support in GPOS
1715- Almost all API entries have unit tests now, under test/
1716- All thread-safety issues are fixed
1717
1718Summary of API changes follows.
1719
1720
1721* Simple Types API:
1722
1723 o New API:
1724 HB_LANGUAGE_INVALID
1725 hb_language_get_default()
1726 hb_direction_to_string()
1727 hb_direction_from_string()
1728 hb_script_get_horizontal_direction()
1729 HB_UNTAG()
1730
1731 o Renamed API:
1732 hb_category_t renamed to hb_unicode_general_category_t
1733
1734 o Changed API:
1735 hb_language_t is a typed pointers now
1736
1737 o Removed API:
1738 HB_TAG_STR()
1739
1740
1741* Use ISO 15924 tags for hb_script_t:
1742
1743 o New API:
1744 hb_script_from_iso15924_tag()
1745 hb_script_to_iso15924_tag()
1746 hb_script_from_string()
1747
1748 o Changed API:
1749 HB_SCRIPT_* enum members changed value.
1750
1751
1752* Buffer API streamlined:
1753
1754 o New API:
1755 hb_buffer_reset()
1756 hb_buffer_set_length()
1757 hb_buffer_allocation_successful()
1758
1759 o Renamed API:
1760 hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
1761 hb_buffer_add_glyph() renamed to hb_buffer_add()
1762
1763 o Removed API:
1764 hb_buffer_clear()
1765 hb_buffer_clear_positions()
1766
1767 o Changed API:
1768 hb_buffer_get_glyph_infos() takes an out length parameter now
1769 hb_buffer_get_glyph_positions() takes an out length parameter now
1770
1771
1772* Blob API streamlined:
1773
1774 o New API:
1775 hb_blob_get_data()
1776 hb_blob_get_data_writable()
1777
1778 o Renamed API:
1779 hb_blob_create_empty() renamed to hb_blob_get_empty()
1780
1781 o Removed API:
1782 hb_blob_lock()
1783 hb_blob_unlock()
1784 hb_blob_is_writable()
1785 hb_blob_try_writable()
1786
1787 o Changed API:
1788 hb_blob_create() takes user_data before destroy now
1789
1790
1791* Unicode functions API:
1792
1793 o Unicode function vectors can subclass other unicode function vectors now.
1794 Unimplemented callbacks in the subclass automatically chainup to the parent.
1795
1796 o All hb_unicode_funcs_t callbacks take a user_data now. Their setters
1797 take a user_data and its respective destroy callback.
1798
1799 o New API:
1800 hb_unicode_funcs_get_empty()
1801 hb_unicode_funcs_get_default()
1802 hb_unicode_funcs_get_parent()
1803
1804 o Changed API:
1805 hb_unicode_funcs_create() now takes a parent_funcs.
1806
1807 o Removed func getter functions:
1808 hb_unicode_funcs_get_mirroring_func()
1809 hb_unicode_funcs_get_general_category_func()
1810 hb_unicode_funcs_get_script_func()
1811 hb_unicode_funcs_get_combining_class_func()
1812 hb_unicode_funcs_get_eastasian_width_func()
1813
1814
1815* Face API:
1816
1817 o Renamed API:
1818 hb_face_get_table() renamed to hb_face_reference_table()
1819 hb_face_create_for_data() renamed to hb_face_create()
1820
1821 o Changed API:
1822 hb_face_create_for_tables() takes user_data before destroy now
1823 hb_face_reference_table() returns empty blob instead of NULL
1824 hb_get_table_func_t accepts the face as first parameter now
1825
1826* Font API:
1827
1828 o Fonts can subclass other fonts now. Unimplemented callbacks in the
1829 subclass automatically chainup to the parent. When chaining up,
1830 scale is adjusted if the parent font has a different scale.
1831
1832 o All hb_font_funcs_t callbacks take a user_data now. Their setters
1833 take a user_data and its respective destroy callback.
1834
1835 o New API:
1836 hb_font_get_parent()
1837 hb_font_funcs_get_empty()
1838 hb_font_create_sub_font()
1839
1840 o Removed API:
1841 hb_font_funcs_copy()
1842 hb_font_unset_funcs()
1843
1844 o Removed func getter functions:
1845 hb_font_funcs_get_glyph_func()
1846 hb_font_funcs_get_glyph_advance_func()
1847 hb_font_funcs_get_glyph_extents_func()
1848 hb_font_funcs_get_contour_point_func()
1849 hb_font_funcs_get_kerning_func()
1850
1851 o Changed API:
1852 hb_font_create() takes a face and references it now
1853 hb_font_set_funcs() takes user_data before destroy now
1854 hb_font_set_scale() accepts signed integers now
1855 hb_font_get_contour_point_func_t now takes glyph first, then point_index
1856 hb_font_get_glyph_func_t returns a success boolean now
1857
1858
1859* Changed object model:
1860
1861 o All object types have a _get_empty() now:
1862 hb_blob_get_empty()
1863 hb_buffer_get_empty()
1864 hb_face_get_empty()
1865 hb_font_get_empty()
1866 hb_font_funcs_get_empty()
1867 hb_unicode_funcs_get_empty()
1868
1869 o Added _set_user_data() and _get_user_data() for all object types:
1870 hb_blob_get_user_data()
1871 hb_blob_set_user_data()
1872 hb_buffer_get_user_data()
1873 hb_buffer_set_user_data()
1874 hb_face_get_user_data()
1875 hb_face_set_user_data()
1876 hb_font_funcs_get_user_data()
1877 hb_font_funcs_set_user_data()
1878 hb_font_get_user_data()
1879 hb_font_set_user_data()
1880 hb_unicode_funcs_get_user_data()
1881 hb_unicode_funcs_set_user_data()
1882
1883 o Removed the _get_reference_count() from all object types:
1884 hb_blob_get_reference_count()
1885 hb_buffer_get_reference_count()
1886 hb_face_get_reference_count()
1887 hb_font_funcs_get_reference_count()
1888 hb_font_get_reference_count()
1889 hb_unicode_funcs_get_reference_count()
1890
1891 o Added _make_immutable() and _is_immutable() for all object types except for buffer:
1892 hb_blob_make_immutable()
1893 hb_blob_is_immutable()
1894 hb_face_make_immutable()
1895 hb_face_is_immutable()
1896
1897
1898* Changed API for vertical text support
1899
1900 o The following callbacks where removed:
1901 hb_font_get_glyph_advance_func_t
1902 hb_font_get_kerning_func_t
1903
1904 o The following new callbacks added instead:
1905 hb_font_get_glyph_h_advance_func_t
1906 hb_font_get_glyph_v_advance_func_t
1907 hb_font_get_glyph_h_origin_func_t
1908 hb_font_get_glyph_v_origin_func_t
1909 hb_font_get_glyph_h_kerning_func_t
1910 hb_font_get_glyph_v_kerning_func_t
1911
1912 o The following API removed as such:
1913 hb_font_funcs_set_glyph_advance_func()
1914 hb_font_funcs_set_kerning_func()
1915 hb_font_get_glyph_advance()
1916 hb_font_get_kerning()
1917
1918 o New API added instead:
1919 hb_font_funcs_set_glyph_h_advance_func()
1920 hb_font_funcs_set_glyph_v_advance_func()
1921 hb_font_funcs_set_glyph_h_origin_func()
1922 hb_font_funcs_set_glyph_v_origin_func()
1923 hb_font_funcs_set_glyph_h_kerning_func()
1924 hb_font_funcs_set_glyph_v_kerning_func()
1925 hb_font_get_glyph_h_advance()
1926 hb_font_get_glyph_v_advance()
1927 hb_font_get_glyph_h_origin()
1928 hb_font_get_glyph_v_origin()
1929 hb_font_get_glyph_h_kerning()
1930 hb_font_get_glyph_v_kerning()
1931
1932 o The following higher-leve API added for convenience:
1933 hb_font_get_glyph_advance_for_direction()
1934 hb_font_get_glyph_origin_for_direction()
1935 hb_font_add_glyph_origin_for_direction()
1936 hb_font_subtract_glyph_origin_for_direction()
1937 hb_font_get_glyph_kerning_for_direction()
1938 hb_font_get_glyph_extents_for_origin()
1939 hb_font_get_glyph_contour_point_for_origin()
1940
1941
1942* OpenType Layout API:
1943
1944 o New API:
1945 hb_ot_layout_position_start()
1946 hb_ot_layout_substitute_start()
1947 hb_ot_layout_substitute_finish()
1948
1949
1950* Glue code:
1951
1952 o New API:
1953 hb_glib_script_to_script()
1954 hb_glib_script_from_script()
1955 hb_icu_script_to_script()
1956 hb_icu_script_from_script()
1957
1958
1959* Version API added:
1960
1961 o New API:
1962 HB_VERSION_MAJOR
1963 HB_VERSION_MINOR
1964 HB_VERSION_MICRO
1965 HB_VERSION_STRING
1966 HB_VERSION_CHECK()
1967 hb_version()
1968 hb_version_string()
1969 hb_version_check()
1970
1971