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