blob: d985427dd1b048d46474fe28e97cdd7c37744062 [file] [log] [blame]
Behdad Esfahboda6446d42015-06-18 11:14:56 -07001Overview of changes leading to 0.9.41
2Thursday, June 18, 2015
3=====================================
4
5- Fix hb-coretext with trailing whitespace in right-to-left.
6- New API: hb_buffer_reverse_range().
7- Allow implementing atomic ops in config.h.
8- Fix hb_language_t in language bindings.
9- Misc fixes.
10
Behdad Esfahbode3671b82015-03-20 18:03:02 -040011Overview of changes leading to 0.9.40
12Friday, March 20, 2015
13=====================================
14
15- Another hb-coretext crasher fix. Ouch!
16- Happy Norouz!
17
18
Behdad Esfahbod02a04e62015-03-04 12:32:03 -080019Overview of changes leading to 0.9.39
20Wednesday, March 4, 2015
21=====================================
22
23- Critical hb-coretext fixes.
24- Optimizations and refactoring; no functional change
25 expected.
26- Misc build fixes.
27
28
Behdad Esfahbod28f5e0b2015-01-23 12:45:35 -080029Overview of changes leading to 0.9.38
30Friday, January 23, 2015
31=====================================
32
33- Fix minor out-of-bounds access in Indic shaper.
34- Change New Tai Lue shaping engine from South-East Asian to default,
35 reflecting change in Unicode encoding model.
36- Add hb-shape --font-size. Can take up to two numbers for separate
37 x / y size.
38- Fix CoreText and FreeType scale issues with negative scales.
39- Reject blobs larger than 2GB. This might break some icu-le-hb clients
40 that need security fixes. See:
41 http://www.icu-project.org/trac/ticket/11450
42- Avoid accessing font tables during face destruction, in casce rogue
43 clients released face data already.
44- Fix up gobject-introspection a bit. Python bindings kinda working.
45 See README.python.
46- Misc fixes.
47- API additions:
48 hb_ft_face_create_referenced()
49 hb_ft_font_create_referenced()
50
51
Behdad Esfahbod66e37402014-12-17 12:09:17 -080052Overview of changes leading to 0.9.37
53Wednesday, December 17, 2014
54=====================================
55
56- Fix out-of-bounds access in Context lookup format 3.
57- Indic: Allow ZWJ/ZWNJ before syllable modifiers.
58
59
Behdad Esfahbodc0e95ab2014-11-20 14:42:24 -080060Overview of changes leading to 0.9.36
61Thursday, November 20, 2014
62=====================================
63
64- First time that three months went by without a release since
65 0.9.2 was released on August 10, 2012!
66- Fix performance bug in hb_ot_collect_glyphs():
67 https://bugzilla.mozilla.org/show_bug.cgi?id=1090869
68- Add basic vertical-text support to hb-ot-font.
69- Misc build fixes.
70
71
Behdad Esfahbodcd5a1142014-08-13 12:39:34 -040072Overview of changes leading to 0.9.35
73Saturday, August 13, 2014
74=====================================
75
76- Fix major shape-plan caching bug when more than one shaper were
77 provided to hb_shape_full() (as exercised by XeTeX).
78 http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html
79- Fix Arabic fallback shaping regression. This was broken in 0.9.32.
80- Major hb-coretext fixes. That backend is complete now, including
81 respecing buffer direction and language, down to vertical writing.
82- Build fixes for Windows CE. Should build fine now.
83- Misc fixes:
84 Use atexit() only if it's safe to call from shared library
85 https://bugs.freedesktop.org/show_bug.cgi?id=82246
86 Mandaic had errors in its Unicode Joining_Type
87 https://bugs.freedesktop.org/show_bug.cgi?id=82306
88- API changes:
89
90 * hb_buffer_clear_contents() does not reset buffer flags now.
91
92 After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
93 need to set flags for different pieces of text. The flags now
94 are something the client sets up once, depending on how it
95 actually uses the buffer. As such, don't clear it in
96 clear_contents().
97
98 I don't expect any changes to be needed to any existing client.
99
100
Behdad Esfahbod91c2c0f2014-08-02 19:24:55 -0400101Overview of changes leading to 0.9.34
102Saturday, August 2, 2014
103=====================================
104
105- hb_feature_from_string() now accepts CSS font-feature-settings format.
106- As a result, hb-shape / hb-view --features also accept CSS-style strings.
107 Eg, "'liga' off" is accepted now.
108- Add old-spec Myanmar shaper:
109 https://bugs.freedesktop.org/show_bug.cgi?id=81775
110- Don't apply 'calt' in Hangul shaper.
111- Fix mark advance zeroing for Hebrew shaper:
112 https://bugs.freedesktop.org/show_bug.cgi?id=76767
113- Implement Windows-1256 custom Arabic shaping. Only built on Windows,
114 and requires help from get_glyph(). Used by Firefox.
115 https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
116- Disable 'liga' in vertical text.
117- Build fixes.
118- API changes:
119
120 * Make HB_BUFFER_FLAG_BOT/EOT easier to use.
121
122 Previously, we expected users to provide BOT/EOT flags when the
123 text *segment* was at paragraph boundaries. This meant that for
124 clients that provide full paragraph to HarfBuzz (eg. Pango), they
125 had code like this:
126
127 hb_buffer_set_flags (hb_buffer,
128 (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
129 (item_offset + item_length == paragraph_length ?
130 HB_BUFFER_FLAG_EOT : 0));
131
132 hb_buffer_add_utf8 (hb_buffer,
133 paragraph_text, paragraph_length,
134 item_offset, item_length);
135
136 After this change such clients can simply say:
137
138 hb_buffer_set_flags (hb_buffer,
139 HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
140
141 hb_buffer_add_utf8 (hb_buffer,
142 paragraph_text, paragraph_length,
143 item_offset, item_length);
144
145 Ie, HarfBuzz itself checks whether the segment is at the beginning/end
146 of the paragraph. Clients that only pass item-at-a-time to HarfBuzz
147 continue not setting any flags whatsoever.
148
149 Another way to put it is: if there's pre-context text in the buffer,
150 HarfBuzz ignores the BOT flag. If there's post-context, it ignores
151 EOT flag.
152
153
Behdad Esfahbod8c1bdb42014-07-22 17:56:43 -0400154Overview of changes leading to 0.9.33
155Tuesday, July 22, 2014
156=====================================
157
158- Turn off ARabic 'cswh' feature that was accidentally turned on.
159- Add HB_TAG_MAX_SIGNED.
160- Make hb_face_make_immutable() really make face immutable!
161- Windows build fixes.
162
163
Behdad Esfahbod66f30912014-07-17 16:05:47 -0400164Overview of changes leading to 0.9.32
165Thursday, July 17, 2014
166=====================================
167
168- Apply Arabic shaping features in spec order exactly.
169- Another fix for Mongolian free variation selectors.
170- For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt'
171 together.
172- Minor adjustment to U+FFFD logic.
173- Fix hb-coretext build.
174
175
Behdad Esfahboda18897f2014-07-16 16:02:15 -0400176Overview of changes leading to 0.9.31
177Wednesday, July 16, 2014
178=====================================
179
180- Only accept valid UTF-8/16/32; we missed many cases before.
181- Better shaping of invalid UTF-8/16/32. Falls back to
182 U+FFFD REPLACEMENT CHARACTER now.
183- With all changes in this release, the buffer will contain fully
184 valid Unicode after hb_buffer_add_utf8/16/32 no matter how
185 broken the input is. This can be overriden though. See below.
186- Fix Mongolian Variation Selectors for fonts without GDEF.
187- Fix minor invalid buffer access.
188- Accept zh-Hant and zh-Hans language tags. hb_ot_tag_to_language()
189 now uses these instead of private tags.
190- Build fixes.
191- New API:
192 * hb_buffer_add_codepoints(). This does what hb_buffer_add_utf32()
193 used to do, ie. no validity check on the input at all. add_utf32
194 now replaces invalid Unicode codepoints with the replacement
195 character (see below).
196 * hb_buffer_set_replacement_codepoint()
197 * hb_buffer_get_replacement_codepoint()
198 Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when
199 we detected broken input, we replaced that with (hb_codepoint_t)-1.
200 This has changed to use U+FFFD now, but can be changed using these
201 new API.
202
203
Behdad Esfahbodea001372014-07-09 17:28:43 -0400204Overview of changes leading to 0.9.30
205Wednesday, July 9, 2014
206=====================================
Behdad Esfahboda18897f2014-07-16 16:02:15 -0400207
Behdad Esfahbodea001372014-07-09 17:28:43 -0400208- Update to Unicode 7.0.0:
209 * New scripts Manichaean and Psalter Pahlavi are shaped using
210 Arabic shaper.
211 * All the other new scripts to through the generic shaper for
212 now.
213- Minor Indic improvements.
214- Fix graphite2 backend cluster mapping [crasher!]
215- API changes:
216 * New HB_SCRIPT_* values for Unicode 7.0 scripts.
217 * New function hb_ot_layout_language_get_required_feature().
218- Build fixes.
219
220
Behdad Esfahbod5875ad92014-05-29 15:48:16 -0400221Overview of changes leading to 0.9.29
222Thursday, May 29, 2014
223=====================================
224
225- Implement cmap in hb-ot-font.h. No variation-selectors yet.
226- Myanmar: Allow MedialYa+Asat.
227- Various Indic fixes:
228 * Support most characters in Extended Devanagary and Vedic
229 Unicode blocks.
230 * Allow digits and a some punctuation as consonant placeholders.
231- Build fixes.
232
Behdad Esfahbodea001372014-07-09 17:28:43 -0400233
Behdad Esfahbod79ecdc32014-04-28 14:24:23 -0700234Overview of changes leading to 0.9.28
235Monday, April 28, 2014
236=====================================
237
238- Unbreak old-spec Indic shaping. (bug 76705)
239- Fix shaping of U+17DD and U+0FC6.
240- Add HB_NO_MERGE_CLUSTERS build option. NOT to be enabled by default
241 for shipping libraries. It's an option for further experimentation
242 right now. When we are sure how to do it properly, we will add
243 public run-time API for the functionality.
244- Build fixes.
245
246
Dominik Röttschesba8c9d92014-03-18 14:39:03 +0200247Overview of changes leading to 0.9.27
248Tuesday, March 18, 2014
249=====================================
250
251- Don't use "register" storage class specifier
252- Wrap definition of free_langs() with HAVE_ATEXIT
253- Add coretext_aat shaper and hb_coretext_face_create() constructor
254- If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
255- Add Myanmar test case from OpenType Myanmar spec
256- Only do fallback Hebrew composition if no GPOS 'mark' available
257- Allow bootstrapping without gtk-doc
258- Use AM_MISSING_PROG for ragel and git
259- Typo in ucdn's Makefile.am
260- Improve MemoryBarrier() implementation
261
262
Behdad Esfahbod189bf232014-01-30 15:14:58 -0500263Overview of changes leading to 0.9.26
264Thursday, January 30, 2014
265=====================================
266
267- Misc fixes.
268- Fix application of 'rtlm' feature.
269- Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH.
270- New header: hb-ot-shape.h
271- Uniscribe: fix scratch-buffer accounting.
272- Reorder Tai Tham SAKOT to after tone-marks.
273- Add Hangul shaper.
274- New files:
275 hb-ot-shape-complex-hangul.cc
276 hb-ot-shape-complex-hebrew.cc
277 hb-ot-shape-complex-tibetan.cc
278- Disable 'cswh' feature in Arabic shaper.
279- Coretext: better handle surrogate pairs.
280- Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE.
281
282
Behdad Esfahbod860fc9a2013-12-04 20:06:59 -0500283Overview of changes leading to 0.9.25
284Wednesday, December 4, 2013
285=====================================
286
287- Myanmar shaper improvements.
288- Avoid font fallback in CoreText backend.
289- Additional OpenType language tag mappiongs.
290- More aggressive shape-plan caching.
291- Build with / require automake 1.13.
292- Build with libtool 2.4.2.418 alpha to support ppc64le.
293
294
Behdad Esfahbod63006942013-11-13 14:54:07 -0500295Overview of changes leading to 0.9.24
296Tuesday, November 13, 2013
297=====================================
298
299- Misc compiler warning fixes with clang.
300- No functional changes.
301
302
Behdad Esfahboddce79c22013-10-28 20:26:40 +0100303Overview of changes leading to 0.9.23
304Monday, October 28, 2013
305=====================================
306
307- "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
308- Fix (Chain)Context recursion with non-monotone lookup positions.
309- Misc Indic bug fixes.
310- New Javanese / Buginese shaping, similar to Windows 8.1.
311
312
Behdad Esfahbode152d1a2013-10-03 15:09:37 -0400313Overview of changes leading to 0.9.22
314Thursday, October 3, 2013
315=====================================
316
317- Fix use-after-end-of-scope in hb_language_from_string().
318- Fix hiding of default_ignorables if font doesn't have space glyph.
319- Protect against out-of-range lookup indices.
320
321- API Changes:
322
323 * Added hb_ot_layout_table_get_lookup_count()
324
325
Behdad Esfahbodb61f97d2013-09-16 22:07:22 -0400326Overview of changes leading to 0.9.21
327Monday, September 16, 2013
328=====================================
329
330- Rename gobject-introspection library name from harfbuzz to HarfBuzz.
331- Remove (long disabled) hb-old and hb-icu-le test shapers.
332- Misc gtk-doc and gobject-introspection annotations.
333- Misc fixes.
334- API changes:
335
336 * Add HB_SET_VALUE_INVALID
337
Behdad Esfahbodf730b5d2013-08-29 15:53:33 -0400338Overview of changes leading to 0.9.20
339Thursday, August 29, 2013
340=====================================
341
342General:
343- Misc substitute_closure() fixes.
344- Build fixes.
345
346Documentation:
347- gtk-doc boilerplate integrated. Docs are built now, but
348 contain no contents. By next release hopefully we have
349 some content in. Enable using --enable-gtk-doc.
350
351GObject and Introspection:
352- Added harfbuzz-gobject library (hb-gobject.h) that has type
353 bindings for all HarfBuzz objects and enums. Enable using
354 --with-gobject.
355- Added gobject-introspection boilerplate. Nothing useful
356 right now. Work in progress. Gets enabled automatically if
357 --with-gobject is used. Override with --disable-introspection.
358
359OpenType shaper:
360- Apply 'mark' in Myanmar shaper.
361- Don't apply 'dlig' by default.
362
363Uniscribe shaper:
364- Support user features.
365- Fix loading of fonts that are also installed on the system.
366- Fix shaping of Arabic Presentation Forms.
367- Fix build with wide chars.
368
369CoreText shaper:
370- Support user features.
371
372Source changes:
373- hb_face_t code moved to hb-face.h / hb-face.cc.
374- Added hb-deprecated.h.
375
376API changes:
377- Added HB_DISABLE_DEPRECATED.
378- Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
379 HB_SCRIPT_CANADIAN_SYLLABICS.
380- Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
381 HB_BUFFER_FLAG_DEFAULT.
382- Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
383 HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
384
385
Behdad Esfahbod2b78d672013-07-16 16:06:27 -0400386Overview of changes leading to 0.9.19
387Tuesday, July 16, 2013
388=====================================
389
390- Build fixes.
391- Better handling of multiple variation selectors in a row.
392- Pass on variation selector to GSUB if not consumed by cmap.
393- Fix undefined memory access.
394- Add Javanese config to Indic shaper.
395- Misc bug fixes.
396
Behdad Esfahbod4014aa42013-05-28 17:28:59 -0400397Overview of changes leading to 0.9.18
398Tuesday, May 28, 2013
399=====================================
400
401New build system:
402
403- All unneeded code is all disabled by default,
404
405- Uniscribe and CoreText shapers can be enabled with their --with options,
406
407- icu_le and old shapers cannot be enabled for now,
408
409- glib, freetype, and cairo will be detected automatically.
410 They can be force on/off'ed with their --with options,
411
412- icu and graphite2 are default off, can be enabled with their --with
413 options,
414
415Moreover, ICU support is now build into a separate library:
416libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
417Distros can enable ICU now without every application on earth
418getting linked to via libharfbuzz.so.
419
420For distros I recommend that they make sure they are building --with-glib
421--with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
422And package harfbuzz and harfbuzz-icu separately.
423
424
Behdad Esfahbodf1b02f42013-05-20 09:23:58 -0400425Overview of changes leading to 0.9.17
426Monday, May 20, 2013
427=====================================
428
429- Build fixes.
430- Fix bug in hb_set_get_min().
431- Fix regression with Arabic mark positioning / width-zeroing.
432
Behdad Esfahboda408d232013-04-19 16:32:06 -0400433Overview of changes leading to 0.9.16
434Friday, April 19, 2013
435=====================================
436
437- Major speedup in OpenType lookup processing. With the Amiri
438 Arabic font, this release is over 3x faster than previous
439 release. All scripts / languages should see this speedup.
440
441- New --num-iterations option for hb-shape / hb-view; useful for
442 profiling.
443
Behdad Esfahbod22e47452013-04-05 18:02:43 -0400444Overview of changes leading to 0.9.15
Behdad Esfahboda408d232013-04-19 16:32:06 -0400445Friday, April 05, 2013
Behdad Esfahbod22e47452013-04-05 18:02:43 -0400446=====================================
447
448- Build fixes.
449- Fix crasher in graphite2 shaper.
450- Fix Arabic mark width zeroing regression.
451- Don't compose Hangul jamo into Unicode syllables.
452
453
Behdad Esfahbodf872a172013-03-21 13:38:06 -0400454Overview of changes leading to 0.9.14
455Thursday, March 21, 2013
456=====================================
457
458- Build fixes.
459- Fix time-consuming sanitize with malicious fonts.
460- Implement hb_buffer_deserialize_glyphs() for both json and text.
461- Do not ignore Hangul filler characters.
462- Indic fixes:
463 * Fix Malayalam pre-base reordering interaction with post-forms.
464 * Further adjust ZWJ handling. Should fix known regressions from
465 0.9.13.
466
467
Behdad Esfahbod05686b52013-02-25 18:19:20 -0500468Overview of changes leading to 0.9.13
469Thursday, February 25, 2013
470=====================================
471
472- Build fixes.
473- Ngapi HarfBuzz Hackfest in London (February 2013):
474 * Fixed all known Indic bugs,
475 * New Win8-style Myanmar shaper,
476 * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
477 * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
478 matching GSUB/GPOS lookups,
479 * Fix 'Phags-Pa U+A872 shaping,
480 * Fix partial disabling of default-on features,
481 * Allow disabling of TrueType kerning.
482- Fix possible crasher with broken fonts with overlapping tables.
483- Removed generated files from git again. So, one needs ragel to
484 bootstrap from the git tree.
485
486API changes:
487- hb_shape() and related APIs now abort if buffer direction is
488 HB_DIRECTION_INVALID. Previously, hb_shape() was calling
489 hb_buffer_guess_segment_properties() on the buffer before
490 shaping. The heuristics in that function are fragile. If the
491 user really wants the old behvaior, they can call that function
492 right before calling hb_shape() to get the old behavior.
493- hb_blob_create_sub_blob() always creates sub-blob with
494 HB_MEMORY_MODE_READONLY. See comments for the reason.
495
496
Behdad Esfahbod09b53932013-01-18 17:10:47 -0600497Overview of changes leading to 0.9.12
498Thursday, January 18, 2013
499=====================================
500
501- Build fixes for Sun compiler.
502- Minor bug fix.
503
Behdad Esfahbodcf81fb32013-01-10 09:06:34 -0600504Overview of changes leading to 0.9.11
505Thursday, January 10, 2013
506=====================================
507
508- Build fixes.
509- Fix GPOS mark attachment with null Anchor offsets.
510- [Indic] Fix old-spec reordering of viramas if sequence ends in one.
511- Fix multi-threaded shaper data creation crash.
512- Add atomic ops for Solaris.
513
514API changes:
515- Rename hb_buffer_clear() to hb_buffer_clear_contents().
516
517
Behdad Esfahbod34e6c3e2013-01-03 00:14:24 -0600518Overview of changes leading to 0.9.10
519Thursday, January 3, 2013
520=====================================
521
522- [Indic] Fixed rendering of Malayalam dot-reph
523- Updated OT language tags.
524- Updated graphite2 backend.
525- Improved hb_ot_layout_get_size_params() logic.
526- Improve hb-shape/hb-view help output.
527- Fixed hb-set.h implementation to not crash.
528- Fixed various issues with hb_ot_layout_collect_lookups().
529- Various build fixes.
530
531New API:
532
533hb_graphite2_face_get_gr_face()
534hb_graphite2_font_get_gr_font()
535hb_coretext_face_get_cg_font()
536
537Modified API:
538
539hb_ot_layout_get_size_params()
540
541
Behdad Esfahbodc6408a12012-12-05 17:36:52 -0500542Overview of changes leading to 0.9.9
543Wednesday, December 5, 2012
544====================================
545
546- Fix build on Windows.
547- Minor improvements.
548
549
Behdad Esfahboda52f51b2012-12-04 15:43:38 -0500550Overview of changes leading to 0.9.8
551Tuesday, December 4, 2012
552====================================
553
554
555- Actually implement hb_shape_plan_get_shaper ().
556- Make UCDB data tables const.
557- Lots of internal refactoring in OTLayout tables.
558- Flesh out hb_ot_layout_lookup_collect_glyphs().
559
560New API:
561
562hb_ot_layout_collect_lookups()
563hb_ot_layout_get_size_params()
564
565
Behdad Esfahbod4c896352012-11-21 01:20:56 -0500566Overview of changes leading to 0.9.7
567Sunday, November 21, 2012
568====================================
569
570
571HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
572
573- Fix Arabic contextual joining using pre-context text.
574- Fix Sinhala "split matra" mess.
575- Fix Khmer shaping with broken fonts.
576- Implement Thai "PUA" shaping for old fonts.
577- Do NOT route Kharoshthi script through the Indic shaper.
578- Disable fallback positioning for Indic and Thai shapers.
579- Misc fixes.
580
581
582hb-shape / hb-view changes:
583
584- Add --text-before and --text-after
585- Add --bot / --eot / --preserve-default-ignorables
586- hb-shape --output-format=json
587
588
589New API:
590
591hb_buffer_clear()
592
593hb_buffer_flags_t
594
595HB_BUFFER_FLAGS_DEFAULT
596HB_BUFFER_FLAG_BOT
597HB_BUFFER_FLAG_EOT
598HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
599
600hb_buffer_set_flags()
601hb_buffer_get_flags()
602
603HB_BUFFER_SERIALIZE_FLAGS
604hb_buffer_serialize_glyphs()
605hb_buffer_deserialize_glyphs()
606hb_buffer_serialize_list_formats()
607
608hb_set_add_range()
609hb_set_del_range()
610hb_set_get_population()
611hb_set_next_range()
612
613hb_face_[sg]et_glyph_count()
614
615hb_segment_properties_t
616HB_SEGMENT_PROPERTIES_DEFAULT
617hb_segment_properties_equal()
618hb_segment_properties_hash()
619
620hb_buffer_set_segment_properties()
621hb_buffer_get_segment_properties()
622
623hb_ot_layout_glyph_class_t
624hb_ot_layout_get_glyph_class()
625hb_ot_layout_get_glyphs_in_class()
626
627hb_shape_plan_t
628hb_shape_plan_create()
629hb_shape_plan_create_cached()
630hb_shape_plan_get_empty()
631hb_shape_plan_reference()
632hb_shape_plan_destroy()
633hb_shape_plan_set_user_data()
634hb_shape_plan_get_user_data()
635hb_shape_plan_execute()
636hb_shape_plan_get_shaper()
637
638hb_ot_shape_plan_collect_lookups()
639
640
641API changes:
642
643- Remove "mask" parameter from hb_buffer_add().
644- Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
645- hb-set.h API const correction.
646- Renamed hb_set_min/max() to hb_set_get_min/max().
647- Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
648- Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
649
650
651
Behdad Esfahbodda43a922012-11-13 13:48:26 -0800652Overview of changes leading to 0.9.6
653Sunday, November 13, 2012
654====================================
655
656- Don't clear pre-context text if no new context is provided.
657- Fix ReverseChainingSubstLookup, which was totally borked.
658- Adjust output format of hb-shape a bit.
659- Include config.h.in in-tree. Makes it easier for alternate build systems.
660- Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
661- Use ICU LayoutEngine's C API instead of C++. Avoids much headache.
662- Drop glyphs for all of Unicode Default_Ignorable characters.
663- Misc build fixes.
664
665Arabic shaper:
666- Enable 'dlig' and 'mset' features in Arabic shaper.
667- Implement 'Phags-pa shaping, improve Mongolian.
668
669Indic shaper:
670- Decompose Sinhala split matras the way old HarfBuzz / Pango did.
671- Initial support for Consonant Medials.
672- Start adding new-style Myanmar shaping.
673- Make reph and 'pref' logic introspect the font.
674- Route Meetei-Mayek through the Indic shaper.
675- Don't apply 'liga' in Indic shaper.
676- Improve Malayalam pre-base reordering Ra interaction with Chillus.
677
678
679
Behdad Esfahbod13c05842012-10-14 18:37:09 -0500680Overview of changes leading to 0.9.5
681Sunday, October 14, 2012
682====================================
683
684- Synthetic-GSUB Arabic fallback shaping.
685
686- Misc Indic improvements.
687
688- Add build system support for pthread.
689
690- Imported UCDN for in-tree Unicode callbacks implementation.
691
692- Context-aware Arabic joining.
693
694- Misc other fixes.
695
696- New API:
697
698 hb_feature_to/from-string()
699 hb_buffer_[sg]et_content_type()
700
701
702
Behdad Esfahbodf7e81ce2012-09-04 15:32:37 -0400703Overview of changes leading to 0.9.4
704Tuesday, Sep 03, 2012
705====================================
706
707- Indic improvements with old-spec Malayalam.
708
709- Better fallback glyph positioning, specially with Thai / Lao marks.
710
711- Implement dotted-circle insertion.
712
713- Better Arabic fallback shaping / ligation.
714
715- Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name.
716
717- Misc fixes.
718
719
720
Behdad Esfahbod7fe00d12012-08-18 13:59:46 -0400721Overview of changes leading to 0.9.3
722Friday, Aug 18, 2012
723====================================
724
725- Fixed fallback mark positioning for left-to-right text.
726
727- Improve mark positioning for the remaining combining classes.
728
729- Unbreak Thai and fallback Arabic shaping.
730
731- Port Arabic shaper to shape-plan caching.
732
733- Use new ICU normalizer functions.
734
735
736
Behdad Esfahbode297ee42012-08-10 14:49:37 -0400737Overview of changes leading to 0.9.2
Behdad Esfahbod9fe76052012-08-15 17:24:28 -0400738Friday, Aug 10, 2012
Behdad Esfahbode297ee42012-08-10 14:49:37 -0400739====================================
740
741- Over a thousand commits! This is the first major release of HarfBuzz.
742
743- HarfBuzz is feature-complete now! It should be in par, or better, than
744 both Pango's shapers and old HarfBuzz / Qt shapers.
745
746- New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
747
748- Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
749 Sinhala, N'ko, Mongolian, and Mandaic.
750
751- New Thai / Lao shaper.
752
753- Tibetan / Hangul support in the generic shaper.
754
755- Synthetic GDEF support for fonts without a GDEF table.
756
757- Fallback mark positioning for fonts without a GPOS table.
758
759- Unicode normalization shaping heuristic during glyph mapping.
760
761- New experimental Graphite2 backend.
762
763- New Uniscribe backend (primarily for testing).
764
765- New CoreText backend (primarily for testing).
766
767- Major optimization and speedup.
768
769- Test suites and testing infrastructure (work in progress).
770
771- Greatly improved hb-view cmdline tool.
772
773- hb-shape cmdline tool.
774
775- Unicode 6.1 support.
776
777Summary of API changes:
778
779o Changed API:
780
781 - Users are expected to only include main header files now (ie. hb.h,
782 hb-glib.h, hb-ft.h, ...)
783
784 - All struct tag names had their initial underscore removed.
785 Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
786
787 - All set_user_data() functions now take a "replace" boolean parameter.
788
789 - hb_buffer_create() takes zero arguments now.
790 Use hb_buffer_pre_allocate() to pre-allocate.
791
792 - hb_buffer_add_utf*() now accept -1 for length parameteres,
793 meaning "nul-terminated".
794
795 - hb_direction_t enum values changed.
796
797 - All *_from_string() APIs now take a length parameter to allow for
798 non-nul-terminated strings. A -1 length means "nul-terminated".
799
800 - Typedef for hb_language_t changed.
801
802 - hb_get_table_func_t renamed to hb_reference_table_func_t.
803
804 - hb_ot_layout_table_choose_script()
805
806 - Various renames in hb-unicode.h.
807
808o New API:
809
810 - hb_buffer_guess_properties()
811 Automatically called by hb_shape().
812
813 - hb_buffer_normalize_glyphs()
814
815 - hb_tag_from_string()
816
817 - hb-coretext.h
818
819 - hb-uniscribe.h
820
821 - hb_face_reference_blob()
822 - hb_face_[sg]et_index()
823 - hb_face_set_upem()
824
825 - hb_font_get_glyph_name_func_t
826 hb_font_get_glyph_from_name_func_t
827 hb_font_funcs_set_glyph_name_func()
828 hb_font_funcs_set_glyph_from_name_func()
829 hb_font_get_glyph_name()
830 hb_font_get_glyph_from_name()
831 hb_font_glyph_to_string()
832 hb_font_glyph_from_string()
833
834 - hb_font_set_funcs_data()
835
836 - hb_ft_font_set_funcs()
837 - hb_ft_font_get_face()
838
839 - hb-gobject.h (work in progress)
840
841 - hb_ot_shape_glyphs_closure()
842 hb_ot_layout_substitute_closure_lookup()
843
844 - hb-set.h
845
846 - hb_shape_full()
847
848 - hb_unicode_combining_class_t
849
850 - hb_unicode_compose_func_t
851 hb_unicode_decompose_func_t
852 hb_unicode_decompose_compatibility_func_t
853 hb_unicode_funcs_set_compose_func()
854 hb_unicode_funcs_set_decompose_func()
855 hb_unicode_funcs_set_decompose_compatibility_func()
856 hb_unicode_compose()
857 hb_unicode_decompose()
858 hb_unicode_decompose_compatibility()
859
860o Removed API:
861
862 - hb_ft_get_font_funcs()
863
864 - hb_ot_layout_substitute_start()
865 hb_ot_layout_substitute_lookup()
866 hb_ot_layout_substitute_finish()
867 hb_ot_layout_position_start()
868 hb_ot_layout_position_lookup()
869 hb_ot_layout_position_finish()
870
871
872
Behdad Esfahbodf2455762011-05-25 16:08:06 -0400873Overview of changes leading to 0.6.0
874Friday, May 27, 2011
875====================================
876
877- Vertical text support in GPOS
878- Almost all API entries have unit tests now, under test/
879- All thread-safety issues are fixed
880
881Summary of API changes follows.
882
883
884* Simple Types API:
885
886 o New API:
887 HB_LANGUAGE_INVALID
888 hb_language_get_default()
889 hb_direction_to_string()
890 hb_direction_from_string()
891 hb_script_get_horizontal_direction()
892 HB_UNTAG()
893
894 o Renamed API:
895 hb_category_t renamed to hb_unicode_general_category_t
896
897 o Changed API:
898 hb_language_t is a typed pointers now
899
900 o Removed API:
901 HB_TAG_STR()
902
903
904* Use ISO 15924 tags for hb_script_t:
905
906 o New API:
907 hb_script_from_iso15924_tag()
908 hb_script_to_iso15924_tag()
909 hb_script_from_string()
910
911 o Changed API:
912 HB_SCRIPT_* enum members changed value.
913
914
915* Buffer API streamlined:
916
917 o New API:
918 hb_buffer_reset()
919 hb_buffer_set_length()
920 hb_buffer_allocation_successful()
921
922 o Renamed API:
923 hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
924 hb_buffer_add_glyph() renamed to hb_buffer_add()
925
926 o Removed API:
927 hb_buffer_clear()
928 hb_buffer_clear_positions()
929
930 o Changed API:
931 hb_buffer_get_glyph_infos() takes an out length parameter now
932 hb_buffer_get_glyph_positions() takes an out length parameter now
933
934
935* Blob API streamlined:
936
937 o New API:
938 hb_blob_get_data()
939 hb_blob_get_data_writable()
940
941 o Renamed API:
942 hb_blob_create_empty() renamed to hb_blob_get_empty()
943
944 o Removed API:
945 hb_blob_lock()
946 hb_blob_unlock()
947 hb_blob_is_writable()
948 hb_blob_try_writable()
949
950 o Changed API:
951 hb_blob_create() takes user_data before destroy now
952
953
954* Unicode functions API:
955
956 o Unicode function vectors can subclass other unicode function vectors now.
957 Unimplemented callbacks in the subclass automatically chainup to the parent.
958
959 o All hb_unicode_funcs_t callbacks take a user_data now. Their setters
960 take a user_data and its respective destroy callback.
961
962 o New API:
963 hb_unicode_funcs_get_empty()
964 hb_unicode_funcs_get_default()
965 hb_unicode_funcs_get_parent()
966
967 o Changed API:
968 hb_unicode_funcs_create() now takes a parent_funcs.
969
970 o Removed func getter functions:
971 hb_unicode_funcs_get_mirroring_func()
972 hb_unicode_funcs_get_general_category_func()
973 hb_unicode_funcs_get_script_func()
974 hb_unicode_funcs_get_combining_class_func()
975 hb_unicode_funcs_get_eastasian_width_func()
976
977
978* Face API:
979
980 o Renamed API:
981 hb_face_get_table() renamed to hb_face_reference_table()
982 hb_face_create_for_data() renamed to hb_face_create()
983
984 o Changed API:
985 hb_face_create_for_tables() takes user_data before destroy now
986 hb_face_reference_table() returns empty blob instead of NULL
987 hb_get_table_func_t accepts the face as first parameter now
988
989* Font API:
990
991 o Fonts can subclass other fonts now. Unimplemented callbacks in the
992 subclass automatically chainup to the parent. When chaining up,
993 scale is adjusted if the parent font has a different scale.
994
995 o All hb_font_funcs_t callbacks take a user_data now. Their setters
996 take a user_data and its respective destroy callback.
997
998 o New API:
999 hb_font_get_parent()
1000 hb_font_funcs_get_empty()
1001 hb_font_create_sub_font()
1002
1003 o Removed API:
1004 hb_font_funcs_copy()
1005 hb_font_unset_funcs()
1006
1007 o Removed func getter functions:
1008 hb_font_funcs_get_glyph_func()
1009 hb_font_funcs_get_glyph_advance_func()
1010 hb_font_funcs_get_glyph_extents_func()
1011 hb_font_funcs_get_contour_point_func()
1012 hb_font_funcs_get_kerning_func()
1013
1014 o Changed API:
1015 hb_font_create() takes a face and references it now
1016 hb_font_set_funcs() takes user_data before destroy now
1017 hb_font_set_scale() accepts signed integers now
1018 hb_font_get_contour_point_func_t now takes glyph first, then point_index
1019 hb_font_get_glyph_func_t returns a success boolean now
1020
1021
1022* Changed object model:
1023
1024 o All object types have a _get_empty() now:
1025 hb_blob_get_empty()
1026 hb_buffer_get_empty()
1027 hb_face_get_empty()
1028 hb_font_get_empty()
1029 hb_font_funcs_get_empty()
1030 hb_unicode_funcs_get_empty()
1031
1032 o Added _set_user_data() and _get_user_data() for all object types:
1033 hb_blob_get_user_data()
1034 hb_blob_set_user_data()
1035 hb_buffer_get_user_data()
1036 hb_buffer_set_user_data()
1037 hb_face_get_user_data()
1038 hb_face_set_user_data()
1039 hb_font_funcs_get_user_data()
1040 hb_font_funcs_set_user_data()
1041 hb_font_get_user_data()
1042 hb_font_set_user_data()
1043 hb_unicode_funcs_get_user_data()
1044 hb_unicode_funcs_set_user_data()
1045
1046 o Removed the _get_reference_count() from all object types:
1047 hb_blob_get_reference_count()
1048 hb_buffer_get_reference_count()
1049 hb_face_get_reference_count()
1050 hb_font_funcs_get_reference_count()
1051 hb_font_get_reference_count()
1052 hb_unicode_funcs_get_reference_count()
1053
1054 o Added _make_immutable() and _is_immutable() for all object types except for buffer:
1055 hb_blob_make_immutable()
1056 hb_blob_is_immutable()
1057 hb_face_make_immutable()
1058 hb_face_is_immutable()
1059
1060
1061* Changed API for vertical text support
1062
1063 o The following callbacks where removed:
1064 hb_font_get_glyph_advance_func_t
1065 hb_font_get_kerning_func_t
1066
1067 o The following new callbacks added instead:
1068 hb_font_get_glyph_h_advance_func_t
1069 hb_font_get_glyph_v_advance_func_t
1070 hb_font_get_glyph_h_origin_func_t
1071 hb_font_get_glyph_v_origin_func_t
1072 hb_font_get_glyph_h_kerning_func_t
1073 hb_font_get_glyph_v_kerning_func_t
1074
1075 o The following API removed as such:
1076 hb_font_funcs_set_glyph_advance_func()
1077 hb_font_funcs_set_kerning_func()
1078 hb_font_get_glyph_advance()
1079 hb_font_get_kerning()
1080
1081 o New API added instead:
1082 hb_font_funcs_set_glyph_h_advance_func()
1083 hb_font_funcs_set_glyph_v_advance_func()
1084 hb_font_funcs_set_glyph_h_origin_func()
1085 hb_font_funcs_set_glyph_v_origin_func()
1086 hb_font_funcs_set_glyph_h_kerning_func()
1087 hb_font_funcs_set_glyph_v_kerning_func()
1088 hb_font_get_glyph_h_advance()
1089 hb_font_get_glyph_v_advance()
1090 hb_font_get_glyph_h_origin()
1091 hb_font_get_glyph_v_origin()
1092 hb_font_get_glyph_h_kerning()
1093 hb_font_get_glyph_v_kerning()
1094
1095 o The following higher-leve API added for convenience:
1096 hb_font_get_glyph_advance_for_direction()
1097 hb_font_get_glyph_origin_for_direction()
1098 hb_font_add_glyph_origin_for_direction()
1099 hb_font_subtract_glyph_origin_for_direction()
1100 hb_font_get_glyph_kerning_for_direction()
1101 hb_font_get_glyph_extents_for_origin()
1102 hb_font_get_glyph_contour_point_for_origin()
1103
1104
1105* OpenType Layout API:
1106
1107 o New API:
1108 hb_ot_layout_position_start()
1109 hb_ot_layout_substitute_start()
1110 hb_ot_layout_substitute_finish()
1111
1112
1113* Glue code:
1114
1115 o New API:
1116 hb_glib_script_to_script()
1117 hb_glib_script_from_script()
1118 hb_icu_script_to_script()
1119 hb_icu_script_from_script()
1120
1121
1122* Version API added:
1123
1124 o New API:
1125 HB_VERSION_MAJOR
1126 HB_VERSION_MINOR
1127 HB_VERSION_MICRO
1128 HB_VERSION_STRING
1129 HB_VERSION_CHECK()
1130 hb_version()
1131 hb_version_string()
1132 hb_version_check()
1133
1134