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