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