Repository navigation
Add MVAR support - #420
Open
lehni wants to merge 4 commits into
Open
Add MVAR support#420lehni wants to merge 4 commits into
lehni wants to merge 4 commits into
Conversation
lehni
commented
Oct 26, 2026
Contributor
- Builds on Follow HarfBuzz for the font metrics, and fix vhea and empty glyphs #419, whose metrics it varies; only the last two commits are new here
- Read the MVAR table and vary the ascent, descent, line gap, cap height, x-height and underline metrics of a variation by their deltas, whichever table each metric comes from, as HarfBuzz does
- Pierre-Henri Toussaint wrote the MVAR support; the last commit is my follow-up
- Tests use HarfBuzz's values for Playwrite and Recursive, two OFL fonts from HarfBuzz's test suite, and Mada
- Fix the vhea table structure - Give empty glyphs zero coordinates instead of infinite ones - Read the maxp, post and vhea versions as 16.16 version numbers - Respect the useTypoMetrics flag for the font's ascent, descent and line gap, and add lineHeight - Fix an undefined control box in the glyph metrics
- Use the typo metrics only when the font sets useTypoMetrics and the hhea metrics otherwise, with a positive ascent and a negative descent, as HarfBuzz does, instead of FreeType's fallbacks - Drop lineHeight, which HarfBuzz doesn't have and clients can derive - Expect HarfBuzz's vertical advance for Open Sans's space, which has no vmtx and doesn't set useTypoMetrics - Add tests for the typo metrics, the vertical advance without vmtx, the vhea and maxp versions, and empty CFF glyph boxes, with HarfBuzz's values
- Read the MVAR table and compute its adjustments for a variation of the font - Apply them to the typo ascent, descent and line gap, the cap height and the x-height
- Vary each metric by its MVAR delta whichever table it comes from, so fonts without useTypoMetrics also vary their ascent, descent and line gap, as HarfBuzz does - Vary the underline position and thickness too - Fall back to the ascent for the cap height without calling the metrics again, which recursed in fonts without OS/2 - Add tests with Playwrite, Recursive and Mada, with HarfBuzz's values, and one that variations don't share glyphs requested with other code points
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.