| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081 |
- 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/debian-bugs-dist@lists.debian.org/msg1246370.html
- - Fix Arabic fallback shaping regression. This was broken in 0.9.32.
- - Major hb-coretext fixes. That backend is complete now, including
- respecing buffer direction and language, down to vertical writing.
- - Build fixes for Windows CE. Should build fine now.
- - Misc fixes:
- Use atexit() only if it's safe to call from shared library
- https://bugs.freedesktop.org/show_bug.cgi?id=82246
- Mandaic had errors in its Unicode Joining_Type
- https://bugs.freedesktop.org/show_bug.cgi?id=82306
- - API changes:
- * hb_buffer_clear_contents() does not reset buffer flags now.
- After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
- need to set flags for different pieces of text. The flags now
- are something the client sets up once, depending on how it
- actually uses the buffer. As such, don't clear it in
- clear_contents().
- I don't expect any changes to be needed to any existing client.
- Overview of changes leading to 0.9.34
- Saturday, August 2, 2014
- =====================================
- - hb_feature_from_string() now accepts CSS font-feature-settings format.
- - As a result, hb-shape / hb-view --features also accept CSS-style strings.
- Eg, "'liga' off" is accepted now.
- - Add old-spec Myanmar shaper:
- https://bugs.freedesktop.org/show_bug.cgi?id=81775
- - Don't apply 'calt' in Hangul shaper.
- - Fix mark advance zeroing for Hebrew shaper:
- https://bugs.freedesktop.org/show_bug.cgi?id=76767
- - Implement Windows-1256 custom Arabic shaping. Only built on Windows,
- and requires help from get_glyph(). Used by Firefox.
- https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
- - Disable 'liga' in vertical text.
- - Build fixes.
- - API changes:
- * Make HB_BUFFER_FLAG_BOT/EOT easier to use.
- Previously, we expected users to provide BOT/EOT flags when the
- text *segment* was at paragraph boundaries. This meant that for
- clients that provide full paragraph to HarfBuzz (eg. Pango), they
- had code like this:
- hb_buffer_set_flags (hb_buffer,
- (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
- (item_offset + item_length == paragraph_length ?
- HB_BUFFER_FLAG_EOT : 0));
- hb_buffer_add_utf8 (hb_buffer,
- paragraph_text, paragraph_length,
- item_offset, item_length);
- After this change such clients can simply say:
- hb_buffer_set_flags (hb_buffer,
- HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
- hb_buffer_add_utf8 (hb_buffer,
- paragraph_text, paragraph_length,
- item_offset, item_length);
- Ie, HarfBuzz itself checks whether the segment is at the beginning/end
- of the paragraph. Clients that only pass item-at-a-time to HarfBuzz
- continue not setting any flags whatsoever.
- Another way to put it is: if there's pre-context text in the buffer,
- HarfBuzz ignores the BOT flag. If there's post-context, it ignores
- EOT flag.
- Overview of changes leading to 0.9.33
- Tuesday, July 22, 2014
- =====================================
- - Turn off ARabic 'cswh' feature that was accidentally turned on.
- - Add HB_TAG_MAX_SIGNED.
- - Make hb_face_make_immutable() really make face immutable!
- - Windows build fixes.
- Overview of changes leading to 0.9.32
- Thursday, July 17, 2014
- =====================================
- - Apply Arabic shaping features in spec order exactly.
- - Another fix for Mongolian free variation selectors.
- - For non-Arabic scripts in Arabic shaper apply 'rlig' and 'calt'
- together.
- - Minor adjustment to U+FFFD logic.
- - Fix hb-coretext build.
- Overview of changes leading to 0.9.31
- Wednesday, July 16, 2014
- =====================================
- - Only accept valid UTF-8/16/32; we missed many cases before.
- - Better shaping of invalid UTF-8/16/32. Falls back to
- U+FFFD REPLACEMENT CHARACTER now.
- - With all changes in this release, the buffer will contain fully
- valid Unicode after hb_buffer_add_utf8/16/32 no matter how
- broken the input is. This can be overridden though. See below.
- - Fix Mongolian Variation Selectors for fonts without GDEF.
- - Fix minor invalid buffer access.
- - Accept zh-Hant and zh-Hans language tags. hb_ot_tag_to_language()
- now uses these instead of private tags.
- - Build fixes.
- - New API:
- * hb_buffer_add_codepoints(). This does what hb_buffer_add_utf32()
- used to do, ie. no validity check on the input at all. add_utf32
- now replaces invalid Unicode codepoints with the replacement
- character (see below).
- * hb_buffer_set_replacement_codepoint()
- * hb_buffer_get_replacement_codepoint()
- Previously, in hb_buffer_add_utf8 and hb_buffer_add_utf16, when
- we detected broken input, we replaced that with (hb_codepoint_t)-1.
- This has changed to use U+FFFD now, but can be changed using these
- new API.
- Overview of changes leading to 0.9.30
- Wednesday, July 9, 2014
- =====================================
- - Update to Unicode 7.0.0:
- * New scripts Manichaean and Psalter Pahlavi are shaped using
- Arabic shaper.
- * All the other new scripts to through the generic shaper for
- now.
- - Minor Indic improvements.
- - Fix graphite2 backend cluster mapping [crasher!]
- - API changes:
- * New HB_SCRIPT_* values for Unicode 7.0 scripts.
- * New function hb_ot_layout_language_get_required_feature().
- - Build fixes.
- Overview of changes leading to 0.9.29
- Thursday, May 29, 2014
- =====================================
- - Implement cmap in hb-ot-font.h. No variation-selectors yet.
- - Myanmar: Allow MedialYa+Asat.
- - Various Indic fixes:
- * Support most characters in Extended Devanagary and Vedic
- Unicode blocks.
- * Allow digits and a some punctuation as consonant placeholders.
- - Build fixes.
- Overview of changes leading to 0.9.28
- Monday, April 28, 2014
- =====================================
- - Unbreak old-spec Indic shaping. (bug 76705)
- - Fix shaping of U+17DD and U+0FC6.
- - Add HB_NO_MERGE_CLUSTERS build option. NOT to be enabled by default
- for shipping libraries. It's an option for further experimentation
- right now. When we are sure how to do it properly, we will add
- public run-time API for the functionality.
- - Build fixes.
- Overview of changes leading to 0.9.27
- Tuesday, March 18, 2014
- =====================================
- - Don't use "register" storage class specifier
- - Wrap definition of free_langs() with HAVE_ATEXIT
- - Add coretext_aat shaper and hb_coretext_face_create() constructor
- - If HAVE_ICU_BUILTIN is defined, use hb-icu Unicode callbacks
- - Add Myanmar test case from OpenType Myanmar spec
- - Only do fallback Hebrew composition if no GPOS 'mark' available
- - Allow bootstrapping without gtk-doc
- - Use AM_MISSING_PROG for ragel and git
- - Typo in ucdn's Makefile.am
- - Improve MemoryBarrier() implementation
- Overview of changes leading to 0.9.26
- Thursday, January 30, 2014
- =====================================
- - Misc fixes.
- - Fix application of 'rtlm' feature.
- - Automatically apply frac/numr/dnom around U+2044 FRACTION SLASH.
- - New header: hb-ot-shape.h
- - Uniscribe: fix scratch-buffer accounting.
- - Reorder Tai Tham SAKOT to after tone-marks.
- - Add Hangul shaper.
- - New files:
- hb-ot-shape-complex-hangul.cc
- hb-ot-shape-complex-hebrew.cc
- hb-ot-shape-complex-tibetan.cc
- - Disable 'cswh' feature in Arabic shaper.
- - Coretext: better handle surrogate pairs.
- - Add HB_TAG_MAX and _HB_SCRIPT_MAX_VALUE.
- Overview of changes leading to 0.9.25
- Wednesday, December 4, 2013
- =====================================
- - Myanmar shaper improvements.
- - Avoid font fallback in CoreText backend.
- - Additional OpenType language tag mappiongs.
- - More aggressive shape-plan caching.
- - Build with / require automake 1.13.
- - Build with libtool 2.4.2.418 alpha to support ppc64le.
- Overview of changes leading to 0.9.24
- Tuesday, November 13, 2013
- =====================================
- - Misc compiler warning fixes with clang.
- - No functional changes.
- Overview of changes leading to 0.9.23
- Monday, October 28, 2013
- =====================================
- - "Udupi HarfBuzz Hackfest", Paris, October 14..18 2013.
- - Fix (Chain)Context recursion with non-monotone lookup positions.
- - Misc Indic bug fixes.
- - New Javanese / Buginese shaping, similar to Windows 8.1.
- Overview of changes leading to 0.9.22
- Thursday, October 3, 2013
- =====================================
- - Fix use-after-end-of-scope in hb_language_from_string().
- - Fix hiding of default_ignorables if font doesn't have space glyph.
- - Protect against out-of-range lookup indices.
- - API Changes:
- * Added hb_ot_layout_table_get_lookup_count()
- Overview of changes leading to 0.9.21
- Monday, September 16, 2013
- =====================================
- - Rename gobject-introspection library name from harfbuzz to HarfBuzz.
- - Remove (long disabled) hb-old and hb-icu-le test shapers.
- - Misc gtk-doc and gobject-introspection annotations.
- - Misc fixes.
- - API changes:
- * Add HB_SET_VALUE_INVALID
- Overview of changes leading to 0.9.20
- Thursday, August 29, 2013
- =====================================
- General:
- - Misc substitute_closure() fixes.
- - Build fixes.
- Documentation:
- - gtk-doc boilerplate integrated. Docs are built now, but
- contain no contents. By next release hopefully we have
- some content in. Enable using --enable-gtk-doc.
- GObject and Introspection:
- - Added harfbuzz-gobject library (hb-gobject.h) that has type
- bindings for all HarfBuzz objects and enums. Enable using
- --with-gobject.
- - Added gobject-introspection boilerplate. Nothing useful
- right now. Work in progress. Gets enabled automatically if
- --with-gobject is used. Override with --disable-introspection.
- OpenType shaper:
- - Apply 'mark' in Myanmar shaper.
- - Don't apply 'dlig' by default.
- Uniscribe shaper:
- - Support user features.
- - Fix loading of fonts that are also installed on the system.
- - Fix shaping of Arabic Presentation Forms.
- - Fix build with wide chars.
- CoreText shaper:
- - Support user features.
- Source changes:
- - hb_face_t code moved to hb-face.h / hb-face.cc.
- - Added hb-deprecated.h.
- API changes:
- - Added HB_DISABLE_DEPRECATED.
- - Deprecated HB_SCRIPT_CANADIAN_ABORIGINAL; replaced by
- HB_SCRIPT_CANADIAN_SYLLABICS.
- - Deprecated HB_BUFFER_FLAGS_DEFAULT; replaced by
- HB_BUFFER_FLAG_DEFAULT.
- - Deprecated HB_BUFFER_SERIALIZE_FLAGS_DEFAULT; replaced by
- HB_BUFFER_SERIALIZE_FLAG_DEFAULT.
- Overview of changes leading to 0.9.19
- Tuesday, July 16, 2013
- =====================================
- - Build fixes.
- - Better handling of multiple variation selectors in a row.
- - Pass on variation selector to GSUB if not consumed by cmap.
- - Fix undefined memory access.
- - Add Javanese config to Indic shaper.
- - Misc bug fixes.
- Overview of changes leading to 0.9.18
- Tuesday, May 28, 2013
- =====================================
- New build system:
- - All unneeded code is all disabled by default,
- - Uniscribe and CoreText shapers can be enabled with their --with options,
- - icu_le and old shapers cannot be enabled for now,
- - glib, freetype, and cairo will be detected automatically.
- They can be force on/off'ed with their --with options,
- - icu and graphite2 are default off, can be enabled with their --with
- options,
- Moreover, ICU support is now build into a separate library:
- libharfbuzz-icu.so, and a new harfbuzz-icu.pc is shipped for it.
- Distros can enable ICU now without every application on earth
- getting linked to via libharfbuzz.so.
- For distros I recommend that they make sure they are building --with-glib
- --with-freetype --with-cairo, --with-icu, and optionally --with-graphite2;
- And package harfbuzz and harfbuzz-icu separately.
- Overview of changes leading to 0.9.17
- Monday, May 20, 2013
- =====================================
- - Build fixes.
- - Fix bug in hb_set_get_min().
- - Fix regression with Arabic mark positioning / width-zeroing.
- Overview of changes leading to 0.9.16
- Friday, April 19, 2013
- =====================================
- - Major speedup in OpenType lookup processing. With the Amiri
- Arabic font, this release is over 3x faster than previous
- release. All scripts / languages should see this speedup.
- - New --num-iterations option for hb-shape / hb-view; useful for
- profiling.
- Overview of changes leading to 0.9.15
- Friday, April 05, 2013
- =====================================
- - Build fixes.
- - Fix crasher in graphite2 shaper.
- - Fix Arabic mark width zeroing regression.
- - Don't compose Hangul jamo into Unicode syllables.
- Overview of changes leading to 0.9.14
- Thursday, March 21, 2013
- =====================================
- - Build fixes.
- - Fix time-consuming sanitize with malicious fonts.
- - Implement hb_buffer_deserialize_glyphs() for both json and text.
- - Do not ignore Hangul filler characters.
- - Indic fixes:
- * Fix Malayalam pre-base reordering interaction with post-forms.
- * Further adjust ZWJ handling. Should fix known regressions from
- 0.9.13.
- Overview of changes leading to 0.9.13
- Thursday, February 25, 2013
- =====================================
- - Build fixes.
- - Ngapi HarfBuzz Hackfest in London (February 2013):
- * Fixed all known Indic bugs,
- * New Win8-style Myanmar shaper,
- * New South-East Asian shaper for Tai Tham, Cham, and New Tai Lue,
- * Smartly ignore Default_Ignorable characters (joiners, etc) wheb
- matching GSUB/GPOS lookups,
- * Fix 'Phags-Pa U+A872 shaping,
- * Fix partial disabling of default-on features,
- * Allow disabling of TrueType kerning.
- - Fix possible crasher with broken fonts with overlapping tables.
- - Removed generated files from git again. So, one needs ragel to
- bootstrap from the git tree.
- API changes:
- - hb_shape() and related APIs now abort if buffer direction is
- HB_DIRECTION_INVALID. Previously, hb_shape() was calling
- hb_buffer_guess_segment_properties() on the buffer before
- shaping. The heuristics in that function are fragile. If the
- user really wants the old behvaior, they can call that function
- right before calling hb_shape() to get the old behavior.
- - hb_blob_create_sub_blob() always creates sub-blob with
- HB_MEMORY_MODE_READONLY. See comments for the reason.
- Overview of changes leading to 0.9.12
- Thursday, January 18, 2013
- =====================================
- - Build fixes for Sun compiler.
- - Minor bug fix.
- Overview of changes leading to 0.9.11
- Thursday, January 10, 2013
- =====================================
- - Build fixes.
- - Fix GPOS mark attachment with null Anchor offsets.
- - [Indic] Fix old-spec reordering of viramas if sequence ends in one.
- - Fix multi-threaded shaper data creation crash.
- - Add atomic ops for Solaris.
- API changes:
- - Rename hb_buffer_clear() to hb_buffer_clear_contents().
- Overview of changes leading to 0.9.10
- Thursday, January 3, 2013
- =====================================
- - [Indic] Fixed rendering of Malayalam dot-reph
- - Updated OT language tags.
- - Updated graphite2 backend.
- - Improved hb_ot_layout_get_size_params() logic.
- - Improve hb-shape/hb-view help output.
- - Fixed hb-set.h implementation to not crash.
- - Fixed various issues with hb_ot_layout_collect_lookups().
- - Various build fixes.
- New API:
- hb_graphite2_face_get_gr_face()
- hb_graphite2_font_get_gr_font()
- hb_coretext_face_get_cg_font()
- Modified API:
- hb_ot_layout_get_size_params()
- Overview of changes leading to 0.9.9
- Wednesday, December 5, 2012
- ====================================
- - Fix build on Windows.
- - Minor improvements.
- Overview of changes leading to 0.9.8
- Tuesday, December 4, 2012
- ====================================
- - Actually implement hb_shape_plan_get_shaper ().
- - Make UCDB data tables const.
- - Lots of internal refactoring in OTLayout tables.
- - Flesh out hb_ot_layout_lookup_collect_glyphs().
- New API:
- hb_ot_layout_collect_lookups()
- hb_ot_layout_get_size_params()
- Overview of changes leading to 0.9.7
- Sunday, November 21, 2012
- ====================================
- HarfBuzz "All-You-Can-Eat-Sushi" (aka Vancouver) Hackfest and follow-on fixes.
- - Fix Arabic contextual joining using pre-context text.
- - Fix Sinhala "split matra" mess.
- - Fix Khmer shaping with broken fonts.
- - Implement Thai "PUA" shaping for old fonts.
- - Do NOT route Kharoshthi script through the Indic shaper.
- - Disable fallback positioning for Indic and Thai shapers.
- - Misc fixes.
- hb-shape / hb-view changes:
- - Add --text-before and --text-after
- - Add --bot / --eot / --preserve-default-ignorables
- - hb-shape --output-format=json
- New API:
- hb_buffer_clear()
- hb_buffer_flags_t
- HB_BUFFER_FLAGS_DEFAULT
- HB_BUFFER_FLAG_BOT
- HB_BUFFER_FLAG_EOT
- HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES
- hb_buffer_set_flags()
- hb_buffer_get_flags()
- HB_BUFFER_SERIALIZE_FLAGS
- hb_buffer_serialize_glyphs()
- hb_buffer_deserialize_glyphs()
- hb_buffer_serialize_list_formats()
- hb_set_add_range()
- hb_set_del_range()
- hb_set_get_population()
- hb_set_next_range()
- hb_face_[sg]et_glyph_count()
- hb_segment_properties_t
- HB_SEGMENT_PROPERTIES_DEFAULT
- hb_segment_properties_equal()
- hb_segment_properties_hash()
- hb_buffer_set_segment_properties()
- hb_buffer_get_segment_properties()
- hb_ot_layout_glyph_class_t
- hb_ot_layout_get_glyph_class()
- hb_ot_layout_get_glyphs_in_class()
- hb_shape_plan_t
- hb_shape_plan_create()
- hb_shape_plan_create_cached()
- hb_shape_plan_get_empty()
- hb_shape_plan_reference()
- hb_shape_plan_destroy()
- hb_shape_plan_set_user_data()
- hb_shape_plan_get_user_data()
- hb_shape_plan_execute()
- hb_shape_plan_get_shaper()
- hb_ot_shape_plan_collect_lookups()
- API changes:
- - Remove "mask" parameter from hb_buffer_add().
- - Rename hb_ot_layout_would_substitute_lookup() and hb_ot_layout_substitute_closure_lookup().
- - hb-set.h API const correction.
- - Renamed hb_set_min/max() to hb_set_get_min/max().
- - Rename hb_ot_layout_feature_get_lookup_indexes() to hb_ot_layout_feature_get_lookups().
- - Rename hb_buffer_guess_properties() to hb_buffer_guess_segment_properties().
- Overview of changes leading to 0.9.6
- Sunday, November 13, 2012
- ====================================
- - Don't clear pre-context text if no new context is provided.
- - Fix ReverseChainingSubstLookup, which was totally borked.
- - Adjust output format of hb-shape a bit.
- - Include config.h.in in-tree. Makes it easier for alternate build systems.
- - Fix hb_buffer_set_length(buffer, 0) invalid memory allocation.
- - Use ICU LayoutEngine's C API instead of C++. Avoids much headache.
- - Drop glyphs for all of Unicode Default_Ignorable characters.
- - Misc build fixes.
- Arabic shaper:
- - Enable 'dlig' and 'mset' features in Arabic shaper.
- - Implement 'Phags-pa shaping, improve Mongolian.
- Indic shaper:
- - Decompose Sinhala split matras the way old HarfBuzz / Pango did.
- - Initial support for Consonant Medials.
- - Start adding new-style Myanmar shaping.
- - Make reph and 'pref' logic introspect the font.
- - Route Meetei-Mayek through the Indic shaper.
- - Don't apply 'liga' in Indic shaper.
- - Improve Malayalam pre-base reordering Ra interaction with Chillus.
- Overview of changes leading to 0.9.5
- Sunday, October 14, 2012
- ====================================
- - Synthetic-GSUB Arabic fallback shaping.
- - Misc Indic improvements.
- - Add build system support for pthread.
- - Imported UCDN for in-tree Unicode callbacks implementation.
- - Context-aware Arabic joining.
- - Misc other fixes.
- - New API:
- hb_feature_to/from-string()
- hb_buffer_[sg]et_content_type()
- Overview of changes leading to 0.9.4
- Tuesday, Sep 03, 2012
- ====================================
- - Indic improvements with old-spec Malayalam.
- - Better fallback glyph positioning, specially with Thai / Lao marks.
- - Implement dotted-circle insertion.
- - Better Arabic fallback shaping / ligation.
- - Added ICU LayoutEngine backend for testing. Call it by the 'icu_le' name.
- - Misc fixes.
- Overview of changes leading to 0.9.3
- Friday, Aug 18, 2012
- ====================================
- - Fixed fallback mark positioning for left-to-right text.
- - Improve mark positioning for the remaining combining classes.
- - Unbreak Thai and fallback Arabic shaping.
- - Port Arabic shaper to shape-plan caching.
- - Use new ICU normalizer functions.
- Overview of changes leading to 0.9.2
- Friday, Aug 10, 2012
- ====================================
- - Over a thousand commits! This is the first major release of HarfBuzz.
- - HarfBuzz is feature-complete now! It should be in par, or better, than
- both Pango's shapers and old HarfBuzz / Qt shapers.
- - New Indic shaper, supporting main Indic scripts, Sinhala, and Khmer.
- - Improved Arabic shaper, with fallback Arabic shaping, supporting Arabic,
- Sinhala, N'ko, Mongolian, and Mandaic.
- - New Thai / Lao shaper.
- - Tibetan / Hangul support in the generic shaper.
- - Synthetic GDEF support for fonts without a GDEF table.
- - Fallback mark positioning for fonts without a GPOS table.
- - Unicode normalization shaping heuristic during glyph mapping.
- - New experimental Graphite2 backend.
- - New Uniscribe backend (primarily for testing).
- - New CoreText backend (primarily for testing).
- - Major optimization and speedup.
- - Test suites and testing infrastructure (work in progress).
- - Greatly improved hb-view cmdline tool.
- - hb-shape cmdline tool.
- - Unicode 6.1 support.
- Summary of API changes:
- o Changed API:
- - Users are expected to only include main header files now (ie. hb.h,
- hb-glib.h, hb-ft.h, ...)
- - All struct tag names had their initial underscore removed.
- Ie. "struct _hb_buffer_t" is "struct hb_buffer_t" now.
- - All set_user_data() functions now take a "replace" boolean parameter.
- - hb_buffer_create() takes zero arguments now.
- Use hb_buffer_pre_allocate() to pre-allocate.
- - hb_buffer_add_utf*() now accept -1 for length 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()
|