Changeset 285948 in webkit
- Timestamp:
- Nov 17, 2021, 12:16:45 PM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
layout/formattingContexts/inline/InlineLine.cpp (modified) (3 diffs)
-
layout/formattingContexts/inline/InlineLine.h (modified) (1 diff)
-
layout/formattingContexts/inline/InlineLineBuilder.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r285946 r285948 1 2021-11-17 Alan Bujtas <zalan@apple.com> 2 3 [LFC][IFC] Do not apply the "do not trim whitespace followed by br" legacy line layout quirk when computing the intrinsic widths 4 https://bugs.webkit.org/show_bug.cgi?id=233262 5 6 Reviewed by Antti Koivisto. 7 8 While legacy line layout applies this quirk at line layout, the preferred width computation (totally different) codepath omits this quirk. 9 10 * layout/formattingContexts/inline/InlineLine.cpp: 11 (WebCore::Layout::Line::removeTrailingTrimmableContent): 12 * layout/formattingContexts/inline/InlineLine.h: 13 * layout/formattingContexts/inline/InlineLineBuilder.cpp: 14 (WebCore::Layout::LineBuilder::close): 15 1 16 2021-11-17 Alan Bujtas <zalan@apple.com> 2 17 -
trunk/Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp
r285931 r285948 33 33 #include "InlineSoftLineBreakItem.h" 34 34 #include "LayoutBoxGeometry.h" 35 #include "RuntimeEnabledFeatures.h"36 35 #include "TextFlags.h" 37 36 #include "TextUtil.h" … … 174 173 } 175 174 176 void Line::removeTrailingTrimmableContent( )175 void Line::removeTrailingTrimmableContent(ShouldApplyTrailingWhiteSpaceFollowedByBRQuirk shouldApplyTrailingWhiteSpaceFollowedByBRQuirk) 177 176 { 178 177 if (m_trimmableTrailingContent.isEmpty() || m_runs.isEmpty()) 179 178 return; 180 179 181 // Complex line layout quirk: keep the trailing whitespace around when it is followed by a line break, unless the content overflows the line. 182 if (RuntimeEnabledFeatures::sharedFeatures().layoutFormattingContextIntegrationEnabled()) { 180 if (shouldApplyTrailingWhiteSpaceFollowedByBRQuirk == ShouldApplyTrailingWhiteSpaceFollowedByBRQuirk::Yes) { 183 181 auto isTextAlignRight = [&] { 184 182 auto textAlign = formattingContext().root().style().textAlign(); … … 193 191 } 194 192 } 195 196 193 m_contentLogicalWidth -= m_trimmableTrailingContent.remove(); 197 194 } -
trunk/Source/WebCore/layout/formattingContexts/inline/InlineLine.h
r285931 r285948 64 64 void addTrailingHyphen(InlineLayoutUnit hyphenLogicalWidth); 65 65 66 void removeTrailingTrimmableContent(); 66 enum class ShouldApplyTrailingWhiteSpaceFollowedByBRQuirk { No, Yes }; 67 void removeTrailingTrimmableContent(ShouldApplyTrailingWhiteSpaceFollowedByBRQuirk); 67 68 void removeHangingGlyphs(); 68 69 void visuallyCollapseHangingOverflowingGlyphs(InlineLayoutUnit horizontalAvailableSpace); -
trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp
r285931 r285948 35 35 #include "LayoutBoxGeometry.h" 36 36 #include "LayoutState.h" 37 #include "RuntimeEnabledFeatures.h" 37 38 #include "TextUtil.h" 38 39 #include <wtf/unicode/CharacterNames.h> … … 458 459 } 459 460 auto horizontalAvailableSpace = m_lineLogicalRect.width(); 460 m_line.removeTrailingTrimmableContent(); 461 if (isInIntrinsicWidthMode()) { 461 auto isInIntrinsicWidthMode = this->isInIntrinsicWidthMode(); 462 // Legacy line layout quirk: keep the trailing whitespace around when it is followed by a line break, unless the content overflows the line. 463 // This quirk however should not be applied when running intrinsic width computation. 464 // FIXME: webkit.org/b/233261 465 auto shouldApplyTrailingWhiteSpaceFollowedByBRQuirk = isInIntrinsicWidthMode || !RuntimeEnabledFeatures::sharedFeatures().layoutFormattingContextIntegrationEnabled() 466 ? Line::ShouldApplyTrailingWhiteSpaceFollowedByBRQuirk::No 467 : Line::ShouldApplyTrailingWhiteSpaceFollowedByBRQuirk::Yes; 468 m_line.removeTrailingTrimmableContent(shouldApplyTrailingWhiteSpaceFollowedByBRQuirk); 469 470 if (isInIntrinsicWidthMode) { 462 471 // When a glyph at the start or end edge of a line hangs, it is not considered when measuring the line’s contents for fit. 463 472 // https://drafts.csswg.org/css-text/#hanging
Note:
See TracChangeset
for help on using the changeset viewer.