diff --git a/LayoutTests/fast/inline/line-box-contain-with-line-height-expected.html b/LayoutTests/fast/inline/line-box-contain-with-line-height-expected.html new file mode 100644 index 000000000000..4aa67e47aa37 --- /dev/null +++ b/LayoutTests/fast/inline/line-box-contain-with-line-height-expected.html @@ -0,0 +1,13 @@ + + +
 
diff --git a/LayoutTests/fast/inline/line-box-contain-with-line-height.html b/LayoutTests/fast/inline/line-box-contain-with-line-height.html new file mode 100644 index 000000000000..dee694480284 --- /dev/null +++ b/LayoutTests/fast/inline/line-box-contain-with-line-height.html @@ -0,0 +1,17 @@ + + +
diff --git a/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp b/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp index 053b11ebf1ae..4687d0f5c422 100644 --- a/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp +++ b/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp @@ -470,9 +470,8 @@ void LineBoxBuilder::adjustInlineBoxHeightsForLineBoxContainIfApplicable(LineBox if (!inlineLevelBox.isInlineBox()) continue; auto& inlineBoxGeometry = formattingContext().geometryForBox(inlineLevelBox.layoutBox()); - auto layoutBounds = *inlineLevelBox.layoutBounds(); - auto ascent = layoutBounds.ascent + inlineBoxGeometry.marginBorderAndPaddingBefore(); - auto descent = layoutBounds.descent + inlineBoxGeometry.marginBorderAndPaddingAfter(); + auto ascent = inlineLevelBox.ascent() + inlineBoxGeometry.marginBorderAndPaddingBefore(); + auto descent = valueOrDefault(inlineLevelBox.descent()) + inlineBoxGeometry.marginBorderAndPaddingAfter(); inlineBoxBoundsMap.set(&inlineLevelBox, TextUtil::EnclosingAscentDescent { ascent, descent }); } } @@ -481,12 +480,6 @@ void LineBoxBuilder::adjustInlineBoxHeightsForLineBoxContainIfApplicable(LineBox // Assign font based layout bounds to all inline boxes. auto ensureFontMetricsBasedHeight = [&] (auto& inlineBox) { ASSERT(inlineBox.isInlineBox()); - if (inlineBox.isPreferredLineHeightFontMetricsBased()) { - auto fontMetricsBaseLayoutBounds = *inlineBox.layoutBounds(); - inlineBoxBoundsMap.set(&inlineBox, TextUtil::EnclosingAscentDescent { fontMetricsBaseLayoutBounds.ascent, fontMetricsBaseLayoutBounds.descent }); - return; - } - auto ascentAndDescent = primaryFontMetricsForInlineBox(inlineBox, lineBox.baselineType()); InlineLayoutUnit lineGap = inlineBox.primarymetricsOfPrimaryFont().lineSpacing(); auto halfLeading = (lineGap - ascentAndDescent.height()) / 2;