blob: 9e5918db7ad5aeed29f15c3d999cee5cffb6ce18 [file] [log] [blame]
Behdad Esfahbod22e47452013-04-05 18:02:43 -04001Overview of changes leading to 0.9.15
2Thursday, April 05, 2013
3=====================================
4
5- Build fixes.
6- Fix crasher in graphite2 shaper.
7- Fix Arabic mark width zeroing regression.
8- Don't compose Hangul jamo into Unicode syllables.
9
10
Behdad Esfahbodf872a172013-03-21 13:38:06 -040011Overview of changes leading to 0.9.14
12Thursday, March 21, 2013
13=====================================
14
15- Build fixes.
16- Fix time-consuming sanitize with malicious fonts.
17- Implement hb_buffer_deserialize_glyphs() for both json and text.
18- Do not ignore Hangul filler characters.
19- Indic fixes:
20 * Fix Malayalam pre-base reordering interaction with post-forms.
21 * Further adjust ZWJ handling. Should fix known regressions from
22 0.9.13.
23
24
Behdad Esfahbod05686b52013-02-25 18:19:20 -050025Overview of changes leading to 0.9.13
26Thursday, February 25, 2013
27=====================================
28
29- Build fixes.
30- Ngapi HarfBuzz Hackfest in London (February 2013):
31 * Fixed all known Indic bugs,
32 * New Win8-style Myanmar shaper,
33 * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
34 * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
35 matching GSUB/GPOS lookups,
36 * Fix 'Phags-Pa U+A872 shaping,
37 * Fix partial disabling of default-on features,
38 * Allow disabling of TrueType kerning.
39- Fix possible crasher with broken fonts with overlapping tables.
40- Removed generated files from git again. So, one needs ragel to
41 bootstrap from the git tree.
42
43API changes:
44- hb_shape() and related APIs now abort if buffer direction is
45 HB_DIRECTION_INVALID. Previously, hb_shape() was calling
46 hb_buffer_guess_segment_properties() on the buffer before
47 shaping. The heuristics in that function are fragile. If the
48 user really wants the old behvaior, they can call that function
49 right before calling hb_shape() to get the old behavior.
50- hb_blob_create_sub_blob() always creates sub-blob with
51 HB_MEMORY_MODE_READONLY. See comments for the reason.
52
53
Behdad Esfahbod09b53932013-01-18 17:10:47 -060054Overview of changes leading to 0.9.12
55Thursday, January 18, 2013
56=====================================
57
58- Build fixes for Sun compiler.
59- Minor bug fix.
60
Behdad Esfahbodcf81fb32013-01-10 09:06:34 -060061Overview of changes leading to 0.9.11
62Thursday, January 10, 2013
63=====================================
64
65- Build fixes.
66- Fix GPOS mark attachment with null Anchor offsets.
67- [Indic] Fix old-spec reordering of viramas if sequence ends in one.
68- Fix multi-threaded shaper data creation crash.
69- Add atomic ops for Solaris.
70
71API changes:
72- Rename hb_buffer_clear() to hb_buffer_clear_contents().
73
74
Behdad Esfahbod34e6c3e2013-01-03 00:14:24 -060075Overview of changes leading to 0.9.10
76Thursday, January 3, 2013
77=====================================
78
79- [Indic] Fixed rendering of Malayalam dot-reph
80- Updated OT language tags.
81- Updated graphite2 backend.
82- Improved hb_ot_layout_get_size_params() logic.
83- Improve hb-shape/hb-view help output.
84- Fixed hb-set.h implementation to not crash.
85- Fixed various issues with hb_ot_layout_collect_lookups().
86- Various build fixes.
87
88New API:
89
90hb_graphite2_face_get_gr_face()
91hb_graphite2_font_get_gr_font()
92hb_coretext_face_get_cg_font()
93
94Modified API:
95
96hb_ot_layout_get_size_params()
97
98
Behdad Esfahbodc6408a12012-12-05 17:36:52 -050099Overview of changes leading to 0.9.9
100Wednesday, December 5, 2012
101====================================
102
103- Fix build on Windows.
104- Minor improvements.
105
106
Behdad Esfahboda52f51b2012-12-04 15:43:38 -0500107Overview of changes leading to 0.9.8
108Tuesday, December 4, 2012
109====================================
110
111
112- Actually implement hb_shape_plan_get_shaper ().
113- Make UCDB data tables const.
114- Lots of internal refactoring in OTLayout tables.
115- Flesh out hb_ot_layout_lookup_collect_glyphs().
116
117New API:
118
119hb_ot_layout_collect_lookups()
120hb_ot_layout_get_size_params()
121
122
Behdad Esfahbod4c896352012-11-21 01:20:56 -0500123Overview of changes leading to 0.9.7
124Sunday, November 21, 2012
125====================================
126
127
128HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
129
130- Fix Arabic contextual joining using pre-context text.
131- Fix Sinhala "split matra" mess.
132- Fix Khmer shaping with broken fonts.
133- Implement Thai "PUA" shaping for old fonts.
134- Do NOT route Kharoshthi script through the Indic shaper.
135- Disable fallback positioning for Indic and Thai shapers.
136- Misc fixes.
137
138
139hb-shape / hb-view changes:
140
141- Add --text-before and --text-after
142- Add --bot / --eot / --preserve-default-ignorables
143- hb-shape --output-format=json
144
145
146New API:
147
148hb_buffer_clear()
149
150hb_buffer_flags_t
151
152HB_BUFFER_FLAGS_DEFAULT
153HB_BUFFER_FLAG_BOT
154HB_BUFFER_FLAG_EOT
155HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
156
157hb_buffer_set_flags()
158hb_buffer_get_flags()
159
160HB_BUFFER_SERIALIZE_FLAGS
161hb_buffer_serialize_glyphs()
162hb_buffer_deserialize_glyphs()
163hb_buffer_serialize_list_formats()
164
165hb_set_add_range()
166hb_set_del_range()
167hb_set_get_population()
168hb_set_next_range()
169
170hb_face_[sg]et_glyph_count()
171
172hb_segment_properties_t
173HB_SEGMENT_PROPERTIES_DEFAULT
174hb_segment_properties_equal()
175hb_segment_properties_hash()
176
177hb_buffer_set_segment_properties()
178hb_buffer_get_segment_properties()
179
180hb_ot_layout_glyph_class_t
181hb_ot_layout_get_glyph_class()
182hb_ot_layout_get_glyphs_in_class()
183
184hb_shape_plan_t
185hb_shape_plan_create()
186hb_shape_plan_create_cached()
187hb_shape_plan_get_empty()
188hb_shape_plan_reference()
189hb_shape_plan_destroy()
190hb_shape_plan_set_user_data()
191hb_shape_plan_get_user_data()
192hb_shape_plan_execute()
193hb_shape_plan_get_shaper()
194
195hb_ot_shape_plan_collect_lookups()
196
197
198API changes:
199
200- Remove "mask" parameter from hb_buffer_add().
201- Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
202- hb-set.h API const correction.
203- Renamed hb_set_min/max() to hb_set_get_min/max().
204- Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
205- Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
206
207
208
Behdad Esfahbodda43a922012-11-13 13:48:26 -0800209Overview of changes leading to 0.9.6
210Sunday, November 13, 2012
211====================================
212
213- Don't clear pre-context text if no new context is provided.
214- Fix ReverseChainingSubstLookup, which was totally borked.
215- Adjust output format of hb-shape a bit.
216- Include config.h.in in-tree. Makes it easier for alternate build systems.
217- Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
218- Use ICU LayoutEngine's C API instead of C++. Avoids much headache.
219- Drop glyphs for all of Unicode Default_Ignorable characters.
220- Misc build fixes.
221
222Arabic shaper:
223- Enable 'dlig' and 'mset' features in Arabic shaper.
224- Implement 'Phags-pa shaping, improve Mongolian.
225
226Indic shaper:
227- Decompose Sinhala split matras the way old HarfBuzz / Pango did.
228- Initial support for Consonant Medials.
229- Start adding new-style Myanmar shaping.
230- Make reph and 'pref' logic introspect the font.
231- Route Meetei-Mayek through the Indic shaper.
232- Don't apply 'liga' in Indic shaper.
233- Improve Malayalam pre-base reordering Ra interaction with Chillus.
234
235
236
Behdad Esfahbod13c05842012-10-14 18:37:09 -0500237Overview of changes leading to 0.9.5
238Sunday, October 14, 2012
239====================================
240
241- Synthetic-GSUB Arabic fallback shaping.
242
243- Misc Indic improvements.
244
245- Add build system support for pthread.
246
247- Imported UCDN for in-tree Unicode callbacks implementation.
248
249- Context-aware Arabic joining.
250
251- Misc other fixes.
252
253- New API:
254
255 hb_feature_to/from-string()
256 hb_buffer_[sg]et_content_type()
257
258
259
Behdad Esfahbodf7e81ce2012-09-04 15:32:37 -0400260Overview of changes leading to 0.9.4
261Tuesday, Sep 03, 2012
262====================================
263
264- Indic improvements with old-spec Malayalam.
265
266- Better fallback glyph positioning, specially with Thai / Lao marks.
267
268- Implement dotted-circle insertion.
269
270- Better Arabic fallback shaping / ligation.
271
272- Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name.
273
274- Misc fixes.
275
276
277
Behdad Esfahbod7fe00d12012-08-18 13:59:46 -0400278Overview of changes leading to 0.9.3
279Friday, Aug 18, 2012
280====================================
281
282- Fixed fallback mark positioning for left-to-right text.
283
284- Improve mark positioning for the remaining combining classes.
285
286- Unbreak Thai and fallback Arabic shaping.
287
288- Port Arabic shaper to shape-plan caching.
289
290- Use new ICU normalizer functions.
291
292
293
Behdad Esfahbode297ee42012-08-10 14:49:37 -0400294Overview of changes leading to 0.9.2
Behdad Esfahbod9fe76052012-08-15 17:24:28 -0400295Friday, Aug 10, 2012
Behdad Esfahbode297ee42012-08-10 14:49:37 -0400296====================================
297
298- Over a thousand commits! This is the first major release of HarfBuzz.
299
300- HarfBuzz is feature-complete now! It should be in par, or better, than
301 both Pango's shapers and old HarfBuzz / Qt shapers.
302
303- New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
304
305- Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
306 Sinhala, N'ko, Mongolian, and Mandaic.
307
308- New Thai / Lao shaper.
309
310- Tibetan / Hangul support in the generic shaper.
311
312- Synthetic GDEF support for fonts without a GDEF table.
313
314- Fallback mark positioning for fonts without a GPOS table.
315
316- Unicode normalization shaping heuristic during glyph mapping.
317
318- New experimental Graphite2 backend.
319
320- New Uniscribe backend (primarily for testing).
321
322- New CoreText backend (primarily for testing).
323
324- Major optimization and speedup.
325
326- Test suites and testing infrastructure (work in progress).
327
328- Greatly improved hb-view cmdline tool.
329
330- hb-shape cmdline tool.
331
332- Unicode 6.1 support.
333
334Summary of API changes:
335
336o Changed API:
337
338 - Users are expected to only include main header files now (ie. hb.h,
339 hb-glib.h, hb-ft.h, ...)
340
341 - All struct tag names had their initial underscore removed.
342 Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
343
344 - All set_user_data() functions now take a "replace" boolean parameter.
345
346 - hb_buffer_create() takes zero arguments now.
347 Use hb_buffer_pre_allocate() to pre-allocate.
348
349 - hb_buffer_add_utf*() now accept -1 for length parameteres,
350 meaning "nul-terminated".
351
352 - hb_direction_t enum values changed.
353
354 - All *_from_string() APIs now take a length parameter to allow for
355 non-nul-terminated strings. A -1 length means "nul-terminated".
356
357 - Typedef for hb_language_t changed.
358
359 - hb_get_table_func_t renamed to hb_reference_table_func_t.
360
361 - hb_ot_layout_table_choose_script()
362
363 - Various renames in hb-unicode.h.
364
365o New API:
366
367 - hb_buffer_guess_properties()
368 Automatically called by hb_shape().
369
370 - hb_buffer_normalize_glyphs()
371
372 - hb_tag_from_string()
373
374 - hb-coretext.h
375
376 - hb-uniscribe.h
377
378 - hb_face_reference_blob()
379 - hb_face_[sg]et_index()
380 - hb_face_set_upem()
381
382 - hb_font_get_glyph_name_func_t
383 hb_font_get_glyph_from_name_func_t
384 hb_font_funcs_set_glyph_name_func()
385 hb_font_funcs_set_glyph_from_name_func()
386 hb_font_get_glyph_name()
387 hb_font_get_glyph_from_name()
388 hb_font_glyph_to_string()
389 hb_font_glyph_from_string()
390
391 - hb_font_set_funcs_data()
392
393 - hb_ft_font_set_funcs()
394 - hb_ft_font_get_face()
395
396 - hb-gobject.h (work in progress)
397
398 - hb_ot_shape_glyphs_closure()
399 hb_ot_layout_substitute_closure_lookup()
400
401 - hb-set.h
402
403 - hb_shape_full()
404
405 - hb_unicode_combining_class_t
406
407 - hb_unicode_compose_func_t
408 hb_unicode_decompose_func_t
409 hb_unicode_decompose_compatibility_func_t
410 hb_unicode_funcs_set_compose_func()
411 hb_unicode_funcs_set_decompose_func()
412 hb_unicode_funcs_set_decompose_compatibility_func()
413 hb_unicode_compose()
414 hb_unicode_decompose()
415 hb_unicode_decompose_compatibility()
416
417o Removed API:
418
419 - hb_ft_get_font_funcs()
420
421 - hb_ot_layout_substitute_start()
422 hb_ot_layout_substitute_lookup()
423 hb_ot_layout_substitute_finish()
424 hb_ot_layout_position_start()
425 hb_ot_layout_position_lookup()
426 hb_ot_layout_position_finish()
427
428
429
Behdad Esfahbodf2455762011-05-25 16:08:06 -0400430Overview of changes leading to 0.6.0
431Friday, May 27, 2011
432====================================
433
434- Vertical text support in GPOS
435- Almost all API entries have unit tests now, under test/
436- All thread-safety issues are fixed
437
438Summary of API changes follows.
439
440
441* Simple Types API:
442
443 o New API:
444 HB_LANGUAGE_INVALID
445 hb_language_get_default()
446 hb_direction_to_string()
447 hb_direction_from_string()
448 hb_script_get_horizontal_direction()
449 HB_UNTAG()
450
451 o Renamed API:
452 hb_category_t renamed to hb_unicode_general_category_t
453
454 o Changed API:
455 hb_language_t is a typed pointers now
456
457 o Removed API:
458 HB_TAG_STR()
459
460
461* Use ISO 15924 tags for hb_script_t:
462
463 o New API:
464 hb_script_from_iso15924_tag()
465 hb_script_to_iso15924_tag()
466 hb_script_from_string()
467
468 o Changed API:
469 HB_SCRIPT_* enum members changed value.
470
471
472* Buffer API streamlined:
473
474 o New API:
475 hb_buffer_reset()
476 hb_buffer_set_length()
477 hb_buffer_allocation_successful()
478
479 o Renamed API:
480 hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
481 hb_buffer_add_glyph() renamed to hb_buffer_add()
482
483 o Removed API:
484 hb_buffer_clear()
485 hb_buffer_clear_positions()
486
487 o Changed API:
488 hb_buffer_get_glyph_infos() takes an out length parameter now
489 hb_buffer_get_glyph_positions() takes an out length parameter now
490
491
492* Blob API streamlined:
493
494 o New API:
495 hb_blob_get_data()
496 hb_blob_get_data_writable()
497
498 o Renamed API:
499 hb_blob_create_empty() renamed to hb_blob_get_empty()
500
501 o Removed API:
502 hb_blob_lock()
503 hb_blob_unlock()
504 hb_blob_is_writable()
505 hb_blob_try_writable()
506
507 o Changed API:
508 hb_blob_create() takes user_data before destroy now
509
510
511* Unicode functions API:
512
513 o Unicode function vectors can subclass other unicode function vectors now.
514 Unimplemented callbacks in the subclass automatically chainup to the parent.
515
516 o All hb_unicode_funcs_t callbacks take a user_data now. Their setters
517 take a user_data and its respective destroy callback.
518
519 o New API:
520 hb_unicode_funcs_get_empty()
521 hb_unicode_funcs_get_default()
522 hb_unicode_funcs_get_parent()
523
524 o Changed API:
525 hb_unicode_funcs_create() now takes a parent_funcs.
526
527 o Removed func getter functions:
528 hb_unicode_funcs_get_mirroring_func()
529 hb_unicode_funcs_get_general_category_func()
530 hb_unicode_funcs_get_script_func()
531 hb_unicode_funcs_get_combining_class_func()
532 hb_unicode_funcs_get_eastasian_width_func()
533
534
535* Face API:
536
537 o Renamed API:
538 hb_face_get_table() renamed to hb_face_reference_table()
539 hb_face_create_for_data() renamed to hb_face_create()
540
541 o Changed API:
542 hb_face_create_for_tables() takes user_data before destroy now
543 hb_face_reference_table() returns empty blob instead of NULL
544 hb_get_table_func_t accepts the face as first parameter now
545
546* Font API:
547
548 o Fonts can subclass other fonts now. Unimplemented callbacks in the
549 subclass automatically chainup to the parent. When chaining up,
550 scale is adjusted if the parent font has a different scale.
551
552 o All hb_font_funcs_t callbacks take a user_data now. Their setters
553 take a user_data and its respective destroy callback.
554
555 o New API:
556 hb_font_get_parent()
557 hb_font_funcs_get_empty()
558 hb_font_create_sub_font()
559
560 o Removed API:
561 hb_font_funcs_copy()
562 hb_font_unset_funcs()
563
564 o Removed func getter functions:
565 hb_font_funcs_get_glyph_func()
566 hb_font_funcs_get_glyph_advance_func()
567 hb_font_funcs_get_glyph_extents_func()
568 hb_font_funcs_get_contour_point_func()
569 hb_font_funcs_get_kerning_func()
570
571 o Changed API:
572 hb_font_create() takes a face and references it now
573 hb_font_set_funcs() takes user_data before destroy now
574 hb_font_set_scale() accepts signed integers now
575 hb_font_get_contour_point_func_t now takes glyph first, then point_index
576 hb_font_get_glyph_func_t returns a success boolean now
577
578
579* Changed object model:
580
581 o All object types have a _get_empty() now:
582 hb_blob_get_empty()
583 hb_buffer_get_empty()
584 hb_face_get_empty()
585 hb_font_get_empty()
586 hb_font_funcs_get_empty()
587 hb_unicode_funcs_get_empty()
588
589 o Added _set_user_data() and _get_user_data() for all object types:
590 hb_blob_get_user_data()
591 hb_blob_set_user_data()
592 hb_buffer_get_user_data()
593 hb_buffer_set_user_data()
594 hb_face_get_user_data()
595 hb_face_set_user_data()
596 hb_font_funcs_get_user_data()
597 hb_font_funcs_set_user_data()
598 hb_font_get_user_data()
599 hb_font_set_user_data()
600 hb_unicode_funcs_get_user_data()
601 hb_unicode_funcs_set_user_data()
602
603 o Removed the _get_reference_count() from all object types:
604 hb_blob_get_reference_count()
605 hb_buffer_get_reference_count()
606 hb_face_get_reference_count()
607 hb_font_funcs_get_reference_count()
608 hb_font_get_reference_count()
609 hb_unicode_funcs_get_reference_count()
610
611 o Added _make_immutable() and _is_immutable() for all object types except for buffer:
612 hb_blob_make_immutable()
613 hb_blob_is_immutable()
614 hb_face_make_immutable()
615 hb_face_is_immutable()
616
617
618* Changed API for vertical text support
619
620 o The following callbacks where removed:
621 hb_font_get_glyph_advance_func_t
622 hb_font_get_kerning_func_t
623
624 o The following new callbacks added instead:
625 hb_font_get_glyph_h_advance_func_t
626 hb_font_get_glyph_v_advance_func_t
627 hb_font_get_glyph_h_origin_func_t
628 hb_font_get_glyph_v_origin_func_t
629 hb_font_get_glyph_h_kerning_func_t
630 hb_font_get_glyph_v_kerning_func_t
631
632 o The following API removed as such:
633 hb_font_funcs_set_glyph_advance_func()
634 hb_font_funcs_set_kerning_func()
635 hb_font_get_glyph_advance()
636 hb_font_get_kerning()
637
638 o New API added instead:
639 hb_font_funcs_set_glyph_h_advance_func()
640 hb_font_funcs_set_glyph_v_advance_func()
641 hb_font_funcs_set_glyph_h_origin_func()
642 hb_font_funcs_set_glyph_v_origin_func()
643 hb_font_funcs_set_glyph_h_kerning_func()
644 hb_font_funcs_set_glyph_v_kerning_func()
645 hb_font_get_glyph_h_advance()
646 hb_font_get_glyph_v_advance()
647 hb_font_get_glyph_h_origin()
648 hb_font_get_glyph_v_origin()
649 hb_font_get_glyph_h_kerning()
650 hb_font_get_glyph_v_kerning()
651
652 o The following higher-leve API added for convenience:
653 hb_font_get_glyph_advance_for_direction()
654 hb_font_get_glyph_origin_for_direction()
655 hb_font_add_glyph_origin_for_direction()
656 hb_font_subtract_glyph_origin_for_direction()
657 hb_font_get_glyph_kerning_for_direction()
658 hb_font_get_glyph_extents_for_origin()
659 hb_font_get_glyph_contour_point_for_origin()
660
661
662* OpenType Layout API:
663
664 o New API:
665 hb_ot_layout_position_start()
666 hb_ot_layout_substitute_start()
667 hb_ot_layout_substitute_finish()
668
669
670* Glue code:
671
672 o New API:
673 hb_glib_script_to_script()
674 hb_glib_script_from_script()
675 hb_icu_script_to_script()
676 hb_icu_script_from_script()
677
678
679* Version API added:
680
681 o New API:
682 HB_VERSION_MAJOR
683 HB_VERSION_MINOR
684 HB_VERSION_MICRO
685 HB_VERSION_STRING
686 HB_VERSION_CHECK()
687 hb_version()
688 hb_version_string()
689 hb_version_check()
690
691