Conversation
Modeled after HarfBuzz's.
We check before recursing already.
Four bug fixes later, I'm down to diffs of up to 0.12 font units. Investigating more. |
The spec is a bit confusing as the flag orders are opposite, but the record clearly orders them this way.
This reverts commit d43c08c.
I tracked this down to pure float noise. I gave up investigation after a few hours. Accepting difference, since the diff is so small. I think this is ready for review. Thanks. |
- Old: round(base + (c1 + c2 + ...)) - HB/new: round(((base + c1) + c2) + ...) - Those can differ by 1 ULP and flip rounding by 1 raw unit. Still doesn't address the discrepancy I'm seeing :(.
This reverts commit 5124bd9. While closer to HB, this commit had a measurable slowdown, for no good benefit.
|
The rabbithole also led me to file this issue, which doesn't seem to have a significant effect on this dataset, but a bug nonetheless: #1738 |
For my own reference: Gemini session: https://gemini.google.com/share/54b90c1c1d1f |
|
The final verdict is that the Fixed (26.6) pipeline in Skrifa's FreeTypeScaler is hurting VARC accuracy a lot, because of the transformations applied to component shapes (scale of up to 10 in my test data), amplifying the precision error. Max error observed is 12% of a font unit on a 1000 upem. Still invisible, but not zero... |
|
Tests added. |
64fefb9 to
09d32d5
Compare





This hooks up
VARCfonts. I have tested it with HB cmdline tools and seems to work nicely, although, 25% slower than HB on my test CJK font.This breaks the VARC table API in read-fonts / write-fonts. But nothing else (hopefully).