Repository navigation
Conversation
…ds a block level box drops that line's offset
Follow-up to bug 321083, which fixed firstLineBaseline() only. lastLineBaseline() has the same defect and
needed a second change alongside it, which is why it was left out there.
An inline-block's baseline is the baseline of its last line box. When that line box holds a block level box,
LineLayout::lastLineBaseline() returned the block's own baseline without adding the block's offset within the
inline-block, so the content after the inline-block aligned to the *first* line instead:
<div style="display: inline-block"><br><span><div>x</div></span></div>after
"after" sat at the top of the inline-block rather than 20px down. Legacy line layout gets this right - it
reports 32 where modern reported 14 on the reduction this came from.
Two changes are needed together:
- Add the block's logicalTop, matching RenderBlock::lastLineBaseline() and firstLineBaseline().
- Skip lines clamped away in the block direction. A line with no visible content is not the last line with
content. A line holding a block level box is excluded from that skip: what is visible
there is decided inside that block, which runs this same look-up on its own lines.
(fast/overflow/line-clamp.html <- visual progression)
WebKit-Bug: https://bugs.webkit.org/show_bug.cgi?id=321124
WebKit-Canonical-Link: https://commits.webkit.org/318702@main
wpt-pr-bot
approved these changes
Oct 25, 2026
wpt-pr-bot
left a comment
Collaborator
There was a problem hiding this comment.
The review process for this patch is being conducted in the WebKit project.
annevk
enabled auto-merge (rebase)
October 25, 2026 08:55
This branch has not been deployed
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
WebKit export from bug: [block-in-inline] Baseline of an inline-block whose last line box holds a block level box drops that line's offset
[block-in-inline] Baseline of an inline-block whose last line box holds a block level box drops that line's offset Follow-up to bug 321083, which fixed firstLineBaseline() only. lastLineBaseline() has the same defect and needed a second change alongside it, which is why it was left out there. An inline-block's baseline is the baseline of its last line box. When that line box holds a block level box, LineLayout::lastLineBaseline() returned the block's own baseline without adding the block's offset within the inline-block, so the content after the inline-block aligned to the *first* line instead: <div style="display: inline-block"><br><span><div>x</div></span></div>after "after" sat at the top of the inline-block rather than 20px down. Legacy line layout gets this right - it reports 32 where modern reported 14 on the reduction this came from. Two changes are needed together: - Add the block's logicalTop, matching RenderBlock::lastLineBaseline() and firstLineBaseline(). - Skip lines clamped away in the block direction. A line with no visible content is not the last line with content. A line holding a block level box is excluded from that skip: what is visible there is decided inside that block, which runs this same look-up on its own lines. (fast/overflow/line-clamp.html <- visual progression) WebKit-Bug: https://bugs.webkit.org/show_bug.cgi?id=321124 WebKit-Canonical-Link: https://commits.webkit.org/318702@main