[pull] main from Shopify:main - #204
Merged
Merged
Conversation
) * feat: expose Paragraph.getPath() and Paragraph.extendedVisit() Exposes two skparagraph APIs that make fallback-aware, glyph-tight text measurement possible (#3493): - getPath(lineNumber) converts a laid-out line (fallback fonts already applied) into an SkPath; computeTightBounds() on the result gives the exact ink bounds of the rendered text, as opposed to the font-metrics based heights of getHeight()/getRectsForRange(). Returns null for out of bounds line numbers since Paragraph::getPath does not bounds-check. Color glyphs (emojis) cannot be converted and are skipped. - extendedVisit(visitor) walks the computed layout, calling the visitor once per run of glyphs with the resolved font (after fallback), glyph ids, positions and per-glyph tight ink bounds, and once with null to signal the end of each line. utf8Starts exposes count entries (one per glyph) since the underlying cluster buffer only holds count values. Both are iOS/Android only; the web implementation throws (CanvasKit does not expose Paragraph::getPath/extendedVisit). E2E test suites cover ink bounds vs metrics bounds, font fallback, multi-line paths, out of bounds handling and the visitor protocol, plus drawing tests: a trimmed segment of the paragraph path, per-glyph tight ink bounds from extendedVisit under font fallback, a metrics-based getRectsForRange comparison (node baseline included), and a cross-check that the union of positioned glyph bounds from extendedVisit matches computeTightBounds() of getPath().
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )