Embed and subset fonts in SVG rendering#58
Conversation
- SVG outputs now embed the glyphs of the fonts they use in a `<style>` block via data URIs to ensure consistent rendering. - Embedded fonts are initially WOFF2 files, which are decompressed to TTF, subset using `ttf_parser` and `subsetter` based on characters present in the recording frames, and re-encoded in base64. - Since a pure-Rust WOFF2 encoder is currently unavailable, the final subsetted font data is embedded as `font/ttf` instead of WOFF2. - Unused glyphs are stripped to keep the SVG file size manageable. Co-authored-by: HalFrgrd <4559349+HalFrgrd@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
- SVG outputs now embed the glyphs of the fonts they use in a `<style>` block via data URIs to ensure consistent rendering. - Embedded fonts are initially WOFF2 files, which are decompressed to TTF, subset using `ttf_parser` and `subsetter` based on characters present in the recording frames, and re-encoded in base64. - Since a pure-Rust WOFF2 encoder is currently unavailable, the final subsetted font data is embedded as `font/ttf` instead of WOFF2. - Unused glyphs are stripped to keep the SVG file size manageable. Co-authored-by: HalFrgrd <4559349+HalFrgrd@users.noreply.github.com>
This PR updates the SVG renderer to parse, subset, and embed the font faces directly into the SVG's
<style>tag, ensuring consistent text rendering regardless of the user's local installed fonts.The fonts are loaded as WOFF2 format from disk, decompressed to TTF using
woff2_patched, subsetted using thesubsettercrate with the unique characters extracted from theRecordingframes, and encoded as base64 TTF fonts into the generated<style>block.PR created automatically by Jules for task 16076179123429280778 started by @HalFrgrd