| Index: third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp b/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
|
| index 2043c777e08937f8cfa3a1d5c46a25d4f117cfa9..ab112b6be61824ed00beffb9d245b38740536ea2 100644
|
| --- a/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
|
| @@ -690,8 +690,12 @@ void InlineFlowBox::placeBoxesInBlockDirection(
|
| FontBaseline baselineType) {
|
| bool isRootBox = isRootInlineBox();
|
| if (isRootBox) {
|
| - const FontMetrics& fontMetrics =
|
| - getLineLayoutItem().style(isFirstLineStyle())->getFontMetrics();
|
| + const SimpleFontData* fontData =
|
| + getLineLayoutItem().style(isFirstLineStyle())->font().primaryFont();
|
| + DCHECK(fontData);
|
| + if (!fontData)
|
| + return;
|
| + const FontMetrics& fontMetrics = fontData->getFontMetrics();
|
| // RootInlineBoxes are always placed at pixel boundaries in their logical y
|
| // direction. Not doing so results in incorrect layout of text decorations,
|
| // most notably underlines.
|
| @@ -740,8 +744,15 @@ void InlineFlowBox::placeBoxesInBlockDirection(
|
| LayoutUnit boxHeightIncludingMargins = boxHeight;
|
| LayoutUnit borderPaddingHeight;
|
| if (curr->isText() || curr->isInlineFlowBox()) {
|
| - const FontMetrics& fontMetrics =
|
| - curr->getLineLayoutItem().style(isFirstLineStyle())->getFontMetrics();
|
| + const SimpleFontData* fontData = curr->getLineLayoutItem()
|
| + .style(isFirstLineStyle())
|
| + ->font()
|
| + .primaryFont();
|
| + DCHECK(fontData);
|
| + if (!fontData)
|
| + continue;
|
| +
|
| + const FontMetrics& fontMetrics = fontData->getFontMetrics();
|
| newLogicalTop += curr->baselinePosition(baselineType) -
|
| fontMetrics.ascent(baselineType);
|
| if (curr->isInlineFlowBox()) {
|
|
|