Commit graph

17905 commits

Author SHA1 Message Date
Behdad Esfahbod
ffae5b040d [ot-font/trak] Move trak application to ot-font instead of ot-shape
This is what CoreText does.

Fixes https://github.com/harfbuzz/harfbuzz/issues/5049
2025-02-09 04:39:32 +00:00
Behdad Esfahbod
f840480fde [trak] Remove leftover 2025-02-09 04:27:20 +00:00
Behdad Esfahbod
be287eab02 [trak] Don't shift glyphs
That's what CoreText does and fonts are designed for. Who are we to improve on...
2025-02-09 04:19:02 +00:00
Behdad Esfahbod
1150d4bf12 [trak] Remove support for disabling using pseudo-font-feature
Fixes https://github.com/harfbuzz/harfbuzz/issues/5052
2025-02-09 04:16:57 +00:00
Behdad Esfahbod
4c06c3d606
Merge pull request #5057 from harfbuzz/coretext-font-nonbmp
[coretext-font] Support non-BMP characters
2025-02-09 04:01:59 +00:00
Behdad Esfahbod
fb22295311 [coretext-font] Support non-BMP in variation-selector callback
Fixes https://github.com/harfbuzz/harfbuzz/issues/5056
2025-02-09 03:57:47 +00:00
Behdad Esfahbod
f6bf9f697e [coretext-font] Do early-return in get_nominal_glyphs()
Related to https://github.com/harfbuzz/harfbuzz/issues/5056
2025-02-09 03:57:47 +00:00
Behdad Esfahbod
c5e6c885c1 [coretext-font] Support non-BMP chars in get_nominal_glyph(s)
Part of https://github.com/harfbuzz/harfbuzz/issues/5056
2025-02-09 03:57:47 +00:00
Behdad Esfahbod
b9675d6d40
Merge pull request #5055 from harfbuzz/trak-interpolate
[trak] Interpolate between tracks
2025-02-09 03:01:21 +00:00
Behdad Esfahbod
a70a30ddfd [trak] Interpolate between tracks
Fixes https://github.com/harfbuzz/harfbuzz/issues/5054

According to Ned, this is what CoreText does.

Should add tests some time...
2025-02-09 02:56:20 +00:00
Behdad Esfahbod
1bf0a5bc17 [trak] Streamline a bit
Also use float math.
2025-02-09 02:43:09 +00:00
Behdad Esfahbod
b1677e76aa [trak] Handle "out-of-range" values better
If requested size < min-size, use the value for min-size.
If requested size > max-size, use the value for max-size.

This is the only way that makes sense. Extrapolating as we were
doing, is just wrong...

This also seems to match what CoreText does.

Adjacent to fixing https://github.com/harfbuzz/harfbuzz/issues/5054
2025-02-09 02:05:36 +00:00
Behdad Esfahbod
691cc93976 [trak] Fix build without STAT 2025-02-06 20:08:16 +00:00
Behdad Esfahbod
b8327fe605 Fix compiler errors 2025-02-06 20:01:12 +00:00
Behdad Esfahbod
f394206b7c [ot-shape] Only apply trak'ing if STAT table present 2025-02-06 19:56:33 +00:00
Behdad Esfahbod
6e0dd8110e [trak] Default ptem to 12
That's what CoreText does.
https://developer.apple.com/documentation/coretext/ctfontcreatewithgraphicsfont(_:_:_:_:)

Fixes https://github.com/harfbuzz/harfbuzz/issues/5048
2025-02-06 19:56:30 +00:00
Behdad Esfahbod
ef00ac8c84
Merge pull request #5051 from harfbuzz/trak-choose
[trak] Choose closest trak track to 0.0
2025-02-06 17:44:55 +00:00
Behdad Esfahbod
6a37a65276 [trak] Choose closest trak track to 0.0
Seems to be what CT does. Needs more testing to adjust better, but
for now it's better than before.
2025-02-06 17:41:36 +00:00
Behdad Esfahbod
8efd2d85c7 [coretext] Fix CGFont leak 2025-02-06 14:38:09 +00:00
Behdad Esfahbod
b5327faf99 Fix leak
From recent work.
2025-02-06 14:26:37 +00:00
Behdad Esfahbod
24fe2be9c1 [subset] Fix undefined-behavior 2025-02-06 11:55:23 +00:00
Behdad Esfahbod
97db7bb2a0 [set-digest] Cosmetic 2025-02-06 11:01:59 +00:00
Behdad Esfahbod
f0d6a36612 [face] Use a macro 2025-02-06 02:51:50 +00:00
Behdad Esfahbod
7bdc6c9a5a Whitespace 2025-02-06 02:47:13 +00:00
Behdad Esfahbod
6091abcc9b [buffer] Avoid a copy in collect_codepoints() 2025-02-06 02:40:24 +00:00
Behdad Esfahbod
e5e3bc4080 [buffer] Merge two functions into a template 2025-02-06 02:37:10 +00:00
Behdad Esfahbod
403f12f766 [buffer] A few always-inline's 2025-02-06 02:33:41 +00:00
Behdad Esfahbod
4818ba9ece [set-digest] Yet another tuning
Saves 5% on SF Pro while regressing 2% on Roboto.
2025-02-06 01:50:12 +00:00
Behdad Esfahbod
c737829449 [OT] Remove likely() from coverage check
Not that it matters, but because of the set-digest, this path
is not very likely() anymore.
2025-02-06 01:42:25 +00:00
Behdad Esfahbod
3577992a5b [gsubgpos] Simplify a destruction 2025-02-06 01:30:59 +00:00
Behdad Esfahbod
d0d256bb66 [bit-page] Move a couple methods around 2025-02-06 01:26:33 +00:00
Behdad Esfahbod
a4cd11dea9 [bit-page] Micro-optimize 2025-02-06 01:13:58 +00:00
Behdad Esfahbod
0a678a9233 Fix leak 2025-02-06 01:02:44 +00:00
Behdad Esfahbod
cad264b2c9 Indent 2025-02-06 00:56:16 +00:00
Behdad Esfahbod
63c92d5a0d [set-digest] always-inline 2025-02-06 00:52:41 +00:00
Behdad Esfahbod
d712a02845 [set-digest] Back to a 3-entry, with different parameters now
We used to use 4,0,9 for years. Now 3,0,6. It is slightly faster
and shouldn't regress common fonts.  The rationale is that OT
GSUB/GPOS are split by script, so any particular script is not
likely to use more than a few thousands of (consecutive mostly)
glyphs. The exception is CJK of course, but those have less
GSUB/GPOS work.
2025-02-06 00:45:49 +00:00
Behdad Esfahbod
f5fe66cf5f [set-digest] Minor sanity 2025-02-06 00:36:58 +00:00
Behdad Esfahbod
4e75dfae84 Hide unused member 2025-02-06 00:14:29 +00:00
Behdad Esfahbod
99043f204d [gsubgpos] Tweak cache again 2025-02-05 20:11:27 +00:00
Behdad Esfahbod
69057e6ec0 [Ligature] Cache coverage the same way as PairPos1
Another 7% down on Roboto-Regular.
2025-02-05 19:50:51 +00:00
Behdad Esfahbod
3975e220ce Merge branch 'pairpos-cache' 2025-02-05 19:44:08 +00:00
Behdad Esfahbod
e535c6835b [Context] Simplify cache costing 2025-02-05 19:43:43 +00:00
Behdad Esfahbod
7a746c3295 [Coverage] Fix cache cost reporting 2025-02-05 19:38:25 +00:00
Behdad Esfahbod
9a15e0e69a
Merge pull request #5043 from harfbuzz/pairpos-cache
[OT] PairPos cache
2025-02-05 19:37:27 +00:00
Behdad Esfahbod
5be62a9f66 [PairPosFormat1] Use a coverage cache as well
Speeds up Arial shaping by 3%.
2025-02-05 19:30:01 +00:00
Behdad Esfahbod
f22943a2a2 [PairPos] Cache coverage as well
Another 3% down in Roboto-Regular.
2025-02-05 19:18:25 +00:00
Behdad Esfahbod
726af2e4e5 [PairPos] Use a class cache
10% speedup on Roboto-Regular. 5% on SF Pro.
2025-02-05 19:18:25 +00:00
Behdad Esfahbod
acd122d030 [gsubgpos] Prepare for per-lookup allocated caches 2025-02-05 19:18:25 +00:00
Behdad Esfahbod
3f40edbfa0 [ClassDef] Add ability to use a cache 2025-02-05 19:18:25 +00:00
Behdad Esfahbod
7392f32e47 [face] Tweak stack again
Let's go with one loop iteration. It's cheap.
2025-02-05 19:16:08 +00:00