7542e8e66ed16bbb766b603b49ccad80c73157f6
[platform/upstream/harfbuzz.git] / NEWS
1 Overview of changes leading to 0.9.12
2 Thursday, January 18, 2013
3 =====================================
4
5 - Build fixes for Sun compiler.
6 - Minor bug fix.
7
8 Overview of changes leading to 0.9.11
9 Thursday, January 10, 2013
10 =====================================
11
12 - Build fixes.
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.
17
18 API changes:
19 - Rename hb_buffer_clear() to hb_buffer_clear_contents().
20
21
22 Overview of changes leading to 0.9.10
23 Thursday, January 3, 2013
24 =====================================
25
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.
34
35 New API:
36
37 hb_graphite2_face_get_gr_face()
38 hb_graphite2_font_get_gr_font()
39 hb_coretext_face_get_cg_font()
40
41 Modified API:
42
43 hb_ot_layout_get_size_params()
44
45
46 Overview of changes leading to 0.9.9
47 Wednesday, December 5, 2012
48 ====================================
49
50 - Fix build on Windows.
51 - Minor improvements.
52
53
54 Overview of changes leading to 0.9.8
55 Tuesday, December 4, 2012
56 ====================================
57
58
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().
63
64 New API:
65
66 hb_ot_layout_collect_lookups()
67 hb_ot_layout_get_size_params()
68
69
70 Overview of changes leading to 0.9.7
71 Sunday, November 21, 2012
72 ====================================
73
74
75 HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
76
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.
83 - Misc fixes.
84
85
86 hb-shape / hb-view changes:
87
88 - Add --text-before and --text-after
89 - Add --bot / --eot / --preserve-default-ignorables
90 - hb-shape --output-format=json
91
92
93 New API:
94
95 hb_buffer_clear()
96
97 hb_buffer_flags_t
98
99 HB_BUFFER_FLAGS_DEFAULT
100 HB_BUFFER_FLAG_BOT
101 HB_BUFFER_FLAG_EOT
102 HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
103
104 hb_buffer_set_flags()
105 hb_buffer_get_flags()
106
107 HB_BUFFER_SERIALIZE_FLAGS
108 hb_buffer_serialize_glyphs()
109 hb_buffer_deserialize_glyphs()
110 hb_buffer_serialize_list_formats()
111
112 hb_set_add_range()
113 hb_set_del_range()
114 hb_set_get_population()
115 hb_set_next_range()
116
117 hb_face_[sg]et_glyph_count()
118
119 hb_segment_properties_t
120 HB_SEGMENT_PROPERTIES_DEFAULT
121 hb_segment_properties_equal()
122 hb_segment_properties_hash()
123
124 hb_buffer_set_segment_properties()
125 hb_buffer_get_segment_properties()
126
127 hb_ot_layout_glyph_class_t
128 hb_ot_layout_get_glyph_class()
129 hb_ot_layout_get_glyphs_in_class()
130
131 hb_shape_plan_t
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()
141
142 hb_ot_shape_plan_collect_lookups()
143
144
145 API changes:
146
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().
153
154
155
156 Overview of changes leading to 0.9.6
157 Sunday, November 13, 2012
158 ====================================
159
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.
167 - Misc build fixes.
168
169 Arabic shaper:
170 - Enable 'dlig' and 'mset' features in Arabic shaper.
171 - Implement 'Phags-pa shaping, improve Mongolian.
172
173 Indic shaper:
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.
181
182
183
184 Overview of changes leading to 0.9.5
185 Sunday, October 14, 2012
186 ====================================
187
188 - Synthetic-GSUB Arabic fallback shaping.
189
190 - Misc Indic improvements.
191
192 - Add build system support for pthread.
193
194 - Imported UCDN for in-tree Unicode callbacks implementation.
195
196 - Context-aware Arabic joining.
197
198 - Misc other fixes.
199
200 - New API:
201
202   hb_feature_to/from-string()
203   hb_buffer_[sg]et_content_type()
204
205
206
207 Overview of changes leading to 0.9.4
208 Tuesday, Sep 03, 2012
209 ====================================
210
211 - Indic improvements with old-spec Malayalam.
212
213 - Better fallback glyph positioning, specially with Thai / Lao marks.
214
215 - Implement dotted-circle insertion.
216
217 - Better Arabic fallback shaping / ligation.
218
219 - Added ICU LayoutEngine backend for testing.  Call it by the 'icu_le' name.
220
221 - Misc fixes.
222
223
224
225 Overview of changes leading to 0.9.3
226 Friday, Aug 18, 2012
227 ====================================
228
229 - Fixed fallback mark positioning for left-to-right text.
230
231 - Improve mark positioning for the remaining combining classes.
232
233 - Unbreak Thai and fallback Arabic shaping.
234
235 - Port Arabic shaper to shape-plan caching.
236
237 - Use new ICU normalizer functions.
238
239
240
241 Overview of changes leading to 0.9.2
242 Friday, Aug 10, 2012
243 ====================================
244
245 - Over a thousand commits!  This is the first major release of HarfBuzz.
246
247 - HarfBuzz is feature-complete now!  It should be in par, or better, than
248   both Pango's shapers and old HarfBuzz / Qt shapers.
249
250 - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
251
252 - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
253   Sinhala, N'ko, Mongolian, and Mandaic.
254
255 - New Thai / Lao shaper.
256
257 - Tibetan / Hangul support in the generic shaper.
258
259 - Synthetic GDEF support for fonts without a GDEF table.
260
261 - Fallback mark positioning for fonts without a GPOS table.
262
263 - Unicode normalization shaping heuristic during glyph mapping.
264
265 - New experimental Graphite2 backend.
266
267 - New Uniscribe backend (primarily for testing).
268
269 - New CoreText backend (primarily for testing).
270
271 - Major optimization and speedup.
272
273 - Test suites and testing infrastructure (work in progress).
274
275 - Greatly improved hb-view cmdline tool.
276
277 - hb-shape cmdline tool.
278
279 - Unicode 6.1 support.
280
281 Summary of API changes:
282
283 o Changed API:
284
285   - Users are expected to only include main header files now (ie. hb.h,
286     hb-glib.h, hb-ft.h, ...)
287
288   - All struct tag names had their initial underscore removed.
289     Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
290
291   - All set_user_data() functions now take a "replace" boolean parameter.
292
293   - hb_buffer_create() takes zero arguments now.
294     Use hb_buffer_pre_allocate() to pre-allocate.
295
296   - hb_buffer_add_utf*() now accept -1 for length parameteres,
297     meaning "nul-terminated".
298
299   - hb_direction_t enum values changed.
300
301   - All *_from_string() APIs now take a length parameter to allow for
302     non-nul-terminated strings. A -1 length means "nul-terminated".
303
304   - Typedef for hb_language_t changed.
305
306   - hb_get_table_func_t renamed to hb_reference_table_func_t.
307
308   - hb_ot_layout_table_choose_script()
309
310   - Various renames in hb-unicode.h.
311
312 o New API:
313
314   - hb_buffer_guess_properties()
315     Automatically called by hb_shape().
316
317   - hb_buffer_normalize_glyphs()
318
319   - hb_tag_from_string()
320
321   - hb-coretext.h
322
323   - hb-uniscribe.h
324
325   - hb_face_reference_blob()
326   - hb_face_[sg]et_index()
327   - hb_face_set_upem()
328
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()
337
338   - hb_font_set_funcs_data()
339
340   - hb_ft_font_set_funcs()
341   - hb_ft_font_get_face()
342
343   - hb-gobject.h (work in progress)
344
345   - hb_ot_shape_glyphs_closure()
346     hb_ot_layout_substitute_closure_lookup()
347
348   - hb-set.h
349
350   - hb_shape_full()
351
352   - hb_unicode_combining_class_t
353
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()
360     hb_unicode_compose()
361     hb_unicode_decompose()
362     hb_unicode_decompose_compatibility()
363
364 o Removed API:
365
366   - hb_ft_get_font_funcs()
367
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()
374
375
376
377 Overview of changes leading to 0.6.0
378 Friday, May 27, 2011
379 ====================================
380
381 - Vertical text support in GPOS
382 - Almost all API entries have unit tests now, under test/
383 - All thread-safety issues are fixed
384
385 Summary of API changes follows.
386
387
388 * Simple Types API:
389
390   o New API:
391     HB_LANGUAGE_INVALID
392     hb_language_get_default()
393     hb_direction_to_string()
394     hb_direction_from_string()
395     hb_script_get_horizontal_direction()
396     HB_UNTAG()
397
398   o Renamed API:
399     hb_category_t renamed to hb_unicode_general_category_t
400
401   o Changed API:
402     hb_language_t is a typed pointers now
403
404   o Removed API:
405     HB_TAG_STR()
406
407
408 * Use ISO 15924 tags for hb_script_t:
409
410   o New API:
411     hb_script_from_iso15924_tag()
412     hb_script_to_iso15924_tag()
413     hb_script_from_string()
414
415   o Changed API:
416     HB_SCRIPT_* enum members changed value.
417
418
419 * Buffer API streamlined:
420
421   o New API:
422     hb_buffer_reset()
423     hb_buffer_set_length()
424     hb_buffer_allocation_successful()
425
426   o Renamed API:
427     hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
428     hb_buffer_add_glyph() renamed to hb_buffer_add()
429
430   o Removed API:
431     hb_buffer_clear()
432     hb_buffer_clear_positions()
433
434   o Changed API:
435     hb_buffer_get_glyph_infos() takes an out length parameter now
436     hb_buffer_get_glyph_positions() takes an out length parameter now
437
438
439 * Blob API streamlined:
440
441   o New API:
442     hb_blob_get_data()
443     hb_blob_get_data_writable()
444
445   o Renamed API:
446     hb_blob_create_empty() renamed to hb_blob_get_empty()
447
448   o Removed API:
449     hb_blob_lock()
450     hb_blob_unlock()
451     hb_blob_is_writable()
452     hb_blob_try_writable()
453
454   o Changed API:
455     hb_blob_create() takes user_data before destroy now
456
457
458 * Unicode functions API:
459
460   o Unicode function vectors can subclass other unicode function vectors now.
461     Unimplemented callbacks in the subclass automatically chainup to the parent.
462
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.
465
466   o New API:
467     hb_unicode_funcs_get_empty()
468     hb_unicode_funcs_get_default()
469     hb_unicode_funcs_get_parent()
470
471   o Changed API:
472     hb_unicode_funcs_create() now takes a parent_funcs.
473
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()
480
481
482 * Face API:
483
484   o Renamed API:
485     hb_face_get_table() renamed to hb_face_reference_table()
486     hb_face_create_for_data() renamed to hb_face_create()
487
488   o Changed API:
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
492
493 * Font API:
494
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.
498
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.
501
502   o New API:
503     hb_font_get_parent()
504     hb_font_funcs_get_empty()
505     hb_font_create_sub_font()
506
507   o Removed API:
508     hb_font_funcs_copy()
509     hb_font_unset_funcs()
510
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()
517
518   o Changed API:
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
524
525
526 * Changed object model:
527
528   o All object types have a _get_empty() now:
529     hb_blob_get_empty()
530     hb_buffer_get_empty()
531     hb_face_get_empty()
532     hb_font_get_empty()
533     hb_font_funcs_get_empty()
534     hb_unicode_funcs_get_empty()
535
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()
549
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()
557
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()
563
564
565 * Changed API for vertical text support
566
567   o The following callbacks where removed:
568     hb_font_get_glyph_advance_func_t
569     hb_font_get_kerning_func_t
570
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
578
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()
584
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()
598
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()
607
608
609 * OpenType Layout API:
610
611   o New API:
612     hb_ot_layout_position_start()
613     hb_ot_layout_substitute_start()
614     hb_ot_layout_substitute_finish()
615
616
617 * Glue code:
618
619   o New API:
620     hb_glib_script_to_script()
621     hb_glib_script_from_script()
622     hb_icu_script_to_script()
623     hb_icu_script_from_script()
624
625
626 * Version API added:
627
628   o New API:
629     HB_VERSION_MAJOR
630     HB_VERSION_MINOR
631     HB_VERSION_MICRO
632     HB_VERSION_STRING
633     HB_VERSION_CHECK()
634     hb_version()
635     hb_version_string()
636     hb_version_check()
637
638