|
cb59b347
|
2025-10-01T08:24:34
|
|
12.1.0
|
|
4a26e289
|
2025-09-30T15:31:04
|
|
Add `hb_ot_layout_lookup_collect_glyph_alternates()` (#5367)
* [map] Massage operator << overloads
* [ot-layout] Add +hb_ot_layout_lookup_collect_glyph_alternates
To collect all glyph mapping from SingleSubst or AlternateSubst
lookups in one call. Needed by FreeType autohinter for performance.
New API:
+hb_ot_layout_lookup_collect_glyph_alternates()
* [layout] Change hb_ot_layout_lookup_collect_glyph_alternates() API
https://github.com/harfbuzz/harfbuzz/pull/5367#discussion_r2149019638
|
|
3ce3853a
|
2025-09-22T17:17:28
|
|
Merge pull request #5575 from harfbuzz/apply-forward-speedup
[apply-forward] Speed up glyph skipping
|
|
eeb16bd4
|
2025-09-22T16:33:52
|
|
[apply-forward] Speed up glyph skipping
6% speedup in Roboto-Regular benchmark.
|
|
ccfd1ae2
|
2025-09-22T16:48:32
|
|
[buffer] Retain digest in the buffer
We don't have to reinitialize it for GPOS now, showing some
1.5% speedup on Roboto-Regular benchmark.
Over time we can change the various gsub_pauses to update the digest
in-place instead of returning true.
|
|
724ae78d
|
2025-08-25T13:14:43
|
|
Revert "[check-glyph-properties] Cache current lookup-prop's matching result." (#5497)
This reverts commit 5b6836e10802266b4c216208e517d617c0a75693.
This broke some shaping, namely, "j̣̈́J̣J̈́" with Google Sans, and is quite
tricky to debug. Since this slowed down everything other than Duployan,
and we also decided NOT to port it to HarfRust, just revert and keep the
simpler and more reasonable code logic.
|
|
0e6e18e7
|
2025-08-15T14:27:33
|
|
Rename a method
|
|
a9a78e1b
|
2025-08-14T02:04:06
|
|
[main-loop] Hypothetically remove a branch (#5458)
Don't rely on the compiler.
|
|
7d1ef008
|
2025-08-14T01:03:18
|
|
Remove an unneeded parameter (#5457)
|
|
0f6323e1
|
2025-08-10T15:15:08
|
|
[layout] Rename a variable
|
|
3c18f60d
|
2025-07-25T05:41:07
|
|
[check-glyph-property] Move the cache check to MarkFilteringSets only
|
|
5b6836e1
|
2025-07-25T04:42:49
|
|
[check-glyph-properties] Cache current lookup-prop's matching result.
Slows down everything other than speeding up Duployan.
|
|
3e93786c
|
2025-05-21T14:50:35
|
|
[ot-layout] More (nullable) instead of (optional)
Honestly I don't know why we should ever use (optional).
Looks like (nullable) applies to all (optional) and some more
places.
https://gi.readthedocs.io/en/latest/annotations/giannotations.html
|
|
4a8a3e12
|
2025-05-21T14:45:42
|
|
[ot-layout] Docs
Fixes https://github.com/harfbuzz/harfbuzz/issues/5335
|
|
f50490d6
|
2025-05-15T18:28:44
|
|
Add hb_scalar_cache_t
|
|
8f413a53
|
2025-04-15T10:03:16
|
|
[layout] Docs
|
|
810fbedf
|
2025-04-03T20:59:23
|
|
[shape] Use font-data for GDEF varStore cache
Last remaining alloc during shaping is gone!
Fixes https://github.com/harfbuzz/harfbuzz/issues/5237
|
|
7b8ae3d0
|
2025-03-13T10:44:40
|
|
[kern/kerx] Make zero-malloc
|
|
7cf63429
|
2025-02-20T12:05:17
|
|
[ot-layout] Use a variable
Doesn't make a diff in the generated code I believe,
but is nice.
|
|
6091abcc
|
2025-02-06T02:40:24
|
|
[buffer] Avoid a copy in collect_codepoints()
|
|
e5e3bc40
|
2025-02-06T02:36:26
|
|
[buffer] Merge two functions into a template
|
|
7862c7c5
|
2025-02-04T21:37:27
|
|
Rename a method again
|
|
80bbb0b2
|
2025-02-04T18:42:33
|
|
[set-digest] Rename a method
|
|
773fe850
|
2024-11-20T17:20:49
|
|
[layout] Blocklist the GDEF table of various Courier New versions
These files have incorrectly give several base glyphs GDEF mark glyph
class leading in zeroing there advance widths.
Fixes https://github.com/harfbuzz/harfbuzz/issues/4936
|
|
0037ee28
|
2024-05-24T08:10:15
|
|
Merge pull request #4578 from harfbuzz/varc-table
`VARC` table
|
|
e2ab6c7b
|
2024-05-12T15:25:13
|
|
[kern/kerx] Add accelerator and set-digest filtering
|
|
ebbec771
|
2024-05-12T15:10:21
|
|
[kern] Use the sanitized version from face
I'm not sure why kern/kerx/morx were written this way
before.
|
|
ac411f26
|
2024-04-23T13:26:53
|
|
[Condition] Finish evaluation of ConditionValue
https://github.com/adobe-type-tools/opentype-spec-drafts/blob/main/condvalue_spec.md
|
|
2f41d54b
|
2024-01-07T13:43:50
|
|
Fix old-compiler warning
|
|
aca55dbe
|
2023-11-03T10:51:37
|
|
[instancer] fix feature variations collect lookups
We already know which record to keep, so just collect lookups and no
need to check the substitutes_map
|
|
091e538d
|
2023-10-26T12:52:08
|
|
[instancer] support partial instancing for FeatureVariations
|
|
6190bb0b
|
2023-10-16T14:08:31
|
|
[layout] Change order of feature collection
See comments for rationale.
Fixes https://github.com/harfbuzz/harfbuzz/issues/4445
|
|
fcb9e591
|
2023-08-01T00:57:06
|
|
8.1.0
|
|
29ad9304
|
2023-07-30T17:06:25
|
|
[layout] Minor add prealloc
|
|
dc35a0fb
|
2023-07-30T16:32:11
|
|
[ot-map] Speed up feature finding
New API:
- hb_ot_layout_collect_feature_map()
|
|
b4305532
|
2023-07-09T02:54:30
|
|
8.0.0
|
|
690af7aa
|
2023-06-30T10:36:01
|
|
[GPOS] Sanitize Device tables lazily
This speeds up face loading for variable fonts by 80%!
Comparing before to after
Benchmark Time CPU Time Old Time New CPU Old CPU New
---------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_Font/load_face_and_shape/Roboto-Regular.ttf/hb -0.0368 -0.0366 20 20 20 19
BM_Font/load_face_and_shape/RobotoFlex-Variable.ttf/hb -0.7149 -0.7162 77 22 77 22
BM_Font/load_face_and_shape/RobotoFlex-Variable.ttf/var/hb -0.7241 -0.7255 80 22 79 22
BM_Font/load_face_and_shape/SourceSansPro-Regular.otf/hb -0.1441 -0.1445 28 24 28 24
BM_Font/load_face_and_shape/AdobeVFPrototype.otf/hb -0.7893 -0.7910 66 14 66 14
BM_Font/load_face_and_shape/AdobeVFPrototype.otf/var/hb -0.7865 -0.7882 67 14 66 14
BM_Font/load_face_and_shape/SourceSerifVariable-Roman.ttf/hb -0.8895 -0.8900 227 25 226 25
BM_Font/load_face_and_shape/SourceSerifVariable-Roman.ttf/var/hb -0.8895 -0.8900 226 25 225 25
BM_Font/load_face_and_shape/Comfortaa-Regular-new.ttf/hb -0.5512 -0.5531 42 19 42 19
BM_Font/load_face_and_shape/NotoNastaliqUrdu-Regular.ttf/hb -0.1511 -0.1510 227 192 225 191
BM_Font/load_face_and_shape/NotoSerifMyanmar-Regular.otf/hb -0.1494 -0.1498 41 35 40 34
OVERALL_GEOMEAN -0.6443 -0.6456 0 0 0 0
|
|
f0f6f6a8
|
2023-06-22T10:58:44
|
|
[layout] More message massaging
|
|
37555f84
|
2023-06-22T10:21:19
|
|
[layout] Trace chosen script tag
|
|
67b16247
|
2023-06-07T16:15:48
|
|
[set] Simplify a few set iterations as range loop
|
|
e047b1ab
|
2023-05-20T10:27:31
|
|
[layout] Improve docs
|
|
02e0e939
|
2023-05-19T13:18:06
|
|
[layout] Fetch default font extents if localized extents not found
|
|
8ccc1ff2
|
2023-05-19T13:14:57
|
|
[layout] Mark language as nullable
GI needs it apparently.
|
|
792ca22c
|
2023-05-19T11:42:20
|
|
[layout] Document new API
|
|
0894813a
|
2023-05-19T11:30:03
|
|
[layout] Add "2" version of BASE table API
...that do the script/language resolution.
Part of https://github.com/harfbuzz/harfbuzz/pull/4237
Ref https://github.com/harfbuzz/harfbuzz/issues/3439
|
|
3e110c69
|
2023-05-19T11:06:26
|
|
[layout] Add hb_ot_layout_get_font_extents()
Untested.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3290
|
|
3f2401e2
|
2023-05-03T16:56:52
|
|
[layout] Don't init iters successively multiple times
|
|
8a8fc37c
|
2023-05-03T14:57:00
|
|
[GDEF] Use a cache for glyph classes
Shows 5% speedup for Roboto shaping.
|
|
577bc8a2
|
2023-05-01T14:01:08
|
|
[layout] Micro-optimize
|
|
5b78e9a9
|
2023-05-01T13:45:42
|
|
[layout] Whitespace
|
|
7c9ed76d
|
2023-04-27T03:26:57
|
|
[doc] Use simpler markdown link syntax
|
|
48f8ed7e
|
2023-04-22T10:11:22
|
|
Docs
|
|
8bdaeddf
|
2023-02-11T23:44:58
|
|
7.0.0
|
|
0ea8bbd9
|
2023-02-11T20:01:06
|
|
[doc] Use XSince for REPLACEME/EXPERIMENTAL
To hide them from gtk-doc so that we can finally enable gtkdoc-check.
|
|
7a4bd97e
|
2023-01-31T14:59:39
|
|
[layout] Build lookup accelerators lazily on-demand
Reduces memory consumption for large multi-script fonts
drastically.
|
|
83353f13
|
2023-01-31T14:32:14
|
|
[layout] Reduce memory use slightly
By using raw pointer instead of vector for subtable accelerator.
To be used for more memory saving by making subtable accelerators
lazy-loaded by shape-plans for large fonts.
|
|
04056d44
|
2023-01-28T22:52:25
|
|
[layout] Optimize more buffer message calls
Continuation of da7b66c1f8bbf7147f8113.
|
|
da7b66c1
|
2023-01-27T16:39:06
|
|
[layout] Optimize buffer message calls
Those aren't exactly free. They were showing up in profiles.
|
|
edec8946
|
2023-01-20T09:28:59
|
|
New API: hb_ot_layout_script_select_language2()
Variant that outputs chosen_language.
Not sure why the original API didn't have this. The script
counterpart has.
|
|
2fd8e36e
|
2023-01-20T09:09:14
|
|
[layout] Fix return value of chosen_script when matching fails
|
|
ed023f66
|
2023-01-12T17:04:24
|
|
Enable -Wformat-signedness
And fix the codebase.
|
|
a81dd105
|
2022-11-26T13:43:15
|
|
[layout] Adjust printing feature tags
For required-feature, print spaces, not nul bytes.
|
|
56e3868b
|
2022-11-26T13:14:23
|
|
[layout/buffer-message] Print feature name in lookup buffer messages
|
|
ed43bc51
|
2022-11-20T13:10:19
|
|
[buffer] Move delete_glyphs_inplace() here
|
|
561946c7
|
2022-11-16T17:58:59
|
|
[layout] Comment
|
|
27a8fe7d
|
2022-11-16T17:49:44
|
|
[layout] Only update buffer digest if buffer changed by a pause
|
|
8b2a2111
|
2022-11-16T16:57:44
|
|
[layout] Keep digest updated in the context
Don't recompute digest after every (applied) GSUB lookup.
|
|
a5964a2d
|
2022-11-16T16:45:23
|
|
[layout] Minor simplify
|
|
80b87588
|
2022-11-16T16:26:41
|
|
[layout] Add a buffer message for digest-skipped lookups
|
|
dff1b809
|
2022-11-16T16:19:05
|
|
[buffer] Add .digest() and use
|
|
654a2eaf
|
2022-11-16T16:09:04
|
|
[layout] Use buffer-digest for GSUB as well
Combined with previous commit, this shows up to 12% speed up with
Roboto and the en-words (ie. short strings) benchmark, about 5%
for longer English tests, and no adverse effect on heavier fonts.
|
|
15b6c325
|
2022-11-16T15:59:13
|
|
[layout] Use a buffer digest for GPOS to skip whole lookups
|
|
3ce4b8f5
|
2022-10-08T19:10:07
|
|
5.3.0
|
|
f4813e3b
|
2022-09-09T10:34:09
|
|
[instance] update collect_lookups/prune_features()/closure_features() with variations
Some features will be substituted with variations, so we do not collect
lookups from the original feature tables.
|
|
b70032ed
|
2022-09-22T15:59:16
|
|
[layout] Fix typo in docs
|
|
752060a4
|
2022-09-01T13:47:12
|
|
[layout] Document hb_ot_layout_lookup_get_optical_bound()
|
|
71c6cba0
|
2022-09-01T13:43:19
|
|
[layout] Rename API:
-hb_ot_layout_get_optical_bound()
+hb_ot_layout_lookup_get_optical_bound()
|
|
3892128a
|
2022-09-01T13:40:53
|
|
[layout] Add HB_NO_LAYOUT_RARELY_USED
|
|
8e88653f
|
2022-09-01T13:39:26
|
|
[layout] Move code around
|
|
4bf96211
|
2022-08-31T09:18:18
|
|
[optical-bounds] Optimize
|
|
5d6f1a88
|
2022-08-31T08:31:24
|
|
[layout] Add hb_ot_layout_get_optical_bound()
|
|
14eb3d37
|
2022-09-01T13:18:42
|
|
[layout] Improve annotations
|
|
29d5c7f6
|
2022-08-31T15:03:09
|
|
docs: Improve docs for some apis
Various functions take hb_tag_t arrays. Those
arrays are expected to be 0-terminated. Document
that.
|
|
c96bfca3
|
2022-08-31T08:05:14
|
|
[get-alternates] Minor simplify
|
|
41aa02ae
|
2022-08-29T11:17:22
|
|
[layout] Improve get_feature_tags documentation
Fixes https://github.com/harfbuzz/harfbuzz/issues/3798
|
|
371c8867
|
2022-08-23T22:28:58
|
|
Add few missing since tags
|
|
5fdae684
|
2022-06-29T23:52:08
|
|
[reorg] Move GSUB.hh up one level and change GSUB namespace to GSUB_impl.
|
|
98e90cc6
|
2022-06-30T08:43:57
|
|
[docs] Reduce warnings
Use markdown syntax for inline code blocks instead of %true, %false, and
%NULL.
|
|
3fbf2dec
|
2022-06-28T23:55:32
|
|
[reorg] Move OT::Layout::GPOS_impl::GPOS to OT::Layout::GPOS.
|
|
88ef3c5a
|
2022-06-28T23:26:49
|
|
[reorg] Change OT::Layout::GPOS to OT::Layout::GPOS_impl.
|
|
74f45f7c
|
2022-06-24T23:14:30
|
|
[reorg] Move remaining GPOS lookup types to new directory.
|
|
c13ff395
|
2022-06-08T06:25:23
|
|
[layout] Rename apply_recurse_func to specialization of dispatch_recurse_func
|
|
42051fe1
|
2022-06-08T04:00:21
|
|
[layout] s/inplace/always_inplace/g
|
|
b96622d1
|
2022-06-05T02:45:41
|
|
[layout] Use a cache for main input ClassDef of (Chain)ContextLookupFormat2
This commit adds a per-lookup caching infrastructure to GSUB/GPOS, and
uses it to cache input ClassDef.get_class value for (Chain)ContextLookupFormat2.
For fonts heavy on use of heave class-based2 context matching, this shows
a good speedup. For NotoNastaliqUrdu for example, I observe 17% speedup.
Unfortunately not many other lookups can use a cache like this :(.
https://github.com/harfbuzz/harfbuzz/pull/3636
|
|
15543f70
|
2022-06-04T10:55:50
|
|
[indic-like] Move allocation of syllable() buffer var to shapers that use it
In indic, we don't have a pause location release the var.
|
|
e6409d39
|
2022-06-05T06:57:37
|
|
Revert "[layout] Use a cache for main input ClassDef of (Chain)ContextLookups"
This reverts commit 57d1c08739d0acd94b96da2f9d5dd6c0ff3b3722.
Err. This was an accident.
|
|
57d1c087
|
2022-06-05T02:45:41
|
|
[layout] Use a cache for main input ClassDef of (Chain)ContextLookups
|
|
997d9cc4
|
2022-06-02T18:04:12
|
|
[map] Make unique_ptr hashable
|
|
e9407a2b
|
2022-06-02T11:29:44
|
|
Use shared_ptr<hb_set_t> in one place
See if valgrind is happy...
|
|
3957d292
|
2022-05-29T07:30:58
|
|
[layout] Remove stale comment
|