Index: third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp |
diff --git a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp |
index 9e74d8870ff8e39ae217993f09952965ee6b3776..b6107277a258d9ea674cc8db726ea469ef737d89 100644 |
--- a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp |
+++ b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp |
@@ -106,6 +106,15 @@ void InlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& |
boxOrigin.move(adjustedPaintOffset.x(), adjustedPaintOffset.y()); |
LayoutRect boxRect(boxOrigin, LayoutSize(m_inlineTextBox.logicalWidth(), m_inlineTextBox.logicalHeight())); |
+ int length = m_inlineTextBox.len(); |
+ StringView string = StringView(m_inlineTextBox.getLineLayoutItem().text(), m_inlineTextBox.start(), length); |
+ int maximumLength = m_inlineTextBox.getLineLayoutItem().textLength() - m_inlineTextBox.start(); |
+ |
+ StringBuilder charactersWithHyphen; |
+ TextRun textRun = m_inlineTextBox.constructTextRun(styleToUse, styleToUse.font(), string, maximumLength, m_inlineTextBox.hasHyphen() ? &charactersWithHyphen : 0); |
+ if (m_inlineTextBox.hasHyphen()) |
+ length = textRun.length(); |
+ |
kojii
2016/08/16 05:59:56
This block is simply a move from line 152 so that
|
bool shouldRotate = false; |
LayoutTextCombine* combinedText = nullptr; |
if (!m_inlineTextBox.isHorizontal()) { |
@@ -117,6 +126,19 @@ void InlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& |
if (combinedText) { |
combinedText->updateFont(); |
boxRect.setWidth(combinedText->inlineWidthForLayout()); |
+ // Justfication applies to before and after the combined text as if |
+ // it is an ideographic character, and is prohibited inside the |
+ // combined text. |
+ if (float expansion = textRun.expansion()) { |
+ textRun.setExpansion(0); |
+ if (textRun.allowsLeadingExpansion()) { |
+ if (textRun.allowsTrailingExpansion()) |
+ expansion /= 2; |
+ LayoutSize offset = LayoutSize(LayoutUnit(), LayoutUnit::fromFloatRound(expansion)); |
+ boxOrigin.move(offset); |
+ boxRect.move(offset); |
+ } |
+ } |
} else { |
shouldRotate = true; |
context.concatCTM(TextPainter::rotation(boxRect, TextPainter::Clockwise)); |
@@ -149,15 +171,6 @@ void InlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& |
} |
// 2. Now paint the foreground, including text and decorations like underline/overline (in quirks mode only). |
- int length = m_inlineTextBox.len(); |
- StringView string = StringView(m_inlineTextBox.getLineLayoutItem().text(), m_inlineTextBox.start(), length); |
- int maximumLength = m_inlineTextBox.getLineLayoutItem().textLength() - m_inlineTextBox.start(); |
- |
- StringBuilder charactersWithHyphen; |
- TextRun textRun = m_inlineTextBox.constructTextRun(styleToUse, font, string, maximumLength, m_inlineTextBox.hasHyphen() ? &charactersWithHyphen : 0); |
- if (m_inlineTextBox.hasHyphen()) |
- length = textRun.length(); |
- |
int selectionStart = 0; |
int selectionEnd = 0; |
if (paintSelectedTextOnly || paintSelectedTextSeparately) |