[webkit-changes] [WebKit/WebKit] d20819: [IFC][Ruby] Add support for breakable ruby bases
Alan Baradlay
noreply at github.com
Mon Dec 4 06:15:54 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d208198da1375a939e90e0416615e054e76107a4
https://github.com/WebKit/WebKit/commit/d208198da1375a939e90e0416615e054e76107a4
Author: Alan Baradlay <zalan at apple.com>
Date: 2023-12-04 (Mon, 04 Dec 2023)
Changed paths:
M Source/WebCore/layout/formattingContexts/inline/InlineContentBreaker.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineContentBreaker.h
M Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h
M Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp
M Source/WebCore/layout/formattingContexts/inline/ruby/RubyFormattingContext.cpp
M Source/WebCore/layout/formattingContexts/inline/ruby/RubyFormattingContext.h
M Source/WebCore/layout/layouttree/LayoutBox.h
Log Message:
-----------
[IFC][Ruby] Add support for breakable ruby bases
https://bugs.webkit.org/show_bug.cgi?id=265752
Reviewed by Antti Koivisto.
Let's be more relaxed about where we can have a line break opportunity inside ruby boxes.
before/after ruby box -> yes (see FIXME for some special characters)
between ruby start/end and ruby base star/end -> no
between ruby start/end and adjacent ruby content -> no (this is similar to <span>no_break)
inside ruby base -> yes
between ruby bases -> yes
In this patch
- remove code for old behavior where ruby bases where handled atomic from line breaking point of view
- ensure we don't break when annotation would overflow (see minimumRequiredWidth)
* Source/WebCore/layout/formattingContexts/inline/InlineContentBreaker.cpp:
(WebCore::Layout::InlineContentBreaker::ContinuousContent::reset):
* Source/WebCore/layout/formattingContexts/inline/InlineContentBreaker.h:
(WebCore::Layout::InlineContentBreaker::ContinuousContent::minimumRequiredWidth const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::setMinimumRequiredWidth):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp:
(WebCore::Layout::isAtSoftWrapOpportunity):
(WebCore::Layout::InlineFormattingUtils::nextWrapOpportunity):
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::LineCandidate::InlineContent::continuousContent const):
(WebCore::Layout::LineCandidate::InlineContent::appendtrailingWordBreakOpportunity):
(WebCore::Layout::LineCandidate::InlineContent::isEmpty const):
(WebCore::Layout::LineCandidate::InlineContent::setMinimumRequiredWidth):
(WebCore::Layout::LineCandidate::InlineContent::reset):
(WebCore::Layout::LineBuilder::candidateContentForLine):
(WebCore::Layout::LineBuilder::handleInlineContent):
(WebCore::Layout::LineCandidate::InlineContent::rubyContainerRange const): Deleted.
(WebCore::Layout::LineCandidate::InlineContent::appendRubyContainerRange): Deleted.
(WebCore::Layout::LineCandidate::InlineContent::isRuby const): Deleted.
(WebCore::Layout::LineBuilder::handleRubyContent): Deleted.
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h:
* Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::appendSpanningInlineBoxDisplayBox):
* Source/WebCore/layout/formattingContexts/inline/ruby/RubyFormattingContext.cpp:
(WebCore::Layout::RubyFormattingContext::isAtSoftWrapOpportunity):
(WebCore::Layout::RubyFormattingContext::annotationBoxLogicalWidth):
* Source/WebCore/layout/formattingContexts/inline/ruby/RubyFormattingContext.h:
* Source/WebCore/layout/layouttree/LayoutBox.h:
(WebCore::Layout::Box::isRubyInlineBox const):
Canonical link: https://commits.webkit.org/271473@main
More information about the webkit-changes
mailing list