| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545 |
- Overview of changes leading to 10.1.0
- Tuesday, November 5, 2024
- ====================================
- - Fix the sign of fallback vertical glyph advance (used when font has no
- vertical advance data).
- - Increase maximum “CFF” operands limit 20 times to support more complex fonts.
- - Add “--face-loader” option to command line utilities.
- - Support “COLR” v0 table in hb_font_get_glyph_extents().
- - Add support for font functions that use Core Text APIs, similar to FreeType
- font functions. This allows, for example, using drawing fonts that use the new
- (and undocumented) “hvgl” table.
- - Update IANA and OT language registries, as well ase USE data files.
- - Fix build with ICU 76.
- - Various compiler warnings and build fixes.
- - Various subsetter fixes.
- - New API:
- +hb_face_create_or_fail()
- +hb_face_create_from_file_or_fail()
- +hb_coretext_face_create_from_file_or_fail()
- +hb_coretext_font_set_funcs()
- +hb_ft_face_create_from_file_or_fail()
- Overview of changes leading to 10.0.1
- Tuesday, September 24, 2024
- ====================================
- - Relax sanitization checks for “morx” subtables to fix broken AAT shaping of
- macOS 15.0 version of GeezaPro.
- Overview of changes leading to 10.0.0
- Monday, September 23, 2024
- ====================================
- - Unicode 16.0.0 support.
- - Various documentation fixes.
- - Various build fixes.
- - Add API to allow HarfBuzz client to set what glyph to use when a Unicode
- Variation Selector is not supported by the font, which would allow the client
- to customize what happens in this case, by using a different font for example.
- - Add a callback to for “hb_face_t” for getting the list of table tags. This is
- now used to make calling “hb_face_get_table_tags()” work on a faces created by
- “hb_face_create_for_tables()” (e.g. faces returned by “hb_subset_or_fail()”).
- - CGJ and Mongolian Variation Selectors are now ignored during glyph
- positioning, previously they would block both glyph substitution and
- positioning across them.
- - Support cairo script as an output format for “hb-view” command line tool.
- - Drop an optimization that would cause HarfBuzz not apply pair positioning
- lookup subtables under certain circumstances, for compatibility with other
- implementations that do apply these subtables.
- - Subsetting will now fail if source font has no glyphs, so feeding the subsetter
- invalid data will not silently return an empty face.
- - If after partially instancing a font no variation data is left (the instance
- is fully static), don’t consider this a failure.
- - Workaround a Firefox bug in displaying SVGs generated be “hb-view” command
- line tool under certain circumstances.
- - Fix bug in macroman mapping for “cmap” table.
- - Fix difference shaping output when HarfBuzz is built with with
- “HB_NO_OT_RULESETS_FAST_PATH” enabled.
- - Various subsetting and instancing fixes.
- - Various fuzzing fixes.
- - Add “with_libstdcxx” meson build option.
- - New API:
- +HB_SCRIPT_GARAY
- +HB_SCRIPT_GURUNG_KHEMA
- +HB_SCRIPT_KIRAT_RAI
- +HB_SCRIPT_OL_ONAL
- +HB_SCRIPT_SUNUWAR
- +HB_SCRIPT_TODHRI
- +HB_SCRIPT_TULU_TIGALARI
- +hb_buffer_set_not_found_variation_selector_glyph()
- +hb_buffer_get_not_found_variation_selector_glyph()
- +hb_get_table_tags_func_t
- +hb_face_set_get_table_tags_func()
- Overview of changes leading to 9.0.0
- Thursday, Jun 27, 2024
- ====================================
- - HarfBuzz now the supports the proposed new OpenType “VARC” table. This
- replaces the previously supported “Variable Composites” experimental feature.
- “VARC” support is still experimental and it is not enabled unless HarfBuzz is
- built with experimental APIs enabled:
- https://github.com/harfbuzz/boring-expansion-spec/blob/main/VARC.md
- - Autotools build system have been dropped. Meson is the only supported build
- system in HarfBuzz going forward.
- - Speed up “AAT” shaping for short words by up to 4%.
- - Ignore unknown “CFF” operators.
- - “hb_subset_input_keep_everything()” now keeps also non-unicode “name” table
- records.
- - Update the IANA and OpenType language tag registries.
- - Support composite glyphs with very large number of points in hb-draw API.
- - Various build fixes.
- Overview of changes leading to 8.5.0
- Monday, May 13, 2024
- ====================================
- - API for partial instancing is now stable and have been promoted out of
- experimental APIs.
- - Support instancing “BASE” table.
- - Speedup AAT shaping by 13–30%.
- - Various build fixes.
- - Various subsetter and instancer fixes.
- - New API:
- +HB_SUBSET_FLAGS_OPTIMIZE_IUP_DELTAS
- +hb_subset_input_get_axis_range()
- +hb_subset_input_pin_axis_location()
- Overview of changes leading to 8.4.0
- Saturday, March 29, 2024
- ====================================
- - Add /bigobj to MSVC compiler flags in meson build, to fix building hb-subset.cc
- - Specify minimum versions of various dependencies in meson and autotools build.
- - When subsetting, place variation store at the end of “GDEF” table to fix
- shaping issues with some versions of Adobe InDesign.
- - Various build fixes.
- - New API:
- +hb_buffer_set_random_state()
- +hb_buffer_get_random_state()
- Overview of changes leading to 8.3.1
- Saturday, March 16, 2024
- ====================================
- - hb_blob_create_from_file_or_fail() on Windows will now try to interpret the
- file name as UTF-8 first, and as system code page if it is not valid UTF-8.
- - Fix hb_style_get_value() in fonts with “STAT” table.
- - Properly handle negative offsets in CFF table.
- - Update IANA Language Subtag Registry to 2024-03-07.
- - Subsetter now supports subsetting “BASE” table.
- - Subsetter will update “hhea” font metrics in sync with “OS/2” ones.
- - “--variations” option of “hb-subset” now supports leaving out values that
- should be unchanged, e.g. “wght=:500:” will change the default and keep max
- and min unchanged. It also supports “*=drop” to to pin all axes to default
- location.
- - Fix hb_ot_math_get_glyph_kerning() to match updated “MATH” table spec.
- - Support legacy MacRoman encoding in “cmap” table.
- - Various build fixes.
- - Various subsetting and instancing fixes.
- - New API:
- hb_subset_input_pin_all_axes_to_default()
- Overview of changes leading to 8.3.0
- Saturday, November 11, 2023
- ====================================
- - Improve memory barrier to fix potential segfaults.
- - Various build fixes.
- - Various subsetting and instancing fixes.
- - Rename “hb-subset” option “--instance” to “--variations” to match the other
- tools. Old option is kept as an alias.
- - New API:
- HB_AAT_LAYOUT_FEATURE_TYPE_CURSIVE_CONNECTION
- - Deprecated API:
- HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION
- Overview of changes leading to 8.2.2
- Wednesday, October 18, 2023
- “From the river to the sea, Palestine will be free”
- ====================================
- - Fix regression from 8.1.0 in shaping fonts with duplicate feature tags.
- - Fix regression from 8.2.0 in parsing CSS-style feature strings.
- - Variable fonts instanciation now handles more tables.
- - Various CMake build improvements.
- - various fixes to build without errors with gcc 4.9.2.
- Overview of changes leading to 8.2.1
- Monday, September 18, 2023
- ====================================
- - Unicode 15.1 support.
- Overview of changes leading to 8.2.0
- Friday, September 8, 2023
- ====================================
- - Various build and fuzzing fixes
- - Improvements to COLRv1 painting.
- - New API:
- +hb_paint_color_glyph_func_t
- +hb_paint_funcs_set_color_glyph_func
- +hb_paint_color_glyph
- Overview of changes leading to 8.1.1
- Wednesday, August 2, 2023
- ====================================
- - Fix shaping of contextual rules at the end of string, introduced in 8.1.0
- - Fix stack-overflow in repacker with malicious fonts.
- - 30% speed up loading Noto Duployan font.
- Overview of changes leading to 8.1.0
- Tuesday, August 1, 2023
- ====================================
- - Fix long-standing build issue with the AIX compiler and older Apple clang.
- - Revert optimization that could cause timeout during subsetting with malicious fonts.
- - More optimization work:
- - 45% speed up in shaping Noto Duployan font.
- - 10% speed up in subsetting Noto Duployan font.
- - Another 8% speed up in shaping Gulzar.
- - 5% speed up in loading Roboto.
- - New API:
- +hb_ot_layout_collect_features_map()
- Overview of changes leading to 8.0.1
- Wednesday, July 12, 2023
- ====================================
- - Build fix on 32-bit ARM.
- - More speed optimizations:
- - 60% speed up in retain-gid (used for IFT) subsetting of SourceHanSans-VF.
- - 16% speed up in retain-gid (used for IFT) subsetting of NotoSansCJKkr.
- - 38% speed up in subsetting (beyond-64k) mega-merged Noto.
- Overview of changes leading to 8.0.0
- Sunday, July 9, 2023
- ====================================
- - New, experimental, WebAssembly (WASM) shaper, that provides greater
- flexibility over OpenType/AAT/Graphite shaping, using WebAssembly embedded
- inside the font file. Currently WASM shaper is disabled by default and needs
- to be enabled at build time. For details, see:
- https://github.com/harfbuzz/harfbuzz/blob/main/docs/wasm-shaper.md
- For example fonts making use of the WASM shaper, see:
- https://github.com/harfbuzz/harfbuzz-wasm-examples
- - Improvements to Experimental features introduced in earlier releases:
- - Support for subsetting beyond-64k and VarComposites fonts.
- - Support for instancing variable fonts with cubic “glyf” table.
- - Many big speed optimizations:
- - Up to 89% speedup loading variable fonts for shaping.
- - Up to 88% speedup in small subsets of large (eg. CJK) fonts (both TTF and
- OTF), essential for Incremental Font Transfer (IFT).
- - Over 50% speedup in loading Roboto font for shaping.
- - Up to 40% speed up in loading (sanitizing) complex fonts.
- - 30% speed up in shaping Gulzar font.
- - Over 25% speedup in glyph loading Roboto font.
- - 10% speed up loading glyph shapes in VarComposite Hangul font.
- - hb-hashmap optimizations & hashing improvements.
- - New macro HB_ALWAYS_INLINE. HarfBuzz now inlines functions more aggressively,
- which results in some speedup at the expense of bigger code size. To disable
- this feature define the macro to just inline.
- - New API:
- +HB_CODEPOINT_INVALID
- +hb_ot_layout_get_baseline2()
- +hb_ot_layout_get_baseline_with_fallback2()
- +hb_ot_layout_get_font_extents()
- +hb_ot_layout_get_font_extents2()
- +hb_subset_input_set_axis_range()
- Overview of changes leading to 7.3.0
- Tuesday, May 9, 2023
- ====================================
- - Speedup applying glyph variation in VarComposites fonts (over 40% speedup).
- (Behdad Esfahbod)
- - Speedup instancing some fonts (over 20% speedup in instancing RobotoFlex).
- (Behdad Esfahbod)
- - Speedup shaping some fonts (over 30% speedup in shaping Roboto).
- (Behdad Esfahbod)
- - Support subsetting VarComposites and beyond-64k fonts. (Behdad Esfahbod)
- - New configuration macro HB_MINIMIZE_MEMORY_USAGE to favor optimizing memory
- usage over speed. (Behdad Esfahbod)
- - Supporting setting the mapping between old and new glyph indices during
- subsetting. (Garret Rieger)
- - Various fixes and improvements.
- (Behdad Esfahbod, Denis Rochette, Garret Rieger, Han Seung Min, Qunxin Liu)
- - New API:
- +hb_subset_input_old_to_new_glyph_mapping()
- Overview of changes leading to 7.2.0
- Thursday, April 27, 2023
- ====================================
- - Add Tifinagh to the list of scripts that can natively be either right-to-left
- or left-to-right, to improve handling of its glyph positioning.
- (Simon Cozens)
- - Return also single substitution from hb_ot_layout_lookup_get_glyph_alternates()
- (Behdad Esfahbod)
- - Fix 4.2.0 regression in applying across syllables in syllabic scripts.
- (Behdad Esfahbod)
- - Add flag to avoid glyph substitution closure during subsetting, and the
- corresponding “--no-layout-closure” option to “hb-subset” command line tool.
- (Garret Rieger)
- - Support instancing COLRv1 table. (Qunxin Liu)
- - Don’t drop used user-defined name table entries during subsetting.
- (Qunxin Liu)
- - Optimize handling of “gvar” table. (Behdad Esfahbod)
- - Various subsetter bug fixes and improvements. (Garret Rieger, Qunxin Liu)
- - Various documentation improvements. (Behdad Esfahbod, Josef Friedrich)
- - New API:
- +HB_SUBSET_FLAGS_NO_LAYOUT_CLOSURE
- +HB_UNICODE_COMBINING_CLASS_CCC132
- - Deprecated API:
- +HB_UNICODE_COMBINING_CLASS_CCC133
- Overview of changes leading to 7.1.0
- Friday, March 3, 2023
- ====================================
- - New experimental hb_shape_justify() API that uses font variations to expand
- or shrink the text to a given advance. (Behdad Esfahbod)
- - Various build and bug fixes. (Behdad Esfahbod, Garret Rieger, Qunxin Liu)
- - New API:
- +hb_font_set_variation()
- Overview of changes leading to 7.0.1
- Monday, February 20, 2023
- ====================================
- - Various build and bug fixes.
- Overview of changes leading to 7.0.0
- Saturday, February 11, 2023
- ====================================
- - New hb-paint API that is designed mainly to paint “COLRv1” glyphs, but can be
- also used as a unified API to paint any of the glyph representations
- supported by HarfBuzz (B/W outlines, color layers, or color bitmaps).
- (Behdad Esfahbod, Matthias Clasen)
- - New hb-cairo API for integrating with cairo graphics library. This is provided
- as a separate harfbuzz-cairo library. (Behdad Esfahbod, Matthias Clasen)
- - Support for instancing “CFF2” table. (Behdad Esfahbod)
- - Support font emboldening. (Behdad Esfahbod)
- - Support feature ranges with AAT shaping. (Behdad Esfahbod)
- - Experimental support to cubic curves in “glyf” table, see
- https://github.com/harfbuzz/boring-expansion-spec/blob/main/glyf1-cubicOutlines.md
- for spec. (Behdad Esfahbod)
- - Various subsetter improvements. (Garret Rieger, Qunxin Liu, Behdad Esfahbod)
- - Various documentation improvements.
- (Behdad Esfahbod, Matthias Clasen, Khaled Hosny)
- - Significantly reduced memory use during shaping. (Behdad Esfahbod)
- - Greatly reduced memory use during subsetting “CFF” table. (Behdad Esfahbod)
- - New command line utility, hb-info, for querying various font information.
- (Behdad Esfahbod, Matthias Clasen)
- - New hb-shape/hb-view options: --glyphs, --color-palette, --font-bold,
- --font-grade, and --named-instance. (Behdad Esfahbod)
- - Miscellaneous fixes and improvements.
- (Amir Masoud Abdol, Andres Salomon, Behdad Esfahbod, Chun-wei Fan,
- Garret Rieger, Jens Kutilek, Khaled Hosny, Konstantin Käfer, Matthias Clasen,
- Nirbheek Chauhan, Pedro J. Estébanez, Qunxin Liu, Sergei Trofimovich)
- - New API:
- +HB_FONT_NO_VAR_NAMED_INSTANCE
- +HB_PAINT_IMAGE_FORMAT_BGRA
- +HB_PAINT_IMAGE_FORMAT_PNG
- +HB_PAINT_IMAGE_FORMAT_SVG
- +hb_cairo_font_face_create_for_face
- +hb_cairo_font_face_create_for_font
- +hb_cairo_font_face_get_face
- +hb_cairo_font_face_get_font
- +hb_cairo_font_face_get_scale_factor
- +hb_cairo_font_face_set_font_init_func
- +hb_cairo_font_face_set_scale_factor
- +hb_cairo_font_init_func_t
- +hb_cairo_glyphs_from_buffer
- +hb_cairo_scaled_font_get_font
- +hb_color_line_get_color_stops
- +hb_color_line_get_color_stops_func_t
- +hb_color_line_get_extend
- +hb_color_line_get_extend_func_t
- +hb_color_line_t
- +hb_color_stop_t
- +hb_draw_funcs_get_empty
- +hb_draw_funcs_get_user_data
- +hb_draw_funcs_set_user_data
- +hb_face_collect_nominal_glyph_mapping
- +hb_font_draw_glyph
- +hb_font_draw_glyph_func_t
- +hb_font_funcs_set_draw_glyph_func
- +hb_font_funcs_set_paint_glyph_func
- +hb_font_get_synthetic_bold
- +hb_font_get_var_named_instance
- +hb_font_paint_glyph
- +hb_font_paint_glyph_func_t
- +hb_font_set_synthetic_bold
- +hb_map_keys
- +hb_map_next
- +hb_map_update
- +hb_map_values
- +hb_ot_color_glyph_has_paint
- +hb_ot_color_has_paint
- +hb_ot_layout_script_select_language2
- +hb_ot_name_id_predefined_t
- +hb_paint_color
- +hb_paint_color_func_t
- +hb_paint_composite_mode_t
- +hb_paint_custom_palette_color
- +hb_paint_custom_palette_color_func_t
- +hb_paint_extend_t
- +hb_paint_funcs_create
- +hb_paint_funcs_destroy
- +hb_paint_funcs_get_empty
- +hb_paint_funcs_get_user_data
- +hb_paint_funcs_is_immutable
- +hb_paint_funcs_make_immutable
- +hb_paint_funcs_reference
- +hb_paint_funcs_set_color_func
- +hb_paint_funcs_set_custom_palette_color_func
- +hb_paint_funcs_set_image_func
- +hb_paint_funcs_set_linear_gradient_func
- +hb_paint_funcs_set_pop_clip_func
- +hb_paint_funcs_set_pop_group_func
- +hb_paint_funcs_set_pop_transform_func
- +hb_paint_funcs_set_push_clip_glyph_func
- +hb_paint_funcs_set_push_clip_rectangle_func
- +hb_paint_funcs_set_push_group_func
- +hb_paint_funcs_set_push_transform_func
- +hb_paint_funcs_set_radial_gradient_func
- +hb_paint_funcs_set_sweep_gradient_func
- +hb_paint_funcs_set_user_data
- +hb_paint_funcs_t
- +hb_paint_image
- +hb_paint_image_func_t
- +hb_paint_linear_gradient
- +hb_paint_linear_gradient_func_t
- +hb_paint_pop_clip
- +hb_paint_pop_clip_func_t
- +hb_paint_pop_group
- +hb_paint_pop_group_func_t
- +hb_paint_pop_transform
- +hb_paint_pop_transform_func_t
- +hb_paint_push_clip_glyph
- +hb_paint_push_clip_glyph_func_t
- +hb_paint_push_clip_rectangle
- +hb_paint_push_clip_rectangle_func_t
- +hb_paint_push_group
- +hb_paint_push_group_func_t
- +hb_paint_push_transform
- +hb_paint_push_transform_func_t
- +hb_paint_radial_gradient
- +hb_paint_radial_gradient_func_t
- +hb_paint_sweep_gradient
- +hb_paint_sweep_gradient_func_t
- +hb_set_is_inverted
- +hb_subset_input_keep_everything
- - Deprecated API:
- +hb_font_funcs_set_glyph_shape_func
- +hb_font_get_glyph_shape_func_t
- +hb_font_get_glyph_shape
- Overview of changes leading to 6.0.0
- Friday, December 16, 2022
- ====================================
- - A new API have been added to pre-process the face and speed up future
- subsetting operations on that face. Provides up to a 95% reduction in
- subsetting times when the same face is subset more than once.
- For more details and benchmarks, see:
- https://github.com/harfbuzz/harfbuzz/blob/main/docs/subset-preprocessing.md
- (Garret Rieger, Behdad Esfahbod)
- - Shaping have been speedup by skipping entire lookups when the buffer contents
- don't intersect with the lookup. Shows up to a 10% speedup in shaping some
- fonts. (Behdad Esfahbod)
- - A new experimental feature, “Variable Composites” (enabled by passing
- -Dexperimental_api=true to meson), is also featured in this release.
- This technology enables drastic compression of fonts in the Chinese,
- Japanese, Korean, and other writing systems, by reusing the OpenType Font
- Variations technology for encoding “smart components” into the font.
- The specification for these extensions to the font format can be found in:
- https://github.com/harfbuzz/boring-expansion-spec/blob/glyf1/glyf1.md
- A test variable-font with ~7160 Hangul syllables derived from the
- NotoSerifKR-VF font has been built, with existing OpenType technology, as
- well as with the new Variable Composites (VarComposites) technology. The
- VarComposites font is over 90% smaller than the OpenType version of the font!
- Both fonts can be obtained from the “smarties” repository:
- https://github.com/behdad/smarties/tree/3.0/fonts/hangul/serif
- When building HarfBuzz with experimental features enabled, you can test
- the “smarties” font with a sample character like this:
- $ hb-view butchered-hangul-serif-smarties-variable.ttf -u AE01 --variations=wght=700
- (Behdad Esfahbod)
- - The HarfBuzz subsetter can now drop axes by pinning them to specific values
- (also referred to as instancing). There are a couple of restrictions
- currently:
- - Only works with TrueType (“glyf”) based fonts. “CFF2” fonts are not yet
- supported.
- - Only supports the case where all axes in a font are pinned.
- (Garret Rieger, Qunxin Liu)
- - Miscellaneous fixes and improvements.
- (Behdad Esfahbod, Christoph Reiter, David Corbett, Eli Schwartz, Garret
- Rieger, Joel Auterson, Jordan Petridis, Khaled Hosny, Lorenz Wildberg,
- Marco Rebhan, Martin Storsjö, Matthias Clasen, Qunxin Liu, Satadru Pramanik)
- - New API
- +hb_subset_input_pin_axis_location()
- +hb_subset_input_pin_axis_to_default()
- +hb_subset_preprocess()
- Overview of changes leading to 5.3.1
- Wednesday, October 19, 2022
- ====================================
- - Subsetter repacker fixes. (Garret Rieger)
- - Adjust Grapheme clusters for Katakana voiced sound marks. (Behdad Esfahbod)
- - New “hb-subset” option “--preprocess-face”. (Garret Rieger)
- Overview of changes leading to 5.3.0
- Saturday, October 8, 2022
- "Women, Life, Freedom" #MahsaAmini
- ====================================
- - Don’t add glyphs from dropped MATH or COLR tables to the subset glyphs.
- (Khaled Hosny)
- - Map “rlig” to appropriate AAT feature selectors. (Jonathan Kew)
- - Update USE data files to latest version. (David Corbett)
- - Check “CBDT” extents first before outline tables, to help with fonts that
- also include an empty “glyf” table. (Khaled Hosny)
- - More work towards variable font instancing in the subsetter. (Qunxin Liu)
- - Subsetter repacker improvements. (Garret Rieger)
- - New API:
- +hb_ot_layout_lookup_get_optical_bound()
- +hb_face_builder_sort_tables()
- Overview of changes leading to 5.2.0
- Saturday, September 17, 2022
- ====================================
- - Fix regressions in hb-ft font functions for FT_Face’s with transformation
- matrix. (Behdad Esfahbod)
- - The experimental hb-repacker API now supports splitting several GPOS subtable
- types when needed. (Garret Rieger)
- - The HarfBuzz extensions to OpenType font format are now opt-in behind
- build-time flags. (Behdad Esfahbod)
- - The experimental hb-subset variable fonts instantiation API can now
- instantiate more font tables and arbitrary axis locations. (Qunxin Liu)
- - Unicode 15 support. (David Corbett)
- - Various documentation improvements. (Behdad Esfahbod, Matthias Clasen)
- - The hb-view command line tool now detects WezTerm inline images support.
- (Wez Furlong)
- - Fix FreeType and ICU dependency lookup with meson. (Xavier Claessens)
- - New API:
- +HB_SCRIPT_KAWI
- +HB_SCRIPT_NAG_MUNDARI
- Overview of changes leading to 5.1.0
- Sunday, July 31, 2022
- ====================================
- - More extensive buffer tracing messages. (Behdad Esfahbod)
- - Fix hb-ft regression in bitmap fonts rendering. (Behdad Esfahbod)
- - Support extension promotion of lookups in hb-subset-repacker. (Garret Rieger)
- - A new HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL for scripts that use elongation
- (e.g. Arabic) to signify where it is safe to insert tatweel glyph without
- interrupting shaping. (Behdad Esfahbod)
- - Add “--safe-to-insert-tatweel” to “hb-shape” tool. (Behdad Esfahbod)
- - New API
- +HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL
- +HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL
- Overview of changes leading to 5.0.1
- Saturday, July 23, 2022
- ====================================
- - Fix version 2 “avar” table with hb-ft. (Behdad Esfahbod)
- Overview of changes leading to 5.0.0
- Saturday, July 23, 2022
- ====================================
- - Support fonts with more than 65535 glyphs in “GDEF”, “GSUB”, and “GPOS”
- tables. This is part of https://github.com/be-fonts/boring-expansion-spec to
- extend OpenType in a backward-compatible way.
- (Behdad Esfahbod, Garret Rieger)
- - Complete support for more than 65535 glyphs in “glyf” table that started in
- 4.0.0 release. Part of boring-expansion-spec. (Behdad Esfahbod)
- - Support version 2 of “avar” table. Part of boring-expansion-spec.
- (Behdad Esfahbod)
- - Fix mark attachment on multiple substitutions in some cases.
- (Behdad Esfahbod)
- - Fix application of “calt”, “rclt”, and “ccmp” features to better match
- Uniscribe behaviour with some Arabic fonts. (Behdad Esfahbod)
- - Improvement to interaction between multiple cursive attachments.
- (Behdad Esfahbod)
- - Improve multiple mark interactions in Hebrew. (Behdad Esfahbod)
- - Implement language-specific forms in AAT shaping. (Behdad Esfahbod)
- - Fix variation of “VORG” table. (Behdad Esfahbod)
- - Support for specific script tags to be retained in the subsetter, and add
- “--layout-scripts” option to “hb-subset” tool. (Garret Rieger)
- - Accept space as delimiter for --features/--variations in command line tools.
- - Improve subsetting of “COLR” table. (Qunxin Liu)
- - Improved fuzzing coverage for ot-math API. (Frédéric Wang)
- - Fix “kern” table version 2 (AAT) sanitization on 32-bit systems.
- (Behdad Esfahbod)
- - Allow negative glyph advances from “graphite2” shaper. (Stephan Bergmann)
- - Implement loading (color) bitmap fonts with hb-ft. (Behdad Esfahbod)
- - Fix regression in hb-ft when changing font size. (Behdad Esfahbod)
- - Fix build on GCC < 7. (Kleis Auke Wolthuizen)
- - Dynamically load dwrite.dll on windows if “directwrite” shaper is enabled.
- (Luca Bacci)
- - Provide a single-file harfbuzz-subset.cc file for easier alternate building
- of hb-subset library, similar to harfbuzz.cc. (Khaled Hosny)
- - New API
- +HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG
- +hb_language_matches()
- Overview of changes leading to 4.4.1
- Wednesday, June 29, 2022
- ====================================
- - Fix test failure with some compilers.
- - Fix Telugu and Kannada kerning regression.
- Overview of changes leading to 4.4.0
- Monday, June 27, 2022
- ====================================
- - Caching of variable fonts shaping, in particular when using HarfBuzz’s own
- font loading functions (ot). Bringing performance of variable shaping in par
- with non-variable fonts shaping. (Behdad Esfahbod)
- - Caching of format 2 “Contextual Substitution” and “Chained Contexts
- Substitution” lookups. Resulting in up to 20% speedup of lookup-heavy fonts
- like Gulzar or Noto Nastaliq Urdu. (Behdad Esfahbod)
- - Improved ANSI output from hb-view. (Behdad Esfahbod)
- - Support for shaping legacy, pre-OpenType Windows 3.1-era, Arabic fonts that
- relied on a fixed PUA encoding. (Khaled Hosny, Behdad Esfahbod)
- - Sinhala script is now shaped by the USE shaper instead of “indic” one.
- (Behdad Esfahbod, David Corbett)
- - Thai shaper improvements. (David Corbett)
- - hb-ot-name API supports approximate BCP-47 language matching, for example
- asking for “en_US” in a font that has only “en” names will return them.
- (Behdad Esfahbod)
- - Optimized TrueType glyph shape loading. (Behdad Esfahbod)
- - Fix subsetting of HarfBuzz faces created via hb_face_create_for_tables().
- (Garret Rieger)
- - Add 32 bit var store support to the subsetter. (Garret Rieger)
- - New API
- +HB_BUFFER_FLAG_DEFINED
- +HB_BUFFER_SERIALIZE_FLAG_DEFINED
- +hb_font_changed()
- +hb_font_get_serial()
- +hb_ft_hb_font_changed()
- +hb_set_hash()
- +hb_map_copy()
- +hb_map_hash()
- Overview of changes leading to 4.3.0
- Friday, May 20, 2022
- ====================================
- - Major speed up in loading and subsetting fonts, especially in
- handling CFF table. Subsetting some fonts is now 3 times faster.
- (Behdad Esfahbod, Garret Rieger)
- - Speed up blending CFF2 table. (Behdad Esfahbod)
- - Speed up hb_ot_tags_from_language(). (Behdad Esfahbod, David Corbett)
- - Fix USE classification of U+10A38 to fix multiple marks on single Kharoshthi
- base. (David Corbett)
- - Fix parsing of empty CFF Index. (Behdad Esfahbod)
- - Fix subsetting CPAL table with partial palette overlaps. (Garret Rieger)
- - New API
- +hb_map_is_equal() (Behdad Esfahbod)
- Overview of changes leading to 4.2.1
- Sunday, April 24, 2022
- ====================================
- - Make sure hb_blob_create_from_file_or_fail() always returns nullptr in case
- of failure and not empty blob sometimes. (Khaled Hosny)
- - Add --passthrough-tables option to hb-subset. (Cosimo Lupo)
- - Reinstate a pause after basic features in Khmer shaper, fixing a regression
- introduced in previous release. (Behdad Esfahbod)
- - Better handling of Regional_Indicator when shaped with RTL-native scripts,
- reverting earlier fix that caused regressions in AAT shaping. (Behdad Esfahbod)
- Overview of changes leading to 4.2.0
- Wednesday, March 30, 2022
- ====================================
- - Source code reorganization, splitting large hb-ot-layout files into smaller,
- per-subtable ones under OT/Layout/*. Code for more tables will follow suit in
- later releases. (Garret Rieger, Behdad Esfahbod)
- - Revert Indic shaper change in previous release that broke some fonts and
- instead make per-syllable restriction of “GSUB” application limited to
- script-specific Indic features, while applying them and discretionary
- features in one go. (Behdad Esfahbod)
- - Fix decoding of private in gvar table. (Behdad Esfahbod)
- - Fix handling of contextual lookups that delete too many glyphs. (Behdad Esfahbod)
- - Make “morx” deleted glyphs don’t block “GPOS” application. (Behdad Esfahbod)
- - Various build fixes. (Chun-wei Fan, Khaled Hosny)
- - New API
- +hb_set_next_many() (Andrew John)
- Overview of changes leading to 4.1.0
- Wednesday, March 23, 2022
- ====================================
- - Various OSS-Fuzz fixes. (Behdad Esfahbod)
- - Make fallback vertical-origin match FreeType’s. (Behdad Esfahbod)
- - Treat visible viramas like dependent vowels in USE shaper. (David Corbett)
- - Apply presentation forms features and discretionary features in one go in
- Indic shaper, which seems to match Uniscribe and CoreText behaviour.
- (Behdad Esfahbod, David Corbett)
- - Various bug fixes.
- - New API
- +hb_set_add_sorted_array() (Andrew John)
- Overview of changes leading to 4.0.1
- Friday, March 11, 2022
- ====================================
- - Update OpenType to AAT mappings for “hist” and “vrtr” features.
- (Florian Pircher)
- - Update IANA Language Subtag Registry to 2022-03-02. (David Corbett)
- - Update USE shaper to allow any non-numeric tail in a symbol cluster, and
- remove obsolete data overrides. (David Corbett)
- - Fix handling of baseline variations to return correctly scaled values.
- (Matthias Clasen)
- - A new experimental hb_subset_repack_or_fail() to repack an array of objects,
- eliminating offset overflows. The API is not available unless HarfBuzz is
- built with experimental APIs enabled. (Qunxin Liu)
- - New experimental API
- +hb_link_t
- +hb_object_t
- +hb_subset_repack_or_fail()
- Overview of changes leading to 4.0.0
- Tuesday, March 1, 2022
- ====================================
- - New public API to create subset plan and gather information on things like
- glyph mappings in the final subset. The plan can then be passed on to perform
- the subsetting operation. (Garret Rieger)
- - Draw API for extracting glyph shapes have been extended and finalized and is
- no longer an experimental API. The draw API supports glyf, CFF and CFF2
- glyph outlines tables, and applies variation settings set on the font as well
- as synthetic slant. The new public API is not backward compatible with the
- previous, non-public, experimental API. (Behdad Esfahbod)
- - The hb-view tool will use HarfBuzz draw API to render the glyphs instead of
- cairo-ft when compiled with Cairo 1.17.5 or newer, setting HB_DRAW
- environment variable to 1 or 0 will force using or not use the draw API,
- respectively. (Behdad Esfahbod)
- - The hb-shape and hb-view tools now default to using HarfBuzz’s own font
- loading functions (ot) instead of FreeType ones (ft). They also have a new
- option, --font-slant, to apply synthetic slant to the font. (Behdad Esfahbod)
- - HarfBuzz now supports more than 65535 (the OpenType limit) glyph shapes and
- metrics. See https://github.com/be-fonts/boring-expansion-spec/issues/6 and
- https://github.com/be-fonts/boring-expansion-spec/issues/7 for details.
- (Behdad Esfahbod)
- - New API to get the dominant horizontal baseline tag for a given script.
- (Behdad Esfahbod)
- - New API to get the baseline positions from the font, and synthesize missing
- ones. As well as new API to get font metrics and synthesize missing ones.
- (Matthias Clasen)
- - Improvements to finding dependencies on Windows when building with Visual
- Studio. (Chun-wei Fan)
- - New buffer flag, HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT, that must be set
- during shaping for HB_GLYPH_FLAG_UNSAFE_TO_CONCAT flag to be reliably
- produced. This is to limit the performance hit of producing this flag to when
- it is actually needed. (Behdad Esfahbod)
- - Documentation improvements. (Matthias Clasen)
- - New API
- - General:
- +HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT
- +hb_var_num_t
- - Draw:
- +hb_draw_funcs_t
- +hb_draw_funcs_create()
- +hb_draw_funcs_reference()
- +hb_draw_funcs_destroy()
- +hb_draw_funcs_is_immutable()
- +hb_draw_funcs_make_immutable()
- +hb_draw_move_to_func_t
- +hb_draw_funcs_set_move_to_func()
- +hb_draw_line_to_func_t
- +hb_draw_funcs_set_line_to_func()
- +hb_draw_quadratic_to_func_t
- +hb_draw_funcs_set_quadratic_to_func()
- +hb_draw_cubic_to_func_t
- +hb_draw_funcs_set_cubic_to_func()
- +hb_draw_close_path_func_t
- +hb_draw_funcs_set_close_path_func()
- +hb_draw_state_t
- +HB_DRAW_STATE_DEFAULT
- +hb_draw_move_to()
- +hb_draw_line_to()
- +hb_draw_quadratic_to()
- +hb_draw_cubic_to()
- +hb_draw_close_path()
- +hb_font_get_glyph_shape_func_t
- +hb_font_funcs_set_glyph_shape_func()
- +hb_font_get_glyph_shape()
- - OpenType layout
- +HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL
- +HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL
- +hb_ot_layout_get_horizontal_baseline_tag_for_script()
- +hb_ot_layout_get_baseline_with_fallback()
- - Metrics:
- +hb_ot_metrics_get_position_with_fallback()
- - Subset:
- +hb_subset_plan_t
- +hb_subset_plan_create_or_fail()
- +hb_subset_plan_reference()
- +hb_subset_plan_destroy()
- +hb_subset_plan_set_user_data()
- +hb_subset_plan_get_user_data()
- +hb_subset_plan_execute_or_fail()
- +hb_subset_plan_unicode_to_old_glyph_mapping()
- +hb_subset_plan_new_to_old_glyph_mapping()
- +hb_subset_plan_old_to_new_glyph_mapping()
- Overview of changes leading to 3.4.0
- Sunday, February 13, 2022
- ====================================
- - Perform sanity checks on shaping results is now part of “harfbuzz” library
- and can be enabled by setting the buffer flag HB_BUFFER_FLAG_VERIFY.
- (Behdad Esfahbod)
- - Arabic Mark Transient Reordering Algorithm have been updated to revision 6.
- (Khaled Hosny)
- - ISO 15924 code for mathematical notation, ‘Zmth’, now maps to the OpenType
- ‘math’ tag. (Alexis King)
- - It is now possible to get at once all math kerning values for a given glyph
- at a given corner. (Alexis King)
- - Fix locale_t portability issues on systems the typedef’s it to a void
- pointer. (Behdad Esfahbod)
- - New API:
- +HB_BUFFER_FLAG_VERIFY
- +HB_OT_TAG_MATH_SCRIPT
- +HB_SCRIPT_MATH
- +hb_ot_math_kern_entry_t
- +hb_ot_math_get_glyph_kernings()
- - Deprecated API
- +HB_OT_MATH_SCRIPT
- Overview of changes leading to 3.3.2
- Sunday, February 6, 2022
- ====================================
- - Revert splitting of pair positioning values introduced in 3.3.0 as it proved
- problematic. (Behdad Esfahbod)
- Overview of changes leading to 3.3.1
- Monday, January 31, 2022
- ====================================
- - Fix heap-use-after-free in harfbuzz-subset introduced in previous release.
- (Garret Rieger)
- Overview of changes leading to 3.3.0
- Monday, January 31, 2022
- ====================================
- - Improved documentation. (Matthias Clasen)
- - Internal code cleanup, using C++ standard library more. (Behdad Esfahbod)
- - The low 16-bits of face index will be used by hb_face_create() to select a
- face inside a font collection file format, while the high 16-bits will be
- used by hb_font_create() to load the named instance. (Behdad Esfahbod)
- - Glyph positions and other font metrics now apply synthetic slant set by
- hb_font_set_synthetic_slant(), for improved positioning for synthetically
- slanted fonts. (Behdad Esfahbod)
- - Fixed unintentional locale dependency in hb_variation_to_string() for decimal
- point representation. (Matthias Clasen)
- - When applying pair positioning (kerning) the positioning value is split
- between the two sides of the pair for improved cursor positioning between
- such pairs. (Behdad Esfahbod)
- - Introduced new HB_GLYPH_FLAG_UNSAFE_TO_CONCAT, to be used in conjunction
- with HB_GLYPH_FLAG_UNSAFE_TO_BREAK for optimizing re-shaping during line
- breaking. Check the documentation for further details. (Behdad Esfahbod)
- - Improved handling of macrolanguages when mapping BCP 47 codes to OpenType
- tags. (David Corbett)
- - New API:
- +HB_GLYPH_FLAG_UNSAFE_TO_CONCAT
- +hb_segment_properties_overlay()
- +hb_buffer_create_similar()
- +hb_font_set_synthetic_slant()
- +hb_font_get_synthetic_slant()
- +hb_font_get_var_coords_design()
- Overview of changes leading to 3.2.0
- Friday, November 26, 2021
- ====================================
- “harfbuzz” library improvements:
- - Fixed shaping of Apple Color Emoji flags in right-to-left context. (Behdad Esfahbod)
- - Fixed positioning of CFF fonts in HB_TINY profile. (Behdad Esfahbod)
- - OpenType 1.9 language tags update. (David Corbett)
- - Add HB_NO_VERTICAL config option.
- - Add HB_CONFIG_OVERRIDE_H for easier configuration. (Behdad Esfahbod)
- “harfbuzz-subset” library improvements:
- - Improved packing of cmap, loca, and Ligature tables. (Garret Rieger)
- - Significantly improved overflow-resolution strategy in the repacker. (Garret Rieger)
- Overview of changes leading to 3.1.2
- Friday, November 26, 2021
- ====================================
- - hb-shape / hb-view: revert treating text on the commandline as single
- paragraph (was introduced in 3.0.0); add new --single-par to do that.
- (Behdad Esfahbod)
- - Subsetter bug fixes. (Garret Rieger, Qunxin Liu, Behdad Esfahbod)
- Overview of changes leading to 3.1.1
- Wednesday, November 8, 2021
- ====================================
- - Work around GCC cast-align error/warning on some platforms. (Behdad Esfahbod)
- - Documentation improvements. (Matthias Clasen)
- Overview of changes leading to 3.1.0
- Wednesday, November 3, 2021
- ====================================
- - Better offset-overflow handling in the subsetter library. (Garret Rieger)
- - Improved Unicode 14 properties in the USE shaper, and various other USE
- shaper fixes. (David Corbett)
- - MATH and COLR v1 tables subsetting support, and various other subsetter fixes.
- (Qunxin Liu)
- - Support for Pwo Karen / Ason Chin medial la. (Simon Cozens)
- - Apply GPOS positioning when substituting with morx table, if kerx is missing.
- (Behdad Esfahbod)
- - Apply calt and clig features across syllable boundaries in Indic shaper.
- (Behdad Esfahbod)
- - meson option for enabling Graphite 2 has been renamed to graphite2.
- - Build and documentation fixes.
- - New API:
- +hb_buffer_set_not_found_glyph()
- +hb_buffer_get_not_found_glyph()
- Overview of changes leading to 3.0.0
- Friday, September 17, 2021
- ====================================
- - Unicode 14.0 support (David Corbett).
- - The hb-subset API and the harfbuzz-subset library's ABI are now declared
- stable. The harfbuzz-subset library would not have been possible without the
- work of Garret Rieger and Qunxin Liu from Google Fonts, and the earlier work
- of Michiharu Ariza from Adobe.
- - The hb-style API is now stable and no longer experimental.
- - New API:
- +hb_style_tag_t
- +hb_style_get_value()
- +hb_subset_input_t
- +hb_subset_flags_t
- +hb_subset_sets_t
- +hb_subset_input_create_or_fail()
- +hb_subset_input_reference()
- +hb_subset_input_destroy()
- +hb_subset_input_set_user_data()
- +hb_subset_input_get_user_data()
- +hb_subset_input_unicode_set()
- +hb_subset_input_glyph_set()
- +hb_subset_input_set()
- +hb_subset_input_get_flags()
- +hb_subset_input_set_flags()
- +hb_subset_or_fail()
- - Removed old unstable harfbuzz-subset API:
- -hb_subset_input_nameid_set()
- -hb_subset_input_namelangid_set()
- -hb_subset_input_layout_features_set()
- -hb_subset_input_no_subset_tables_set()
- -hb_subset_input_drop_tables_set()
- -hb_subset_input_set_drop_hints()
- -hb_subset_input_get_drop_hints()
- -hb_subset_input_set_desubroutinize()
- -hb_subset_input_get_desubroutinize()
- -hb_subset_input_set_retain_gids()
- -hb_subset_input_get_retain_gids()
- -hb_subset_input_set_name_legacy()
- -hb_subset_input_get_name_legacy()
- -hb_subset_input_set_overlaps_flag()
- -hb_subset_input_get_overlaps_flag()
- -hb_subset_input_set_notdef_outline()
- -hb_subset_input_get_notdef_outline()
- -hb_subset_input_set_no_prune_unicode_ranges()
- -hb_subset_input_get_no_prune_unicode_ranges()
- -hb_subset()
- Overview of changes leading to 2.9.1
- Tuesday, September 7, 2021
- ====================================
- - Final subset API is in place and if no issues are discovered, it will be the
- stable subset API of HarfBuzz 3.0.0. Old API is kept to ease transition, but
- will be removed in 3.0.0.
- - Various fuzzer-found bug fixes.
- - hb_buffer_append() now handles the pre- and post-context which previously
- were left unchanged in the destination buffer.
- - hb-view / hb-shape now accept following new arguments:
- o --unicodes-before/after: takes a list of hex numbers that represent Unicode
- codepoints.
- - Undeprecated API:
- hb_set_invert()
- Overview of changes leading to 2.9.0
- Wednesday, August 18, 2021
- History Repeats Itself (Afghanistan)
- ====================================
- - Subsetter API is being stabilized, with the first stable API to happen in
- 3.0.0 release (https://github.com/harfbuzz/harfbuzz/issues/3078).
- - Support multiple variation axes with same tag, aka HOI.
- - The “coretext” testing shaper now passes font variations to CoreText.
- - hb-shape/hb-view does not break line at new lines unless text is read from
- file.
- - hb-view and hb-subset has a --batch now, similar to hb-shape.
- - The --batch mode now uses ; as argument separator instead of : used previously.
- - The --batch in hb-shape does not expect 0th argument anymore. That is, the
- lines read are interpreted as argv[1:], instead of argv[0:].
- - The --batch option has been undocumented. We are ready to document it; send
- feedback if you find it useful.
- - hb-subset got arguments revamps. Added much-requested --gids-file, --glyphs,
- --glyphs-file, --unicodes-file, supporting ranges in --unicodes.
- - Various bug fixes.
- Overview of changes leading to 2.8.2
- Tuesday, July 8, 2021
- ====================================
- - Shaping LTR digits for RTL scripts now makes the native direction of the
- digits LTR, applying shaping and positioning rules on the same glyph order as
- Uniscribe. (Jonathan Kew, Khaled Hosny).
- - Subsetting COLR v1 and CPAL tables is now supported. (Garret Rieger, Qunxin Liu)
- - Various fixes and improvements to the subsetter. (Garret Rieger, Qunxin Liu, Behdad)
- - When applying morx table, mark glyph widths should not be zeroed. (Jonathan Kew)
- - GPOS is preferred over kerx, if GSUB was applied. (Behdad)
- - Regional_Indicator pairs are grouped together when clustering. (Behdad)
- - New API:
- +hb_blob_create_or_fail()
- +hb_blob_create_from_file_or_fail()
- +hb_set_copy()
- Overview of changes leading to 2.8.1
- Tuesday, May 4, 2021
- ====================================
- - Subsetter now fully supports GSUB/GPOS/GDEF tables (including variations); as
- such, layout tables are retained by subsetter by default. (Garret Rieger, Qunxin Liu)
- - Build scripts no longer check for FontConfig as HarfBuzz does not use it.
- - hb-view supports iTerm2 and kitty inline image protocols (Khaled Hosny),
- it can also use Chafa for terminal graphics if available (Hans Petter Jansson).
- Overview of changes leading to 2.8.0
- Tuesday, March 16, 2021
- ====================================
- - Shape joining scripts other than Arabic/Syriac using the Universal Shaping Engine.
- Previously these were shaped using the generalized Arabic shaper. (David Corbett)
- - Fix regression in shaping of U+0B55 ORIYA SIGN OVERLINE. (David Corbett)
- - Update language tags. (David Corbett)
- - Variations: reduce error: do not round each interpolated delta. (Just van Rossum)
- - Documentation improvements. (Khaled Hosny, Nathan Willis)
- - Subsetter improvements: subsets most, if not all, lookup types now. (Garret Rieger, Qunxin Liu)
- - Fuzzer-found fixes and other improvements when memory failures happen. (Behdad)
- - Removed most atomic implementations now that we have C++11 atomic impl. (Behdad)
- - General codebase upkeep; using more C++11 features: constexpr constructors, etc. (Behdad)
- Overview of changes leading to 2.7.4
- Sunday, December 27, 2020
- ====================================
- - Fix missing --enable-introspection configure option from previous release
- tarball.
- - Documentation updates.
- Overview of changes leading to 2.7.3
- Wednesday, December 23, 2020
- ====================================
- - Update USE shaper to 2020-08-13 specification, and other improvements.
- - Don’t disable liga feature in myanmar shaper, to match Uniscribe.
- - Improvements to language and script tags handling.
- - Update language system tag registry to OpenType 1.8.4
- - Support for serializing and deserializing Unicode buffers. Serialized buffers
- are now delimited with `<>` or `[]` based on whether it is a Unicode or
- glyphs buffer.
- - Increase buffer work limits to handle fonts with many complex lookups.
- - Handle more shaping operations in trace output.
- - Memory access fixes.
- - More OOM fixes.
- - Improved documentation.
- - Build system improvements.
- - New API:
- +hb_buffer_has_positions()
- +hb_buffer_serialize()
- +hb_buffer_serialize_unicode()
- +hb_buffer_deserialize_unicode()
- Overview of changes leading to 2.7.2
- Saturday, August 29, 2020
- ====================================
- - Fix a regression in the previous release that caused a crash with Kaithi.
- - More OOM fixes.
- Overview of changes leading to 2.7.1
- Thursday, August 13, 2020
- ====================================
- - ot-funcs now handles variable empty glyphs better when hvar/vvar isn't present.
- - Reverted a GDEF processing regression.
- - A couple of fixes to handle OOM better.
- Overview of changes leading to 2.7.0
- Saturday, July 25, 2020
- ====================================
- - Use an implementation for round that always rounds up, some minor fluctuations
- are expected on var font specially when hb-ot callback is used.
- - Fix an AAT's `kerx` issue on broken rendering of Devanagari Sangam MN.
- - Remove AAT's `lcar` table support from _get_ligature_carets API, not even much
- use on macOS installed fonts (only two files). GDEF support is the recommended
- one and expected to work properly after issues fixed two releases ago.
- - Minor memory fixes to handle OOM better specially in hb-ft.
- - Minor .so files versioning scheme change and remove stable/unstable scheme
- differences, was never used in practice (always default to stable scheme).
- - We are now suggesting careful packaging of the library using meson,
- https://github.com/harfbuzz/harfbuzz/wiki/Notes-on-migration-to-meson
- for more information.
- - Distribution package URL is changed, either use GitHub generated tarballs,
- `https://github.com/harfbuzz/harfbuzz/archive/$pkgver.tar.gz`
- or, even more preferably use commit hash of the release and git checkouts like,
- `git+https://github.com/harfbuzz/harfbuzz#commit=$commit`
- Overview of changes leading to 2.6.8
- Monday, June 22, 2020
- ====================================
- - New API to fetch glyph alternates from GSUB table.
- - hb-coretext build fix for macOS < 10.10.
- - Meson build fixes, cmake port removal is postponed but please prepare for
- it and give us feedback.
- Autotools is still our main build system however please consider
- experimenting with meson also for packaging the library.
- - New API:
- +hb_ot_layout_lookup_get_glyph_alternates()
- Overview of changes leading to 2.6.7
- Wednesday, June 3, 2020
- ====================================
- - Update to Unicode 13.0.0.
- - Fix hb_ot_layout_get_ligature_carets for fonts without lcar table, it was
- completely broken for all the other fonts since 2.1.2.
- - As a part of our migration to meson, this release will be the last one
- to provide cmake port files but autotools still is our main build system.
- There is a possibility that the next version or the after be released
- using meson.
- Overview of changes leading to 2.6.6
- Tuesday, May 12, 2020
- ====================================
- - A fix in AAT kerning for Geeza Pro.
- - Better support for resource fork fonts on macOS.
- Overview of changes leading to 2.6.5
- Friday, April 17, 2020
- ====================================
- - Add experimental meson build system. Autotools is still the primary
- and supported build system.
- - AAT is now always preferred for horizontal scripts when both AAT and OT
- layout tables exist at the same time.
- - Subsetter improvements.
- - New API:
- +hb_ft_font_lock_face()
- +hb_ft_font_unlock_face()
- Overview of changes leading to 2.6.4
- Monday, October 29, 2019
- ====================================
- - Small bug fix.
- - Build fixes.
- Overview of changes leading to 2.6.3
- Monday, October 28, 2019
- ====================================
- - Misc small fixes, mostly to build-related issues.
- - New API:
- +hb_font_get_nominal_glyphs()
- Overview of changes leading to 2.6.2
- Monday, September 30, 2019
- ====================================
- - Misc small fixes, mostly to build-related issues.
- Overview of changes leading to 2.6.1
- Thursday, August 22, 2019
- ====================================
- - Fix regression with hb_font_create_sub_font scaling introduced in 2.6.0.
- - Change interpretation of font PTEM size / CoreText font size handling.
- See https://github.com/harfbuzz/harfbuzz/pull/1484
- - hb-ot-font: Prefer symbol cmap subtable if present.
- - Apply 'dist'/'abvm'/'blwm' features to all scripts.
- - Drop experimental DirectWrite API.
- Overview of changes leading to 2.6.0
- Tuesday, August 13, 2019
- ====================================
- - New OpenType metrics, baseline, and metadata table access APIs.
- - New API to set font variations to a named-instance.
- - New hb-gdi.h header and API for creating hb_face_t from HFONT.
- - Amalgam: Provide a single-file harfbuzz.cc file for easier alternate building.
- - More size-reduction configurable options, enabled by HB_TINY.
- - New API:
- +hb_font_set_var_named_instance()
- +hb_gdi_face_create()
- +hb_ot_layout_baseline_tag_t
- +hb_ot_layout_get_baseline()
- +hb_ot_meta_tag_t
- +hb_ot_meta_get_entry_tags()
- +hb_ot_meta_reference_entry()
- +hb_ot_metrics_tag_t
- +hb_ot_metrics_get_position()
- +hb_ot_metrics_get_variation()
- +hb_ot_metrics_get_x_variation()
- +hb_ot_metrics_get_y_variation()
- Overview of changes leading to 2.5.3
- Wednesday, June 26, 2019
- ====================================
- - Fix UCD script data for Unicode 10+ scripts. This was broken since 2.5.0.
- - More optimizations for HB_TINY.
- Overview of changes leading to 2.5.2
- Thursday, June 20, 2019
- ====================================
- - More hb-config.hh facilities to shrink library size, namely when built as
- HB_TINY.
- - New documentation of custom configurations in CONFIG.md.
- - Fix build on gcc 4.8. That's supported again.
- - Universal Shaping Engine improvements thanks to David Corbett.
- - API Changes: Undeprecate some horizontal-kerning API and re-enable in hb-ft,
- such that Type1 fonts will continue kerning.
- 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 Database 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 stabilize 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/[email protected]/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 parameters,
- 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()
|