Home | History | Annotate | Download | only in harfbuzz-ng
      1 Overview of changes leading to 0.9.27
      2 Tuesday, March 18, 2014
      3 =====================================
      4 
      5 - Don't use "register" storage class specifier
      6 - Wrap definition of free_langs() with HAVE_ATEXIT
      7 - Add coretext_aat shaper and hb_coretext_face_create() constructor
      8 - If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
      9 - Add Myanmar test case from OpenType Myanmar spec
     10 - Only do fallback Hebrew composition if no GPOS 'mark' available
     11 - Allow bootstrapping without gtk-doc
     12 - Use AM_MISSING_PROG for ragel and git
     13 - Typo in ucdn's Makefile.am
     14 - Improve MemoryBarrier() implementation
     15 
     16 
     17 Overview of changes leading to 0.9.26
     18 Thursday, January 30, 2014
     19 =====================================
     20 
     21 - Misc fixes.
     22 - Fix application of 'rtlm' feature.
     23 - Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH.
     24 - New header: hb-ot-shape.h
     25 - Uniscribe: fix scratch-buffer accounting.
     26 - Reorder Tai Tham SAKOT to after tone-marks.
     27 - Add Hangul shaper.
     28 - New files:
     29   hb-ot-shape-complex-hangul.cc
     30   hb-ot-shape-complex-hebrew.cc
     31   hb-ot-shape-complex-tibetan.cc
     32 - Disable 'cswh' feature in Arabic shaper.
     33 - Coretext: better handle surrogate pairs.
     34 - Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE.
     35 
     36 
     37 Overview of changes leading to 0.9.25
     38 Wednesday, December 4, 2013
     39 =====================================
     40 
     41 - Myanmar shaper improvements.
     42 - Avoid font fallback in CoreText backend.
     43 - Additional OpenType language tag mappiongs.
     44 - More aggressive shape-plan caching.
     45 - Build with / require automake 1.13.
     46 - Build with libtool 2.4.2.418 alpha to support ppc64le.
     47 
     48 
     49 Overview of changes leading to 0.9.24
     50 Tuesday, November 13, 2013
     51 =====================================
     52 
     53 - Misc compiler warning fixes with clang.
     54 - No functional changes.
     55 
     56 
     57 Overview of changes leading to 0.9.23
     58 Monday, October 28, 2013
     59 =====================================
     60 
     61 - "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
     62 - Fix (Chain)Context recursion with non-monotone lookup positions.
     63 - Misc Indic bug fixes.
     64 - New Javanese / Buginese shaping, similar to Windows 8.1.
     65 
     66 
     67 Overview of changes leading to 0.9.22
     68 Thursday, October 3, 2013
     69 =====================================
     70 
     71 - Fix use-after-end-of-scope in hb_language_from_string().
     72 - Fix hiding of default_ignorables if font doesn't have space glyph.
     73 - Protect against out-of-range lookup indices.
     74 
     75 - API Changes:
     76 
     77   * Added hb_ot_layout_table_get_lookup_count()
     78 
     79 
     80 Overview of changes leading to 0.9.21
     81 Monday, September 16, 2013
     82 =====================================
     83 
     84 - Rename gobject-introspection library name from harfbuzz to HarfBuzz.
     85 - Remove (long disabled) hb-old and hb-icu-le test shapers.
     86 - Misc gtk-doc and gobject-introspection annotations.
     87 - Misc fixes.
     88 - API changes:
     89 
     90   * Add HB_SET_VALUE_INVALID
     91 
     92 Overview of changes leading to 0.9.20
     93 Thursday, August 29, 2013
     94 =====================================
     95 
     96 General:
     97 - Misc substitute_closure() fixes.
     98 - Build fixes.
     99 
    100 Documentation:
    101 - gtk-doc boilerplate integrated.  Docs are built now, but
    102   contain no contents.  By next release hopefully we have
    103   some content in.  Enable using --enable-gtk-doc.
    104 
    105 GObject and Introspection:
    106 - Added harfbuzz-gobject library (hb-gobject.h) that has type
    107   bindings for all HarfBuzz objects and enums.  Enable using
    108   --with-gobject.
    109 - Added gobject-introspection boilerplate.  Nothing useful
    110   right now.  Work in progress.  Gets enabled automatically if
    111   --with-gobject is used.  Override with --disable-introspection.
    112 
    113 OpenType shaper:
    114 - Apply 'mark' in Myanmar shaper.
    115 - Don't apply 'dlig' by default.
    116 
    117 Uniscribe shaper:
    118 - Support user features.
    119 - Fix loading of fonts that are also installed on the system.
    120 - Fix shaping of Arabic Presentation Forms.
    121 - Fix build with wide chars.
    122 
    123 CoreText shaper:
    124 - Support user features.
    125 
    126 Source changes:
    127 - hb_face_t code moved to hb-face.h / hb-face.cc.
    128 - Added hb-deprecated.h.
    129 
    130 API changes:
    131 - Added HB_DISABLE_DEPRECATED.
    132 - Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
    133   HB_SCRIPT_CANADIAN_SYLLABICS.
    134 - Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
    135   HB_BUFFER_FLAG_DEFAULT.
    136 - Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
    137   HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
    138 
    139 
    140 Overview of changes leading to 0.9.19
    141 Tuesday, July 16, 2013
    142 =====================================
    143 
    144 - Build fixes.
    145 - Better handling of multiple variation selectors in a row.
    146 - Pass on variation selector to GSUB if not consumed by cmap.
    147 - Fix undefined memory access.
    148 - Add Javanese config to Indic shaper.
    149 - Misc bug fixes.
    150 
    151 Overview of changes leading to 0.9.18
    152 Tuesday, May 28, 2013
    153 =====================================
    154 
    155 New build system:
    156 
    157 - All unneeded code is all disabled by default,
    158 
    159 - Uniscribe and CoreText shapers can be enabled with their --with options,
    160 
    161 - icu_le and old shapers cannot be enabled for now,
    162 
    163 - glib, freetype, and cairo will be detected automatically.
    164   They can be force on/off'ed with their --with options,
    165 
    166 - icu and graphite2 are default off, can be enabled with their --with
    167   options,
    168 
    169 Moreover, ICU support is now build into a separate library:
    170 libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
    171 Distros can enable ICU now without every application on earth
    172 getting linked to via libharfbuzz.so.
    173 
    174 For distros I recommend that they make sure they are building --with-glib
    175 --with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
    176 And package harfbuzz and harfbuzz-icu separately.
    177 
    178 
    179 Overview of changes leading to 0.9.17
    180 Monday, May 20, 2013
    181 =====================================
    182 
    183 - Build fixes.
    184 - Fix bug in hb_set_get_min().
    185 - Fix regression with Arabic mark positioning / width-zeroing.
    186 
    187 Overview of changes leading to 0.9.16
    188 Friday, April 19, 2013
    189 =====================================
    190 
    191 - Major speedup in OpenType lookup processing.  With the Amiri
    192   Arabic font, this release is over 3x faster than previous
    193   release.  All scripts / languages should see this speedup.
    194 
    195 - New --num-iterations option for hb-shape / hb-view; useful for
    196   profiling.
    197 
    198 Overview of changes leading to 0.9.15
    199 Friday, April 05, 2013
    200 =====================================
    201 
    202 - Build fixes.
    203 - Fix crasher in graphite2 shaper.
    204 - Fix Arabic mark width zeroing regression.
    205 - Don't compose Hangul jamo into Unicode syllables.
    206 
    207 
    208 Overview of changes leading to 0.9.14
    209 Thursday, March 21, 2013
    210 =====================================
    211 
    212 - Build fixes.
    213 - Fix time-consuming sanitize with malicious fonts.
    214 - Implement hb_buffer_deserialize_glyphs() for both json and text.
    215 - Do not ignore Hangul filler characters.
    216 - Indic fixes:
    217   * Fix Malayalam pre-base reordering interaction with post-forms.
    218   * Further adjust ZWJ handling.  Should fix known regressions from
    219     0.9.13.
    220 
    221 
    222 Overview of changes leading to 0.9.13
    223 Thursday, February 25, 2013
    224 =====================================
    225 
    226 - Build fixes.
    227 - Ngapi HarfBuzz Hackfest in London (February 2013):
    228   * Fixed all known Indic bugs,
    229   * New Win8-style Myanmar shaper,
    230   * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
    231   * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
    232     matching GSUB/GPOS lookups,
    233   * Fix 'Phags-Pa U+A872 shaping,
    234   * Fix partial disabling of default-on features,
    235   * Allow disabling of TrueType kerning.
    236 - Fix possible crasher with broken fonts with overlapping tables.
    237 - Removed generated files from git again.  So, one needs ragel to
    238   bootstrap from the git tree.
    239 
    240 API changes:
    241 - hb_shape() and related APIs now abort if buffer direction is
    242   HB_DIRECTION_INVALID.  Previously, hb_shape() was calling
    243   hb_buffer_guess_segment_properties() on the buffer before
    244   shaping.  The heuristics in that function are fragile.  If the
    245   user really wants the old behvaior, they can call that function
    246   right before calling hb_shape() to get the old behavior.
    247 - hb_blob_create_sub_blob() always creates sub-blob with
    248   HB_MEMORY_MODE_READONLY.  See comments for the reason.
    249 
    250 
    251 Overview of changes leading to 0.9.12
    252 Thursday, January 18, 2013
    253 =====================================
    254 
    255 - Build fixes for Sun compiler.
    256 - Minor bug fix.
    257 
    258 Overview of changes leading to 0.9.11
    259 Thursday, January 10, 2013
    260 =====================================
    261 
    262 - Build fixes.
    263 - Fix GPOS mark attachment with null Anchor offsets.
    264 - [Indic] Fix old-spec reordering of viramas if sequence ends in one.
    265 - Fix multi-threaded shaper data creation crash.
    266 - Add atomic ops for Solaris.
    267 
    268 API changes:
    269 - Rename hb_buffer_clear() to hb_buffer_clear_contents().
    270 
    271 
    272 Overview of changes leading to 0.9.10
    273 Thursday, January 3, 2013
    274 =====================================
    275 
    276 - [Indic] Fixed rendering of Malayalam dot-reph
    277 - Updated OT language tags.
    278 - Updated graphite2 backend.
    279 - Improved hb_ot_layout_get_size_params() logic.
    280 - Improve hb-shape/hb-view help output.
    281 - Fixed hb-set.h implementation to not crash.
    282 - Fixed various issues with hb_ot_layout_collect_lookups().
    283 - Various build fixes.
    284 
    285 New API:
    286 
    287 hb_graphite2_face_get_gr_face()
    288 hb_graphite2_font_get_gr_font()
    289 hb_coretext_face_get_cg_font()
    290 
    291 Modified API:
    292 
    293 hb_ot_layout_get_size_params()
    294 
    295 
    296 Overview of changes leading to 0.9.9
    297 Wednesday, December 5, 2012
    298 ====================================
    299 
    300 - Fix build on Windows.
    301 - Minor improvements.
    302 
    303 
    304 Overview of changes leading to 0.9.8
    305 Tuesday, December 4, 2012
    306 ====================================
    307 
    308 
    309 - Actually implement hb_shape_plan_get_shaper ().
    310 - Make UCDB data tables const.
    311 - Lots of internal refactoring in OTLayout tables.
    312 - Flesh out hb_ot_layout_lookup_collect_glyphs().
    313 
    314 New API:
    315 
    316 hb_ot_layout_collect_lookups()
    317 hb_ot_layout_get_size_params()
    318 
    319 
    320 Overview of changes leading to 0.9.7
    321 Sunday, November 21, 2012
    322 ====================================
    323 
    324 
    325 HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
    326 
    327 - Fix Arabic contextual joining using pre-context text.
    328 - Fix Sinhala "split matra" mess.
    329 - Fix Khmer shaping with broken fonts.
    330 - Implement Thai "PUA" shaping for old fonts.
    331 - Do NOT route Kharoshthi script through the Indic shaper.
    332 - Disable fallback positioning for Indic and Thai shapers.
    333 - Misc fixes.
    334 
    335 
    336 hb-shape / hb-view changes:
    337 
    338 - Add --text-before and --text-after
    339 - Add --bot / --eot / --preserve-default-ignorables
    340 - hb-shape --output-format=json
    341 
    342 
    343 New API:
    344 
    345 hb_buffer_clear()
    346 
    347 hb_buffer_flags_t
    348 
    349 HB_BUFFER_FLAGS_DEFAULT
    350 HB_BUFFER_FLAG_BOT
    351 HB_BUFFER_FLAG_EOT
    352 HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
    353 
    354 hb_buffer_set_flags()
    355 hb_buffer_get_flags()
    356 
    357 HB_BUFFER_SERIALIZE_FLAGS
    358 hb_buffer_serialize_glyphs()
    359 hb_buffer_deserialize_glyphs()
    360 hb_buffer_serialize_list_formats()
    361 
    362 hb_set_add_range()
    363 hb_set_del_range()
    364 hb_set_get_population()
    365 hb_set_next_range()
    366 
    367 hb_face_[sg]et_glyph_count()
    368 
    369 hb_segment_properties_t
    370 HB_SEGMENT_PROPERTIES_DEFAULT
    371 hb_segment_properties_equal()
    372 hb_segment_properties_hash()
    373 
    374 hb_buffer_set_segment_properties()
    375 hb_buffer_get_segment_properties()
    376 
    377 hb_ot_layout_glyph_class_t
    378 hb_ot_layout_get_glyph_class()
    379 hb_ot_layout_get_glyphs_in_class()
    380 
    381 hb_shape_plan_t
    382 hb_shape_plan_create()
    383 hb_shape_plan_create_cached()
    384 hb_shape_plan_get_empty()
    385 hb_shape_plan_reference()
    386 hb_shape_plan_destroy()
    387 hb_shape_plan_set_user_data()
    388 hb_shape_plan_get_user_data()
    389 hb_shape_plan_execute()
    390 hb_shape_plan_get_shaper()
    391 
    392 hb_ot_shape_plan_collect_lookups()
    393 
    394 
    395 API changes:
    396 
    397 - Remove "mask" parameter from hb_buffer_add().
    398 - Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
    399 - hb-set.h API const correction.
    400 - Renamed hb_set_min/max() to hb_set_get_min/max().
    401 - Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
    402 - Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
    403 
    404 
    405 
    406 Overview of changes leading to 0.9.6
    407 Sunday, November 13, 2012
    408 ====================================
    409 
    410 - Don't clear pre-context text if no new context is provided.
    411 - Fix ReverseChainingSubstLookup, which was totally borked.
    412 - Adjust output format of hb-shape a bit.
    413 - Include config.h.in in-tree.  Makes it easier for alternate build systems.
    414 - Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
    415 - Use ICU LayoutEngine's C API instead of C++.  Avoids much headache.
    416 - Drop glyphs for all of Unicode Default_Ignorable characters.
    417 - Misc build fixes.
    418 
    419 Arabic shaper:
    420 - Enable 'dlig' and 'mset' features in Arabic shaper.
    421 - Implement 'Phags-pa shaping, improve Mongolian.
    422 
    423 Indic shaper:
    424 - Decompose Sinhala split matras the way old HarfBuzz / Pango did.
    425 - Initial support for Consonant Medials.
    426 - Start adding new-style Myanmar shaping.
    427 - Make reph and 'pref' logic introspect the font.
    428 - Route Meetei-Mayek through the Indic shaper.
    429 - Don't apply 'liga' in Indic shaper.
    430 - Improve Malayalam pre-base reordering Ra interaction with Chillus.
    431 
    432 
    433 
    434 Overview of changes leading to 0.9.5
    435 Sunday, October 14, 2012
    436 ====================================
    437 
    438 - Synthetic-GSUB Arabic fallback shaping.
    439 
    440 - Misc Indic improvements.
    441 
    442 - Add build system support for pthread.
    443 
    444 - Imported UCDN for in-tree Unicode callbacks implementation.
    445 
    446 - Context-aware Arabic joining.
    447 
    448 - Misc other fixes.
    449 
    450 - New API:
    451 
    452   hb_feature_to/from-string()
    453   hb_buffer_[sg]et_content_type()
    454 
    455 
    456 
    457 Overview of changes leading to 0.9.4
    458 Tuesday, Sep 03, 2012
    459 ====================================
    460 
    461 - Indic improvements with old-spec Malayalam.
    462 
    463 - Better fallback glyph positioning, specially with Thai / Lao marks.
    464 
    465 - Implement dotted-circle insertion.
    466 
    467 - Better Arabic fallback shaping / ligation.
    468 
    469 - Added ICU LayoutEngine backend for testing.  Call it by the 'icu_le' name.
    470 
    471 - Misc fixes.
    472 
    473 
    474 
    475 Overview of changes leading to 0.9.3
    476 Friday, Aug 18, 2012
    477 ====================================
    478 
    479 - Fixed fallback mark positioning for left-to-right text.
    480 
    481 - Improve mark positioning for the remaining combining classes.
    482 
    483 - Unbreak Thai and fallback Arabic shaping.
    484 
    485 - Port Arabic shaper to shape-plan caching.
    486 
    487 - Use new ICU normalizer functions.
    488 
    489 
    490 
    491 Overview of changes leading to 0.9.2
    492 Friday, Aug 10, 2012
    493 ====================================
    494 
    495 - Over a thousand commits!  This is the first major release of HarfBuzz.
    496 
    497 - HarfBuzz is feature-complete now!  It should be in par, or better, than
    498   both Pango's shapers and old HarfBuzz / Qt shapers.
    499 
    500 - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
    501 
    502 - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
    503   Sinhala, N'ko, Mongolian, and Mandaic.
    504 
    505 - New Thai / Lao shaper.
    506 
    507 - Tibetan / Hangul support in the generic shaper.
    508 
    509 - Synthetic GDEF support for fonts without a GDEF table.
    510 
    511 - Fallback mark positioning for fonts without a GPOS table.
    512 
    513 - Unicode normalization shaping heuristic during glyph mapping.
    514 
    515 - New experimental Graphite2 backend.
    516 
    517 - New Uniscribe backend (primarily for testing).
    518 
    519 - New CoreText backend (primarily for testing).
    520 
    521 - Major optimization and speedup.
    522 
    523 - Test suites and testing infrastructure (work in progress).
    524 
    525 - Greatly improved hb-view cmdline tool.
    526 
    527 - hb-shape cmdline tool.
    528 
    529 - Unicode 6.1 support.
    530 
    531 Summary of API changes:
    532 
    533 o Changed API:
    534 
    535   - Users are expected to only include main header files now (ie. hb.h,
    536     hb-glib.h, hb-ft.h, ...)
    537 
    538   - All struct tag names had their initial underscore removed.
    539     Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
    540 
    541   - All set_user_data() functions now take a "replace" boolean parameter.
    542 
    543   - hb_buffer_create() takes zero arguments now.
    544     Use hb_buffer_pre_allocate() to pre-allocate.
    545 
    546   - hb_buffer_add_utf*() now accept -1 for length parameteres,
    547     meaning "nul-terminated".
    548 
    549   - hb_direction_t enum values changed.
    550 
    551   - All *_from_string() APIs now take a length parameter to allow for
    552     non-nul-terminated strings. A -1 length means "nul-terminated".
    553 
    554   - Typedef for hb_language_t changed.
    555 
    556   - hb_get_table_func_t renamed to hb_reference_table_func_t.
    557 
    558   - hb_ot_layout_table_choose_script()
    559 
    560   - Various renames in hb-unicode.h.
    561 
    562 o New API:
    563 
    564   - hb_buffer_guess_properties()
    565     Automatically called by hb_shape().
    566 
    567   - hb_buffer_normalize_glyphs()
    568 
    569   - hb_tag_from_string()
    570 
    571   - hb-coretext.h
    572 
    573   - hb-uniscribe.h
    574 
    575   - hb_face_reference_blob()
    576   - hb_face_[sg]et_index()
    577   - hb_face_set_upem()
    578 
    579   - hb_font_get_glyph_name_func_t
    580     hb_font_get_glyph_from_name_func_t
    581     hb_font_funcs_set_glyph_name_func()
    582     hb_font_funcs_set_glyph_from_name_func()
    583     hb_font_get_glyph_name()
    584     hb_font_get_glyph_from_name()
    585     hb_font_glyph_to_string()
    586     hb_font_glyph_from_string()
    587 
    588   - hb_font_set_funcs_data()
    589 
    590   - hb_ft_font_set_funcs()
    591   - hb_ft_font_get_face()
    592 
    593   - hb-gobject.h (work in progress)
    594 
    595   - hb_ot_shape_glyphs_closure()
    596     hb_ot_layout_substitute_closure_lookup()
    597 
    598   - hb-set.h
    599 
    600   - hb_shape_full()
    601 
    602   - hb_unicode_combining_class_t
    603 
    604   - hb_unicode_compose_func_t
    605     hb_unicode_decompose_func_t
    606     hb_unicode_decompose_compatibility_func_t
    607     hb_unicode_funcs_set_compose_func()
    608     hb_unicode_funcs_set_decompose_func()
    609     hb_unicode_funcs_set_decompose_compatibility_func()
    610     hb_unicode_compose()
    611     hb_unicode_decompose()
    612     hb_unicode_decompose_compatibility()
    613 
    614 o Removed API:
    615 
    616   - hb_ft_get_font_funcs()
    617 
    618   - hb_ot_layout_substitute_start()
    619     hb_ot_layout_substitute_lookup()
    620     hb_ot_layout_substitute_finish()
    621     hb_ot_layout_position_start()
    622     hb_ot_layout_position_lookup()
    623     hb_ot_layout_position_finish()
    624 
    625 
    626 
    627 Overview of changes leading to 0.6.0
    628 Friday, May 27, 2011
    629 ====================================
    630 
    631 - Vertical text support in GPOS
    632 - Almost all API entries have unit tests now, under test/
    633 - All thread-safety issues are fixed
    634 
    635 Summary of API changes follows.
    636 
    637 
    638 * Simple Types API:
    639 
    640   o New API:
    641     HB_LANGUAGE_INVALID
    642     hb_language_get_default()
    643     hb_direction_to_string()
    644     hb_direction_from_string()
    645     hb_script_get_horizontal_direction()
    646     HB_UNTAG()
    647 
    648   o Renamed API:
    649     hb_category_t renamed to hb_unicode_general_category_t
    650 
    651   o Changed API:
    652     hb_language_t is a typed pointers now
    653 
    654   o Removed API:
    655     HB_TAG_STR()
    656 
    657 
    658 * Use ISO 15924 tags for hb_script_t:
    659 
    660   o New API:
    661     hb_script_from_iso15924_tag()
    662     hb_script_to_iso15924_tag()
    663     hb_script_from_string()
    664 
    665   o Changed API:
    666     HB_SCRIPT_* enum members changed value.
    667 
    668 
    669 * Buffer API streamlined:
    670 
    671   o New API:
    672     hb_buffer_reset()
    673     hb_buffer_set_length()
    674     hb_buffer_allocation_successful()
    675 
    676   o Renamed API:
    677     hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
    678     hb_buffer_add_glyph() renamed to hb_buffer_add()
    679 
    680   o Removed API:
    681     hb_buffer_clear()
    682     hb_buffer_clear_positions()
    683 
    684   o Changed API:
    685     hb_buffer_get_glyph_infos() takes an out length parameter now
    686     hb_buffer_get_glyph_positions() takes an out length parameter now
    687 
    688 
    689 * Blob API streamlined:
    690 
    691   o New API:
    692     hb_blob_get_data()
    693     hb_blob_get_data_writable()
    694 
    695   o Renamed API:
    696     hb_blob_create_empty() renamed to hb_blob_get_empty()
    697 
    698   o Removed API:
    699     hb_blob_lock()
    700     hb_blob_unlock()
    701     hb_blob_is_writable()
    702     hb_blob_try_writable()
    703 
    704   o Changed API:
    705     hb_blob_create() takes user_data before destroy now
    706 
    707 
    708 * Unicode functions API:
    709 
    710   o Unicode function vectors can subclass other unicode function vectors now.
    711     Unimplemented callbacks in the subclass automatically chainup to the parent.
    712 
    713   o All hb_unicode_funcs_t callbacks take a user_data now.  Their setters
    714     take a user_data and its respective destroy callback.
    715 
    716   o New API:
    717     hb_unicode_funcs_get_empty()
    718     hb_unicode_funcs_get_default()
    719     hb_unicode_funcs_get_parent()
    720 
    721   o Changed API:
    722     hb_unicode_funcs_create() now takes a parent_funcs.
    723 
    724   o Removed func getter functions:
    725     hb_unicode_funcs_get_mirroring_func()
    726     hb_unicode_funcs_get_general_category_func()
    727     hb_unicode_funcs_get_script_func()
    728     hb_unicode_funcs_get_combining_class_func()
    729     hb_unicode_funcs_get_eastasian_width_func()
    730 
    731 
    732 * Face API:
    733 
    734   o Renamed API:
    735     hb_face_get_table() renamed to hb_face_reference_table()
    736     hb_face_create_for_data() renamed to hb_face_create()
    737 
    738   o Changed API:
    739     hb_face_create_for_tables() takes user_data before destroy now
    740     hb_face_reference_table() returns empty blob instead of NULL
    741     hb_get_table_func_t accepts the face as first parameter now
    742 
    743 * Font API:
    744 
    745   o Fonts can subclass other fonts now.  Unimplemented callbacks in the
    746     subclass automatically chainup to the parent.  When chaining up,
    747     scale is adjusted if the parent font has a different scale.
    748 
    749   o All hb_font_funcs_t callbacks take a user_data now.  Their setters
    750     take a user_data and its respective destroy callback.
    751 
    752   o New API:
    753     hb_font_get_parent()
    754     hb_font_funcs_get_empty()
    755     hb_font_create_sub_font()
    756 
    757   o Removed API:
    758     hb_font_funcs_copy()
    759     hb_font_unset_funcs()
    760 
    761   o Removed func getter functions:
    762     hb_font_funcs_get_glyph_func()
    763     hb_font_funcs_get_glyph_advance_func()
    764     hb_font_funcs_get_glyph_extents_func()
    765     hb_font_funcs_get_contour_point_func()
    766     hb_font_funcs_get_kerning_func()
    767 
    768   o Changed API:
    769     hb_font_create() takes a face and references it now
    770     hb_font_set_funcs() takes user_data before destroy now
    771     hb_font_set_scale() accepts signed integers now
    772     hb_font_get_contour_point_func_t now takes glyph first, then point_index
    773     hb_font_get_glyph_func_t returns a success boolean now
    774 
    775 
    776 * Changed object model:
    777 
    778   o All object types have a _get_empty() now:
    779     hb_blob_get_empty()
    780     hb_buffer_get_empty()
    781     hb_face_get_empty()
    782     hb_font_get_empty()
    783     hb_font_funcs_get_empty()
    784     hb_unicode_funcs_get_empty()
    785 
    786   o Added _set_user_data() and _get_user_data() for all object types:
    787     hb_blob_get_user_data()
    788     hb_blob_set_user_data()
    789     hb_buffer_get_user_data()
    790     hb_buffer_set_user_data()
    791     hb_face_get_user_data()
    792     hb_face_set_user_data()
    793     hb_font_funcs_get_user_data()
    794     hb_font_funcs_set_user_data()
    795     hb_font_get_user_data()
    796     hb_font_set_user_data()
    797     hb_unicode_funcs_get_user_data()
    798     hb_unicode_funcs_set_user_data()
    799 
    800   o Removed the _get_reference_count() from all object types:
    801     hb_blob_get_reference_count()
    802     hb_buffer_get_reference_count()
    803     hb_face_get_reference_count()
    804     hb_font_funcs_get_reference_count()
    805     hb_font_get_reference_count()
    806     hb_unicode_funcs_get_reference_count()
    807 
    808   o Added _make_immutable() and _is_immutable() for all object types except for buffer:
    809     hb_blob_make_immutable()
    810     hb_blob_is_immutable()
    811     hb_face_make_immutable()
    812     hb_face_is_immutable()
    813 
    814 
    815 * Changed API for vertical text support
    816 
    817   o The following callbacks where removed:
    818     hb_font_get_glyph_advance_func_t
    819     hb_font_get_kerning_func_t
    820 
    821   o The following new callbacks added instead:
    822     hb_font_get_glyph_h_advance_func_t
    823     hb_font_get_glyph_v_advance_func_t
    824     hb_font_get_glyph_h_origin_func_t
    825     hb_font_get_glyph_v_origin_func_t
    826     hb_font_get_glyph_h_kerning_func_t
    827     hb_font_get_glyph_v_kerning_func_t
    828 
    829   o The following API removed as such:
    830     hb_font_funcs_set_glyph_advance_func()
    831     hb_font_funcs_set_kerning_func()
    832     hb_font_get_glyph_advance()
    833     hb_font_get_kerning()
    834 
    835   o New API added instead:
    836     hb_font_funcs_set_glyph_h_advance_func()
    837     hb_font_funcs_set_glyph_v_advance_func()
    838     hb_font_funcs_set_glyph_h_origin_func()
    839     hb_font_funcs_set_glyph_v_origin_func()
    840     hb_font_funcs_set_glyph_h_kerning_func()
    841     hb_font_funcs_set_glyph_v_kerning_func()
    842     hb_font_get_glyph_h_advance()
    843     hb_font_get_glyph_v_advance()
    844     hb_font_get_glyph_h_origin()
    845     hb_font_get_glyph_v_origin()
    846     hb_font_get_glyph_h_kerning()
    847     hb_font_get_glyph_v_kerning()
    848 
    849   o The following higher-leve API added for convenience:
    850     hb_font_get_glyph_advance_for_direction()
    851     hb_font_get_glyph_origin_for_direction()
    852     hb_font_add_glyph_origin_for_direction()
    853     hb_font_subtract_glyph_origin_for_direction()
    854     hb_font_get_glyph_kerning_for_direction()
    855     hb_font_get_glyph_extents_for_origin()
    856     hb_font_get_glyph_contour_point_for_origin()
    857 
    858 
    859 * OpenType Layout API:
    860 
    861   o New API:
    862     hb_ot_layout_position_start()
    863     hb_ot_layout_substitute_start()
    864     hb_ot_layout_substitute_finish()
    865 
    866 
    867 * Glue code:
    868 
    869   o New API:
    870     hb_glib_script_to_script()
    871     hb_glib_script_from_script()
    872     hb_icu_script_to_script()
    873     hb_icu_script_from_script()
    874 
    875 
    876 * Version API added:
    877 
    878   o New API:
    879     HB_VERSION_MAJOR
    880     HB_VERSION_MINOR
    881     HB_VERSION_MICRO
    882     HB_VERSION_STRING
    883     HB_VERSION_CHECK()
    884     hb_version()
    885     hb_version_string()
    886     hb_version_check()
    887 
    888 
    889