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