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