| OLD | NEW | 
| (Empty) |  | 
 |    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_clos
     ure_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_l
     ookups(). | 
 |  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  | 
| OLD | NEW |