Imported Upstream version 0.9.3
[platform/upstream/libHarfBuzzSharp.git] / NEWS
1 Overview of changes leading to 0.9.3
2 Friday, Aug 18, 2012
3 ====================================
4
5 - Fixed fallback mark positioning for left-to-right text.
6
7 - Improve mark positioning for the remaining combining classes.
8
9 - Unbreak Thai and fallback Arabic shaping.
10
11 - Port Arabic shaper to shape-plan caching.
12
13 - Use new ICU normalizer functions.
14
15
16
17 Overview of changes leading to 0.9.2
18 Friday, Aug 10, 2012
19 ====================================
20
21 - Over a thousand commits!  This is the first major release of HarfBuzz.
22
23 - HarfBuzz is feature-complete now!  It should be in par, or better, than
24   both Pango's shapers and old HarfBuzz / Qt shapers.
25
26 - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
27
28 - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
29   Sinhala, N'ko, Mongolian, and Mandaic.
30
31 - New Thai / Lao shaper.
32
33 - Tibetan / Hangul support in the generic shaper.
34
35 - Synthetic GDEF support for fonts without a GDEF table.
36
37 - Fallback mark positioning for fonts without a GPOS table.
38
39 - Unicode normalization shaping heuristic during glyph mapping.
40
41 - New experimental Graphite2 backend.
42
43 - New Uniscribe backend (primarily for testing).
44
45 - New CoreText backend (primarily for testing).
46
47 - Major optimization and speedup.
48
49 - Test suites and testing infrastructure (work in progress).
50
51 - Greatly improved hb-view cmdline tool.
52
53 - hb-shape cmdline tool.
54
55 - Unicode 6.1 support.
56
57 Summary of API changes:
58
59 o Changed API:
60
61   - Users are expected to only include main header files now (ie. hb.h,
62     hb-glib.h, hb-ft.h, ...)
63
64   - All struct tag names had their initial underscore removed.
65     Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
66
67   - All set_user_data() functions now take a "replace" boolean parameter.
68
69   - hb_buffer_create() takes zero arguments now.
70     Use hb_buffer_pre_allocate() to pre-allocate.
71
72   - hb_buffer_add_utf*() now accept -1 for length parameteres,
73     meaning "nul-terminated".
74
75   - hb_direction_t enum values changed.
76
77   - All *_from_string() APIs now take a length parameter to allow for
78     non-nul-terminated strings. A -1 length means "nul-terminated".
79
80   - Typedef for hb_language_t changed.
81
82   - hb_get_table_func_t renamed to hb_reference_table_func_t.
83
84   - hb_ot_layout_table_choose_script()
85
86   - Various renames in hb-unicode.h.
87
88 o New API:
89
90   - hb_buffer_guess_properties()
91     Automatically called by hb_shape().
92
93   - hb_buffer_normalize_glyphs()
94
95   - hb_tag_from_string()
96
97   - hb-coretext.h
98
99   - hb-uniscribe.h
100
101   - hb_face_reference_blob()
102   - hb_face_[sg]et_index()
103   - hb_face_set_upem()
104
105   - hb_font_get_glyph_name_func_t
106     hb_font_get_glyph_from_name_func_t
107     hb_font_funcs_set_glyph_name_func()
108     hb_font_funcs_set_glyph_from_name_func()
109     hb_font_get_glyph_name()
110     hb_font_get_glyph_from_name()
111     hb_font_glyph_to_string()
112     hb_font_glyph_from_string()
113
114   - hb_font_set_funcs_data()
115
116   - hb_ft_font_set_funcs()
117   - hb_ft_font_get_face()
118
119   - hb-gobject.h (work in progress)
120
121   - hb_ot_shape_glyphs_closure()
122     hb_ot_layout_substitute_closure_lookup()
123
124   - hb-set.h
125
126   - hb_shape_full()
127
128   - hb_unicode_combining_class_t
129
130   - hb_unicode_compose_func_t
131     hb_unicode_decompose_func_t
132     hb_unicode_decompose_compatibility_func_t
133     hb_unicode_funcs_set_compose_func()
134     hb_unicode_funcs_set_decompose_func()
135     hb_unicode_funcs_set_decompose_compatibility_func()
136     hb_unicode_compose()
137     hb_unicode_decompose()
138     hb_unicode_decompose_compatibility()
139
140 o Removed API:
141
142   - hb_ft_get_font_funcs()
143
144   - hb_ot_layout_substitute_start()
145     hb_ot_layout_substitute_lookup()
146     hb_ot_layout_substitute_finish()
147     hb_ot_layout_position_start()
148     hb_ot_layout_position_lookup()
149     hb_ot_layout_position_finish()
150
151
152
153 Overview of changes leading to 0.6.0
154 Friday, May 27, 2011
155 ====================================
156
157 - Vertical text support in GPOS
158 - Almost all API entries have unit tests now, under test/
159 - All thread-safety issues are fixed
160
161 Summary of API changes follows.
162
163
164 * Simple Types API:
165
166   o New API:
167     HB_LANGUAGE_INVALID
168     hb_language_get_default()
169     hb_direction_to_string()
170     hb_direction_from_string()
171     hb_script_get_horizontal_direction()
172     HB_UNTAG()
173
174   o Renamed API:
175     hb_category_t renamed to hb_unicode_general_category_t
176
177   o Changed API:
178     hb_language_t is a typed pointers now
179
180   o Removed API:
181     HB_TAG_STR()
182
183
184 * Use ISO 15924 tags for hb_script_t:
185
186   o New API:
187     hb_script_from_iso15924_tag()
188     hb_script_to_iso15924_tag()
189     hb_script_from_string()
190
191   o Changed API:
192     HB_SCRIPT_* enum members changed value.
193
194
195 * Buffer API streamlined:
196
197   o New API:
198     hb_buffer_reset()
199     hb_buffer_set_length()
200     hb_buffer_allocation_successful()
201
202   o Renamed API:
203     hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
204     hb_buffer_add_glyph() renamed to hb_buffer_add()
205
206   o Removed API:
207     hb_buffer_clear()
208     hb_buffer_clear_positions()
209
210   o Changed API:
211     hb_buffer_get_glyph_infos() takes an out length parameter now
212     hb_buffer_get_glyph_positions() takes an out length parameter now
213
214
215 * Blob API streamlined:
216
217   o New API:
218     hb_blob_get_data()
219     hb_blob_get_data_writable()
220
221   o Renamed API:
222     hb_blob_create_empty() renamed to hb_blob_get_empty()
223
224   o Removed API:
225     hb_blob_lock()
226     hb_blob_unlock()
227     hb_blob_is_writable()
228     hb_blob_try_writable()
229
230   o Changed API:
231     hb_blob_create() takes user_data before destroy now
232
233
234 * Unicode functions API:
235
236   o Unicode function vectors can subclass other unicode function vectors now.
237     Unimplemented callbacks in the subclass automatically chainup to the parent.
238
239   o All hb_unicode_funcs_t callbacks take a user_data now.  Their setters
240     take a user_data and its respective destroy callback.
241
242   o New API:
243     hb_unicode_funcs_get_empty()
244     hb_unicode_funcs_get_default()
245     hb_unicode_funcs_get_parent()
246
247   o Changed API:
248     hb_unicode_funcs_create() now takes a parent_funcs.
249
250   o Removed func getter functions:
251     hb_unicode_funcs_get_mirroring_func()
252     hb_unicode_funcs_get_general_category_func()
253     hb_unicode_funcs_get_script_func()
254     hb_unicode_funcs_get_combining_class_func()
255     hb_unicode_funcs_get_eastasian_width_func()
256
257
258 * Face API:
259
260   o Renamed API:
261     hb_face_get_table() renamed to hb_face_reference_table()
262     hb_face_create_for_data() renamed to hb_face_create()
263
264   o Changed API:
265     hb_face_create_for_tables() takes user_data before destroy now
266     hb_face_reference_table() returns empty blob instead of NULL
267     hb_get_table_func_t accepts the face as first parameter now
268
269 * Font API:
270
271   o Fonts can subclass other fonts now.  Unimplemented callbacks in the
272     subclass automatically chainup to the parent.  When chaining up,
273     scale is adjusted if the parent font has a different scale.
274
275   o All hb_font_funcs_t callbacks take a user_data now.  Their setters
276     take a user_data and its respective destroy callback.
277
278   o New API:
279     hb_font_get_parent()
280     hb_font_funcs_get_empty()
281     hb_font_create_sub_font()
282
283   o Removed API:
284     hb_font_funcs_copy()
285     hb_font_unset_funcs()
286
287   o Removed func getter functions:
288     hb_font_funcs_get_glyph_func()
289     hb_font_funcs_get_glyph_advance_func()
290     hb_font_funcs_get_glyph_extents_func()
291     hb_font_funcs_get_contour_point_func()
292     hb_font_funcs_get_kerning_func()
293
294   o Changed API:
295     hb_font_create() takes a face and references it now
296     hb_font_set_funcs() takes user_data before destroy now
297     hb_font_set_scale() accepts signed integers now
298     hb_font_get_contour_point_func_t now takes glyph first, then point_index
299     hb_font_get_glyph_func_t returns a success boolean now
300
301
302 * Changed object model:
303
304   o All object types have a _get_empty() now:
305     hb_blob_get_empty()
306     hb_buffer_get_empty()
307     hb_face_get_empty()
308     hb_font_get_empty()
309     hb_font_funcs_get_empty()
310     hb_unicode_funcs_get_empty()
311
312   o Added _set_user_data() and _get_user_data() for all object types:
313     hb_blob_get_user_data()
314     hb_blob_set_user_data()
315     hb_buffer_get_user_data()
316     hb_buffer_set_user_data()
317     hb_face_get_user_data()
318     hb_face_set_user_data()
319     hb_font_funcs_get_user_data()
320     hb_font_funcs_set_user_data()
321     hb_font_get_user_data()
322     hb_font_set_user_data()
323     hb_unicode_funcs_get_user_data()
324     hb_unicode_funcs_set_user_data()
325
326   o Removed the _get_reference_count() from all object types:
327     hb_blob_get_reference_count()
328     hb_buffer_get_reference_count()
329     hb_face_get_reference_count()
330     hb_font_funcs_get_reference_count()
331     hb_font_get_reference_count()
332     hb_unicode_funcs_get_reference_count()
333
334   o Added _make_immutable() and _is_immutable() for all object types except for buffer:
335     hb_blob_make_immutable()
336     hb_blob_is_immutable()
337     hb_face_make_immutable()
338     hb_face_is_immutable()
339
340
341 * Changed API for vertical text support
342
343   o The following callbacks where removed:
344     hb_font_get_glyph_advance_func_t
345     hb_font_get_kerning_func_t
346
347   o The following new callbacks added instead:
348     hb_font_get_glyph_h_advance_func_t
349     hb_font_get_glyph_v_advance_func_t
350     hb_font_get_glyph_h_origin_func_t
351     hb_font_get_glyph_v_origin_func_t
352     hb_font_get_glyph_h_kerning_func_t
353     hb_font_get_glyph_v_kerning_func_t
354
355   o The following API removed as such:
356     hb_font_funcs_set_glyph_advance_func()
357     hb_font_funcs_set_kerning_func()
358     hb_font_get_glyph_advance()
359     hb_font_get_kerning()
360
361   o New API added instead:
362     hb_font_funcs_set_glyph_h_advance_func()
363     hb_font_funcs_set_glyph_v_advance_func()
364     hb_font_funcs_set_glyph_h_origin_func()
365     hb_font_funcs_set_glyph_v_origin_func()
366     hb_font_funcs_set_glyph_h_kerning_func()
367     hb_font_funcs_set_glyph_v_kerning_func()
368     hb_font_get_glyph_h_advance()
369     hb_font_get_glyph_v_advance()
370     hb_font_get_glyph_h_origin()
371     hb_font_get_glyph_v_origin()
372     hb_font_get_glyph_h_kerning()
373     hb_font_get_glyph_v_kerning()
374
375   o The following higher-leve API added for convenience:
376     hb_font_get_glyph_advance_for_direction()
377     hb_font_get_glyph_origin_for_direction()
378     hb_font_add_glyph_origin_for_direction()
379     hb_font_subtract_glyph_origin_for_direction()
380     hb_font_get_glyph_kerning_for_direction()
381     hb_font_get_glyph_extents_for_origin()
382     hb_font_get_glyph_contour_point_for_origin()
383
384
385 * OpenType Layout API:
386
387   o New API:
388     hb_ot_layout_position_start()
389     hb_ot_layout_substitute_start()
390     hb_ot_layout_substitute_finish()
391
392
393 * Glue code:
394
395   o New API:
396     hb_glib_script_to_script()
397     hb_glib_script_from_script()
398     hb_icu_script_to_script()
399     hb_icu_script_from_script()
400
401
402 * Version API added:
403
404   o New API:
405     HB_VERSION_MAJOR
406     HB_VERSION_MINOR
407     HB_VERSION_MICRO
408     HB_VERSION_STRING
409     HB_VERSION_CHECK()
410     hb_version()
411     hb_version_string()
412     hb_version_check()
413
414