Modified: trunk/Source/WebCore/ChangeLog (290201 => 290202)
--- trunk/Source/WebCore/ChangeLog 2022-02-19 08:48:22 UTC (rev 290201)
+++ trunk/Source/WebCore/ChangeLog 2022-02-19 09:01:20 UTC (rev 290202)
@@ -1,3 +1,19 @@
+2022-02-19 Alan Bujtas <za...@apple.com>
+
+ [LFC][IFC] layoutBoundsForInlineBox should read layoutBoundsPrimaryMetricsForInlineBox
+ https://bugs.webkit.org/show_bug.cgi?id=236864
+
+ Reviewed by Antti Koivisto.
+
+ layoutBoundsForInlineBox returns the layout bounds based on the primary font.
+ This is in preparation for adding font fallback support for ideographic baseline.
+
+ * layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
+ (WebCore::Layout::layoutBoundsPrimaryMetricsForInlineBox):
+ (WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
+ (WebCore::Layout::LineBoxBuilder::adjustIdeographicBaselineIfApplicable):
+ (WebCore::Layout::layoutBoundsMetricsForInlineBox): Deleted.
+
2022-02-19 Antoine Quint <grao...@webkit.org>
REGRESSION (r287524): hihello.me does not show sliding sheet at the bottom of the page
Modified: trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp (290201 => 290202)
--- trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp 2022-02-19 08:48:22 UTC (rev 290201)
+++ trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp 2022-02-19 09:01:20 UTC (rev 290202)
@@ -166,7 +166,7 @@
InlineLayoutUnit lineSpacing { 0 };
std::optional<InlineLayoutUnit> preferredLineHeight { };
};
-static LayoutBoundsMetrics layoutBoundsMetricsForInlineBox(const InlineLevelBox& inlineBox, FontBaseline fontBaseline = AlphabeticBaseline)
+static LayoutBoundsMetrics layoutBoundsPrimaryMetricsForInlineBox(const InlineLevelBox& inlineBox, FontBaseline fontBaseline = AlphabeticBaseline)
{
ASSERT(inlineBox.isInlineBox());
auto& fontMetrics = inlineBox.primarymetricsOfPrimaryFont();
@@ -210,7 +210,7 @@
void LineBoxBuilder::constructInlineLevelBoxes(LineBox& lineBox, const LineBuilder::LineContent& lineContent, size_t lineIndex)
{
auto& rootInlineBox = lineBox.rootInlineBox();
- setBaselineAndLayoutBounds(rootInlineBox, layoutBoundsMetricsForInlineBox(rootInlineBox));
+ setBaselineAndLayoutBounds(rootInlineBox, layoutBoundsPrimaryMetricsForInlineBox(rootInlineBox));
auto styleToUse = [&] (const auto& layoutBox) -> const RenderStyle& {
return !lineIndex ? layoutBox.firstLineStyle() : layoutBox.style();
@@ -278,7 +278,7 @@
auto adjustedLogicalStart = logicalLeft + std::max(0.0f, marginStart);
auto logicalWidth = rootInlineBox.logicalWidth() - adjustedLogicalStart;
auto inlineBox = InlineLevelBox::createInlineBox(layoutBox, style, adjustedLogicalStart, logicalWidth, InlineLevelBox::LineSpanningInlineBox::Yes);
- setBaselineAndLayoutBounds(inlineBox, layoutBoundsMetricsForInlineBox(inlineBox));
+ setBaselineAndLayoutBounds(inlineBox, layoutBoundsPrimaryMetricsForInlineBox(inlineBox));
lineBox.addInlineLevelBox(WTFMove(inlineBox));
continue;
}
@@ -293,7 +293,7 @@
initialLogicalWidth = std::max(initialLogicalWidth, 0.f);
auto inlineBox = InlineLevelBox::createInlineBox(layoutBox, style, logicalLeft, initialLogicalWidth);
inlineBox.setIsFirstBox();
- setBaselineAndLayoutBounds(inlineBox, layoutBoundsMetricsForInlineBox(inlineBox));
+ setBaselineAndLayoutBounds(inlineBox, layoutBoundsPrimaryMetricsForInlineBox(inlineBox));
lineBox.addInlineLevelBox(WTFMove(inlineBox));
continue;
}
@@ -330,7 +330,7 @@
}
if (run.isHardLineBreak()) {
auto lineBreakBox = InlineLevelBox::createLineBreakBox(layoutBox, style, logicalLeft);
- setBaselineAndLayoutBounds(lineBreakBox, layoutBoundsMetricsForInlineBox(lineBox.inlineLevelBoxForLayoutBox(layoutBox.parent())));
+ setBaselineAndLayoutBounds(lineBreakBox, layoutBoundsPrimaryMetricsForInlineBox(lineBox.inlineLevelBoxForLayoutBox(layoutBox.parent())));
lineBox.addInlineLevelBox(WTFMove(lineBreakBox));
continue;
}
@@ -374,13 +374,13 @@
return;
lineBox.setBaselineType(IdeographicBaseline);
- setBaselineAndLayoutBounds(rootInlineBox, layoutBoundsMetricsForInlineBox(rootInlineBox, IdeographicBaseline));
+ setBaselineAndLayoutBounds(rootInlineBox, layoutBoundsPrimaryMetricsForInlineBox(rootInlineBox, IdeographicBaseline));
for (auto& inlineLevelBox : lineBox.nonRootInlineLevelBoxes()) {
if (inlineLevelBox.isInlineBox())
- setBaselineAndLayoutBounds(inlineLevelBox, layoutBoundsMetricsForInlineBox(inlineLevelBox, IdeographicBaseline));
+ setBaselineAndLayoutBounds(inlineLevelBox, layoutBoundsPrimaryMetricsForInlineBox(inlineLevelBox, IdeographicBaseline));
else if (inlineLevelBox.isLineBreakBox()) {
auto& parentInlineBox = lineBox.inlineLevelBoxForLayoutBox(inlineLevelBox.layoutBox().parent());
- setBaselineAndLayoutBounds(inlineLevelBox, layoutBoundsMetricsForInlineBox(parentInlineBox, IdeographicBaseline));
+ setBaselineAndLayoutBounds(inlineLevelBox, layoutBoundsPrimaryMetricsForInlineBox(parentInlineBox, IdeographicBaseline));
} else if (inlineLevelBox.isAtomicInlineLevelBox()) {
auto inlineLevelBoxHeight = inlineLevelBox.layoutBounds().height();
InlineLayoutUnit ideographicBaseline = roundToInt(inlineLevelBoxHeight / 2);