1 Overview of changes leading to 0.9.12
2 Thursday, January 18, 2013
3 =====================================
5 - Build fixes for Sun compiler.
8 Overview of changes leading to 0.9.11
9 Thursday, January 10, 2013
10 =====================================
13 - Fix GPOS mark attachment with null Anchor offsets.
14 - [Indic] Fix old-spec reordering of viramas if sequence ends in one.
15 - Fix multi-threaded shaper data creation crash.
16 - Add atomic ops for Solaris.
19 - Rename hb_buffer_clear() to hb_buffer_clear_contents().
22 Overview of changes leading to 0.9.10
23 Thursday, January 3, 2013
24 =====================================
26 - [Indic] Fixed rendering of Malayalam dot-reph
27 - Updated OT language tags.
28 - Updated graphite2 backend.
29 - Improved hb_ot_layout_get_size_params() logic.
30 - Improve hb-shape/hb-view help output.
31 - Fixed hb-set.h implementation to not crash.
32 - Fixed various issues with hb_ot_layout_collect_lookups().
33 - Various build fixes.
37 hb_graphite2_face_get_gr_face()
38 hb_graphite2_font_get_gr_font()
39 hb_coretext_face_get_cg_font()
43 hb_ot_layout_get_size_params()
46 Overview of changes leading to 0.9.9
47 Wednesday, December 5, 2012
48 ====================================
50 - Fix build on Windows.
54 Overview of changes leading to 0.9.8
55 Tuesday, December 4, 2012
56 ====================================
59 - Actually implement hb_shape_plan_get_shaper ().
60 - Make UCDB data tables const.
61 - Lots of internal refactoring in OTLayout tables.
62 - Flesh out hb_ot_layout_lookup_collect_glyphs().
66 hb_ot_layout_collect_lookups()
67 hb_ot_layout_get_size_params()
70 Overview of changes leading to 0.9.7
71 Sunday, November 21, 2012
72 ====================================
75 HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
77 - Fix Arabic contextual joining using pre-context text.
78 - Fix Sinhala "split matra" mess.
79 - Fix Khmer shaping with broken fonts.
80 - Implement Thai "PUA" shaping for old fonts.
81 - Do NOT route Kharoshthi script through the Indic shaper.
82 - Disable fallback positioning for Indic and Thai shapers.
86 hb-shape / hb-view changes:
88 - Add --text-before and --text-after
89 - Add --bot / --eot / --preserve-default-ignorables
90 - hb-shape --output-format=json
99 HB_BUFFER_FLAGS_DEFAULT
102 HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
104 hb_buffer_set_flags()
105 hb_buffer_get_flags()
107 HB_BUFFER_SERIALIZE_FLAGS
108 hb_buffer_serialize_glyphs()
109 hb_buffer_deserialize_glyphs()
110 hb_buffer_serialize_list_formats()
114 hb_set_get_population()
117 hb_face_[sg]et_glyph_count()
119 hb_segment_properties_t
120 HB_SEGMENT_PROPERTIES_DEFAULT
121 hb_segment_properties_equal()
122 hb_segment_properties_hash()
124 hb_buffer_set_segment_properties()
125 hb_buffer_get_segment_properties()
127 hb_ot_layout_glyph_class_t
128 hb_ot_layout_get_glyph_class()
129 hb_ot_layout_get_glyphs_in_class()
132 hb_shape_plan_create()
133 hb_shape_plan_create_cached()
134 hb_shape_plan_get_empty()
135 hb_shape_plan_reference()
136 hb_shape_plan_destroy()
137 hb_shape_plan_set_user_data()
138 hb_shape_plan_get_user_data()
139 hb_shape_plan_execute()
140 hb_shape_plan_get_shaper()
142 hb_ot_shape_plan_collect_lookups()
147 - Remove "mask" parameter from hb_buffer_add().
148 - Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
149 - hb-set.h API const correction.
150 - Renamed hb_set_min/max() to hb_set_get_min/max().
151 - Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
152 - Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
156 Overview of changes leading to 0.9.6
157 Sunday, November 13, 2012
158 ====================================
160 - Don't clear pre-context text if no new context is provided.
161 - Fix ReverseChainingSubstLookup, which was totally borked.
162 - Adjust output format of hb-shape a bit.
163 - Include config.h.in in-tree. Makes it easier for alternate build systems.
164 - Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
165 - Use ICU LayoutEngine's C API instead of C++. Avoids much headache.
166 - Drop glyphs for all of Unicode Default_Ignorable characters.
170 - Enable 'dlig' and 'mset' features in Arabic shaper.
171 - Implement 'Phags-pa shaping, improve Mongolian.
174 - Decompose Sinhala split matras the way old HarfBuzz / Pango did.
175 - Initial support for Consonant Medials.
176 - Start adding new-style Myanmar shaping.
177 - Make reph and 'pref' logic introspect the font.
178 - Route Meetei-Mayek through the Indic shaper.
179 - Don't apply 'liga' in Indic shaper.
180 - Improve Malayalam pre-base reordering Ra interaction with Chillus.
184 Overview of changes leading to 0.9.5
185 Sunday, October 14, 2012
186 ====================================
188 - Synthetic-GSUB Arabic fallback shaping.
190 - Misc Indic improvements.
192 - Add build system support for pthread.
194 - Imported UCDN for in-tree Unicode callbacks implementation.
196 - Context-aware Arabic joining.
202 hb_feature_to/from-string()
203 hb_buffer_[sg]et_content_type()
207 Overview of changes leading to 0.9.4
208 Tuesday, Sep 03, 2012
209 ====================================
211 - Indic improvements with old-spec Malayalam.
213 - Better fallback glyph positioning, specially with Thai / Lao marks.
215 - Implement dotted-circle insertion.
217 - Better Arabic fallback shaping / ligation.
219 - Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name.
225 Overview of changes leading to 0.9.3
227 ====================================
229 - Fixed fallback mark positioning for left-to-right text.
231 - Improve mark positioning for the remaining combining classes.
233 - Unbreak Thai and fallback Arabic shaping.
235 - Port Arabic shaper to shape-plan caching.
237 - Use new ICU normalizer functions.
241 Overview of changes leading to 0.9.2
243 ====================================
245 - Over a thousand commits! This is the first major release of HarfBuzz.
247 - HarfBuzz is feature-complete now! It should be in par, or better, than
248 both Pango's shapers and old HarfBuzz / Qt shapers.
250 - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
252 - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
253 Sinhala, N'ko, Mongolian, and Mandaic.
255 - New Thai / Lao shaper.
257 - Tibetan / Hangul support in the generic shaper.
259 - Synthetic GDEF support for fonts without a GDEF table.
261 - Fallback mark positioning for fonts without a GPOS table.
263 - Unicode normalization shaping heuristic during glyph mapping.
265 - New experimental Graphite2 backend.
267 - New Uniscribe backend (primarily for testing).
269 - New CoreText backend (primarily for testing).
271 - Major optimization and speedup.
273 - Test suites and testing infrastructure (work in progress).
275 - Greatly improved hb-view cmdline tool.
277 - hb-shape cmdline tool.
279 - Unicode 6.1 support.
281 Summary of API changes:
285 - Users are expected to only include main header files now (ie. hb.h,
286 hb-glib.h, hb-ft.h, ...)
288 - All struct tag names had their initial underscore removed.
289 Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
291 - All set_user_data() functions now take a "replace" boolean parameter.
293 - hb_buffer_create() takes zero arguments now.
294 Use hb_buffer_pre_allocate() to pre-allocate.
296 - hb_buffer_add_utf*() now accept -1 for length parameteres,
297 meaning "nul-terminated".
299 - hb_direction_t enum values changed.
301 - All *_from_string() APIs now take a length parameter to allow for
302 non-nul-terminated strings. A -1 length means "nul-terminated".
304 - Typedef for hb_language_t changed.
306 - hb_get_table_func_t renamed to hb_reference_table_func_t.
308 - hb_ot_layout_table_choose_script()
310 - Various renames in hb-unicode.h.
314 - hb_buffer_guess_properties()
315 Automatically called by hb_shape().
317 - hb_buffer_normalize_glyphs()
319 - hb_tag_from_string()
325 - hb_face_reference_blob()
326 - hb_face_[sg]et_index()
329 - hb_font_get_glyph_name_func_t
330 hb_font_get_glyph_from_name_func_t
331 hb_font_funcs_set_glyph_name_func()
332 hb_font_funcs_set_glyph_from_name_func()
333 hb_font_get_glyph_name()
334 hb_font_get_glyph_from_name()
335 hb_font_glyph_to_string()
336 hb_font_glyph_from_string()
338 - hb_font_set_funcs_data()
340 - hb_ft_font_set_funcs()
341 - hb_ft_font_get_face()
343 - hb-gobject.h (work in progress)
345 - hb_ot_shape_glyphs_closure()
346 hb_ot_layout_substitute_closure_lookup()
352 - hb_unicode_combining_class_t
354 - hb_unicode_compose_func_t
355 hb_unicode_decompose_func_t
356 hb_unicode_decompose_compatibility_func_t
357 hb_unicode_funcs_set_compose_func()
358 hb_unicode_funcs_set_decompose_func()
359 hb_unicode_funcs_set_decompose_compatibility_func()
361 hb_unicode_decompose()
362 hb_unicode_decompose_compatibility()
366 - hb_ft_get_font_funcs()
368 - hb_ot_layout_substitute_start()
369 hb_ot_layout_substitute_lookup()
370 hb_ot_layout_substitute_finish()
371 hb_ot_layout_position_start()
372 hb_ot_layout_position_lookup()
373 hb_ot_layout_position_finish()
377 Overview of changes leading to 0.6.0
379 ====================================
381 - Vertical text support in GPOS
382 - Almost all API entries have unit tests now, under test/
383 - All thread-safety issues are fixed
385 Summary of API changes follows.
392 hb_language_get_default()
393 hb_direction_to_string()
394 hb_direction_from_string()
395 hb_script_get_horizontal_direction()
399 hb_category_t renamed to hb_unicode_general_category_t
402 hb_language_t is a typed pointers now
408 * Use ISO 15924 tags for hb_script_t:
411 hb_script_from_iso15924_tag()
412 hb_script_to_iso15924_tag()
413 hb_script_from_string()
416 HB_SCRIPT_* enum members changed value.
419 * Buffer API streamlined:
423 hb_buffer_set_length()
424 hb_buffer_allocation_successful()
427 hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
428 hb_buffer_add_glyph() renamed to hb_buffer_add()
432 hb_buffer_clear_positions()
435 hb_buffer_get_glyph_infos() takes an out length parameter now
436 hb_buffer_get_glyph_positions() takes an out length parameter now
439 * Blob API streamlined:
443 hb_blob_get_data_writable()
446 hb_blob_create_empty() renamed to hb_blob_get_empty()
451 hb_blob_is_writable()
452 hb_blob_try_writable()
455 hb_blob_create() takes user_data before destroy now
458 * Unicode functions API:
460 o Unicode function vectors can subclass other unicode function vectors now.
461 Unimplemented callbacks in the subclass automatically chainup to the parent.
463 o All hb_unicode_funcs_t callbacks take a user_data now. Their setters
464 take a user_data and its respective destroy callback.
467 hb_unicode_funcs_get_empty()
468 hb_unicode_funcs_get_default()
469 hb_unicode_funcs_get_parent()
472 hb_unicode_funcs_create() now takes a parent_funcs.
474 o Removed func getter functions:
475 hb_unicode_funcs_get_mirroring_func()
476 hb_unicode_funcs_get_general_category_func()
477 hb_unicode_funcs_get_script_func()
478 hb_unicode_funcs_get_combining_class_func()
479 hb_unicode_funcs_get_eastasian_width_func()
485 hb_face_get_table() renamed to hb_face_reference_table()
486 hb_face_create_for_data() renamed to hb_face_create()
489 hb_face_create_for_tables() takes user_data before destroy now
490 hb_face_reference_table() returns empty blob instead of NULL
491 hb_get_table_func_t accepts the face as first parameter now
495 o Fonts can subclass other fonts now. Unimplemented callbacks in the
496 subclass automatically chainup to the parent. When chaining up,
497 scale is adjusted if the parent font has a different scale.
499 o All hb_font_funcs_t callbacks take a user_data now. Their setters
500 take a user_data and its respective destroy callback.
504 hb_font_funcs_get_empty()
505 hb_font_create_sub_font()
509 hb_font_unset_funcs()
511 o Removed func getter functions:
512 hb_font_funcs_get_glyph_func()
513 hb_font_funcs_get_glyph_advance_func()
514 hb_font_funcs_get_glyph_extents_func()
515 hb_font_funcs_get_contour_point_func()
516 hb_font_funcs_get_kerning_func()
519 hb_font_create() takes a face and references it now
520 hb_font_set_funcs() takes user_data before destroy now
521 hb_font_set_scale() accepts signed integers now
522 hb_font_get_contour_point_func_t now takes glyph first, then point_index
523 hb_font_get_glyph_func_t returns a success boolean now
526 * Changed object model:
528 o All object types have a _get_empty() now:
530 hb_buffer_get_empty()
533 hb_font_funcs_get_empty()
534 hb_unicode_funcs_get_empty()
536 o Added _set_user_data() and _get_user_data() for all object types:
537 hb_blob_get_user_data()
538 hb_blob_set_user_data()
539 hb_buffer_get_user_data()
540 hb_buffer_set_user_data()
541 hb_face_get_user_data()
542 hb_face_set_user_data()
543 hb_font_funcs_get_user_data()
544 hb_font_funcs_set_user_data()
545 hb_font_get_user_data()
546 hb_font_set_user_data()
547 hb_unicode_funcs_get_user_data()
548 hb_unicode_funcs_set_user_data()
550 o Removed the _get_reference_count() from all object types:
551 hb_blob_get_reference_count()
552 hb_buffer_get_reference_count()
553 hb_face_get_reference_count()
554 hb_font_funcs_get_reference_count()
555 hb_font_get_reference_count()
556 hb_unicode_funcs_get_reference_count()
558 o Added _make_immutable() and _is_immutable() for all object types except for buffer:
559 hb_blob_make_immutable()
560 hb_blob_is_immutable()
561 hb_face_make_immutable()
562 hb_face_is_immutable()
565 * Changed API for vertical text support
567 o The following callbacks where removed:
568 hb_font_get_glyph_advance_func_t
569 hb_font_get_kerning_func_t
571 o The following new callbacks added instead:
572 hb_font_get_glyph_h_advance_func_t
573 hb_font_get_glyph_v_advance_func_t
574 hb_font_get_glyph_h_origin_func_t
575 hb_font_get_glyph_v_origin_func_t
576 hb_font_get_glyph_h_kerning_func_t
577 hb_font_get_glyph_v_kerning_func_t
579 o The following API removed as such:
580 hb_font_funcs_set_glyph_advance_func()
581 hb_font_funcs_set_kerning_func()
582 hb_font_get_glyph_advance()
583 hb_font_get_kerning()
585 o New API added instead:
586 hb_font_funcs_set_glyph_h_advance_func()
587 hb_font_funcs_set_glyph_v_advance_func()
588 hb_font_funcs_set_glyph_h_origin_func()
589 hb_font_funcs_set_glyph_v_origin_func()
590 hb_font_funcs_set_glyph_h_kerning_func()
591 hb_font_funcs_set_glyph_v_kerning_func()
592 hb_font_get_glyph_h_advance()
593 hb_font_get_glyph_v_advance()
594 hb_font_get_glyph_h_origin()
595 hb_font_get_glyph_v_origin()
596 hb_font_get_glyph_h_kerning()
597 hb_font_get_glyph_v_kerning()
599 o The following higher-leve API added for convenience:
600 hb_font_get_glyph_advance_for_direction()
601 hb_font_get_glyph_origin_for_direction()
602 hb_font_add_glyph_origin_for_direction()
603 hb_font_subtract_glyph_origin_for_direction()
604 hb_font_get_glyph_kerning_for_direction()
605 hb_font_get_glyph_extents_for_origin()
606 hb_font_get_glyph_contour_point_for_origin()
609 * OpenType Layout API:
612 hb_ot_layout_position_start()
613 hb_ot_layout_substitute_start()
614 hb_ot_layout_substitute_finish()
620 hb_glib_script_to_script()
621 hb_glib_script_from_script()
622 hb_icu_script_to_script()
623 hb_icu_script_from_script()