Skip to content

[pull] main from Shopify:main - #204

Merged
pull[bot] merged 1 commit into
code:mainfrom
Shopify:main
Jul 13, 2026
Merged

[pull] main from Shopify:main#204
pull[bot] merged 1 commit into
code:mainfrom
Shopify:main

Conversation

@pull

@pull pull Bot commented Jul 13, 2026

Copy link
Copy Markdown

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 : )

)

* 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().
@pull pull Bot locked and limited conversation to collaborators Jul 13, 2026
@pull pull Bot added the ⤵️ pull label Jul 13, 2026
@pull
pull Bot merged commit b985f58 into code:main Jul 13, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant