fix(takumi): dedupe variable fonts so weights vary correctly#585
Merged
Conversation
@nuxt/fonts emits per-weight @font-face entries all pointing at the same variable WOFF2 URL. Loading that binary into takumi under multiple weight labels prevented takumi from varying the wght axis, so every weight rendered at the font's default axis position (typically 400). Collapse entries sharing a binary (same family + style + src) into a single load. When a binary backs multiple weights, omit the weight so takumi reads the wght axis from the font metadata. Static per-weight binaries keep their explicit weight.
commit: |
The original bug only surfaced in the prerender path on the user's Vercel deployment. Add nitro.prerender.routes: ['/'] to the fixture and assert the og:image URL lands at /_og/s/ so a regression can't silently pass by only exercising the dynamic endpoint.
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.
🔗 Linked issue
❓ Type of change
📚 Description
@nuxt/fontsemits per-weight@font-faceentries that all point at the same variable WOFF2 URL. The takumi renderer loaded that shared binary once per weight label, which pinned thewghtaxis, so every weight rendered at the font's default (usually 400) and bold headings looked identical to body copy.Collapse entries sharing a binary (same family, style, src) into a single
loadFontcall. When a binary backs multiple weights it is loaded without a weight so takumi reads thewghtaxis from the font metadata; static per-weight binaries keep their explicit weight. Covered by a new unit test for the dedupe function and an image-snapshot e2e against a Public Sans fixture.