Home | History | Annotate | Download | only in harfbuzz_ng
      1 Overview of changes leading to 1.7.4
      2 Wednesday, December 20, 2017
      3 ====================================
      4 
      5 - Fix collect_glyphs() regression caused by hb_set_t changes.
      6 
      7 
      8 Overview of changes leading to 1.7.3
      9 Monday, December 18, 2017
     10 ====================================
     11 
     12 - hb_set_t performance tuning and optimizations.
     13 - Speed up collect_glyphs() and reject garbage data.
     14 - In hb_coretext_font_create() set font point-size (ptem).
     15 - Misc fixes.
     16 
     17 
     18 Overview of changes leading to 1.7.2
     19 Monday, December 4, 2017
     20 ====================================
     21 
     22 - Optimize hb_set_add_range().
     23 - Misc fixes.
     24 - New API:
     25 hb_coretext_font_create()
     26 
     27 
     28 Overview of changes leading to 1.7.1
     29 Tuesday, November 14, 2017
     30 ====================================
     31 
     32 - Fix atexit object destruction regression.
     33 - Fix minor integer-overflow.
     34 
     35 
     36 Overview of changes leading to 1.7.0
     37 Monday, November 13, 2017
     38 ====================================
     39 
     40 - Minor Indic fixes.
     41 - Implement kerning and glyph names in hb-ot-font.
     42 - Various DSO optimization re .data and .bss sizes.
     43 - Make C++11 optional; build fixes.
     44 - Mark all other backends "unsafe-to-break".
     45 - Graphite fix.
     46 
     47 
     48 Overview of changes leading to 1.6.3
     49 Thursday, October 26th, 2017
     50 ====================================
     51 
     52 - Fix hb_set_t some more.  Should be solid now.
     53 - Implement get_glyph_name() for hb-ot-font.
     54 - Misc fixes.
     55 
     56 
     57 Overview of changes leading to 1.6.2
     58 Monday, October 23nd, 2017
     59 ====================================
     60 
     61 - Yesterday's release had a bad crasher; don't use it.  That's what
     62   happens when one works on Sunday...
     63   https://github.com/harfbuzz/harfbuzz/issues/578
     64 - Build fixes for FreeBSD and Chrome Android.
     65 
     66 
     67 Overview of changes leading to 1.6.1
     68 Sunday, October 22nd, 2017
     69 ====================================
     70 
     71 - Don't skip over COMBINING GRAPHEME JOINER when ligating, etc.
     72   To be refined: https://github.com/harfbuzz/harfbuzz/issues/554
     73 - Faster hb_set_t implementation.
     74 - Don't use deprecated ICU API.
     75 - Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0
     76 - Deprecated API:
     77   hb_set_invert()
     78 
     79 
     80 Overview of changes leading to 1.6.0
     81 Friday, October the 13th, 2017
     82 ====================================
     83 
     84 - Update to Unicode 10.
     85 
     86 - Various Indic and Universal Shaping Engine fixes as a result of
     87   HarfBuzz Hackfest with Jonathan Kew at Web Engines Hackfest at
     88   the Igalia offices in A Corua, Spain.  Thanks Igalia for having
     89   us!
     90 
     91 - Implement Unicode Arabic Mark Ordering Algorithm UTR#53.
     92 
     93 - Implement optical sizing / tracking in CoreText backend, using
     94   new API hb_font_set_ptem().
     95 
     96 - Allow notifying hb_font_t that underlying FT_Face changed sizing,
     97   using new API hb_ft_font_changed().
     98 
     99 - More Graphite backend RTL fixes.
    100 
    101 - Fix caching of variable font shaping plans.
    102 
    103 - hb-view / hb-shape now accept following new arguments:
    104 
    105   o --unicodes: takes a list of hex numbers that represent Unicode
    106     codepoints.
    107 
    108 New API:
    109 +hb_face_get_table_tags()
    110 +hb_font_set_ptem()
    111 +hb_font_get_ptem()
    112 +hb_ft_font_changed()
    113 
    114 
    115 Overview of changes leading to 1.5.1
    116 Tuesday, September 5, 2017
    117 ====================================
    118 
    119 - Fix "unsafe-to-break" in fallback shaping and other corner cases.
    120   All our tests pass with --verify now, meaning unsafe-to-break API
    121   works as expected.
    122 - Add --unicodes to hb-view / hb-shape.
    123 - [indic] Treat Consonant_With_Stacker as consonant.  This will need
    124   further tweaking.
    125 - hb_buffer_diff() tweaks.
    126 
    127 
    128 Overview of changes leading to 1.5.0
    129 Wednesday, August 23, 2017
    130 ====================================
    131 
    132 - Misc new API, for appending a buffer to another, and for comparing
    133   contents of two buffers for types of differences.
    134 
    135 - New "unsafe-to-break" API.  Can be used to speed up reshaping
    136   in line-breaking situations.  Essentially, after shaping, it returns
    137   positions in the input string (some of the cluster boundaries) that
    138   are "safe to break" in that if the text is segmented at that position
    139   and two sides reshaped and concatenated, the shaping result is
    140   exactly the same as shaping the text in one piece.
    141 
    142   hb-view and hb-shape and hb-shape now take --verify, which verifies
    143   the above property.
    144 
    145   Some corner cases of the implementation are still not quite working.
    146   Those will be fixed in subsequent releases.
    147 
    148 - New API:
    149 
    150 hb_buffer_append()
    151 
    152 hb_glyph_flags_t
    153 HB_GLYPH_FLAG_UNSAFE_TO_BREAK
    154 HB_GLYPH_FLAG_DEFINED
    155 hb_glyph_info_get_glyph_flags()
    156 
    157 HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS
    158 
    159 hb_buffer_diff_flags_t
    160 HB_BUFFER_DIFF_FLAG_EQUAL
    161 HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH
    162 HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH
    163 HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT
    164 HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT
    165 HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH
    166 HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH
    167 HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH
    168 HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH
    169 hb_buffer_diff
    170 
    171 
    172 Overview of changes leading to 1.4.8
    173 Tuesday, August 8, 2017
    174 ====================================
    175 
    176 - Major fix to avar table handling.
    177 - Rename hb-shape --show-message to --trace.
    178 - Build fixes.
    179 
    180 
    181 Overview of changes leading to 1.4.7
    182 Tuesday, July 18, 2017
    183 ====================================
    184 
    185 - Multiple Indic, Tibetan, and Cham fixes.
    186 - CoreText: Allow disabling kerning.
    187 - Adjust Arabic feature order again.
    188 - Misc build fixes.
    189 
    190 
    191 Overview of changes leading to 1.4.6
    192 Sunday, April 23, 2017
    193 ====================================
    194 
    195 - Graphite2: Fix RTL positioning issue.
    196 - Backlist GDEF of more versions of Padauk and Tahoma.
    197 - New, experimental, cmake alternative build system.
    198 
    199 
    200 Overview of changes leading to 1.4.5
    201 Friday, March 10, 2017
    202 ====================================
    203 
    204 - Revert "Fix Context lookup application when moving back after a glyph..."
    205   This introduced memory access problems.  To be fixed properly soon.
    206 
    207 
    208 Overview of changes leading to 1.4.4
    209 Sunday, March 5, 2017
    210 ====================================
    211 
    212 - Fix Context lookup application when moving back after a glyph deletion.
    213 - Fix buffer-overrun in Bengali.
    214 
    215 
    216 Overview of changes leading to 1.4.3
    217 Saturday, February 25, 2017
    218 ====================================
    219 
    220 - Route Adlam script to Arabic shaper.
    221 - Misc fixes.
    222 - New API:
    223   hb_font_set_face()
    224 - Deprecate API:
    225   hb_graphite2_font_get_gr_font()
    226 
    227 
    228 Overview of changes leading to 1.4.2
    229 Monday, January 23, 2017
    230 ====================================
    231 
    232 - Implement OpenType Font Variation tables avar/fvar/HVAR/VVAR.
    233 - hb-shape and hb-view now accept --variations.
    234 - New API:
    235 
    236 hb_variation_t
    237 hb_variation_from_string()
    238 hb_variation_to_string()
    239 
    240 hb_font_set_variations()
    241 hb_font_set_var_coords_design()
    242 hb_font_get_var_coords_normalized()
    243 
    244 hb-ot-var.h:
    245 hb_ot_var_axis_t
    246 hb_ot_var_has_data()
    247 hb_ot_var_get_axis_count()
    248 hb_ot_var_get_axes()
    249 hb_ot_var_find_axis()
    250 hb_ot_var_normalize_variations()
    251 hb_ot_var_normalize_coords()
    252 
    253 - MVAR to be implemented later.  Access to named instances to be
    254   implemented later as well.
    255 
    256 - Misc fixes.
    257 
    258 
    259 Overview of changes leading to 1.4.1
    260 Thursday, January 5, 2017
    261 ====================================
    262 
    263 - Always build and use UCDN for Unicode data by default.
    264   Reduces dependence on version of Unicode data in glib,
    265   specially in the Windows bundles we are shipping, which
    266   have very old glib.
    267 
    268 
    269 Overview of changes leading to 1.4.0
    270 Thursday, January 5, 2017
    271 ====================================
    272 
    273 - Merged "OpenType GX" branch which adds core of support for
    274   OpenType 1.8 Font Variations.  To that extent, the relevant
    275   new API is:
    276 
    277 New API:
    278 hb_font_set_var_coords_normalized()
    279 
    280   with supporting API:
    281 
    282 New API:
    283 HB_OT_LAYOUT_NO_VARIATIONS_INDEX
    284 hb_ot_layout_table_find_feature_variations()
    285 hb_ot_layout_feature_with_variations_get_lookups()
    286 hb_shape_plan_create2()
    287 hb_shape_plan_create_cached2()
    288 
    289   Currently variations in GSUB/GPOS/GDEF are fully supported,
    290   and no other tables are supported.  In particular, fvar/avar
    291   are NOT supported, hence the hb_font_set_var_coords_normalized()
    292   taking normalized coordinates.  API to take design coordinates
    293   will be added in the future.
    294 
    295   HVAR/VVAR/MVAR support will also be added to hb-ot-font in the
    296   future.
    297 
    298 - Fix regression in GDEF glyph class processing.
    299 - Add decompositions for Chakma, Limbu, and Balinese in USE shaper.
    300 - Misc fixes.
    301 
    302 
    303 Overview of changes leading to 1.3.4
    304 Monday, December 5, 2016
    305 ====================================
    306 
    307 - Fix vertical glyph origin in hb-ot-font.
    308 - Implement CBDT/CBLC color font glyph extents in hb-ot-font.
    309 
    310 
    311 Overview of changes leading to 1.3.3
    312 Wednesday, September 28, 2016
    313 ====================================
    314 
    315 - Implement parsing of OpenType MATH table.
    316 New API:
    317 HB_OT_TAG_MATH
    318 HB_OT_MATH_SCRIPT
    319 hb_ot_math_constant_t
    320 hb_ot_math_kern_t
    321 hb_ot_math_glyph_variant_t
    322 hb_ot_math_glyph_part_flags_t
    323 hb_ot_math_glyph_part_t
    324 hb_ot_math_has_data
    325 hb_ot_math_get_constant
    326 hb_ot_math_get_glyph_italics_correction
    327 hb_ot_math_get_glyph_top_accent_attachment
    328 hb_ot_math_get_glyph_kerning
    329 hb_ot_math_is_glyph_extended_shape
    330 hb_ot_math_get_glyph_variants
    331 hb_ot_math_get_min_connector_overlap
    332 hb_ot_math_get_glyph_assembly
    333 
    334 
    335 Overview of changes leading to 1.3.2
    336 Wednesday, September 27, 2016
    337 ====================================
    338 
    339 - Fix build of hb-coretext on older OS X versions.
    340 
    341 
    342 Overview of changes leading to 1.3.1
    343 Wednesday, September 7, 2016
    344 ====================================
    345 
    346 - Blacklist bad GDEF of more fonts (Padauk).
    347 - More CoreText backend crash fixes with OS X 10.9.5.
    348 - Misc fixes.
    349 
    350 
    351 Overview of changes leading to 1.3.0
    352 Thursday, July 21, 2016
    353 ====================================
    354 
    355 - Update to Unicode 9.0.0
    356 - Move Javanese from Indic shaper to Universal Shaping Engine.
    357 - Allow MultipleSubst to delete a glyph (matching Windows engine).
    358 - Update Universal Shaping Engine to latest draft from Microsoft.
    359 - DirectWrite backend improvements.  Note: this backend is for testing ONLY.
    360 - CoreText backend improvements with unreachable fonts.
    361 - Implement symbol fonts (cmap 3.0.0) in hb-ft and hb-ot-font.
    362 - Blacklist bad GDEF of more fonts (Tahoma & others).
    363 - Misc fixes.
    364 
    365 
    366 Overview of changes leading to 1.2.7
    367 Monday, May 2, 2016
    368 ====================================
    369 
    370 - Blacklist another version of Times New Roman (Bold) Italic from Windows 7.
    371 - Fix Mongolian Free Variation Selectors shaping with certain fonts.
    372 - Fix Tibetan shorthand contractions shaping.
    373 - Improved list of language tag mappings.
    374 - Unbreak build on Windows CE.
    375 - Make 'glyf' table loading lazy in hb-ot-font.
    376 
    377 
    378 Overview of changes leading to 1.2.6
    379 Friday, April 8, 2016
    380 ====================================
    381 
    382 - Blacklist GDEF table of another set of Times New Roman (Bold) Italic.
    383 - DirectWrite backend improvements.  Note: DirectWrite backend is
    384   exclusively for our internal testing and should NOT be used in any
    385   production system whatsoever.
    386 
    387 
    388 Overview of changes leading to 1.2.5
    389 Monday, April 4, 2016
    390 ====================================
    391 
    392 - Fix GDEF mark-filtering-set, which was broken in 1.2.3.
    393 
    394 
    395 Overview of changes leading to 1.2.4
    396 Thursday, March 17, 2016
    397 ====================================
    398 
    399 - Synthesize GDEF glyph class for any glyph that does not have one in GDEF.
    400   I really hope we don't discover broken fonts that shape badly with this
    401   change.
    402 - Misc build and other minor fixes.
    403 - API changes:
    404   - Added HB_NDEBUG.  It's fine for production systems to define this to
    405     disable high-overhead debugging checks.  However, I also reduced the
    406     overhead of those checks, so it's a non-issue right now.  You can
    407     forget it.  Just not defining anything at all is fine.
    408 
    409 
    410 Overview of changes leading to 1.2.3
    411 Thursday, February 25, 2016
    412 ====================================
    413 
    414 - Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic,
    415   due to bug in glyph class of ASCII double-quote character.  This should
    416   address "regression" introduced in 1.2.0 when we switched mark zeroing
    417   in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE.
    418   This fourth release in a week should finally stablize things...
    419 
    420 - hb-ot-font's get_glyph() implementation saw some optimizations.  Though,
    421   might be really hard to measure in real-world situations.
    422 
    423 - Also, two rather small API changes:
    424 
    425 We now disable some time-consuming internal bookkeeping if built with NDEBUG
    426 defined.  This is a first time that we use NDEBUG to disable debug code.  If
    427 there exist production systems that do NOT want to enable NDEBUG, please let
    428 me know and I'll add HB_NDEBUG.
    429 
    430 Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph()
    431 
    432 New API:
    433 - hb_font_get_nominal_glyph_func_t
    434 - hb_font_get_variation_glyph_func_t
    435 - hb_font_funcs_set_nominal_glyph_func()
    436 - hb_font_funcs_set_variation_glyph_func()
    437 - hb_font_get_nominal_glyph()
    438 - hb_font_get_variation_glyph()
    439 
    440 Deprecated API:
    441 - hb_font_get_glyph_func_t
    442 - hb_font_funcs_set_glyph_func()
    443 
    444 Clients that implement their own font-funcs are encouraged to replace
    445 their get_glyph() implementation with a get_nominal_glyph() and
    446 get_variation_glyph() pair.  The variation version can assume that
    447 variation_selector argument is not zero.  Old (deprecated) functions
    448 will continue working indefinitely using internal gymnastics; it is
    449 just more efficient to use the new functions.
    450 
    451 
    452 Overview of changes leading to 1.2.2
    453 Wednesday, February 24, 2016
    454 ====================================
    455 
    456 - Fix regression with mark positioning with fonts that have
    457   non-zero mark advances.  This was introduced in 1.2.0 while
    458   trying to make mark and cursive attachments to work together.
    459   I have partially reverted that, so this version is much more
    460   like what we had before.  All clients who updated to 1.2.0
    461   should update to this version.
    462 
    463 
    464 Overview of changes leading to 1.2.1
    465 Tuesday, February 23, 2016
    466 ====================================
    467 
    468 - CoreText: Fix bug with wrong scale if font scale was changed later.
    469   https://github.com/libass/libass/issues/212
    470 - CoreText: Drastically speed up font initialization.
    471 - CoreText: Fix tiny leak.
    472 - Group ZWJ/ZWNJ with previous syllable under cluster-level=0.
    473   https://github.com/harfbuzz/harfbuzz/issues/217
    474 - Add test/shaping/README.md about how to add tests to the suite.
    475 
    476 
    477 Overview of changes leading to 1.2.0
    478 Friday, February 19, 2016
    479 ====================================
    480 
    481 - Fix various issues (hangs mostly) in case of memory allocation failure.
    482 - Change mark zeroing types of most shapers from BY_UNICODE_LATE to
    483   BY_GDEF_LATE.  This seems to be what Uniscribe does.
    484 - Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY.  That's
    485   what Windows does.
    486 - Allow GPOS cursive connection on marks, and fix the interaction with
    487   mark attachment.  This work resulted in some changes to how mark
    488   attachments work.  See:
    489   https://github.com/harfbuzz/harfbuzz/issues/211
    490   https://github.com/harfbuzz/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
    491 - Graphite2 shaper: improved negative advance handling (eg. Nastaliq).
    492 - Add nmake-based build system for Windows.
    493 - Minor speedup.
    494 - Misc. improvements.
    495 
    496 
    497 Overview of changes leading to 1.1.3
    498 Monday, January 11, 2016
    499 ====================================
    500 
    501 - Ported Indic shaper to Unicode 8.0 data.
    502 - Universal Shaping Engine fixes.
    503 - Speed up CoreText shaper when font fallback happens in CoreText.
    504 - Documentation improvements, thanks to Khaled Hosny.
    505 - Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi.
    506 - Misc bug fixes.
    507 - New API:
    508 
    509   * Font extents:
    510       hb_font_extents_t
    511       hb_font_get_font_extents_func_t
    512       hb_font_get_font_h_extents_func_t
    513       hb_font_get_font_v_extents_func_t
    514       hb_font_funcs_set_font_h_extents_func
    515       hb_font_funcs_set_font_v_extents_func
    516       hb_font_get_h_extents
    517       hb_font_get_v_extents
    518       hb_font_get_extents_for_direction
    519 
    520   * Buffer message (aka debug):
    521       hb_buffer_message_func_t
    522       hb_buffer_set_message_func()
    523     Actual message protocol to be fleshed out later.
    524 
    525 
    526 Overview of changes leading to 1.1.2
    527 Wednesday, November 26, 2015
    528 ====================================
    529 
    530 - Fix badly-broken fallback shaper that affected terminology.
    531   https://github.com/harfbuzz/harfbuzz/issues/187
    532 - Fix y_scaling in Graphite shaper.
    533 - API changes:
    534   * An unset glyph_h_origin() function in font-funcs now (sensibly)
    535     implies horizontal origin at 0,0.  Ie, the nil callback returns
    536     true instead of false.  As such, implementations that have a
    537     glyph_h_origin() that simply returns true, can remove that function
    538     with HarfBuzz >= 1.1.2.  This results in a tiny speedup.
    539 
    540 
    541 Overview of changes leading to 1.1.1
    542 Wednesday, November 24, 2015
    543 ====================================
    544 
    545 - Build fixes, specially for hb-coretext.
    546 
    547 
    548 Overview of changes leading to 1.1.0
    549 Wednesday, November 18, 2015
    550 ====================================
    551 
    552 - Implement 'stch' stretch feature for Syriac Abbreviation Mark.
    553   https://github.com/harfbuzz/harfbuzz/issues/141
    554 - Disable use of decompose_compatibility() callback.
    555 - Implement "shaping" of various Unicode space characters, even
    556   if the font does not support them.
    557   https://github.com/harfbuzz/harfbuzz/issues/153
    558 - If font does not support U+2011 NO-BREAK HYPHEN, fallback to
    559   U+2010 HYPHEN.
    560 - Changes resulting from libFuzzer continuous fuzzing:
    561   * Reject font tables that need more than 8 edits,
    562   * Bound buffer growth during shaping to 32x,
    563   * Fix assertions and other issues at OOM / buffer max-growth.
    564 - Misc fixes and optimizations.
    565 - API changes:
    566   * All fonts created with hb_font_create() now inherit from
    567     (ie. have parent) hb_font_get_empty().
    568 
    569 
    570 Overview of changes leading to 1.0.6
    571 Thursday, October 15, 2015
    572 ====================================
    573 
    574 - Reduce max nesting level in OT lookups from 8 to 6.
    575   Should not affect any real font as far as I know.
    576 - Fix memory access issue in ot-font.
    577 - Revert default load-flags of fonts created using hb_ft_font_create()
    578   back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING.  This was changed in
    579   last release (1.0.5), but caused major issues, so revert.
    580   https://github.com/harfbuzz/harfbuzz/issues/143
    581 
    582 
    583 Overview of changes leading to 1.0.5
    584 Tuesday, October 13, 2015
    585 ====================================
    586 
    587 - Fix multiple memory access bugs discovered using libFuzzer.
    588   https://github.com/harfbuzz/harfbuzz/issues/139
    589   Everyone should upgrade to this version as soon as possible.
    590   We now have continuous fuzzing set up, to avoid issues like
    591   these creeping in again.
    592 - Misc fixes.
    593 
    594 - New API:
    595   * hb_font_set_parent().
    596   * hb_ft_font_[sg]et_load_flags()
    597     The default flags for fonts created using hb_ft_font_create()
    598     has changed to default to FT_LOAD_DEFAULT now.  Previously it
    599     was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING.
    600 
    601 - API changes:
    602   * Fonts now default to units-per-EM as their scale, instead of 0.
    603   * hb_font_create_sub_font() does NOT make parent font immutable
    604     anymore.  hb_font_make_immutable() does.
    605 
    606 
    607 Overview of changes leading to 1.0.4
    608 Wednesday, September 30, 2015
    609 ====================================
    610 
    611 - Fix minor out-of-bounds read error.
    612 
    613 
    614 Overview of changes leading to 1.0.3
    615 Tuesday, September 1, 2015
    616 ====================================
    617 
    618 - Start of user documentation, from Simon Cozens!
    619 - Implement glyph_extents() for TrueType fonts in hb-ot-font.
    620 - Improve GPOS cursive attachments with conflicting lookups.
    621 - More fixes for cluster-level = 1.
    622 - Uniscribe positioning fix.
    623 
    624 
    625 Overview of changes leading to 1.0.2
    626 Wednesday, August 19, 2015
    627 ====================================
    628 
    629 - Fix shaping with cluster-level > 0.
    630 - Fix Uniscribe backend font-size scaling.
    631 - Declare dependencies in harfbuzz.pc.
    632   FreeType is not declared though, to avoid bugs in pkg-config
    633   0.26 with recursive dependencies.
    634 - Slightly improved debug infrastructure.  More to come later.
    635 - Misc build fixes.
    636 
    637 
    638 Overview of changes leading to 1.0.1
    639 Monday, July 27, 2015
    640 ====================================
    641 
    642 - Fix out-of-bounds access in USE shaper.
    643 
    644 
    645 Overview of changes leading to 1.0.0
    646 Sunday, July 26, 2015
    647 ====================================
    648 
    649 - Implement Universal Shaping Engine:
    650   https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
    651   http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/
    652 - Bump version to 1.0.0.  The soname was NOT bumped.
    653 
    654 
    655 Overview of changes leading to 0.9.42
    656 Thursday, July 26, 2015
    657 =====================================
    658 
    659 - New API to allow for retrieving finer-grained cluster
    660   mappings if the client desires to handle them.  Default
    661   behavior is unchanged.
    662 - Fix cluster merging when removing default-ignorables.
    663 - Update to Unicode 8.0
    664 - hb-graphite2 fixes.
    665 - Misc fixes.
    666 - Removed HB_NO_MERGE_CLUSTERS hack.
    667 - New API:
    668   hb_buffer_cluster_level_t enum
    669   hb_buffer_get_cluster_level()
    670   hb_buffer_set_cluster_level()
    671   hb-shape / hb-view --cluster-level
    672 
    673 
    674 Overview of changes leading to 0.9.41
    675 Thursday, June 18, 2015
    676 =====================================
    677 
    678 - Fix hb-coretext with trailing whitespace in right-to-left.
    679 - New API: hb_buffer_reverse_range().
    680 - Allow implementing atomic ops in config.h.
    681 - Fix hb_language_t in language bindings.
    682 - Misc fixes.
    683 
    684 
    685 Overview of changes leading to 0.9.40
    686 Friday, March 20, 2015
    687 =====================================
    688 
    689 - Another hb-coretext crasher fix.  Ouch!
    690 - Happy Norouz!
    691 
    692 
    693 Overview of changes leading to 0.9.39
    694 Wednesday, March 4, 2015
    695 =====================================
    696 
    697 - Critical hb-coretext fixes.
    698 - Optimizations and refactoring; no functional change
    699   expected.
    700 - Misc build fixes.
    701 
    702 
    703 Overview of changes leading to 0.9.38
    704 Friday, January 23, 2015
    705 =====================================
    706 
    707 - Fix minor out-of-bounds access in Indic shaper.
    708 - Change New Tai Lue shaping engine from South-East Asian to default,
    709   reflecting change in Unicode encoding model.
    710 - Add hb-shape --font-size.  Can take up to two numbers for separate
    711   x / y size.
    712 - Fix CoreText and FreeType scale issues with negative scales.
    713 - Reject blobs larger than 2GB.  This might break some icu-le-hb clients
    714   that need security fixes.  See:
    715   http://www.icu-project.org/trac/ticket/11450
    716 - Avoid accessing font tables during face destruction, in casce rogue
    717   clients released face data already.
    718 - Fix up gobject-introspection a bit.  Python bindings kinda working.
    719   See README.python.
    720 - Misc fixes.
    721 - API additions:
    722   hb_ft_face_create_referenced()
    723   hb_ft_font_create_referenced()
    724 
    725 
    726 Overview of changes leading to 0.9.37
    727 Wednesday, December 17, 2014
    728 =====================================
    729 
    730 - Fix out-of-bounds access in Context lookup format 3.
    731 - Indic: Allow ZWJ/ZWNJ before syllable modifiers.
    732 
    733 
    734 Overview of changes leading to 0.9.36
    735 Thursday, November 20, 2014
    736 =====================================
    737 
    738 - First time that three months went by without a release since
    739   0.9.2 was released on August 10, 2012!
    740 - Fix performance bug in hb_ot_collect_glyphs():
    741   https://bugzilla.mozilla.org/show_bug.cgi?id=1090869
    742 - Add basic vertical-text support to hb-ot-font.
    743 - Misc build fixes.
    744 
    745 
    746 Overview of changes leading to 0.9.35
    747 Saturday, August 13, 2014
    748 =====================================
    749 
    750 - Fix major shape-plan caching bug when more than one shaper were
    751   provided to hb_shape_full() (as exercised by XeTeX).
    752   http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html
    753 - Fix Arabic fallback shaping regression.  This was broken in 0.9.32.
    754 - Major hb-coretext fixes.  That backend is complete now, including
    755   respecing buffer direction and language, down to vertical writing.
    756 - Build fixes for Windows CE.  Should build fine now.
    757 - Misc fixes:
    758   Use atexit() only if it's safe to call from shared library
    759   https://bugs.freedesktop.org/show_bug.cgi?id=82246
    760   Mandaic had errors in its Unicode Joining_Type
    761   https://bugs.freedesktop.org/show_bug.cgi?id=82306
    762 - API changes:
    763 
    764   * hb_buffer_clear_contents() does not reset buffer flags now.
    765 
    766     After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
    767     need to set flags for different pieces of text.  The flags now
    768     are something the client sets up once, depending on how it
    769     actually uses the buffer.  As such, don't clear it in
    770     clear_contents().
    771 
    772     I don't expect any changes to be needed to any existing client.
    773 
    774 
    775 Overview of changes leading to 0.9.34
    776 Saturday, August 2, 2014
    777 =====================================
    778 
    779 - hb_feature_from_string() now accepts CSS font-feature-settings format.
    780 - As a result, hb-shape / hb-view --features also accept CSS-style strings.
    781   Eg, "'liga' off" is accepted now.
    782 - Add old-spec Myanmar shaper:
    783   https://bugs.freedesktop.org/show_bug.cgi?id=81775
    784 - Don't apply 'calt' in Hangul shaper.
    785 - Fix mark advance zeroing for Hebrew shaper:
    786   https://bugs.freedesktop.org/show_bug.cgi?id=76767
    787 - Implement Windows-1256 custom Arabic shaping.  Only built on Windows,
    788   and requires help from get_glyph().  Used by Firefox.
    789   https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
    790 - Disable 'liga' in vertical text.
    791 - Build fixes.
    792 - API changes:
    793 
    794   * Make HB_BUFFER_FLAG_BOT/EOT easier to use.
    795 
    796     Previously, we expected users to provide BOT/EOT flags when the
    797     text *segment* was at paragraph boundaries.  This meant that for
    798     clients that provide full paragraph to HarfBuzz (eg. Pango), they
    799     had code like this:
    800 
    801       hb_buffer_set_flags (hb_buffer,
    802                            (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
    803                            (item_offset + item_length == paragraph_length ?
    804                             HB_BUFFER_FLAG_EOT : 0));
    805 
    806       hb_buffer_add_utf8 (hb_buffer,
    807                           paragraph_text, paragraph_length,
    808                           item_offset, item_length);
    809 
    810     After this change such clients can simply say:
    811 
    812       hb_buffer_set_flags (hb_buffer,
    813                            HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
    814 
    815       hb_buffer_add_utf8 (hb_buffer,
    816                           paragraph_text, paragraph_length,
    817                           item_offset, item_length);
    818 
    819     Ie, HarfBuzz itself checks whether the segment is at the beginning/end
    820     of the paragraph.  Clients that only pass item-at-a-time to HarfBuzz
    821     continue not setting any flags whatsoever.
    822 
    823     Another way to put it is: if there's pre-context text in the buffer,
    824     HarfBuzz ignores the BOT flag.  If there's post-context, it ignores
    825     EOT flag.
    826 
    827 
    828 Overview of changes leading to 0.9.33
    829 Tuesday, July 22, 2014
    830 =====================================
    831 
    832 - Turn off ARabic 'cswh' feature that was accidentally turned on.
    833 - Add HB_TAG_MAX_SIGNED.
    834 - Make hb_face_make_immutable() really make face immutable!
    835 - Windows build fixes.
    836 
    837 
    838 Overview of changes leading to 0.9.32
    839 Thursday, July 17, 2014
    840 =====================================
    841 
    842 - Apply Arabic shaping features in spec order exactly.
    843 - Another fix for Mongolian free variation selectors.
    844 - For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt'
    845   together.
    846 - Minor adjustment to U+FFFD logic.
    847 - Fix hb-coretext build.
    848 
    849 
    850 Overview of changes leading to 0.9.31
    851 Wednesday, July 16, 2014
    852 =====================================
    853 
    854 - Only accept valid UTF-8/16/32; we missed many cases before.
    855 - Better shaping of invalid UTF-8/16/32.  Falls back to
    856   U+FFFD REPLACEMENT CHARACTER now.
    857 - With all changes in this release, the buffer will contain fully
    858   valid Unicode after hb_buffer_add_utf8/16/32 no matter how
    859   broken the input is.  This can be overridden though.  See below.
    860 - Fix Mongolian Variation Selectors for fonts without GDEF.
    861 - Fix minor invalid buffer access.
    862 - Accept zh-Hant and zh-Hans language tags.  hb_ot_tag_to_language()
    863   now uses these instead of private tags.
    864 - Build fixes.
    865 - New API:
    866   * hb_buffer_add_codepoints().  This does what hb_buffer_add_utf32()
    867     used to do, ie. no validity check on the input at all.  add_utf32
    868     now replaces invalid Unicode codepoints with the replacement
    869     character (see below).
    870   * hb_buffer_set_replacement_codepoint()
    871   * hb_buffer_get_replacement_codepoint()
    872     Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when
    873     we detected broken input, we replaced that with (hb_codepoint_t)-1.
    874     This has changed to use U+FFFD now, but can be changed using these
    875     new API.
    876 
    877 
    878 Overview of changes leading to 0.9.30
    879 Wednesday, July 9, 2014
    880 =====================================
    881 
    882 - Update to Unicode 7.0.0:
    883   * New scripts Manichaean and Psalter Pahlavi are shaped using
    884     Arabic shaper.
    885   * All the other new scripts to through the generic shaper for
    886     now.
    887 - Minor Indic improvements.
    888 - Fix graphite2 backend cluster mapping [crasher!]
    889 - API changes:
    890   * New HB_SCRIPT_* values for Unicode 7.0 scripts.
    891   * New function hb_ot_layout_language_get_required_feature().
    892 - Build fixes.
    893 
    894 
    895 Overview of changes leading to 0.9.29
    896 Thursday, May 29, 2014
    897 =====================================
    898 
    899 - Implement cmap in hb-ot-font.h.  No variation-selectors yet.
    900 - Myanmar: Allow MedialYa+Asat.
    901 - Various Indic fixes:
    902   * Support most characters in Extended Devanagary and Vedic
    903     Unicode blocks.
    904   * Allow digits and a some punctuation as consonant placeholders.
    905 - Build fixes.
    906 
    907 
    908 Overview of changes leading to 0.9.28
    909 Monday, April 28, 2014
    910 =====================================
    911 
    912 - Unbreak old-spec Indic shaping. (bug 76705)
    913 - Fix shaping of U+17DD and U+0FC6.
    914 - Add HB_NO_MERGE_CLUSTERS build option.  NOT to be enabled by default
    915   for shipping libraries.  It's an option for further experimentation
    916   right now.  When we are sure how to do it properly, we will add
    917   public run-time API for the functionality.
    918 - Build fixes.
    919 
    920 
    921 Overview of changes leading to 0.9.27
    922 Tuesday, March 18, 2014
    923 =====================================
    924 
    925 - Don't use "register" storage class specifier
    926 - Wrap definition of free_langs() with HAVE_ATEXIT
    927 - Add coretext_aat shaper and hb_coretext_face_create() constructor
    928 - If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
    929 - Add Myanmar test case from OpenType Myanmar spec
    930 - Only do fallback Hebrew composition if no GPOS 'mark' available
    931 - Allow bootstrapping without gtk-doc
    932 - Use AM_MISSING_PROG for ragel and git
    933 - Typo in ucdn's Makefile.am
    934 - Improve MemoryBarrier() implementation
    935 
    936 
    937 Overview of changes leading to 0.9.26
    938 Thursday, January 30, 2014
    939 =====================================
    940 
    941 - Misc fixes.
    942 - Fix application of 'rtlm' feature.
    943 - Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH.
    944 - New header: hb-ot-shape.h
    945 - Uniscribe: fix scratch-buffer accounting.
    946 - Reorder Tai Tham SAKOT to after tone-marks.
    947 - Add Hangul shaper.
    948 - New files:
    949   hb-ot-shape-complex-hangul.cc
    950   hb-ot-shape-complex-hebrew.cc
    951   hb-ot-shape-complex-tibetan.cc
    952 - Disable 'cswh' feature in Arabic shaper.
    953 - Coretext: better handle surrogate pairs.
    954 - Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE.
    955 
    956 
    957 Overview of changes leading to 0.9.25
    958 Wednesday, December 4, 2013
    959 =====================================
    960 
    961 - Myanmar shaper improvements.
    962 - Avoid font fallback in CoreText backend.
    963 - Additional OpenType language tag mappiongs.
    964 - More aggressive shape-plan caching.
    965 - Build with / require automake 1.13.
    966 - Build with libtool 2.4.2.418 alpha to support ppc64le.
    967 
    968 
    969 Overview of changes leading to 0.9.24
    970 Tuesday, November 13, 2013
    971 =====================================
    972 
    973 - Misc compiler warning fixes with clang.
    974 - No functional changes.
    975 
    976 
    977 Overview of changes leading to 0.9.23
    978 Monday, October 28, 2013
    979 =====================================
    980 
    981 - "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
    982 - Fix (Chain)Context recursion with non-monotone lookup positions.
    983 - Misc Indic bug fixes.
    984 - New Javanese / Buginese shaping, similar to Windows 8.1.
    985 
    986 
    987 Overview of changes leading to 0.9.22
    988 Thursday, October 3, 2013
    989 =====================================
    990 
    991 - Fix use-after-end-of-scope in hb_language_from_string().
    992 - Fix hiding of default_ignorables if font doesn't have space glyph.
    993 - Protect against out-of-range lookup indices.
    994 
    995 - API Changes:
    996 
    997   * Added hb_ot_layout_table_get_lookup_count()
    998 
    999 
   1000 Overview of changes leading to 0.9.21
   1001 Monday, September 16, 2013
   1002 =====================================
   1003 
   1004 - Rename gobject-introspection library name from harfbuzz to HarfBuzz.
   1005 - Remove (long disabled) hb-old and hb-icu-le test shapers.
   1006 - Misc gtk-doc and gobject-introspection annotations.
   1007 - Misc fixes.
   1008 - API changes:
   1009 
   1010   * Add HB_SET_VALUE_INVALID
   1011 
   1012 Overview of changes leading to 0.9.20
   1013 Thursday, August 29, 2013
   1014 =====================================
   1015 
   1016 General:
   1017 - Misc substitute_closure() fixes.
   1018 - Build fixes.
   1019 
   1020 Documentation:
   1021 - gtk-doc boilerplate integrated.  Docs are built now, but
   1022   contain no contents.  By next release hopefully we have
   1023   some content in.  Enable using --enable-gtk-doc.
   1024 
   1025 GObject and Introspection:
   1026 - Added harfbuzz-gobject library (hb-gobject.h) that has type
   1027   bindings for all HarfBuzz objects and enums.  Enable using
   1028   --with-gobject.
   1029 - Added gobject-introspection boilerplate.  Nothing useful
   1030   right now.  Work in progress.  Gets enabled automatically if
   1031   --with-gobject is used.  Override with --disable-introspection.
   1032 
   1033 OpenType shaper:
   1034 - Apply 'mark' in Myanmar shaper.
   1035 - Don't apply 'dlig' by default.
   1036 
   1037 Uniscribe shaper:
   1038 - Support user features.
   1039 - Fix loading of fonts that are also installed on the system.
   1040 - Fix shaping of Arabic Presentation Forms.
   1041 - Fix build with wide chars.
   1042 
   1043 CoreText shaper:
   1044 - Support user features.
   1045 
   1046 Source changes:
   1047 - hb_face_t code moved to hb-face.h / hb-face.cc.
   1048 - Added hb-deprecated.h.
   1049 
   1050 API changes:
   1051 - Added HB_DISABLE_DEPRECATED.
   1052 - Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
   1053   HB_SCRIPT_CANADIAN_SYLLABICS.
   1054 - Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
   1055   HB_BUFFER_FLAG_DEFAULT.
   1056 - Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
   1057   HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
   1058 
   1059 
   1060 Overview of changes leading to 0.9.19
   1061 Tuesday, July 16, 2013
   1062 =====================================
   1063 
   1064 - Build fixes.
   1065 - Better handling of multiple variation selectors in a row.
   1066 - Pass on variation selector to GSUB if not consumed by cmap.
   1067 - Fix undefined memory access.
   1068 - Add Javanese config to Indic shaper.
   1069 - Misc bug fixes.
   1070 
   1071 Overview of changes leading to 0.9.18
   1072 Tuesday, May 28, 2013
   1073 =====================================
   1074 
   1075 New build system:
   1076 
   1077 - All unneeded code is all disabled by default,
   1078 
   1079 - Uniscribe and CoreText shapers can be enabled with their --with options,
   1080 
   1081 - icu_le and old shapers cannot be enabled for now,
   1082 
   1083 - glib, freetype, and cairo will be detected automatically.
   1084   They can be force on/off'ed with their --with options,
   1085 
   1086 - icu and graphite2 are default off, can be enabled with their --with
   1087   options,
   1088 
   1089 Moreover, ICU support is now build into a separate library:
   1090 libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
   1091 Distros can enable ICU now without every application on earth
   1092 getting linked to via libharfbuzz.so.
   1093 
   1094 For distros I recommend that they make sure they are building --with-glib
   1095 --with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
   1096 And package harfbuzz and harfbuzz-icu separately.
   1097 
   1098 
   1099 Overview of changes leading to 0.9.17
   1100 Monday, May 20, 2013
   1101 =====================================
   1102 
   1103 - Build fixes.
   1104 - Fix bug in hb_set_get_min().
   1105 - Fix regression with Arabic mark positioning / width-zeroing.
   1106 
   1107 Overview of changes leading to 0.9.16
   1108 Friday, April 19, 2013
   1109 =====================================
   1110 
   1111 - Major speedup in OpenType lookup processing.  With the Amiri
   1112   Arabic font, this release is over 3x faster than previous
   1113   release.  All scripts / languages should see this speedup.
   1114 
   1115 - New --num-iterations option for hb-shape / hb-view; useful for
   1116   profiling.
   1117 
   1118 Overview of changes leading to 0.9.15
   1119 Friday, April 05, 2013
   1120 =====================================
   1121 
   1122 - Build fixes.
   1123 - Fix crasher in graphite2 shaper.
   1124 - Fix Arabic mark width zeroing regression.
   1125 - Don't compose Hangul jamo into Unicode syllables.
   1126 
   1127 
   1128 Overview of changes leading to 0.9.14
   1129 Thursday, March 21, 2013
   1130 =====================================
   1131 
   1132 - Build fixes.
   1133 - Fix time-consuming sanitize with malicious fonts.
   1134 - Implement hb_buffer_deserialize_glyphs() for both json and text.
   1135 - Do not ignore Hangul filler characters.
   1136 - Indic fixes:
   1137   * Fix Malayalam pre-base reordering interaction with post-forms.
   1138   * Further adjust ZWJ handling.  Should fix known regressions from
   1139     0.9.13.
   1140 
   1141 
   1142 Overview of changes leading to 0.9.13
   1143 Thursday, February 25, 2013
   1144 =====================================
   1145 
   1146 - Build fixes.
   1147 - Ngapi HarfBuzz Hackfest in London (February 2013):
   1148   * Fixed all known Indic bugs,
   1149   * New Win8-style Myanmar shaper,
   1150   * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
   1151   * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
   1152     matching GSUB/GPOS lookups,
   1153   * Fix 'Phags-Pa U+A872 shaping,
   1154   * Fix partial disabling of default-on features,
   1155   * Allow disabling of TrueType kerning.
   1156 - Fix possible crasher with broken fonts with overlapping tables.
   1157 - Removed generated files from git again.  So, one needs ragel to
   1158   bootstrap from the git tree.
   1159 
   1160 API changes:
   1161 - hb_shape() and related APIs now abort if buffer direction is
   1162   HB_DIRECTION_INVALID.  Previously, hb_shape() was calling
   1163   hb_buffer_guess_segment_properties() on the buffer before
   1164   shaping.  The heuristics in that function are fragile.  If the
   1165   user really wants the old behvaior, they can call that function
   1166   right before calling hb_shape() to get the old behavior.
   1167 - hb_blob_create_sub_blob() always creates sub-blob with
   1168   HB_MEMORY_MODE_READONLY.  See comments for the reason.
   1169 
   1170 
   1171 Overview of changes leading to 0.9.12
   1172 Thursday, January 18, 2013
   1173 =====================================
   1174 
   1175 - Build fixes for Sun compiler.
   1176 - Minor bug fix.
   1177 
   1178 Overview of changes leading to 0.9.11
   1179 Thursday, January 10, 2013
   1180 =====================================
   1181 
   1182 - Build fixes.
   1183 - Fix GPOS mark attachment with null Anchor offsets.
   1184 - [Indic] Fix old-spec reordering of viramas if sequence ends in one.
   1185 - Fix multi-threaded shaper data creation crash.
   1186 - Add atomic ops for Solaris.
   1187 
   1188 API changes:
   1189 - Rename hb_buffer_clear() to hb_buffer_clear_contents().
   1190 
   1191 
   1192 Overview of changes leading to 0.9.10
   1193 Thursday, January 3, 2013
   1194 =====================================
   1195 
   1196 - [Indic] Fixed rendering of Malayalam dot-reph
   1197 - Updated OT language tags.
   1198 - Updated graphite2 backend.
   1199 - Improved hb_ot_layout_get_size_params() logic.
   1200 - Improve hb-shape/hb-view help output.
   1201 - Fixed hb-set.h implementation to not crash.
   1202 - Fixed various issues with hb_ot_layout_collect_lookups().
   1203 - Various build fixes.
   1204 
   1205 New API:
   1206 
   1207 hb_graphite2_face_get_gr_face()
   1208 hb_graphite2_font_get_gr_font()
   1209 hb_coretext_face_get_cg_font()
   1210 
   1211 Modified API:
   1212 
   1213 hb_ot_layout_get_size_params()
   1214 
   1215 
   1216 Overview of changes leading to 0.9.9
   1217 Wednesday, December 5, 2012
   1218 ====================================
   1219 
   1220 - Fix build on Windows.
   1221 - Minor improvements.
   1222 
   1223 
   1224 Overview of changes leading to 0.9.8
   1225 Tuesday, December 4, 2012
   1226 ====================================
   1227 
   1228 
   1229 - Actually implement hb_shape_plan_get_shaper ().
   1230 - Make UCDB data tables const.
   1231 - Lots of internal refactoring in OTLayout tables.
   1232 - Flesh out hb_ot_layout_lookup_collect_glyphs().
   1233 
   1234 New API:
   1235 
   1236 hb_ot_layout_collect_lookups()
   1237 hb_ot_layout_get_size_params()
   1238 
   1239 
   1240 Overview of changes leading to 0.9.7
   1241 Sunday, November 21, 2012
   1242 ====================================
   1243 
   1244 
   1245 HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
   1246 
   1247 - Fix Arabic contextual joining using pre-context text.
   1248 - Fix Sinhala "split matra" mess.
   1249 - Fix Khmer shaping with broken fonts.
   1250 - Implement Thai "PUA" shaping for old fonts.
   1251 - Do NOT route Kharoshthi script through the Indic shaper.
   1252 - Disable fallback positioning for Indic and Thai shapers.
   1253 - Misc fixes.
   1254 
   1255 
   1256 hb-shape / hb-view changes:
   1257 
   1258 - Add --text-before and --text-after
   1259 - Add --bot / --eot / --preserve-default-ignorables
   1260 - hb-shape --output-format=json
   1261 
   1262 
   1263 New API:
   1264 
   1265 hb_buffer_clear()
   1266 
   1267 hb_buffer_flags_t
   1268 
   1269 HB_BUFFER_FLAGS_DEFAULT
   1270 HB_BUFFER_FLAG_BOT
   1271 HB_BUFFER_FLAG_EOT
   1272 HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
   1273 
   1274 hb_buffer_set_flags()
   1275 hb_buffer_get_flags()
   1276 
   1277 HB_BUFFER_SERIALIZE_FLAGS
   1278 hb_buffer_serialize_glyphs()
   1279 hb_buffer_deserialize_glyphs()
   1280 hb_buffer_serialize_list_formats()
   1281 
   1282 hb_set_add_range()
   1283 hb_set_del_range()
   1284 hb_set_get_population()
   1285 hb_set_next_range()
   1286 
   1287 hb_face_[sg]et_glyph_count()
   1288 
   1289 hb_segment_properties_t
   1290 HB_SEGMENT_PROPERTIES_DEFAULT
   1291 hb_segment_properties_equal()
   1292 hb_segment_properties_hash()
   1293 
   1294 hb_buffer_set_segment_properties()
   1295 hb_buffer_get_segment_properties()
   1296 
   1297 hb_ot_layout_glyph_class_t
   1298 hb_ot_layout_get_glyph_class()
   1299 hb_ot_layout_get_glyphs_in_class()
   1300 
   1301 hb_shape_plan_t
   1302 hb_shape_plan_create()
   1303 hb_shape_plan_create_cached()
   1304 hb_shape_plan_get_empty()
   1305 hb_shape_plan_reference()
   1306 hb_shape_plan_destroy()
   1307 hb_shape_plan_set_user_data()
   1308 hb_shape_plan_get_user_data()
   1309 hb_shape_plan_execute()
   1310 hb_shape_plan_get_shaper()
   1311 
   1312 hb_ot_shape_plan_collect_lookups()
   1313 
   1314 
   1315 API changes:
   1316 
   1317 - Remove "mask" parameter from hb_buffer_add().
   1318 - Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
   1319 - hb-set.h API const correction.
   1320 - Renamed hb_set_min/max() to hb_set_get_min/max().
   1321 - Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
   1322 - Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
   1323 
   1324 
   1325 
   1326 Overview of changes leading to 0.9.6
   1327 Sunday, November 13, 2012
   1328 ====================================
   1329 
   1330 - Don't clear pre-context text if no new context is provided.
   1331 - Fix ReverseChainingSubstLookup, which was totally borked.
   1332 - Adjust output format of hb-shape a bit.
   1333 - Include config.h.in in-tree.  Makes it easier for alternate build systems.
   1334 - Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
   1335 - Use ICU LayoutEngine's C API instead of C++.  Avoids much headache.
   1336 - Drop glyphs for all of Unicode Default_Ignorable characters.
   1337 - Misc build fixes.
   1338 
   1339 Arabic shaper:
   1340 - Enable 'dlig' and 'mset' features in Arabic shaper.
   1341 - Implement 'Phags-pa shaping, improve Mongolian.
   1342 
   1343 Indic shaper:
   1344 - Decompose Sinhala split matras the way old HarfBuzz / Pango did.
   1345 - Initial support for Consonant Medials.
   1346 - Start adding new-style Myanmar shaping.
   1347 - Make reph and 'pref' logic introspect the font.
   1348 - Route Meetei-Mayek through the Indic shaper.
   1349 - Don't apply 'liga' in Indic shaper.
   1350 - Improve Malayalam pre-base reordering Ra interaction with Chillus.
   1351 
   1352 
   1353 
   1354 Overview of changes leading to 0.9.5
   1355 Sunday, October 14, 2012
   1356 ====================================
   1357 
   1358 - Synthetic-GSUB Arabic fallback shaping.
   1359 
   1360 - Misc Indic improvements.
   1361 
   1362 - Add build system support for pthread.
   1363 
   1364 - Imported UCDN for in-tree Unicode callbacks implementation.
   1365 
   1366 - Context-aware Arabic joining.
   1367 
   1368 - Misc other fixes.
   1369 
   1370 - New API:
   1371 
   1372   hb_feature_to/from-string()
   1373   hb_buffer_[sg]et_content_type()
   1374 
   1375 
   1376 
   1377 Overview of changes leading to 0.9.4
   1378 Tuesday, Sep 03, 2012
   1379 ====================================
   1380 
   1381 - Indic improvements with old-spec Malayalam.
   1382 
   1383 - Better fallback glyph positioning, specially with Thai / Lao marks.
   1384 
   1385 - Implement dotted-circle insertion.
   1386 
   1387 - Better Arabic fallback shaping / ligation.
   1388 
   1389 - Added ICU LayoutEngine backend for testing.  Call it by the 'icu_le' name.
   1390 
   1391 - Misc fixes.
   1392 
   1393 
   1394 
   1395 Overview of changes leading to 0.9.3
   1396 Friday, Aug 18, 2012
   1397 ====================================
   1398 
   1399 - Fixed fallback mark positioning for left-to-right text.
   1400 
   1401 - Improve mark positioning for the remaining combining classes.
   1402 
   1403 - Unbreak Thai and fallback Arabic shaping.
   1404 
   1405 - Port Arabic shaper to shape-plan caching.
   1406 
   1407 - Use new ICU normalizer functions.
   1408 
   1409 
   1410 
   1411 Overview of changes leading to 0.9.2
   1412 Friday, Aug 10, 2012
   1413 ====================================
   1414 
   1415 - Over a thousand commits!  This is the first major release of HarfBuzz.
   1416 
   1417 - HarfBuzz is feature-complete now!  It should be in par, or better, than
   1418   both Pango's shapers and old HarfBuzz / Qt shapers.
   1419 
   1420 - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
   1421 
   1422 - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
   1423   Sinhala, N'ko, Mongolian, and Mandaic.
   1424 
   1425 - New Thai / Lao shaper.
   1426 
   1427 - Tibetan / Hangul support in the generic shaper.
   1428 
   1429 - Synthetic GDEF support for fonts without a GDEF table.
   1430 
   1431 - Fallback mark positioning for fonts without a GPOS table.
   1432 
   1433 - Unicode normalization shaping heuristic during glyph mapping.
   1434 
   1435 - New experimental Graphite2 backend.
   1436 
   1437 - New Uniscribe backend (primarily for testing).
   1438 
   1439 - New CoreText backend (primarily for testing).
   1440 
   1441 - Major optimization and speedup.
   1442 
   1443 - Test suites and testing infrastructure (work in progress).
   1444 
   1445 - Greatly improved hb-view cmdline tool.
   1446 
   1447 - hb-shape cmdline tool.
   1448 
   1449 - Unicode 6.1 support.
   1450 
   1451 Summary of API changes:
   1452 
   1453 o Changed API:
   1454 
   1455   - Users are expected to only include main header files now (ie. hb.h,
   1456     hb-glib.h, hb-ft.h, ...)
   1457 
   1458   - All struct tag names had their initial underscore removed.
   1459     Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
   1460 
   1461   - All set_user_data() functions now take a "replace" boolean parameter.
   1462 
   1463   - hb_buffer_create() takes zero arguments now.
   1464     Use hb_buffer_pre_allocate() to pre-allocate.
   1465 
   1466   - hb_buffer_add_utf*() now accept -1 for length parameteres,
   1467     meaning "nul-terminated".
   1468 
   1469   - hb_direction_t enum values changed.
   1470 
   1471   - All *_from_string() APIs now take a length parameter to allow for
   1472     non-nul-terminated strings. A -1 length means "nul-terminated".
   1473 
   1474   - Typedef for hb_language_t changed.
   1475 
   1476   - hb_get_table_func_t renamed to hb_reference_table_func_t.
   1477 
   1478   - hb_ot_layout_table_choose_script()
   1479 
   1480   - Various renames in hb-unicode.h.
   1481 
   1482 o New API:
   1483 
   1484   - hb_buffer_guess_properties()
   1485     Automatically called by hb_shape().
   1486 
   1487   - hb_buffer_normalize_glyphs()
   1488 
   1489   - hb_tag_from_string()
   1490 
   1491   - hb-coretext.h
   1492 
   1493   - hb-uniscribe.h
   1494 
   1495   - hb_face_reference_blob()
   1496   - hb_face_[sg]et_index()
   1497   - hb_face_set_upem()
   1498 
   1499   - hb_font_get_glyph_name_func_t
   1500     hb_font_get_glyph_from_name_func_t
   1501     hb_font_funcs_set_glyph_name_func()
   1502     hb_font_funcs_set_glyph_from_name_func()
   1503     hb_font_get_glyph_name()
   1504     hb_font_get_glyph_from_name()
   1505     hb_font_glyph_to_string()
   1506     hb_font_glyph_from_string()
   1507 
   1508   - hb_font_set_funcs_data()
   1509 
   1510   - hb_ft_font_set_funcs()
   1511   - hb_ft_font_get_face()
   1512 
   1513   - hb-gobject.h (work in progress)
   1514 
   1515   - hb_ot_shape_glyphs_closure()
   1516     hb_ot_layout_substitute_closure_lookup()
   1517 
   1518   - hb-set.h
   1519 
   1520   - hb_shape_full()
   1521 
   1522   - hb_unicode_combining_class_t
   1523 
   1524   - hb_unicode_compose_func_t
   1525     hb_unicode_decompose_func_t
   1526     hb_unicode_decompose_compatibility_func_t
   1527     hb_unicode_funcs_set_compose_func()
   1528     hb_unicode_funcs_set_decompose_func()
   1529     hb_unicode_funcs_set_decompose_compatibility_func()
   1530     hb_unicode_compose()
   1531     hb_unicode_decompose()
   1532     hb_unicode_decompose_compatibility()
   1533 
   1534 o Removed API:
   1535 
   1536   - hb_ft_get_font_funcs()
   1537 
   1538   - hb_ot_layout_substitute_start()
   1539     hb_ot_layout_substitute_lookup()
   1540     hb_ot_layout_substitute_finish()
   1541     hb_ot_layout_position_start()
   1542     hb_ot_layout_position_lookup()
   1543     hb_ot_layout_position_finish()
   1544 
   1545 
   1546 
   1547 Overview of changes leading to 0.6.0
   1548 Friday, May 27, 2011
   1549 ====================================
   1550 
   1551 - Vertical text support in GPOS
   1552 - Almost all API entries have unit tests now, under test/
   1553 - All thread-safety issues are fixed
   1554 
   1555 Summary of API changes follows.
   1556 
   1557 
   1558 * Simple Types API:
   1559 
   1560   o New API:
   1561     HB_LANGUAGE_INVALID
   1562     hb_language_get_default()
   1563     hb_direction_to_string()
   1564     hb_direction_from_string()
   1565     hb_script_get_horizontal_direction()
   1566     HB_UNTAG()
   1567 
   1568   o Renamed API:
   1569     hb_category_t renamed to hb_unicode_general_category_t
   1570 
   1571   o Changed API:
   1572     hb_language_t is a typed pointers now
   1573 
   1574   o Removed API:
   1575     HB_TAG_STR()
   1576 
   1577 
   1578 * Use ISO 15924 tags for hb_script_t:
   1579 
   1580   o New API:
   1581     hb_script_from_iso15924_tag()
   1582     hb_script_to_iso15924_tag()
   1583     hb_script_from_string()
   1584 
   1585   o Changed API:
   1586     HB_SCRIPT_* enum members changed value.
   1587 
   1588 
   1589 * Buffer API streamlined:
   1590 
   1591   o New API:
   1592     hb_buffer_reset()
   1593     hb_buffer_set_length()
   1594     hb_buffer_allocation_successful()
   1595 
   1596   o Renamed API:
   1597     hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
   1598     hb_buffer_add_glyph() renamed to hb_buffer_add()
   1599 
   1600   o Removed API:
   1601     hb_buffer_clear()
   1602     hb_buffer_clear_positions()
   1603 
   1604   o Changed API:
   1605     hb_buffer_get_glyph_infos() takes an out length parameter now
   1606     hb_buffer_get_glyph_positions() takes an out length parameter now
   1607 
   1608 
   1609 * Blob API streamlined:
   1610 
   1611   o New API:
   1612     hb_blob_get_data()
   1613     hb_blob_get_data_writable()
   1614 
   1615   o Renamed API:
   1616     hb_blob_create_empty() renamed to hb_blob_get_empty()
   1617 
   1618   o Removed API:
   1619     hb_blob_lock()
   1620     hb_blob_unlock()
   1621     hb_blob_is_writable()
   1622     hb_blob_try_writable()
   1623 
   1624   o Changed API:
   1625     hb_blob_create() takes user_data before destroy now
   1626 
   1627 
   1628 * Unicode functions API:
   1629 
   1630   o Unicode function vectors can subclass other unicode function vectors now.
   1631     Unimplemented callbacks in the subclass automatically chainup to the parent.
   1632 
   1633   o All hb_unicode_funcs_t callbacks take a user_data now.  Their setters
   1634     take a user_data and its respective destroy callback.
   1635 
   1636   o New API:
   1637     hb_unicode_funcs_get_empty()
   1638     hb_unicode_funcs_get_default()
   1639     hb_unicode_funcs_get_parent()
   1640 
   1641   o Changed API:
   1642     hb_unicode_funcs_create() now takes a parent_funcs.
   1643 
   1644   o Removed func getter functions:
   1645     hb_unicode_funcs_get_mirroring_func()
   1646     hb_unicode_funcs_get_general_category_func()
   1647     hb_unicode_funcs_get_script_func()
   1648     hb_unicode_funcs_get_combining_class_func()
   1649     hb_unicode_funcs_get_eastasian_width_func()
   1650 
   1651 
   1652 * Face API:
   1653 
   1654   o Renamed API:
   1655     hb_face_get_table() renamed to hb_face_reference_table()
   1656     hb_face_create_for_data() renamed to hb_face_create()
   1657 
   1658   o Changed API:
   1659     hb_face_create_for_tables() takes user_data before destroy now
   1660     hb_face_reference_table() returns empty blob instead of NULL
   1661     hb_get_table_func_t accepts the face as first parameter now
   1662 
   1663 * Font API:
   1664 
   1665   o Fonts can subclass other fonts now.  Unimplemented callbacks in the
   1666     subclass automatically chainup to the parent.  When chaining up,
   1667     scale is adjusted if the parent font has a different scale.
   1668 
   1669   o All hb_font_funcs_t callbacks take a user_data now.  Their setters
   1670     take a user_data and its respective destroy callback.
   1671 
   1672   o New API:
   1673     hb_font_get_parent()
   1674     hb_font_funcs_get_empty()
   1675     hb_font_create_sub_font()
   1676 
   1677   o Removed API:
   1678     hb_font_funcs_copy()
   1679     hb_font_unset_funcs()
   1680 
   1681   o Removed func getter functions:
   1682     hb_font_funcs_get_glyph_func()
   1683     hb_font_funcs_get_glyph_advance_func()
   1684     hb_font_funcs_get_glyph_extents_func()
   1685     hb_font_funcs_get_contour_point_func()
   1686     hb_font_funcs_get_kerning_func()
   1687 
   1688   o Changed API:
   1689     hb_font_create() takes a face and references it now
   1690     hb_font_set_funcs() takes user_data before destroy now
   1691     hb_font_set_scale() accepts signed integers now
   1692     hb_font_get_contour_point_func_t now takes glyph first, then point_index
   1693     hb_font_get_glyph_func_t returns a success boolean now
   1694 
   1695 
   1696 * Changed object model:
   1697 
   1698   o All object types have a _get_empty() now:
   1699     hb_blob_get_empty()
   1700     hb_buffer_get_empty()
   1701     hb_face_get_empty()
   1702     hb_font_get_empty()
   1703     hb_font_funcs_get_empty()
   1704     hb_unicode_funcs_get_empty()
   1705 
   1706   o Added _set_user_data() and _get_user_data() for all object types:
   1707     hb_blob_get_user_data()
   1708     hb_blob_set_user_data()
   1709     hb_buffer_get_user_data()
   1710     hb_buffer_set_user_data()
   1711     hb_face_get_user_data()
   1712     hb_face_set_user_data()
   1713     hb_font_funcs_get_user_data()
   1714     hb_font_funcs_set_user_data()
   1715     hb_font_get_user_data()
   1716     hb_font_set_user_data()
   1717     hb_unicode_funcs_get_user_data()
   1718     hb_unicode_funcs_set_user_data()
   1719 
   1720   o Removed the _get_reference_count() from all object types:
   1721     hb_blob_get_reference_count()
   1722     hb_buffer_get_reference_count()
   1723     hb_face_get_reference_count()
   1724     hb_font_funcs_get_reference_count()
   1725     hb_font_get_reference_count()
   1726     hb_unicode_funcs_get_reference_count()
   1727 
   1728   o Added _make_immutable() and _is_immutable() for all object types except for buffer:
   1729     hb_blob_make_immutable()
   1730     hb_blob_is_immutable()
   1731     hb_face_make_immutable()
   1732     hb_face_is_immutable()
   1733 
   1734 
   1735 * Changed API for vertical text support
   1736 
   1737   o The following callbacks where removed:
   1738     hb_font_get_glyph_advance_func_t
   1739     hb_font_get_kerning_func_t
   1740 
   1741   o The following new callbacks added instead:
   1742     hb_font_get_glyph_h_advance_func_t
   1743     hb_font_get_glyph_v_advance_func_t
   1744     hb_font_get_glyph_h_origin_func_t
   1745     hb_font_get_glyph_v_origin_func_t
   1746     hb_font_get_glyph_h_kerning_func_t
   1747     hb_font_get_glyph_v_kerning_func_t
   1748 
   1749   o The following API removed as such:
   1750     hb_font_funcs_set_glyph_advance_func()
   1751     hb_font_funcs_set_kerning_func()
   1752     hb_font_get_glyph_advance()
   1753     hb_font_get_kerning()
   1754 
   1755   o New API added instead:
   1756     hb_font_funcs_set_glyph_h_advance_func()
   1757     hb_font_funcs_set_glyph_v_advance_func()
   1758     hb_font_funcs_set_glyph_h_origin_func()
   1759     hb_font_funcs_set_glyph_v_origin_func()
   1760     hb_font_funcs_set_glyph_h_kerning_func()
   1761     hb_font_funcs_set_glyph_v_kerning_func()
   1762     hb_font_get_glyph_h_advance()
   1763     hb_font_get_glyph_v_advance()
   1764     hb_font_get_glyph_h_origin()
   1765     hb_font_get_glyph_v_origin()
   1766     hb_font_get_glyph_h_kerning()
   1767     hb_font_get_glyph_v_kerning()
   1768 
   1769   o The following higher-leve API added for convenience:
   1770     hb_font_get_glyph_advance_for_direction()
   1771     hb_font_get_glyph_origin_for_direction()
   1772     hb_font_add_glyph_origin_for_direction()
   1773     hb_font_subtract_glyph_origin_for_direction()
   1774     hb_font_get_glyph_kerning_for_direction()
   1775     hb_font_get_glyph_extents_for_origin()
   1776     hb_font_get_glyph_contour_point_for_origin()
   1777 
   1778 
   1779 * OpenType Layout API:
   1780 
   1781   o New API:
   1782     hb_ot_layout_position_start()
   1783     hb_ot_layout_substitute_start()
   1784     hb_ot_layout_substitute_finish()
   1785 
   1786 
   1787 * Glue code:
   1788 
   1789   o New API:
   1790     hb_glib_script_to_script()
   1791     hb_glib_script_from_script()
   1792     hb_icu_script_to_script()
   1793     hb_icu_script_from_script()
   1794 
   1795 
   1796 * Version API added:
   1797 
   1798   o New API:
   1799     HB_VERSION_MAJOR
   1800     HB_VERSION_MINOR
   1801     HB_VERSION_MICRO
   1802     HB_VERSION_STRING
   1803     HB_VERSION_CHECK()
   1804     hb_version()
   1805     hb_version_string()
   1806     hb_version_check()
   1807 
   1808 
   1809