1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257 |
- Overview of changes leading to 2.5.1
- Friday, May 31, 2019
- ====================================
- - Fix build with various versions of Visual Studio.
- - Improved documentation, thanks to Nathan Willis.
- - Bugfix in subsetting glyf table.
- - Improved scripts for cross-compiling for Windows using mingw.
- - Rename HB_MATH_GLYPH_PART_FLAG_EXTENDER to HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER.
- A deprecated macro is added for backwards-compatibility.
- Overview of changes leading to 2.5.0
- Friday, May 24, 2019
- ====================================
- - This release does not include much functional changes, but includes major internal
- code-base changes. We now require C++11. Support for gcc 4.8 and earlier has been
- dropped.
- - New hb-config.hh facility for compiling smaller library for embedded and web usecases.
- - New Unicode Character Databse implementation that is half the size of previously-used
- UCDN.
- - Subsetter improvements.
- - Improved documentation, thanks to Nathan Willis.
- - Misc shaping fixes.
- Overview of changes leading to 2.4.0
- Monday, March 25, 2019
- ====================================
- - Unicode 12.
- - Misc fixes.
- - Subsetter improvements.
- - New API:
- HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE
- hb_directwrite_face_create()
- Overview of changes leading to 2.3.1
- Wednesday, January 30, 2019
- ====================================
- - AAT bug fixes.
- - Misc internal housekeeping cleanup.
- Overview of changes leading to 2.3.0
- Thursday, December 20, 2018
- ====================================
- - Fix regression on big-endian architectures. Ouch!
- - Misc bug and build fixes.
- - Fix subsetting of simple GSUB/GDEF.
- - Merge CFF / CFF2 support contributed by Adobe. This mostly involves
- the subsetter, but also get_glyph_extents on CFF fonts.
- New API in hb-aat.h:
- +hb_aat_layout_has_substitution()
- +hb_aat_layout_has_positioning()
- +hb_aat_layout_has_tracking()
- Overview of changes leading to 2.2.0
- Thursday, November 29, 2018
- ====================================
- - Misc shaping bug fixes.
- - Add font variations named-instance API.
- - Deprecate font variations axis enumeration API and add replacement.
- - AAT shaping improvements:
- o Fixed 'kern' table Format 2 implementation.
- o Implement 'feat' table API for feature detection.
- o Blacklist 'GSUB' table of fonts from 'MUTF' foundry that also have 'morx'.
- New API:
- +hb_aat_layout_feature_type_t
- +hb_aat_layout_feature_selector_t
- +hb_aat_layout_get_feature_types()
- +hb_aat_layout_feature_type_get_name_id
- +hb_aat_layout_feature_selector_info_t
- +HB_AAT_LAYOUT_NO_SELECTOR_INDEX
- +hb_aat_layout_feature_type_get_selector_infos()
- +hb_ot_var_axis_flags_t
- +hb_ot_var_axis_info_t
- +hb_ot_var_get_axis_infos()
- +hb_ot_var_find_axis_info()
- +hb_ot_var_get_named_instance_count()
- +hb_ot_var_named_instance_get_subfamily_name_id()
- +hb_ot_var_named_instance_get_postscript_name_id()
- +hb_ot_var_named_instance_get_design_coords()
- Deprecated API:
- +HB_OT_VAR_NO_AXIS_INDEX
- +hb_ot_var_axis_t
- +hb_ot_var_get_axes()
- +hb_ot_var_find_axis()
- Overview of changes leading to 2.1.3
- Friday, November 16, 2018
- ====================================
- - Fix AAT 'mort' shaping, which was broken in 2.1.2
- Overview of changes leading to 2.1.2
- Friday, November 16, 2018
- ====================================
- - Various internal changes.
- - AAT shaping improvements:
- o Implement kern table Format 1 state-machine-based kerning.
- o Implement cross-stream kerning (cursive positioning, etc).
- o Ignore emptyish GSUB tables (zero scripts) if morx present.
- o Don't apply GPOS if morx is being applied. Matches Apple.
- -Overview of changes leading to 2.1.1
- Monday, November 5, 2018
- ====================================
- - AAT improvements:
- o Implement 'mort' table.
- o Implement 'kern' subtables Format 1 and Format 3.
- Overview of changes leading to 2.1.0
- Tuesday, October 30, 2018
- ====================================
- - AAT shaping improvements:
- o Allow user controlling AAT features, for whole buffer only currently.
- o Several 'morx' fixes.
- o Implement tuple-kerns in 'kerx'; Fixes kerning with Apple default
- San Francisco fonts.
- - Support for color fonts:
- o COLR/CPAL API to fetch color layers.
- o SVG table to fetch SVG documents.
- o CBDT/sbix API to fetch PNG images.
- - New 'name' table API.
- - hb-ot-font now uses 'VORG' table to correctly position CFF glyphs
- in vertical layout.
- - Various fuzzer-found bug fixes.
- Changed API:
- A type and a macro added in 2.0.0 were renamed:
- hb_name_id_t -> hb_ot_name_id_t
- HB_NAME_ID_INVALID -> HB_OT_NAME_ID_INVALID
- New API:
- +hb_color_t
- +HB_COLOR
- +hb_color_get_alpha()
- +hb_color_get_red()
- +hb_color_get_green()
- +hb_color_get_blue()
- +hb_ot_color_has_palettes()
- +hb_ot_color_palette_get_count()
- +hb_ot_color_palette_get_name_id()
- +hb_ot_color_palette_color_get_name_id()
- +hb_ot_color_palette_flags_t
- +hb_ot_color_palette_get_flags()
- +hb_ot_color_palette_get_colors()
- +hb_ot_color_has_layers()
- +hb_ot_color_layer_t
- +hb_ot_color_glyph_get_layers()
- +hb_ot_color_has_svg()
- +hb_ot_color_glyph_reference_svg()
- +hb_ot_color_has_png()
- +hb_ot_color_glyph_reference_png()
- +hb_ot_name_id_t
- +HB_OT_NAME_ID_INVALID
- +HB_OT_NAME_ID_COPYRIGHT
- +HB_OT_NAME_ID_FONT_FAMILY
- +HB_OT_NAME_ID_FONT_SUBFAMILY
- +HB_OT_NAME_ID_UNIQUE_ID
- +HB_OT_NAME_ID_FULL_NAME
- +HB_OT_NAME_ID_VERSION_STRING
- +HB_OT_NAME_ID_POSTSCRIPT_NAME
- +HB_OT_NAME_ID_TRADEMARK
- +HB_OT_NAME_ID_MANUFACTURER
- +HB_OT_NAME_ID_DESIGNER
- +HB_OT_NAME_ID_DESCRIPTION
- +HB_OT_NAME_ID_VENDOR_URL
- +HB_OT_NAME_ID_DESIGNER_URL
- +HB_OT_NAME_ID_LICENSE
- +HB_OT_NAME_ID_LICENSE_URL
- +HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY
- +HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY
- +HB_OT_NAME_ID_MAC_FULL_NAME
- +HB_OT_NAME_ID_SAMPLE_TEXT
- +HB_OT_NAME_ID_CID_FINDFONT_NAME
- +HB_OT_NAME_ID_WWS_FAMILY
- +HB_OT_NAME_ID_WWS_SUBFAMILY
- +HB_OT_NAME_ID_LIGHT_BACKGROUND
- +HB_OT_NAME_ID_DARK_BACKGROUND
- +HB_OT_NAME_ID_VARIATIONS_PS_PREFIX
- +hb_ot_name_entry_t
- +hb_ot_name_list_names()
- +hb_ot_name_get_utf8()
- +hb_ot_name_get_utf16()
- +hb_ot_name_get_utf32()
- Overview of changes leading to 2.0.2
- Saturday, October 20, 2018
- ====================================
- - Fix two minor memory access issues in AAT tables.
- Overview of changes leading to 2.0.1
- Friday, October 19, 2018
- ====================================
- - Fix hb-version.h reported release version that went wrong (1.8.0)
- with previous release.
- - Fix extrapolation in 'trak' table.
- - Fix hb-font infinite-recursion issue with some font funcs and
- subclassed fonts.
- - Implement variation-kerning format in kerx table, although without
- variation.
- - Fix return value of hb_map_is_empty().
- Overview of changes leading to 2.0.0
- Thursday, October 18, 2018
- ====================================
- - Added AAT shaping support (morx/kerx/trak).
- Automatically used if GSUB/GPOS are not available respectively.
- Set HB_OPTIONS=aat env var to have morx/kerx preferred over
- GSUB/GPOS.
- - Apply TrueType kern table internally, instead of relying on
- hb_font_t callbacks.
- - Khmer shaper significantly rewritten to better match Uniscribe.
- - Indic3 tags ('dev3', etc) are passed to USE shaper.
- - .dfont Mac font containers implemented.
- - Script- and language-mapping revamped to better use BCP 47.
- - Misc USE and Indic fixes.
- - Misc everything fixes.
- - Too many things to list. Biggest release since 0.9.1, with
- over 500 commits in just over 5 weeks! Didn't intend it to
- be a big release. Just happened to become.
- - hb-ft now locks underlying FT_Face during use.
- API changes:
- - Newly-created hb_font_t's now have our internal "hb-ot-font"
- callbacks set on them, so they should work out of the box
- without any callbacks set. If callbacks are set, everything
- is back to what it was before, the fallback callbacks are
- null. If you to get the internal implementation modified,
- sub_font it.
- - New hb_font_funcs_set_nominal_glyphs_func() allows speeding
- up character to glyph mapping.
- New API:
- +HB_FEATURE_GLOBAL_START
- +HB_FEATURE_GLOBAL_END
- +hb_buffer_set_invisible_glyph()
- +hb_buffer_get_invisible_glyph()
- +hb_font_funcs_set_nominal_glyphs_func()
- +hb_ot_layout_table_select_script()
- +hb_ot_layout_script_select_language()
- +hb_ot_layout_feature_get_name_ids()
- +hb_ot_layout_feature_get_characters()
- +hb_name_id_t
- +HB_NAME_ID_INVALID
- +HB_OT_MAX_TAGS_PER_SCRIPT
- +hb_ot_tags_from_script_and_language()
- +hb_ot_tags_to_script_and_language()
- Deprecated API:
- -hb_font_funcs_set_glyph_func()
- -hb_unicode_eastasian_width_func_t
- -hb_unicode_funcs_set_eastasian_width_func()
- -hb_unicode_eastasian_width()
- -hb_unicode_decompose_compatibility_func_t
- -HB_UNICODE_MAX_DECOMPOSITION_LEN
- -hb_unicode_funcs_set_decompose_compatibility_func()
- -hb_unicode_decompose_compatibility()
- -hb_font_funcs_set_glyph_h_kerning_func()
- -hb_font_funcs_set_glyph_v_kerning_func()
- -hb_font_get_glyph_h_kerning()
- -hb_font_get_glyph_v_kerning()
- -hb_font_get_glyph_kerning_for_direction()
- -hb_ot_layout_table_choose_script()
- -hb_ot_layout_script_find_language()
- -hb_ot_tags_from_script()
- -hb_ot_tag_from_language()
- Overview of changes leading to 1.9.0
- Monday, September 10, 2018
- ====================================
- - Added 'cmap' API to hb_face_t.
- - Face-builder API.
- - hb-ot-font re-creation should be much leaner now, as the
- font tables it uses are cached on hb_face_t now.
- - Internal source header file name changes:
- hb-*-private.hh is renamed to hb-*.hh.
- New API:
- +HB_UNICODE_MAX
- +hb_face_collect_unicodes()
- +hb_face_collect_variation_selectors()
- +hb_face_collect_variation_unicodes()
- +hb_face_builder_create()
- +hb_face_builder_add_table()
- Overview of changes leading to 1.8.8
- Tuesday, August 14, 2018
- ====================================
- - Fix hb-icu crash on architectures where compare_exchange_weak() can
- fail falsely. This bug was introduced in 1.8.4.
- https://bugs.chromium.org/p/chromium/issues/detail?id=873568
- - More internal refactoring of atomic operations and singletons.
- - API changes:
- The following functions do NOT reference their return value before
- returning:
- * hb_unicode_funcs_get_default()
- * hb_glib_get_unicode_funcs()
- * hb_icu_get_unicode_funcs()
- This is consistent with their naming ("get", instead of "reference")
- as well as how they are used in the wild (ie. no one calls destroy()
- on their return value.)
- Overview of changes leading to 1.8.7
- Wednesday, August 8, 2018
- ====================================
- - Fix assertion failure with GDEF-blacklisted fonts.
- Overview of changes leading to 1.8.6
- Tuesday, August 7, 2018
- ====================================
- - Internal code shuffling.
- - New API to speed up getting advance widths for implementations
- that have heavy overhead in get_h_advance callback:
- +hb_font_funcs_set_glyph_h_advances_func
- +hb_font_funcs_set_glyph_v_advances_func
- +hb_font_get_glyph_advances_for_direction
- +hb_font_get_glyph_h_advances
- +hb_font_get_glyph_h_advances_func_t
- +hb_font_get_glyph_v_advances
- +hb_font_get_glyph_v_advances_func_t
- Overview of changes leading to 1.8.5
- Wednesday, August 1, 2018
- ====================================
- - Major Khmer shaper improvements to better match Microsoft.
- - Indic bug fixes.
- - Internal improvements to atomic operations.
- Overview of changes leading to 1.8.4
- Tuesday, July 17, 2018
- ====================================
- - Fix build on non-C++11.
- - Use C++-style GCC atomics and C++11 atomics.
- Overview of changes leading to 1.8.3
- Wednesday, July 11, 2018
- ====================================
- - A couple of Indic / USE bug fixes.
- - Disable vectorization, as it was causing unaligned access bus error on
- certain 32bit architectures.
- Overview of changes leading to 1.8.2
- Tuesday, July 3, 2018
- ====================================
- - Fix infinite loop in Khmer shaper.
- - Improve hb_blob_create_from_file() for streams.
- Overview of changes leading to 1.8.1
- Tuesday, June 12, 2018
- ====================================
- - Fix hb-version.h file generation; last two releases went out with wrong ones.
- - Add correctness bug in hb_set_t operations, introduced in 1.7.7.
- - Remove HB_SUBSET_BUILTIN build option. Not necessary.
- Overview of changes leading to 1.8.0
- Tuesday, June 5, 2018
- ====================================
- - Update to Unicode 11.0.0.
- Overview of changes leading to 1.7.7
- Tuesday, June 5, 2018
- ====================================
- - Lots of internal changes, but not yet exposed externally.
- - All HarfBuzz objects are significantly smaller in size now.
- - Sinhala: Position repha on top of post-consonant, not base.
- This better matches Windows 10 behavior, which was changed
- from previous Windows versions.
- - New build options:
- o New cpp macro HB_NO_ATEXIT
- o New cpp macro HB_SUBSET_BUILTIN
- - Significant libharfbuzz-subset changes. API subject to change.
- - New API in libharfbuzz:
- +hb_blob_create_from_file()
- +hb_face_count()
- A hashmap implementation:
- +hb-map.h
- +HB_MAP_VALUE_INVALID
- +hb_map_t
- +hb_map_create()
- +hb_map_get_empty()
- +hb_map_reference()
- +hb_map_destroy()
- +hb_map_set_user_data()
- +hb_map_get_user_data()
- +hb_map_allocation_successful()
- +hb_map_clear()
- +hb_map_is_empty()
- +hb_map_get_population()
- +hb_map_set()
- +hb_map_get()
- +hb_map_del()
- +hb_map_has()
- Overview of changes leading to 1.7.6
- Wednesday, March 7, 2018
- ====================================
- - Fix to hb_set_t binary operations. Ouch.
- - New experimental harfbuzz-subset library. All of hb-subset.h
- is experimental right now and API WILL change.
- - New API:
- hb_blob_copy_writable_or_fail()
- HB_OT_TAG_BASE
- hb_set_previous()
- hb_set_previous_range()
- Overview of changes leading to 1.7.5
- Tuesday, January 30, 2018
- ====================================
- - Separate Khmer shaper from Indic.
- - First stab at AAT morx. Not hooked up.
- - Misc bug fixes.
- Overview of changes leading to 1.7.4
- Wednesday, December 20, 2017
- ====================================
- - Fix collect_glyphs() regression caused by hb_set_t changes.
- Overview of changes leading to 1.7.3
- Monday, December 18, 2017
- ====================================
- - hb_set_t performance tuning and optimizations.
- - Speed up collect_glyphs() and reject garbage data.
- - In hb_coretext_font_create() set font point-size (ptem).
- - Misc fixes.
- Overview of changes leading to 1.7.2
- Monday, December 4, 2017
- ====================================
- - Optimize hb_set_add_range().
- - Misc fixes.
- - New API:
- hb_coretext_font_create()
- Overview of changes leading to 1.7.1
- Tuesday, November 14, 2017
- ====================================
- - Fix atexit object destruction regression.
- - Fix minor integer-overflow.
- Overview of changes leading to 1.7.0
- Monday, November 13, 2017
- ====================================
- - Minor Indic fixes.
- - Implement kerning and glyph names in hb-ot-font.
- - Various DSO optimization re .data and .bss sizes.
- - Make C++11 optional; build fixes.
- - Mark all other backends "unsafe-to-break".
- - Graphite fix.
- Overview of changes leading to 1.6.3
- Thursday, October 26th, 2017
- ====================================
- - Fix hb_set_t some more. Should be solid now.
- - Implement get_glyph_name() for hb-ot-font.
- - Misc fixes.
- Overview of changes leading to 1.6.2
- Monday, October 23nd, 2017
- ====================================
- - Yesterday's release had a bad crasher; don't use it. That's what
- happens when one works on Sunday...
- https://github.com/harfbuzz/harfbuzz/issues/578
- - Build fixes for FreeBSD and Chrome Android.
- Overview of changes leading to 1.6.1
- Sunday, October 22nd, 2017
- ====================================
- - Don't skip over COMBINING GRAPHEME JOINER when ligating, etc.
- To be refined: https://github.com/harfbuzz/harfbuzz/issues/554
- - Faster hb_set_t implementation.
- - Don't use deprecated ICU API.
- - Fix undefined-behavior in Myanmar shaper, introduced in 1.6.0
- - Deprecated API:
- hb_set_invert()
- Overview of changes leading to 1.6.0
- Friday, October the 13th, 2017
- ====================================
- - Update to Unicode 10.
- - Various Indic and Universal Shaping Engine fixes as a result of
- HarfBuzz Hackfest with Jonathan Kew at Web Engines Hackfest at
- the Igalia offices in A Coruña, Spain. Thanks Igalia for having
- us!
- - Implement Unicode Arabic Mark Ordering Algorithm UTR#53.
- - Implement optical sizing / tracking in CoreText backend, using
- new API hb_font_set_ptem().
- - Allow notifying hb_font_t that underlying FT_Face changed sizing,
- using new API hb_ft_font_changed().
- - More Graphite backend RTL fixes.
- - Fix caching of variable font shaping plans.
- - hb-view / hb-shape now accept following new arguments:
- o --unicodes: takes a list of hex numbers that represent Unicode
- codepoints.
- New API:
- +hb_face_get_table_tags()
- +hb_font_set_ptem()
- +hb_font_get_ptem()
- +hb_ft_font_changed()
- Overview of changes leading to 1.5.1
- Tuesday, September 5, 2017
- ====================================
- - Fix "unsafe-to-break" in fallback shaping and other corner cases.
- All our tests pass with --verify now, meaning unsafe-to-break API
- works as expected.
- - Add --unicodes to hb-view / hb-shape.
- - [indic] Treat Consonant_With_Stacker as consonant. This will need
- further tweaking.
- - hb_buffer_diff() tweaks.
- Overview of changes leading to 1.5.0
- Wednesday, August 23, 2017
- ====================================
- - Misc new API, for appending a buffer to another, and for comparing
- contents of two buffers for types of differences.
- - New "unsafe-to-break" API. Can be used to speed up reshaping
- in line-breaking situations. Essentially, after shaping, it returns
- positions in the input string (some of the cluster boundaries) that
- are "safe to break" in that if the text is segmented at that position
- and two sides reshaped and concatenated, the shaping result is
- exactly the same as shaping the text in one piece.
- hb-view and hb-shape and hb-shape now take --verify, which verifies
- the above property.
- Some corner cases of the implementation are still not quite working.
- Those will be fixed in subsequent releases.
- - New API:
- hb_buffer_append()
- hb_glyph_flags_t
- HB_GLYPH_FLAG_UNSAFE_TO_BREAK
- HB_GLYPH_FLAG_DEFINED
- hb_glyph_info_get_glyph_flags()
- HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS
- hb_buffer_diff_flags_t
- HB_BUFFER_DIFF_FLAG_EQUAL
- HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH
- HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH
- HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT
- HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT
- HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH
- HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH
- HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH
- HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH
- hb_buffer_diff
- Overview of changes leading to 1.4.8
- Tuesday, August 8, 2017
- ====================================
- - Major fix to avar table handling.
- - Rename hb-shape --show-message to --trace.
- - Build fixes.
- Overview of changes leading to 1.4.7
- Tuesday, July 18, 2017
- ====================================
- - Multiple Indic, Tibetan, and Cham fixes.
- - CoreText: Allow disabling kerning.
- - Adjust Arabic feature order again.
- - Misc build fixes.
- Overview of changes leading to 1.4.6
- Sunday, April 23, 2017
- ====================================
- - Graphite2: Fix RTL positioning issue.
- - Backlist GDEF of more versions of Padauk and Tahoma.
- - New, experimental, cmake alternative build system.
- Overview of changes leading to 1.4.5
- Friday, March 10, 2017
- ====================================
- - Revert "Fix Context lookup application when moving back after a glyph..."
- This introduced memory access problems. To be fixed properly soon.
- Overview of changes leading to 1.4.4
- Sunday, March 5, 2017
- ====================================
- - Fix Context lookup application when moving back after a glyph deletion.
- - Fix buffer-overrun in Bengali.
- Overview of changes leading to 1.4.3
- Saturday, February 25, 2017
- ====================================
- - Route Adlam script to Arabic shaper.
- - Misc fixes.
- - New API:
- hb_font_set_face()
- - Deprecate API:
- hb_graphite2_font_get_gr_font()
- Overview of changes leading to 1.4.2
- Monday, January 23, 2017
- ====================================
- - Implement OpenType Font Variation tables avar/fvar/HVAR/VVAR.
- - hb-shape and hb-view now accept --variations.
- - New API:
- hb_variation_t
- hb_variation_from_string()
- hb_variation_to_string()
- hb_font_set_variations()
- hb_font_set_var_coords_design()
- hb_font_get_var_coords_normalized()
- hb-ot-var.h:
- hb_ot_var_axis_t
- hb_ot_var_has_data()
- hb_ot_var_get_axis_count()
- hb_ot_var_get_axes()
- hb_ot_var_find_axis()
- hb_ot_var_normalize_variations()
- hb_ot_var_normalize_coords()
- - MVAR to be implemented later. Access to named instances to be
- implemented later as well.
- - Misc fixes.
- Overview of changes leading to 1.4.1
- Thursday, January 5, 2017
- ====================================
- - Always build and use UCDN for Unicode data by default.
- Reduces dependence on version of Unicode data in glib,
- specially in the Windows bundles we are shipping, which
- have very old glib.
- Overview of changes leading to 1.4.0
- Thursday, January 5, 2017
- ====================================
- - Merged "OpenType GX" branch which adds core of support for
- OpenType 1.8 Font Variations. To that extent, the relevant
- new API is:
- New API:
- hb_font_set_var_coords_normalized()
- with supporting API:
- New API:
- HB_OT_LAYOUT_NO_VARIATIONS_INDEX
- hb_ot_layout_table_find_feature_variations()
- hb_ot_layout_feature_with_variations_get_lookups()
- hb_shape_plan_create2()
- hb_shape_plan_create_cached2()
- Currently variations in GSUB/GPOS/GDEF are fully supported,
- and no other tables are supported. In particular, fvar/avar
- are NOT supported, hence the hb_font_set_var_coords_normalized()
- taking normalized coordinates. API to take design coordinates
- will be added in the future.
- HVAR/VVAR/MVAR support will also be added to hb-ot-font in the
- future.
- - Fix regression in GDEF glyph class processing.
- - Add decompositions for Chakma, Limbu, and Balinese in USE shaper.
- - Misc fixes.
- Overview of changes leading to 1.3.4
- Monday, December 5, 2016
- ====================================
- - Fix vertical glyph origin in hb-ot-font.
- - Implement CBDT/CBLC color font glyph extents in hb-ot-font.
- Overview of changes leading to 1.3.3
- Wednesday, September 28, 2016
- ====================================
- - Implement parsing of OpenType MATH table.
- New API:
- HB_OT_TAG_MATH
- HB_OT_MATH_SCRIPT
- hb_ot_math_constant_t
- hb_ot_math_kern_t
- hb_ot_math_glyph_variant_t
- hb_ot_math_glyph_part_flags_t
- hb_ot_math_glyph_part_t
- hb_ot_math_has_data
- hb_ot_math_get_constant
- hb_ot_math_get_glyph_italics_correction
- hb_ot_math_get_glyph_top_accent_attachment
- hb_ot_math_get_glyph_kerning
- hb_ot_math_is_glyph_extended_shape
- hb_ot_math_get_glyph_variants
- hb_ot_math_get_min_connector_overlap
- hb_ot_math_get_glyph_assembly
- Overview of changes leading to 1.3.2
- Wednesday, September 27, 2016
- ====================================
- - Fix build of hb-coretext on older OS X versions.
- Overview of changes leading to 1.3.1
- Wednesday, September 7, 2016
- ====================================
- - Blacklist bad GDEF of more fonts (Padauk).
- - More CoreText backend crash fixes with OS X 10.9.5.
- - Misc fixes.
- Overview of changes leading to 1.3.0
- Thursday, July 21, 2016
- ====================================
- - Update to Unicode 9.0.0
- - Move Javanese from Indic shaper to Universal Shaping Engine.
- - Allow MultipleSubst to delete a glyph (matching Windows engine).
- - Update Universal Shaping Engine to latest draft from Microsoft.
- - DirectWrite backend improvements. Note: this backend is for testing ONLY.
- - CoreText backend improvements with unreachable fonts.
- - Implement symbol fonts (cmap 3.0.0) in hb-ft and hb-ot-font.
- - Blacklist bad GDEF of more fonts (Tahoma & others).
- - Misc fixes.
- Overview of changes leading to 1.2.7
- Monday, May 2, 2016
- ====================================
- - Blacklist another version of Times New Roman (Bold) Italic from Windows 7.
- - Fix Mongolian Free Variation Selectors shaping with certain fonts.
- - Fix Tibetan shorthand contractions shaping.
- - Improved list of language tag mappings.
- - Unbreak build on Windows CE.
- - Make 'glyf' table loading lazy in hb-ot-font.
- Overview of changes leading to 1.2.6
- Friday, April 8, 2016
- ====================================
- - Blacklist GDEF table of another set of Times New Roman (Bold) Italic.
- - DirectWrite backend improvements. Note: DirectWrite backend is
- exclusively for our internal testing and should NOT be used in any
- production system whatsoever.
- Overview of changes leading to 1.2.5
- Monday, April 4, 2016
- ====================================
- - Fix GDEF mark-filtering-set, which was broken in 1.2.3.
- Overview of changes leading to 1.2.4
- Thursday, March 17, 2016
- ====================================
- - Synthesize GDEF glyph class for any glyph that does not have one in GDEF.
- I really hope we don't discover broken fonts that shape badly with this
- change.
- - Misc build and other minor fixes.
- - API changes:
- - Added HB_NDEBUG. It's fine for production systems to define this to
- disable high-overhead debugging checks. However, I also reduced the
- overhead of those checks, so it's a non-issue right now. You can
- forget it. Just not defining anything at all is fine.
- Overview of changes leading to 1.2.3
- Thursday, February 25, 2016
- ====================================
- - Blacklist GDEF table of certain versions of Times New Roman (Bold) Italic,
- due to bug in glyph class of ASCII double-quote character. This should
- address "regression" introduced in 1.2.0 when we switched mark zeroing
- in most shapers from BY_UNICODE_LATE to BY_GDEF_LATE.
- This fourth release in a week should finally stablize things...
- - hb-ot-font's get_glyph() implementation saw some optimizations. Though,
- might be really hard to measure in real-world situations.
- - Also, two rather small API changes:
- We now disable some time-consuming internal bookkeeping if built with NDEBUG
- defined. This is a first time that we use NDEBUG to disable debug code. If
- there exist production systems that do NOT want to enable NDEBUG, please let
- me know and I'll add HB_NDEBUG.
- Added get_nominal_glyph() and get_variation_glyph() instead of get_glyph()
- New API:
- - hb_font_get_nominal_glyph_func_t
- - hb_font_get_variation_glyph_func_t
- - hb_font_funcs_set_nominal_glyph_func()
- - hb_font_funcs_set_variation_glyph_func()
- - hb_font_get_nominal_glyph()
- - hb_font_get_variation_glyph()
- Deprecated API:
- - hb_font_get_glyph_func_t
- - hb_font_funcs_set_glyph_func()
- Clients that implement their own font-funcs are encouraged to replace
- their get_glyph() implementation with a get_nominal_glyph() and
- get_variation_glyph() pair. The variation version can assume that
- variation_selector argument is not zero. Old (deprecated) functions
- will continue working indefinitely using internal gymnastics; it is
- just more efficient to use the new functions.
- Overview of changes leading to 1.2.2
- Wednesday, February 24, 2016
- ====================================
- - Fix regression with mark positioning with fonts that have
- non-zero mark advances. This was introduced in 1.2.0 while
- trying to make mark and cursive attachments to work together.
- I have partially reverted that, so this version is much more
- like what we had before. All clients who updated to 1.2.0
- should update to this version.
- Overview of changes leading to 1.2.1
- Tuesday, February 23, 2016
- ====================================
- - CoreText: Fix bug with wrong scale if font scale was changed later.
- https://github.com/libass/libass/issues/212
- - CoreText: Drastically speed up font initialization.
- - CoreText: Fix tiny leak.
- - Group ZWJ/ZWNJ with previous syllable under cluster-level=0.
- https://github.com/harfbuzz/harfbuzz/issues/217
- - Add test/shaping/README.md about how to add tests to the suite.
- Overview of changes leading to 1.2.0
- Friday, February 19, 2016
- ====================================
- - Fix various issues (hangs mostly) in case of memory allocation failure.
- - Change mark zeroing types of most shapers from BY_UNICODE_LATE to
- BY_GDEF_LATE. This seems to be what Uniscribe does.
- - Change mark zeroing of USE shaper from NONE to BY_GDEF_EARLY. That's
- what Windows does.
- - Allow GPOS cursive connection on marks, and fix the interaction with
- mark attachment. This work resulted in some changes to how mark
- attachments work. See:
- https://github.com/harfbuzz/harfbuzz/issues/211
- https://github.com/harfbuzz/harfbuzz/commit/86c68c7a2c971efe8e35b1f1bd99401dc8b688d2
- - Graphite2 shaper: improved negative advance handling (eg. Nastaliq).
- - Add nmake-based build system for Windows.
- - Minor speedup.
- - Misc. improvements.
- Overview of changes leading to 1.1.3
- Monday, January 11, 2016
- ====================================
- - Ported Indic shaper to Unicode 8.0 data.
- - Universal Shaping Engine fixes.
- - Speed up CoreText shaper when font fallback happens in CoreText.
- - Documentation improvements, thanks to Khaled Hosny.
- - Very rough directwrite shaper for testing, thanks to Ebrahim Byagowi.
- - Misc bug fixes.
- - New API:
- * Font extents:
- hb_font_extents_t
- hb_font_get_font_extents_func_t
- hb_font_get_font_h_extents_func_t
- hb_font_get_font_v_extents_func_t
- hb_font_funcs_set_font_h_extents_func
- hb_font_funcs_set_font_v_extents_func
- hb_font_get_h_extents
- hb_font_get_v_extents
- hb_font_get_extents_for_direction
- * Buffer message (aka debug):
- hb_buffer_message_func_t
- hb_buffer_set_message_func()
- Actual message protocol to be fleshed out later.
- Overview of changes leading to 1.1.2
- Wednesday, November 26, 2015
- ====================================
- - Fix badly-broken fallback shaper that affected terminology.
- https://github.com/harfbuzz/harfbuzz/issues/187
- - Fix y_scaling in Graphite shaper.
- - API changes:
- * An unset glyph_h_origin() function in font-funcs now (sensibly)
- implies horizontal origin at 0,0. Ie, the nil callback returns
- true instead of false. As such, implementations that have a
- glyph_h_origin() that simply returns true, can remove that function
- with HarfBuzz >= 1.1.2. This results in a tiny speedup.
- Overview of changes leading to 1.1.1
- Wednesday, November 24, 2015
- ====================================
- - Build fixes, specially for hb-coretext.
- Overview of changes leading to 1.1.0
- Wednesday, November 18, 2015
- ====================================
- - Implement 'stch' stretch feature for Syriac Abbreviation Mark.
- https://github.com/harfbuzz/harfbuzz/issues/141
- - Disable use of decompose_compatibility() callback.
- - Implement "shaping" of various Unicode space characters, even
- if the font does not support them.
- https://github.com/harfbuzz/harfbuzz/issues/153
- - If font does not support U+2011 NO-BREAK HYPHEN, fallback to
- U+2010 HYPHEN.
- - Changes resulting from libFuzzer continuous fuzzing:
- * Reject font tables that need more than 8 edits,
- * Bound buffer growth during shaping to 32x,
- * Fix assertions and other issues at OOM / buffer max-growth.
- - Misc fixes and optimizations.
- - API changes:
- * All fonts created with hb_font_create() now inherit from
- (ie. have parent) hb_font_get_empty().
- Overview of changes leading to 1.0.6
- Thursday, October 15, 2015
- ====================================
- - Reduce max nesting level in OT lookups from 8 to 6.
- Should not affect any real font as far as I know.
- - Fix memory access issue in ot-font.
- - Revert default load-flags of fonts created using hb_ft_font_create()
- back to FT_LOAD_DEFAULT|FT_LOAD_NO_HINTING. This was changed in
- last release (1.0.5), but caused major issues, so revert.
- https://github.com/harfbuzz/harfbuzz/issues/143
- Overview of changes leading to 1.0.5
- Tuesday, October 13, 2015
- ====================================
- - Fix multiple memory access bugs discovered using libFuzzer.
- https://github.com/harfbuzz/harfbuzz/issues/139
- Everyone should upgrade to this version as soon as possible.
- We now have continuous fuzzing set up, to avoid issues like
- these creeping in again.
- - Misc fixes.
- - New API:
- * hb_font_set_parent().
- * hb_ft_font_[sg]et_load_flags()
- The default flags for fonts created using hb_ft_font_create()
- has changed to default to FT_LOAD_DEFAULT now. Previously it
- was defaulting to FT_LOAD_DFEAULT|FT_LOAD_NO_HINTING.
- - API changes:
- * Fonts now default to units-per-EM as their scale, instead of 0.
- * hb_font_create_sub_font() does NOT make parent font immutable
- anymore. hb_font_make_immutable() does.
- Overview of changes leading to 1.0.4
- Wednesday, September 30, 2015
- ====================================
- - Fix minor out-of-bounds read error.
- Overview of changes leading to 1.0.3
- Tuesday, September 1, 2015
- ====================================
- - Start of user documentation, from Simon Cozens!
- - Implement glyph_extents() for TrueType fonts in hb-ot-font.
- - Improve GPOS cursive attachments with conflicting lookups.
- - More fixes for cluster-level = 1.
- - Uniscribe positioning fix.
- Overview of changes leading to 1.0.2
- Wednesday, August 19, 2015
- ====================================
- - Fix shaping with cluster-level > 0.
- - Fix Uniscribe backend font-size scaling.
- - Declare dependencies in harfbuzz.pc.
- FreeType is not declared though, to avoid bugs in pkg-config
- 0.26 with recursive dependencies.
- - Slightly improved debug infrastructure. More to come later.
- - Misc build fixes.
- Overview of changes leading to 1.0.1
- Monday, July 27, 2015
- ====================================
- - Fix out-of-bounds access in USE shaper.
- Overview of changes leading to 1.0.0
- Sunday, July 26, 2015
- ====================================
- - Implement Universal Shaping Engine:
- https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm
- http://blogs.windows.com/bloggingwindows/2015/02/23/windows-shapes-the-worlds-languages/
- - Bump version to 1.0.0. The soname was NOT bumped.
- Overview of changes leading to 0.9.42
- Thursday, July 26, 2015
- =====================================
- - New API to allow for retrieving finer-grained cluster
- mappings if the client desires to handle them. Default
- behavior is unchanged.
- - Fix cluster merging when removing default-ignorables.
- - Update to Unicode 8.0
- - hb-graphite2 fixes.
- - Misc fixes.
- - Removed HB_NO_MERGE_CLUSTERS hack.
- - New API:
- hb_buffer_cluster_level_t enum
- hb_buffer_get_cluster_level()
- hb_buffer_set_cluster_level()
- hb-shape / hb-view --cluster-level
- Overview of changes leading to 0.9.41
- Thursday, June 18, 2015
- =====================================
- - Fix hb-coretext with trailing whitespace in right-to-left.
- - New API: hb_buffer_reverse_range().
- - Allow implementing atomic ops in config.h.
- - Fix hb_language_t in language bindings.
- - Misc fixes.
- Overview of changes leading to 0.9.40
- Friday, March 20, 2015
- =====================================
- - Another hb-coretext crasher fix. Ouch!
- - Happy Norouz!
- Overview of changes leading to 0.9.39
- Wednesday, March 4, 2015
- =====================================
- - Critical hb-coretext fixes.
- - Optimizations and refactoring; no functional change
- expected.
- - Misc build fixes.
- Overview of changes leading to 0.9.38
- Friday, January 23, 2015
- =====================================
- - Fix minor out-of-bounds access in Indic shaper.
- - Change New Tai Lue shaping engine from South-East Asian to default,
- reflecting change in Unicode encoding model.
- - Add hb-shape --font-size. Can take up to two numbers for separate
- x / y size.
- - Fix CoreText and FreeType scale issues with negative scales.
- - Reject blobs larger than 2GB. This might break some icu-le-hb clients
- that need security fixes. See:
- http://www.icu-project.org/trac/ticket/11450
- - Avoid accessing font tables during face destruction, in casce rogue
- clients released face data already.
- - Fix up gobject-introspection a bit. Python bindings kinda working.
- See README.python.
- - Misc fixes.
- - API additions:
- hb_ft_face_create_referenced()
- hb_ft_font_create_referenced()
- Overview of changes leading to 0.9.37
- Wednesday, December 17, 2014
- =====================================
- - Fix out-of-bounds access in Context lookup format 3.
- - Indic: Allow ZWJ/ZWNJ before syllable modifiers.
- Overview of changes leading to 0.9.36
- Thursday, November 20, 2014
- =====================================
- - First time that three months went by without a release since
- 0.9.2 was released on August 10, 2012!
- - Fix performance bug in hb_ot_collect_glyphs():
- https://bugzilla.mozilla.org/show_bug.cgi?id=1090869
- - Add basic vertical-text support to hb-ot-font.
- - Misc build fixes.
- Overview of changes leading to 0.9.35
- Saturday, August 13, 2014
- =====================================
- - Fix major shape-plan caching bug when more than one shaper were
- provided to hb_shape_full() (as exercised by XeTeX).
- http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html
- - Fix Arabic fallback shaping regression. This was broken in 0.9.32.
- - Major hb-coretext fixes. That backend is complete now, including
- respecing buffer direction and language, down to vertical writing.
- - Build fixes for Windows CE. Should build fine now.
- - Misc fixes:
- Use atexit() only if it's safe to call from shared library
- https://bugs.freedesktop.org/show_bug.cgi?id=82246
- Mandaic had errors in its Unicode Joining_Type
- https://bugs.freedesktop.org/show_bug.cgi?id=82306
- - API changes:
- * hb_buffer_clear_contents() does not reset buffer flags now.
- After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
- need to set flags for different pieces of text. The flags now
- are something the client sets up once, depending on how it
- actually uses the buffer. As such, don't clear it in
- clear_contents().
- I don't expect any changes to be needed to any existing client.
- Overview of changes leading to 0.9.34
- Saturday, August 2, 2014
- =====================================
- - hb_feature_from_string() now accepts CSS font-feature-settings format.
- - As a result, hb-shape / hb-view --features also accept CSS-style strings.
- Eg, "'liga' off" is accepted now.
- - Add old-spec Myanmar shaper:
- https://bugs.freedesktop.org/show_bug.cgi?id=81775
- - Don't apply 'calt' in Hangul shaper.
- - Fix mark advance zeroing for Hebrew shaper:
- https://bugs.freedesktop.org/show_bug.cgi?id=76767
- - Implement Windows-1256 custom Arabic shaping. Only built on Windows,
- and requires help from get_glyph(). Used by Firefox.
- https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
- - Disable 'liga' in vertical text.
- - Build fixes.
- - API changes:
- * Make HB_BUFFER_FLAG_BOT/EOT easier to use.
- Previously, we expected users to provide BOT/EOT flags when the
- text *segment* was at paragraph boundaries. This meant that for
- clients that provide full paragraph to HarfBuzz (eg. Pango), they
- had code like this:
- hb_buffer_set_flags (hb_buffer,
- (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
- (item_offset + item_length == paragraph_length ?
- HB_BUFFER_FLAG_EOT : 0));
- hb_buffer_add_utf8 (hb_buffer,
- paragraph_text, paragraph_length,
- item_offset, item_length);
- After this change such clients can simply say:
- hb_buffer_set_flags (hb_buffer,
- HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
- hb_buffer_add_utf8 (hb_buffer,
- paragraph_text, paragraph_length,
- item_offset, item_length);
- Ie, HarfBuzz itself checks whether the segment is at the beginning/end
- of the paragraph. Clients that only pass item-at-a-time to HarfBuzz
- continue not setting any flags whatsoever.
- Another way to put it is: if there's pre-context text in the buffer,
- HarfBuzz ignores the BOT flag. If there's post-context, it ignores
- EOT flag.
- Overview of changes leading to 0.9.33
- Tuesday, July 22, 2014
- =====================================
- - Turn off ARabic 'cswh' feature that was accidentally turned on.
- - Add HB_TAG_MAX_SIGNED.
- - Make hb_face_make_immutable() really make face immutable!
- - Windows build fixes.
- Overview of changes leading to 0.9.32
- Thursday, July 17, 2014
- =====================================
- - Apply Arabic shaping features in spec order exactly.
- - Another fix for Mongolian free variation selectors.
- - For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt'
- together.
- - Minor adjustment to U+FFFD logic.
- - Fix hb-coretext build.
- Overview of changes leading to 0.9.31
- Wednesday, July 16, 2014
- =====================================
- - Only accept valid UTF-8/16/32; we missed many cases before.
- - Better shaping of invalid UTF-8/16/32. Falls back to
- U+FFFD REPLACEMENT CHARACTER now.
- - With all changes in this release, the buffer will contain fully
- valid Unicode after hb_buffer_add_utf8/16/32 no matter how
- broken the input is. This can be overridden though. See below.
- - Fix Mongolian Variation Selectors for fonts without GDEF.
- - Fix minor invalid buffer access.
- - Accept zh-Hant and zh-Hans language tags. hb_ot_tag_to_language()
- now uses these instead of private tags.
- - Build fixes.
- - New API:
- * hb_buffer_add_codepoints(). This does what hb_buffer_add_utf32()
- used to do, ie. no validity check on the input at all. add_utf32
- now replaces invalid Unicode codepoints with the replacement
- character (see below).
- * hb_buffer_set_replacement_codepoint()
- * hb_buffer_get_replacement_codepoint()
- Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when
- we detected broken input, we replaced that with (hb_codepoint_t)-1.
- This has changed to use U+FFFD now, but can be changed using these
- new API.
- Overview of changes leading to 0.9.30
- Wednesday, July 9, 2014
- =====================================
- - Update to Unicode 7.0.0:
- * New scripts Manichaean and Psalter Pahlavi are shaped using
- Arabic shaper.
- * All the other new scripts to through the generic shaper for
- now.
- - Minor Indic improvements.
- - Fix graphite2 backend cluster mapping [crasher!]
- - API changes:
- * New HB_SCRIPT_* values for Unicode 7.0 scripts.
- * New function hb_ot_layout_language_get_required_feature().
- - Build fixes.
- Overview of changes leading to 0.9.29
- Thursday, May 29, 2014
- =====================================
- - Implement cmap in hb-ot-font.h. No variation-selectors yet.
- - Myanmar: Allow MedialYa+Asat.
- - Various Indic fixes:
- * Support most characters in Extended Devanagary and Vedic
- Unicode blocks.
- * Allow digits and a some punctuation as consonant placeholders.
- - Build fixes.
- Overview of changes leading to 0.9.28
- Monday, April 28, 2014
- =====================================
- - Unbreak old-spec Indic shaping. (bug 76705)
- - Fix shaping of U+17DD and U+0FC6.
- - Add HB_NO_MERGE_CLUSTERS build option. NOT to be enabled by default
- for shipping libraries. It's an option for further experimentation
- right now. When we are sure how to do it properly, we will add
- public run-time API for the functionality.
- - Build fixes.
- Overview of changes leading to 0.9.27
- Tuesday, March 18, 2014
- =====================================
- - Don't use "register" storage class specifier
- - Wrap definition of free_langs() with HAVE_ATEXIT
- - Add coretext_aat shaper and hb_coretext_face_create() constructor
- - If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
- - Add Myanmar test case from OpenType Myanmar spec
- - Only do fallback Hebrew composition if no GPOS 'mark' available
- - Allow bootstrapping without gtk-doc
- - Use AM_MISSING_PROG for ragel and git
- - Typo in ucdn's Makefile.am
- - Improve MemoryBarrier() implementation
- Overview of changes leading to 0.9.26
- Thursday, January 30, 2014
- =====================================
- - Misc fixes.
- - Fix application of 'rtlm' feature.
- - Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH.
- - New header: hb-ot-shape.h
- - Uniscribe: fix scratch-buffer accounting.
- - Reorder Tai Tham SAKOT to after tone-marks.
- - Add Hangul shaper.
- - New files:
- hb-ot-shape-complex-hangul.cc
- hb-ot-shape-complex-hebrew.cc
- hb-ot-shape-complex-tibetan.cc
- - Disable 'cswh' feature in Arabic shaper.
- - Coretext: better handle surrogate pairs.
- - Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE.
- Overview of changes leading to 0.9.25
- Wednesday, December 4, 2013
- =====================================
- - Myanmar shaper improvements.
- - Avoid font fallback in CoreText backend.
- - Additional OpenType language tag mappiongs.
- - More aggressive shape-plan caching.
- - Build with / require automake 1.13.
- - Build with libtool 2.4.2.418 alpha to support ppc64le.
- Overview of changes leading to 0.9.24
- Tuesday, November 13, 2013
- =====================================
- - Misc compiler warning fixes with clang.
- - No functional changes.
- Overview of changes leading to 0.9.23
- Monday, October 28, 2013
- =====================================
- - "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
- - Fix (Chain)Context recursion with non-monotone lookup positions.
- - Misc Indic bug fixes.
- - New Javanese / Buginese shaping, similar to Windows 8.1.
- Overview of changes leading to 0.9.22
- Thursday, October 3, 2013
- =====================================
- - Fix use-after-end-of-scope in hb_language_from_string().
- - Fix hiding of default_ignorables if font doesn't have space glyph.
- - Protect against out-of-range lookup indices.
- - API Changes:
- * Added hb_ot_layout_table_get_lookup_count()
- Overview of changes leading to 0.9.21
- Monday, September 16, 2013
- =====================================
- - Rename gobject-introspection library name from harfbuzz to HarfBuzz.
- - Remove (long disabled) hb-old and hb-icu-le test shapers.
- - Misc gtk-doc and gobject-introspection annotations.
- - Misc fixes.
- - API changes:
- * Add HB_SET_VALUE_INVALID
- Overview of changes leading to 0.9.20
- Thursday, August 29, 2013
- =====================================
- General:
- - Misc substitute_closure() fixes.
- - Build fixes.
- Documentation:
- - gtk-doc boilerplate integrated. Docs are built now, but
- contain no contents. By next release hopefully we have
- some content in. Enable using --enable-gtk-doc.
- GObject and Introspection:
- - Added harfbuzz-gobject library (hb-gobject.h) that has type
- bindings for all HarfBuzz objects and enums. Enable using
- --with-gobject.
- - Added gobject-introspection boilerplate. Nothing useful
- right now. Work in progress. Gets enabled automatically if
- --with-gobject is used. Override with --disable-introspection.
- OpenType shaper:
- - Apply 'mark' in Myanmar shaper.
- - Don't apply 'dlig' by default.
- Uniscribe shaper:
- - Support user features.
- - Fix loading of fonts that are also installed on the system.
- - Fix shaping of Arabic Presentation Forms.
- - Fix build with wide chars.
- CoreText shaper:
- - Support user features.
- Source changes:
- - hb_face_t code moved to hb-face.h / hb-face.cc.
- - Added hb-deprecated.h.
- API changes:
- - Added HB_DISABLE_DEPRECATED.
- - Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
- HB_SCRIPT_CANADIAN_SYLLABICS.
- - Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
- HB_BUFFER_FLAG_DEFAULT.
- - Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
- HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
- Overview of changes leading to 0.9.19
- Tuesday, July 16, 2013
- =====================================
- - Build fixes.
- - Better handling of multiple variation selectors in a row.
- - Pass on variation selector to GSUB if not consumed by cmap.
- - Fix undefined memory access.
- - Add Javanese config to Indic shaper.
- - Misc bug fixes.
- Overview of changes leading to 0.9.18
- Tuesday, May 28, 2013
- =====================================
- New build system:
- - All unneeded code is all disabled by default,
- - Uniscribe and CoreText shapers can be enabled with their --with options,
- - icu_le and old shapers cannot be enabled for now,
- - glib, freetype, and cairo will be detected automatically.
- They can be force on/off'ed with their --with options,
- - icu and graphite2 are default off, can be enabled with their --with
- options,
- Moreover, ICU support is now build into a separate library:
- libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
- Distros can enable ICU now without every application on earth
- getting linked to via libharfbuzz.so.
- For distros I recommend that they make sure they are building --with-glib
- --with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
- And package harfbuzz and harfbuzz-icu separately.
- Overview of changes leading to 0.9.17
- Monday, May 20, 2013
- =====================================
- - Build fixes.
- - Fix bug in hb_set_get_min().
- - Fix regression with Arabic mark positioning / width-zeroing.
- Overview of changes leading to 0.9.16
- Friday, April 19, 2013
- =====================================
- - Major speedup in OpenType lookup processing. With the Amiri
- Arabic font, this release is over 3x faster than previous
- release. All scripts / languages should see this speedup.
- - New --num-iterations option for hb-shape / hb-view; useful for
- profiling.
- Overview of changes leading to 0.9.15
- Friday, April 05, 2013
- =====================================
- - Build fixes.
- - Fix crasher in graphite2 shaper.
- - Fix Arabic mark width zeroing regression.
- - Don't compose Hangul jamo into Unicode syllables.
- Overview of changes leading to 0.9.14
- Thursday, March 21, 2013
- =====================================
- - Build fixes.
- - Fix time-consuming sanitize with malicious fonts.
- - Implement hb_buffer_deserialize_glyphs() for both json and text.
- - Do not ignore Hangul filler characters.
- - Indic fixes:
- * Fix Malayalam pre-base reordering interaction with post-forms.
- * Further adjust ZWJ handling. Should fix known regressions from
- 0.9.13.
- Overview of changes leading to 0.9.13
- Thursday, February 25, 2013
- =====================================
- - Build fixes.
- - Ngapi HarfBuzz Hackfest in London (February 2013):
- * Fixed all known Indic bugs,
- * New Win8-style Myanmar shaper,
- * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
- * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
- matching GSUB/GPOS lookups,
- * Fix 'Phags-Pa U+A872 shaping,
- * Fix partial disabling of default-on features,
- * Allow disabling of TrueType kerning.
- - Fix possible crasher with broken fonts with overlapping tables.
- - Removed generated files from git again. So, one needs ragel to
- bootstrap from the git tree.
- API changes:
- - hb_shape() and related APIs now abort if buffer direction is
- HB_DIRECTION_INVALID. Previously, hb_shape() was calling
- hb_buffer_guess_segment_properties() on the buffer before
- shaping. The heuristics in that function are fragile. If the
- user really wants the old behvaior, they can call that function
- right before calling hb_shape() to get the old behavior.
- - hb_blob_create_sub_blob() always creates sub-blob with
- HB_MEMORY_MODE_READONLY. See comments for the reason.
- Overview of changes leading to 0.9.12
- Thursday, January 18, 2013
- =====================================
- - Build fixes for Sun compiler.
- - Minor bug fix.
- Overview of changes leading to 0.9.11
- Thursday, January 10, 2013
- =====================================
- - Build fixes.
- - Fix GPOS mark attachment with null Anchor offsets.
- - [Indic] Fix old-spec reordering of viramas if sequence ends in one.
- - Fix multi-threaded shaper data creation crash.
- - Add atomic ops for Solaris.
- API changes:
- - Rename hb_buffer_clear() to hb_buffer_clear_contents().
- Overview of changes leading to 0.9.10
- Thursday, January 3, 2013
- =====================================
- - [Indic] Fixed rendering of Malayalam dot-reph
- - Updated OT language tags.
- - Updated graphite2 backend.
- - Improved hb_ot_layout_get_size_params() logic.
- - Improve hb-shape/hb-view help output.
- - Fixed hb-set.h implementation to not crash.
- - Fixed various issues with hb_ot_layout_collect_lookups().
- - Various build fixes.
- New API:
- hb_graphite2_face_get_gr_face()
- hb_graphite2_font_get_gr_font()
- hb_coretext_face_get_cg_font()
- Modified API:
- hb_ot_layout_get_size_params()
- Overview of changes leading to 0.9.9
- Wednesday, December 5, 2012
- ====================================
- - Fix build on Windows.
- - Minor improvements.
- Overview of changes leading to 0.9.8
- Tuesday, December 4, 2012
- ====================================
- - Actually implement hb_shape_plan_get_shaper ().
- - Make UCDB data tables const.
- - Lots of internal refactoring in OTLayout tables.
- - Flesh out hb_ot_layout_lookup_collect_glyphs().
- New API:
- hb_ot_layout_collect_lookups()
- hb_ot_layout_get_size_params()
- Overview of changes leading to 0.9.7
- Sunday, November 21, 2012
- ====================================
- HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
- - Fix Arabic contextual joining using pre-context text.
- - Fix Sinhala "split matra" mess.
- - Fix Khmer shaping with broken fonts.
- - Implement Thai "PUA" shaping for old fonts.
- - Do NOT route Kharoshthi script through the Indic shaper.
- - Disable fallback positioning for Indic and Thai shapers.
- - Misc fixes.
- hb-shape / hb-view changes:
- - Add --text-before and --text-after
- - Add --bot / --eot / --preserve-default-ignorables
- - hb-shape --output-format=json
- New API:
- hb_buffer_clear()
- hb_buffer_flags_t
- HB_BUFFER_FLAGS_DEFAULT
- HB_BUFFER_FLAG_BOT
- HB_BUFFER_FLAG_EOT
- HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
- hb_buffer_set_flags()
- hb_buffer_get_flags()
- HB_BUFFER_SERIALIZE_FLAGS
- hb_buffer_serialize_glyphs()
- hb_buffer_deserialize_glyphs()
- hb_buffer_serialize_list_formats()
- hb_set_add_range()
- hb_set_del_range()
- hb_set_get_population()
- hb_set_next_range()
- hb_face_[sg]et_glyph_count()
- hb_segment_properties_t
- HB_SEGMENT_PROPERTIES_DEFAULT
- hb_segment_properties_equal()
- hb_segment_properties_hash()
- hb_buffer_set_segment_properties()
- hb_buffer_get_segment_properties()
- hb_ot_layout_glyph_class_t
- hb_ot_layout_get_glyph_class()
- hb_ot_layout_get_glyphs_in_class()
- hb_shape_plan_t
- hb_shape_plan_create()
- hb_shape_plan_create_cached()
- hb_shape_plan_get_empty()
- hb_shape_plan_reference()
- hb_shape_plan_destroy()
- hb_shape_plan_set_user_data()
- hb_shape_plan_get_user_data()
- hb_shape_plan_execute()
- hb_shape_plan_get_shaper()
- hb_ot_shape_plan_collect_lookups()
- API changes:
- - Remove "mask" parameter from hb_buffer_add().
- - Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
- - hb-set.h API const correction.
- - Renamed hb_set_min/max() to hb_set_get_min/max().
- - Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
- - Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
- Overview of changes leading to 0.9.6
- Sunday, November 13, 2012
- ====================================
- - Don't clear pre-context text if no new context is provided.
- - Fix ReverseChainingSubstLookup, which was totally borked.
- - Adjust output format of hb-shape a bit.
- - Include config.h.in in-tree. Makes it easier for alternate build systems.
- - Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
- - Use ICU LayoutEngine's C API instead of C++. Avoids much headache.
- - Drop glyphs for all of Unicode Default_Ignorable characters.
- - Misc build fixes.
- Arabic shaper:
- - Enable 'dlig' and 'mset' features in Arabic shaper.
- - Implement 'Phags-pa shaping, improve Mongolian.
- Indic shaper:
- - Decompose Sinhala split matras the way old HarfBuzz / Pango did.
- - Initial support for Consonant Medials.
- - Start adding new-style Myanmar shaping.
- - Make reph and 'pref' logic introspect the font.
- - Route Meetei-Mayek through the Indic shaper.
- - Don't apply 'liga' in Indic shaper.
- - Improve Malayalam pre-base reordering Ra interaction with Chillus.
- Overview of changes leading to 0.9.5
- Sunday, October 14, 2012
- ====================================
- - Synthetic-GSUB Arabic fallback shaping.
- - Misc Indic improvements.
- - Add build system support for pthread.
- - Imported UCDN for in-tree Unicode callbacks implementation.
- - Context-aware Arabic joining.
- - Misc other fixes.
- - New API:
- hb_feature_to/from-string()
- hb_buffer_[sg]et_content_type()
- Overview of changes leading to 0.9.4
- Tuesday, Sep 03, 2012
- ====================================
- - Indic improvements with old-spec Malayalam.
- - Better fallback glyph positioning, specially with Thai / Lao marks.
- - Implement dotted-circle insertion.
- - Better Arabic fallback shaping / ligation.
- - Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name.
- - Misc fixes.
- Overview of changes leading to 0.9.3
- Friday, Aug 18, 2012
- ====================================
- - Fixed fallback mark positioning for left-to-right text.
- - Improve mark positioning for the remaining combining classes.
- - Unbreak Thai and fallback Arabic shaping.
- - Port Arabic shaper to shape-plan caching.
- - Use new ICU normalizer functions.
- Overview of changes leading to 0.9.2
- Friday, Aug 10, 2012
- ====================================
- - Over a thousand commits! This is the first major release of HarfBuzz.
- - HarfBuzz is feature-complete now! It should be in par, or better, than
- both Pango's shapers and old HarfBuzz / Qt shapers.
- - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
- - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
- Sinhala, N'ko, Mongolian, and Mandaic.
- - New Thai / Lao shaper.
- - Tibetan / Hangul support in the generic shaper.
- - Synthetic GDEF support for fonts without a GDEF table.
- - Fallback mark positioning for fonts without a GPOS table.
- - Unicode normalization shaping heuristic during glyph mapping.
- - New experimental Graphite2 backend.
- - New Uniscribe backend (primarily for testing).
- - New CoreText backend (primarily for testing).
- - Major optimization and speedup.
- - Test suites and testing infrastructure (work in progress).
- - Greatly improved hb-view cmdline tool.
- - hb-shape cmdline tool.
- - Unicode 6.1 support.
- Summary of API changes:
- o Changed API:
- - Users are expected to only include main header files now (ie. hb.h,
- hb-glib.h, hb-ft.h, ...)
- - All struct tag names had their initial underscore removed.
- Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
- - All set_user_data() functions now take a "replace" boolean parameter.
- - hb_buffer_create() takes zero arguments now.
- Use hb_buffer_pre_allocate() to pre-allocate.
- - hb_buffer_add_utf*() now accept -1 for length parameteres,
- meaning "nul-terminated".
- - hb_direction_t enum values changed.
- - All *_from_string() APIs now take a length parameter to allow for
- non-nul-terminated strings. A -1 length means "nul-terminated".
- - Typedef for hb_language_t changed.
- - hb_get_table_func_t renamed to hb_reference_table_func_t.
- - hb_ot_layout_table_choose_script()
- - Various renames in hb-unicode.h.
- o New API:
- - hb_buffer_guess_properties()
- Automatically called by hb_shape().
- - hb_buffer_normalize_glyphs()
- - hb_tag_from_string()
- - hb-coretext.h
- - hb-uniscribe.h
- - hb_face_reference_blob()
- - hb_face_[sg]et_index()
- - hb_face_set_upem()
- - hb_font_get_glyph_name_func_t
- hb_font_get_glyph_from_name_func_t
- hb_font_funcs_set_glyph_name_func()
- hb_font_funcs_set_glyph_from_name_func()
- hb_font_get_glyph_name()
- hb_font_get_glyph_from_name()
- hb_font_glyph_to_string()
- hb_font_glyph_from_string()
- - hb_font_set_funcs_data()
- - hb_ft_font_set_funcs()
- - hb_ft_font_get_face()
- - hb-gobject.h (work in progress)
- - hb_ot_shape_glyphs_closure()
- hb_ot_layout_substitute_closure_lookup()
- - hb-set.h
- - hb_shape_full()
- - hb_unicode_combining_class_t
- - hb_unicode_compose_func_t
- hb_unicode_decompose_func_t
- hb_unicode_decompose_compatibility_func_t
- hb_unicode_funcs_set_compose_func()
- hb_unicode_funcs_set_decompose_func()
- hb_unicode_funcs_set_decompose_compatibility_func()
- hb_unicode_compose()
- hb_unicode_decompose()
- hb_unicode_decompose_compatibility()
- o Removed API:
- - hb_ft_get_font_funcs()
- - hb_ot_layout_substitute_start()
- hb_ot_layout_substitute_lookup()
- hb_ot_layout_substitute_finish()
- hb_ot_layout_position_start()
- hb_ot_layout_position_lookup()
- hb_ot_layout_position_finish()
- Overview of changes leading to 0.6.0
- Friday, May 27, 2011
- ====================================
- - Vertical text support in GPOS
- - Almost all API entries have unit tests now, under test/
- - All thread-safety issues are fixed
- Summary of API changes follows.
- * Simple Types API:
- o New API:
- HB_LANGUAGE_INVALID
- hb_language_get_default()
- hb_direction_to_string()
- hb_direction_from_string()
- hb_script_get_horizontal_direction()
- HB_UNTAG()
- o Renamed API:
- hb_category_t renamed to hb_unicode_general_category_t
- o Changed API:
- hb_language_t is a typed pointers now
- o Removed API:
- HB_TAG_STR()
- * Use ISO 15924 tags for hb_script_t:
- o New API:
- hb_script_from_iso15924_tag()
- hb_script_to_iso15924_tag()
- hb_script_from_string()
- o Changed API:
- HB_SCRIPT_* enum members changed value.
- * Buffer API streamlined:
- o New API:
- hb_buffer_reset()
- hb_buffer_set_length()
- hb_buffer_allocation_successful()
- o Renamed API:
- hb_buffer_ensure() renamed to hb_buffer_pre_allocate()
- hb_buffer_add_glyph() renamed to hb_buffer_add()
- o Removed API:
- hb_buffer_clear()
- hb_buffer_clear_positions()
- o Changed API:
- hb_buffer_get_glyph_infos() takes an out length parameter now
- hb_buffer_get_glyph_positions() takes an out length parameter now
- * Blob API streamlined:
- o New API:
- hb_blob_get_data()
- hb_blob_get_data_writable()
- o Renamed API:
- hb_blob_create_empty() renamed to hb_blob_get_empty()
- o Removed API:
- hb_blob_lock()
- hb_blob_unlock()
- hb_blob_is_writable()
- hb_blob_try_writable()
- o Changed API:
- hb_blob_create() takes user_data before destroy now
- * Unicode functions API:
- o Unicode function vectors can subclass other unicode function vectors now.
- Unimplemented callbacks in the subclass automatically chainup to the parent.
- o All hb_unicode_funcs_t callbacks take a user_data now. Their setters
- take a user_data and its respective destroy callback.
- o New API:
- hb_unicode_funcs_get_empty()
- hb_unicode_funcs_get_default()
- hb_unicode_funcs_get_parent()
- o Changed API:
- hb_unicode_funcs_create() now takes a parent_funcs.
- o Removed func getter functions:
- hb_unicode_funcs_get_mirroring_func()
- hb_unicode_funcs_get_general_category_func()
- hb_unicode_funcs_get_script_func()
- hb_unicode_funcs_get_combining_class_func()
- hb_unicode_funcs_get_eastasian_width_func()
- * Face API:
- o Renamed API:
- hb_face_get_table() renamed to hb_face_reference_table()
- hb_face_create_for_data() renamed to hb_face_create()
- o Changed API:
- hb_face_create_for_tables() takes user_data before destroy now
- hb_face_reference_table() returns empty blob instead of NULL
- hb_get_table_func_t accepts the face as first parameter now
- * Font API:
- o Fonts can subclass other fonts now. Unimplemented callbacks in the
- subclass automatically chainup to the parent. When chaining up,
- scale is adjusted if the parent font has a different scale.
- o All hb_font_funcs_t callbacks take a user_data now. Their setters
- take a user_data and its respective destroy callback.
- o New API:
- hb_font_get_parent()
- hb_font_funcs_get_empty()
- hb_font_create_sub_font()
- o Removed API:
- hb_font_funcs_copy()
- hb_font_unset_funcs()
- o Removed func getter functions:
- hb_font_funcs_get_glyph_func()
- hb_font_funcs_get_glyph_advance_func()
- hb_font_funcs_get_glyph_extents_func()
- hb_font_funcs_get_contour_point_func()
- hb_font_funcs_get_kerning_func()
- o Changed API:
- hb_font_create() takes a face and references it now
- hb_font_set_funcs() takes user_data before destroy now
- hb_font_set_scale() accepts signed integers now
- hb_font_get_contour_point_func_t now takes glyph first, then point_index
- hb_font_get_glyph_func_t returns a success boolean now
- * Changed object model:
- o All object types have a _get_empty() now:
- hb_blob_get_empty()
- hb_buffer_get_empty()
- hb_face_get_empty()
- hb_font_get_empty()
- hb_font_funcs_get_empty()
- hb_unicode_funcs_get_empty()
- o Added _set_user_data() and _get_user_data() for all object types:
- hb_blob_get_user_data()
- hb_blob_set_user_data()
- hb_buffer_get_user_data()
- hb_buffer_set_user_data()
- hb_face_get_user_data()
- hb_face_set_user_data()
- hb_font_funcs_get_user_data()
- hb_font_funcs_set_user_data()
- hb_font_get_user_data()
- hb_font_set_user_data()
- hb_unicode_funcs_get_user_data()
- hb_unicode_funcs_set_user_data()
- o Removed the _get_reference_count() from all object types:
- hb_blob_get_reference_count()
- hb_buffer_get_reference_count()
- hb_face_get_reference_count()
- hb_font_funcs_get_reference_count()
- hb_font_get_reference_count()
- hb_unicode_funcs_get_reference_count()
- o Added _make_immutable() and _is_immutable() for all object types except for buffer:
- hb_blob_make_immutable()
- hb_blob_is_immutable()
- hb_face_make_immutable()
- hb_face_is_immutable()
- * Changed API for vertical text support
- o The following callbacks where removed:
- hb_font_get_glyph_advance_func_t
- hb_font_get_kerning_func_t
- o The following new callbacks added instead:
- hb_font_get_glyph_h_advance_func_t
- hb_font_get_glyph_v_advance_func_t
- hb_font_get_glyph_h_origin_func_t
- hb_font_get_glyph_v_origin_func_t
- hb_font_get_glyph_h_kerning_func_t
- hb_font_get_glyph_v_kerning_func_t
- o The following API removed as such:
- hb_font_funcs_set_glyph_advance_func()
- hb_font_funcs_set_kerning_func()
- hb_font_get_glyph_advance()
- hb_font_get_kerning()
- o New API added instead:
- hb_font_funcs_set_glyph_h_advance_func()
- hb_font_funcs_set_glyph_v_advance_func()
- hb_font_funcs_set_glyph_h_origin_func()
- hb_font_funcs_set_glyph_v_origin_func()
- hb_font_funcs_set_glyph_h_kerning_func()
- hb_font_funcs_set_glyph_v_kerning_func()
- hb_font_get_glyph_h_advance()
- hb_font_get_glyph_v_advance()
- hb_font_get_glyph_h_origin()
- hb_font_get_glyph_v_origin()
- hb_font_get_glyph_h_kerning()
- hb_font_get_glyph_v_kerning()
- o The following higher-leve API added for convenience:
- hb_font_get_glyph_advance_for_direction()
- hb_font_get_glyph_origin_for_direction()
- hb_font_add_glyph_origin_for_direction()
- hb_font_subtract_glyph_origin_for_direction()
- hb_font_get_glyph_kerning_for_direction()
- hb_font_get_glyph_extents_for_origin()
- hb_font_get_glyph_contour_point_for_origin()
- * OpenType Layout API:
- o New API:
- hb_ot_layout_position_start()
- hb_ot_layout_substitute_start()
- hb_ot_layout_substitute_finish()
- * Glue code:
- o New API:
- hb_glib_script_to_script()
- hb_glib_script_from_script()
- hb_icu_script_to_script()
- hb_icu_script_from_script()
- * Version API added:
- o New API:
- HB_VERSION_MAJOR
- HB_VERSION_MINOR
- HB_VERSION_MICRO
- HB_VERSION_STRING
- HB_VERSION_CHECK()
- hb_version()
- hb_version_string()
- hb_version_check()
|