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