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