Fix createTextPath CJK glyph extraction for mixed CJK/English text #151
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.
The
createTextPathfunction inweb_content_renderer.cppwas failing to correctly extract glyph paths from CJK (Chinese, Japanese, Korean) characters when processing mixed CJK/English text. This prevented CSSbackground-clip: texteffects from working properly with multilingual content.Problem
The original implementation used a single font for the entire text string and manually calculated glyph positions:
This approach failed because:
font.getPath()would fail and CJK characters were silently skippedSolution
Replaced the single-font approach with Skia's paragraph visitor pattern, which leverages the paragraph system's proper font resolution:
Impact
This fix enables
background-clip: textCSS effects to work correctly with:"你好世界""Hello 你好 World 世界""News 新闻 ニュース 뉴스 📰"Example CSS that now works with CJK text:
The change is minimal (28 additions, 70 deletions) and leverages existing Skia infrastructure rather than maintaining custom text layout logic.
Fixes #150.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.