Title: [289716] trunk/Source/WebCore
- Revision
- 289716
- Author
- [email protected]
- Date
- 2022-02-13 10:06:27 -0800 (Sun, 13 Feb 2022)
Log Message
[LFC][IFC] Not all atomic inline level boxes need ideographic baseline when in vertical writing mode
https://bugs.webkit.org/show_bug.cgi?id=236556
Reviewed by Antti Koivisto.
Replaced boxes and orthogonal inline-block containers should use ideographic type of baseline.
(e.g. can't sync baselines coming from orthogonal inline-blocks.)
* layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
(WebCore::Layout::LineBoxBuilder::adjustIdeographicBaselineIfApplicable):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (289715 => 289716)
--- trunk/Source/WebCore/ChangeLog 2022-02-13 17:53:35 UTC (rev 289715)
+++ trunk/Source/WebCore/ChangeLog 2022-02-13 18:06:27 UTC (rev 289716)
@@ -1,3 +1,16 @@
+2022-02-13 Alan Bujtas <[email protected]>
+
+ [LFC][IFC] Not all atomic inline level boxes need ideographic baseline when in vertical writing mode
+ https://bugs.webkit.org/show_bug.cgi?id=236556
+
+ Reviewed by Antti Koivisto.
+
+ Replaced boxes and orthogonal inline-block containers should use ideographic type of baseline.
+ (e.g. can't sync baselines coming from orthogonal inline-blocks.)
+
+ * layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
+ (WebCore::Layout::LineBoxBuilder::adjustIdeographicBaselineIfApplicable):
+
2022-02-13 Lauro Moura <[email protected]>
Unreviewed, gtk buildfix after r289706
Modified: trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp (289715 => 289716)
--- trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp 2022-02-13 17:53:35 UTC (rev 289715)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp 2022-02-13 18:06:27 UTC (rev 289716)
@@ -349,6 +349,14 @@
// when the style/content needs ideographic baseline setup in vertical writing mode.
auto& rootInlineBox = lineBox.rootInlineBox();
+ auto isAtomicInlineLevelBoxWithIdeographicBaseline = [&](auto& atomicInlineLevelBox) {
+ ASSERT(atomicInlineLevelBox.isAtomicInlineLevelBox());
+ auto& layoutBox = atomicInlineLevelBox.layoutBox();
+ auto isReplaced = is<ReplacedBox>(layoutBox) && !layoutBox.isIntegrationInlineBlock();
+ auto isOrthogonalFormattingContextRoot = layoutBox.establishesBlockFormattingContext() && layoutBox.style().isHorizontalWritingMode();
+ return isReplaced || isOrthogonalFormattingContextRoot;
+ };
+
auto lineNeedsIdeographicBaseline = [&] {
auto styleToUse = [&] (auto& inlineLevelBox) -> const RenderStyle& {
return !lineIndex ? inlineLevelBox.layoutBox().firstLineStyle() : inlineLevelBox.layoutBox().style();
@@ -364,8 +372,10 @@
if (m_fallbackFontRequiresIdeographicBaseline || primaryFontRequiresIdeographicBaseline(rootInlineBoxStyle))
return true;
for (auto& inlineLevelBox : lineBox.nonRootInlineLevelBoxes()) {
- if (primaryFontRequiresIdeographicBaseline(styleToUse(inlineLevelBox)))
+ if (inlineLevelBox.isInlineBox() && primaryFontRequiresIdeographicBaseline(styleToUse(inlineLevelBox)))
return true;
+ if (inlineLevelBox.isAtomicInlineLevelBox() && isAtomicInlineLevelBoxWithIdeographicBaseline(inlineLevelBox))
+ return true;
}
return false;
};
@@ -381,7 +391,7 @@
else if (inlineLevelBox.isLineBreakBox()) {
auto& parentInlineBox = lineBox.inlineLevelBoxForLayoutBox(inlineLevelBox.layoutBox().parent());
setBaselineAndLayoutBounds(inlineLevelBox, layoutBoundsMetricsForInlineBox(parentInlineBox, IdeographicBaseline));
- } else if (inlineLevelBox.isAtomicInlineLevelBox()) {
+ } else if (inlineLevelBox.isAtomicInlineLevelBox() && isAtomicInlineLevelBoxWithIdeographicBaseline(inlineLevelBox)) {
auto alphabeticBaseline = inlineLevelBox.ascent();
InlineLayoutUnit ideographicBaseline = roundToInt(alphabeticBaseline / 2);
// Move the baseline position but keep the same logical height.
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes