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