[webkit-changes] [WebKit/WebKit] 1fc3d9: [IFC] Update TextBreakingPositionCache to use Whit...
Yulun Wu
noreply at github.com
Mon Jan 20 06:11:27 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1fc3d9918294db0be3dda280ef838328b0e59c0b
https://github.com/WebKit/WebKit/commit/1fc3d9918294db0be3dda280ef838328b0e59c0b
Author: Yulun Wu <yulun_wu at apple.com>
Date: 2025-01-20 (Mon, 20 Jan 2025)
Changed paths:
A LayoutTests/fast/text/whitespace/whitespace-trailing-trim-expected.txt
A LayoutTests/fast/text/whitespace/whitespace-trailing-trim.html
M Source/WebCore/layout/formattingContexts/inline/text/TextBreakingPositionCache.cpp
M Source/WebCore/layout/formattingContexts/inline/text/TextBreakingPositionContext.h
Log Message:
-----------
[IFC] Update TextBreakingPositionCache to use WhiteSpaceCollapse.
https://bugs.webkit.org/show_bug.cgi?id=285551
<rdar://141021052>
Reviewed by Alan Baradlay.
This change fixes a bug where TextBreakingPositionContext was tracking validity of
text breaking positions by checking whether RenderStyle::WhiteSpace changed between
the calculation and fetching cached breaking points. This causes issues where setting
TextWrapMode implicitly changes how white space collapses but RenderText's
RenderStyle is not correctly updated, causing TextBreakingPositionCache to
use stale breaking positions.
This is because there are combinations of textWrapMode() and whiteSpaceCollapse()
that are not supported by the whiteSpace() shorthand, causing combinations that
cannot be represented by the whiteSpace() syntax to be incorrectly classified as
WhiteSpace::Normal. Changing layout contexts between unsupported combinations
causes incorrect usage of cached layouts.
The correct way to avoid this is to hash on the longhand RenderStyle::WhiteSpaceCollapse.
https://github.com/WebKit/WebKit/blob/e41eca63e27004fb0b1e0a5a3e90e00b134a6d7f/Source/WebCore/rendering/style/RenderStyle.cpp#L2850-L2872
A follow up CL will be sent out to remove RenderStyle()::whiteSpace() from WebCore.
This PR also adds WhiteSpaceCollapseBehavior that groups WhiteSpaceCollapse
types that have the same text breaking positions. This lets us avoid
recalculating breaking points when switching between these
WhiteSpaceCollapse types that would have identical breaking points.
https://drafts.csswg.org/css-text-4/#white-space-collapsing
https://commits.webkit.org/265267@main
https://commits.webkit.org/269613@main
Canonical link: https://commits.webkit.org/289150@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list