Skip to content

Conversation

nicoburns
Copy link
Contributor

This PR affects the computation of per-line "metrics" (line_height, ascent, descent, etc) and per-text-run "whitespace properties" (is_whitespace, has_trailing_whitespace).

Previously, the computation of these metrics was deferred until line-breaking of all lines had completed (in the BreakLines::finish method). This PR moves the computations so that the metrics and whitespace properties for each line are computed immediately after that line is "committed" by the line breaker, and before the next line is laid out.

The motivation for this is to make the line_height of line N available to help determine the y-position of line N+1. This is necessary for text layout with "excluded regions" (including floats) as in this scenario the max_advance of a line depends on it's y-position.

(note: the majority of the diff here is indentation because the body of a loop has been moved into it's own method)

@nicoburns nicoburns changed the title Compute line metrics each line eagerly Compute whitespace properties and line metrics for each line eagerly Sep 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant