Index: Source/core/rendering/RenderBlockLineLayout.cpp |
diff --git a/Source/core/rendering/RenderBlockLineLayout.cpp b/Source/core/rendering/RenderBlockLineLayout.cpp |
index 8c47b06bc5481ad5e1d47566e24d89913d44cf44..688c3085efe76ee45533cb3aaed0a45192181a46 100644 |
--- a/Source/core/rendering/RenderBlockLineLayout.cpp |
+++ b/Source/core/rendering/RenderBlockLineLayout.cpp |
@@ -419,7 +419,7 @@ static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* ru |
HashSet<const SimpleFontData*> fallbackFonts; |
GlyphOverflow glyphOverflow; |
- const Font& font = renderer->style(lineInfo.isFirstLine())->font(); |
+ const Font& font = renderer->style(lineInfo.isFirstLine() ? FirstLineStyle : OwnStyle)->font(); |
// Always compute glyph overflow if the block's line-box-contain value is "glyphs". |
if (lineBox->fitsToGlyphs()) { |
// If we don't stick out of the root line's font box, then don't bother computing our glyph overflow. This optimization |
@@ -436,7 +436,7 @@ static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* ru |
LayoutUnit hyphenWidth = 0; |
if (toInlineTextBox(run->m_box)->hasHyphen()) { |
- const Font& font = renderer->style(lineInfo.isFirstLine())->font(); |
+ const Font& font = renderer->style(lineInfo.isFirstLine() ? FirstLineStyle : OwnStyle)->font(); |
hyphenWidth = measureHyphenWidth(renderer, font, run->direction()); |
} |
float measuredWidth = 0; |
@@ -466,7 +466,7 @@ static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* ru |
lastEndOffset = wordMeasurement.endOffset; |
if (kerningIsEnabled && lastEndOffset == run->m_stop) { |
int wordLength = lastEndOffset - wordMeasurement.startOffset; |
- measuredWidth += renderer->width(wordMeasurement.startOffset, wordLength, xPos, run->direction(), lineInfo.isFirstLine()); |
+ measuredWidth += renderer->width(wordMeasurement.startOffset, wordLength, xPos, run->direction(), lineInfo.isFirstLine() ? FirstLineStyle : OwnStyle); |
if (i > 0 && wordLength == 1 && renderer->characterAt(wordMeasurement.startOffset) == ' ') |
measuredWidth += renderer->style()->wordSpacing(); |
} else |
@@ -485,7 +485,7 @@ static inline void setLogicalWidthForTextRun(RootInlineBox* lineBox, BidiRun* ru |
} |
if (!measuredWidth) |
- measuredWidth = renderer->width(run->m_start, run->m_stop - run->m_start, xPos, run->direction(), lineInfo.isFirstLine(), &fallbackFonts, &glyphOverflow); |
+ measuredWidth = renderer->width(run->m_start, run->m_stop - run->m_start, xPos, run->direction(), lineInfo.isFirstLine() ? FirstLineStyle : OwnStyle, &fallbackFonts, &glyphOverflow); |
run->m_box->setLogicalWidth(measuredWidth + hyphenWidth); |
if (!fallbackFonts.isEmpty()) { |
@@ -586,7 +586,7 @@ void RenderBlockFlow::updateLogicalWidthForAlignment(const ETextAlign& textAlign |
static void updateLogicalInlinePositions(RenderBlockFlow* block, float& lineLogicalLeft, float& lineLogicalRight, float& availableLogicalWidth, bool firstLine, IndentTextOrNot shouldIndentText, LayoutUnit boxLogicalHeight) |
{ |
- LayoutUnit lineLogicalHeight = block->minLineHeightForReplacedRenderer(firstLine, boxLogicalHeight); |
+ LayoutUnit lineLogicalHeight = block->minLineHeightForReplacedRenderer(firstLine ? FirstLineStyle : OwnStyle, boxLogicalHeight); |
lineLogicalLeft = block->logicalLeftOffsetForLine(block->logicalHeight(), shouldIndentText == IndentText, lineLogicalHeight).toFloat(); |
lineLogicalRight = block->logicalRightOffsetForLine(block->logicalHeight(), shouldIndentText == IndentText, lineLogicalHeight).toFloat(); |
availableLogicalWidth = lineLogicalRight - lineLogicalLeft; |
@@ -656,7 +656,7 @@ BidiRun* RenderBlockFlow::computeInlineDirectionPositionsForSegment(RootInlineBo |
if (rt->textLength()) { |
if (!r->m_start && needsWordSpacing && isSpaceOrNewline(rt->characterAt(r->m_start))) |
- totalLogicalWidth += rt->style(lineInfo.isFirstLine())->font().fontDescription().wordSpacing(); |
+ totalLogicalWidth += rt->style(lineInfo.isFirstLine() ? FirstLineStyle : OwnStyle)->font().fontDescription().wordSpacing(); |
needsWordSpacing = !isSpaceOrNewline(rt->characterAt(r->m_stop - 1)); |
} |
@@ -1741,7 +1741,7 @@ void RenderBlockFlow::layoutInlineChildren(bool relayoutChildren, LayoutUnit& re |
setLogicalHeight(logicalHeight() + lastLineAnnotationsAdjustment + afterEdge); |
if (!firstLineBox() && hasLineIfEmpty()) |
- setLogicalHeight(logicalHeight() + lineHeight(true, isHorizontalWritingMode() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes)); |
+ setLogicalHeight(logicalHeight() + lineHeight(FirstLineStyle, isHorizontalWritingMode() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes)); |
// See if we have any lines that spill out of our block. If we do, then we will possibly need to |
// truncate text. |