blob: b233c68888178437d79c66d9994a85de7b791590 [file] [log] [blame]
Behdad Esfahbod4c896352012-11-21 01:20:56 -05001Overview of changes leading to 0.9.7
2Sunday, November 21, 2012
3====================================
4
5
6HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
7
8- Fix Arabic contextual joining using pre-context text.
9- Fix Sinhala "split matra" mess.
10- Fix Khmer shaping with broken fonts.
11- Implement Thai "PUA" shaping for old fonts.
12- Do NOT route Kharoshthi script through the Indic shaper.
13- Disable fallback positioning for Indic and Thai shapers.
14- Misc fixes.
15
16
17hb-shape / hb-view changes:
18
19- Add --text-before and --text-after
20- Add --bot / --eot / --preserve-default-ignorables
21- hb-shape --output-format=json
22
23
24New API:
25
26hb_buffer_clear()
27
28hb_buffer_flags_t
29
30HB_BUFFER_FLAGS_DEFAULT
31HB_BUFFER_FLAG_BOT
32HB_BUFFER_FLAG_EOT
33HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
34
35hb_buffer_set_flags()
36hb_buffer_get_flags()
37
38HB_BUFFER_SERIALIZE_FLAGS
39hb_buffer_serialize_glyphs()
40hb_buffer_deserialize_glyphs()
41hb_buffer_serialize_list_formats()
42
43hb_set_add_range()
44hb_set_del_range()
45hb_set_get_population()
46hb_set_next_range()
47
48hb_face_[sg]et_glyph_count()
49
50hb_segment_properties_t
51HB_SEGMENT_PROPERTIES_DEFAULT
52hb_segment_properties_equal()
53hb_segment_properties_hash()
54
55hb_buffer_set_segment_properties()
56hb_buffer_get_segment_properties()
57
58hb_ot_layout_glyph_class_t
59hb_ot_layout_get_glyph_class()
60hb_ot_layout_get_glyphs_in_class()
61
62hb_shape_plan_t
63hb_shape_plan_create()
64hb_shape_plan_create_cached()
65hb_shape_plan_get_empty()
66hb_shape_plan_reference()
67hb_shape_plan_destroy()
68hb_shape_plan_set_user_data()
69hb_shape_plan_get_user_data()
70hb_shape_plan_execute()
71hb_shape_plan_get_shaper()
72
73hb_ot_shape_plan_collect_lookups()
74
75
76API changes:
77
78- Remove "mask" parameter from hb_buffer_add().
79- Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
80- hb-set.h API const correction.
81- Renamed hb_set_min/max() to hb_set_get_min/max().
82- Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
83- Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
84
85
86
Behdad Esfahbodda43a922012-11-13 13:48:26 -080087Overview of changes leading to 0.9.6
88Sunday, November 13, 2012
89====================================
90
91- Don't clear pre-context text if no new context is provided.
92- Fix ReverseChainingSubstLookup, which was totally borked.
93- Adjust output format of hb-shape a bit.
94- Include config.h.in in-tree. Makes it easier for alternate build systems.
95- Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
96- Use ICU LayoutEngine's C API instead of C++. Avoids much headache.
97- Drop glyphs for all of Unicode Default_Ignorable characters.
98- Misc build fixes.
99
100Arabic shaper:
101- Enable 'dlig' and 'mset' features in Arabic shaper.
102- Implement 'Phags-pa shaping, improve Mongolian.
103
104Indic shaper:
105- Decompose Sinhala split matras the way old HarfBuzz / Pango did.
106- Initial support for Consonant Medials.
107- Start adding new-style Myanmar shaping.
108- Make reph and 'pref' logic introspect the font.
109- Route Meetei-Mayek through the Indic shaper.
110- Don't apply 'liga' in Indic shaper.
111- Improve Malayalam pre-base reordering Ra interaction with Chillus.
112
113
114
Behdad Esfahbod13c05842012-10-14 18:37:09 -0500115Overview of changes leading to 0.9.5
116Sunday, October 14, 2012
117====================================
118
119- Synthetic-GSUB Arabic fallback shaping.
120
121- Misc Indic improvements.
122
123- Add build system support for pthread.
124
125- Imported UCDN for in-tree Unicode callbacks implementation.
126
127- Context-aware Arabic joining.
128
129- Misc other fixes.
130
131- New API:
132
133 hb_feature_to/from-string()
134 hb_buffer_[sg]et_content_type()
135
136
137
Behdad Esfahbodf7e81ce2012-09-04 15:32:37 -0400138Overview of changes leading to 0.9.4
139Tuesday, Sep 03, 2012
140====================================
141
142- Indic improvements with old-spec Malayalam.
143
144- Better fallback glyph positioning, specially with Thai / Lao marks.
145
146- Implement dotted-circle insertion.
147
148- Better Arabic fallback shaping / ligation.
149
150- Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name.
151
152- Misc fixes.
153
154
155
Behdad Esfahbod7fe00d12012-08-18 13:59:46 -0400156Overview of changes leading to 0.9.3
157Friday, Aug 18, 2012
158====================================
159
160- Fixed fallback mark positioning for left-to-right text.
161
162- Improve mark positioning for the remaining combining classes.
163
164- Unbreak Thai and fallback Arabic shaping.
165
166- Port Arabic shaper to shape-plan caching.
167
168- Use new ICU normalizer functions.
169
170
171
Behdad Esfahbode297ee42012-08-10 14:49:37 -0400172Overview of changes leading to 0.9.2
Behdad Esfahbod9fe76052012-08-15 17:24:28 -0400173Friday, Aug 10, 2012
Behdad Esfahbode297ee42012-08-10 14:49:37 -0400174====================================
175
176- Over a thousand commits! This is the first major release of HarfBuzz.
177
178- HarfBuzz is feature-complete now! It should be in par, or better, than
179 both Pango's shapers and old HarfBuzz / Qt shapers.
180
181- New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
182
183- Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
184 Sinhala, N'ko, Mongolian, and Mandaic.
185
186- New Thai / Lao shaper.
187
188- Tibetan / Hangul support in the generic shaper.
189
190- Synthetic GDEF support for fonts without a GDEF table.
191
192- Fallback mark positioning for fonts without a GPOS table.
193
194- Unicode normalization shaping heuristic during glyph mapping.
195
196- New experimental Graphite2 backend.
197
198- New Uniscribe backend (primarily for testing).
199
200- New CoreText backend (primarily for testing).
201
202- Major optimization and speedup.
203
204- Test suites and testing infrastructure (work in progress).
205
206- Greatly improved hb-view cmdline tool.
207
208- hb-shape cmdline tool.
209
210- Unicode 6.1 support.
211
212Summary of API changes:
213
214o Changed API:
215
216 - Users are expected to only include main header files now (ie. hb.h,
217 hb-glib.h, hb-ft.h, ...)
218
219 - All struct tag names had their initial underscore removed.
220 Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
221
222 - All set_user_data() functions now take a "replace" boolean parameter.
223
224 - hb_buffer_create() takes zero arguments now.
225 Use hb_buffer_pre_allocate() to pre-allocate.
226
227 - hb_buffer_add_utf*() now accept -1 for length parameteres,
228 meaning "nul-terminated".
229
230 - hb_direction_t enum values changed.
231
232 - All *_from_string() APIs now take a length parameter to allow for
233 non-nul-terminated strings. A -1 length means "nul-terminated".
234
235 - Typedef for hb_language_t changed.
236
237 - hb_get_table_func_t renamed to hb_reference_table_func_t.
238
239 - hb_ot_layout_table_choose_script()
240
241 - Various renames in hb-unicode.h.
242
243o New API:
244
245 - hb_buffer_guess_properties()
246 Automatically called by hb_shape().
247
248 - hb_buffer_normalize_glyphs()
249
250 - hb_tag_from_string()
251
252 - hb-coretext.h
253
254 - hb-uniscribe.h
255
256 - hb_face_reference_blob()
257 - hb_face_[sg]et_index()
258 - hb_face_set_upem()
259
260 - hb_font_get_glyph_name_func_t
261 hb_font_get_glyph_from_name_func_t
262 hb_font_funcs_set_glyph_name_func()
263 hb_font_funcs_set_glyph_from_name_func()
264 hb_font_get_glyph_name()
265 hb_font_get_glyph_from_name()
266 hb_font_glyph_to_string()
267 hb_font_glyph_from_string()
268
269 - hb_font_set_funcs_data()
270
271 - hb_ft_font_set_funcs()
272 - hb_ft_font_get_face()
273
274 - hb-gobject.h (work in progress)
275
276 - hb_ot_shape_glyphs_closure()
277 hb_ot_layout_substitute_closure_lookup()
278
279 - hb-set.h
280
281 - hb_shape_full()
282
283 - hb_unicode_combining_class_t
284
285 - hb_unicode_compose_func_t
286 hb_unicode_decompose_func_t
287 hb_unicode_decompose_compatibility_func_t
288 hb_unicode_funcs_set_compose_func()
289 hb_unicode_funcs_set_decompose_func()
290 hb_unicode_funcs_set_decompose_compatibility_func()
291 hb_unicode_compose()
292 hb_unicode_decompose()
293 hb_unicode_decompose_compatibility()
294
295o Removed API:
296
297 - hb_ft_get_font_funcs()
298
299 - hb_ot_layout_substitute_start()
300 hb_ot_layout_substitute_lookup()
301 hb_ot_layout_substitute_finish()
302 hb_ot_layout_position_start()
303 hb_ot_layout_position_lookup()
304 hb_ot_layout_position_finish()
305
306
307
Behdad Esfahbodf2455762011-05-25 16:08:06 -0400308Overview of changes leading to 0.6.0
309Friday, May 27, 2011
310====================================
311
312- Vertical text support in GPOS
313- Almost all API entries have unit tests now, under test/
314- All thread-safety issues are fixed
315
316Summary of API changes follows.
317
318
319* Simple Types API:
320
321 o New API:
322 HB_LANGUAGE_INVALID
323 hb_language_get_default()
324 hb_direction_to_string()
325 hb_direction_from_string()
326 hb_script_get_horizontal_direction()
327 HB_UNTAG()
328
329 o Renamed API:
330 hb_category_t renamed to hb_unicode_general_category_t
331
332 o Changed API:
333 hb_language_t is a typed pointers now
334
335 o Removed API:
336 HB_TAG_STR()
337
338
339* Use ISO 15924 tags for hb_script_t:
340
341 o New API:
342 hb_script_from_iso15924_tag()
343 hb_script_to_iso15924_tag()
344 hb_script_from_string()
345
346 o Changed API:
347 HB_SCRIPT_* enum members changed value.
348
349
350* Buffer API streamlined:
351
352 o New API:
353 hb_buffer_reset()
354 hb_buffer_set_length()
355 hb_buffer_allocation_successful()
356
357 o Renamed API:
358 hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
359 hb_buffer_add_glyph() renamed to hb_buffer_add()
360
361 o Removed API:
362 hb_buffer_clear()
363 hb_buffer_clear_positions()
364
365 o Changed API:
366 hb_buffer_get_glyph_infos() takes an out length parameter now
367 hb_buffer_get_glyph_positions() takes an out length parameter now
368
369
370* Blob API streamlined:
371
372 o New API:
373 hb_blob_get_data()
374 hb_blob_get_data_writable()
375
376 o Renamed API:
377 hb_blob_create_empty() renamed to hb_blob_get_empty()
378
379 o Removed API:
380 hb_blob_lock()
381 hb_blob_unlock()
382 hb_blob_is_writable()
383 hb_blob_try_writable()
384
385 o Changed API:
386 hb_blob_create() takes user_data before destroy now
387
388
389* Unicode functions API:
390
391 o Unicode function vectors can subclass other unicode function vectors now.
392 Unimplemented callbacks in the subclass automatically chainup to the parent.
393
394 o All hb_unicode_funcs_t callbacks take a user_data now. Their setters
395 take a user_data and its respective destroy callback.
396
397 o New API:
398 hb_unicode_funcs_get_empty()
399 hb_unicode_funcs_get_default()
400 hb_unicode_funcs_get_parent()
401
402 o Changed API:
403 hb_unicode_funcs_create() now takes a parent_funcs.
404
405 o Removed func getter functions:
406 hb_unicode_funcs_get_mirroring_func()
407 hb_unicode_funcs_get_general_category_func()
408 hb_unicode_funcs_get_script_func()
409 hb_unicode_funcs_get_combining_class_func()
410 hb_unicode_funcs_get_eastasian_width_func()
411
412
413* Face API:
414
415 o Renamed API:
416 hb_face_get_table() renamed to hb_face_reference_table()
417 hb_face_create_for_data() renamed to hb_face_create()
418
419 o Changed API:
420 hb_face_create_for_tables() takes user_data before destroy now
421 hb_face_reference_table() returns empty blob instead of NULL
422 hb_get_table_func_t accepts the face as first parameter now
423
424* Font API:
425
426 o Fonts can subclass other fonts now. Unimplemented callbacks in the
427 subclass automatically chainup to the parent. When chaining up,
428 scale is adjusted if the parent font has a different scale.
429
430 o All hb_font_funcs_t callbacks take a user_data now. Their setters
431 take a user_data and its respective destroy callback.
432
433 o New API:
434 hb_font_get_parent()
435 hb_font_funcs_get_empty()
436 hb_font_create_sub_font()
437
438 o Removed API:
439 hb_font_funcs_copy()
440 hb_font_unset_funcs()
441
442 o Removed func getter functions:
443 hb_font_funcs_get_glyph_func()
444 hb_font_funcs_get_glyph_advance_func()
445 hb_font_funcs_get_glyph_extents_func()
446 hb_font_funcs_get_contour_point_func()
447 hb_font_funcs_get_kerning_func()
448
449 o Changed API:
450 hb_font_create() takes a face and references it now
451 hb_font_set_funcs() takes user_data before destroy now
452 hb_font_set_scale() accepts signed integers now
453 hb_font_get_contour_point_func_t now takes glyph first, then point_index
454 hb_font_get_glyph_func_t returns a success boolean now
455
456
457* Changed object model:
458
459 o All object types have a _get_empty() now:
460 hb_blob_get_empty()
461 hb_buffer_get_empty()
462 hb_face_get_empty()
463 hb_font_get_empty()
464 hb_font_funcs_get_empty()
465 hb_unicode_funcs_get_empty()
466
467 o Added _set_user_data() and _get_user_data() for all object types:
468 hb_blob_get_user_data()
469 hb_blob_set_user_data()
470 hb_buffer_get_user_data()
471 hb_buffer_set_user_data()
472 hb_face_get_user_data()
473 hb_face_set_user_data()
474 hb_font_funcs_get_user_data()
475 hb_font_funcs_set_user_data()
476 hb_font_get_user_data()
477 hb_font_set_user_data()
478 hb_unicode_funcs_get_user_data()
479 hb_unicode_funcs_set_user_data()
480
481 o Removed the _get_reference_count() from all object types:
482 hb_blob_get_reference_count()
483 hb_buffer_get_reference_count()
484 hb_face_get_reference_count()
485 hb_font_funcs_get_reference_count()
486 hb_font_get_reference_count()
487 hb_unicode_funcs_get_reference_count()
488
489 o Added _make_immutable() and _is_immutable() for all object types except for buffer:
490 hb_blob_make_immutable()
491 hb_blob_is_immutable()
492 hb_face_make_immutable()
493 hb_face_is_immutable()
494
495
496* Changed API for vertical text support
497
498 o The following callbacks where removed:
499 hb_font_get_glyph_advance_func_t
500 hb_font_get_kerning_func_t
501
502 o The following new callbacks added instead:
503 hb_font_get_glyph_h_advance_func_t
504 hb_font_get_glyph_v_advance_func_t
505 hb_font_get_glyph_h_origin_func_t
506 hb_font_get_glyph_v_origin_func_t
507 hb_font_get_glyph_h_kerning_func_t
508 hb_font_get_glyph_v_kerning_func_t
509
510 o The following API removed as such:
511 hb_font_funcs_set_glyph_advance_func()
512 hb_font_funcs_set_kerning_func()
513 hb_font_get_glyph_advance()
514 hb_font_get_kerning()
515
516 o New API added instead:
517 hb_font_funcs_set_glyph_h_advance_func()
518 hb_font_funcs_set_glyph_v_advance_func()
519 hb_font_funcs_set_glyph_h_origin_func()
520 hb_font_funcs_set_glyph_v_origin_func()
521 hb_font_funcs_set_glyph_h_kerning_func()
522 hb_font_funcs_set_glyph_v_kerning_func()
523 hb_font_get_glyph_h_advance()
524 hb_font_get_glyph_v_advance()
525 hb_font_get_glyph_h_origin()
526 hb_font_get_glyph_v_origin()
527 hb_font_get_glyph_h_kerning()
528 hb_font_get_glyph_v_kerning()
529
530 o The following higher-leve API added for convenience:
531 hb_font_get_glyph_advance_for_direction()
532 hb_font_get_glyph_origin_for_direction()
533 hb_font_add_glyph_origin_for_direction()
534 hb_font_subtract_glyph_origin_for_direction()
535 hb_font_get_glyph_kerning_for_direction()
536 hb_font_get_glyph_extents_for_origin()
537 hb_font_get_glyph_contour_point_for_origin()
538
539
540* OpenType Layout API:
541
542 o New API:
543 hb_ot_layout_position_start()
544 hb_ot_layout_substitute_start()
545 hb_ot_layout_substitute_finish()
546
547
548* Glue code:
549
550 o New API:
551 hb_glib_script_to_script()
552 hb_glib_script_from_script()
553 hb_icu_script_to_script()
554 hb_icu_script_from_script()
555
556
557* Version API added:
558
559 o New API:
560 HB_VERSION_MAJOR
561 HB_VERSION_MINOR
562 HB_VERSION_MICRO
563 HB_VERSION_STRING
564 HB_VERSION_CHECK()
565 hb_version()
566 hb_version_string()
567 hb_version_check()
568
569