| Index: third_party/WebKit/Source/core/layout/svg/SVGTextLayoutEngine.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutEngine.cpp b/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutEngine.cpp
|
| index cc81e110e508834d4b1cbf71ae0bb27a76c3c959..0a91c0cddf3f7cc5a6336bfeef8534b4656d6acc 100644
|
| --- a/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutEngine.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutEngine.cpp
|
| @@ -155,8 +155,9 @@ void SVGTextLayoutEngine::recordTextFragment(SVGInlineTextBox* textBox) {
|
| }
|
|
|
| void SVGTextLayoutEngine::beginTextPathLayout(SVGInlineFlowBox* flowBox) {
|
| - // Build text chunks for all <textPath> children, using the line layout algorithm.
|
| - // This is needeed as text-anchor is just an additional startOffset for text paths.
|
| + // Build text chunks for all <textPath> children, using the line layout
|
| + // algorithm. This is needeed as text-anchor is just an additional startOffset
|
| + // for text paths.
|
| SVGTextLayoutEngine lineLayout(m_descendantTextNodes);
|
| lineLayout.m_textLengthSpacingInEffect = m_textLengthSpacingInEffect;
|
| lineLayout.layoutCharactersInTextBoxes(flowBox);
|
| @@ -277,8 +278,10 @@ void SVGTextLayoutEngine::layoutCharactersInTextBoxes(InlineFlowBox* start) {
|
| void SVGTextLayoutEngine::finishLayout() {
|
| m_visualMetricsIterator = SVGInlineTextMetricsIterator();
|
|
|
| - // After all text fragments are stored in their correpsonding SVGInlineTextBoxes, we can layout individual text chunks.
|
| - // Chunk layouting is only performed for line layout boxes, not for path layout, where it has already been done.
|
| + // After all text fragments are stored in their correpsonding
|
| + // SVGInlineTextBoxes, we can layout individual text chunks.
|
| + // Chunk layouting is only performed for line layout boxes, not for path
|
| + // layout, where it has already been done.
|
| SVGTextChunkBuilder chunkLayoutBuilder;
|
| chunkLayoutBuilder.processTextChunks(m_lineLayoutBoxes);
|
|
|
| @@ -395,8 +398,9 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(
|
| // as starting a new text chunk.
|
| setCurrentTextPosition(data);
|
|
|
| - // When we've advanced to the box start offset, determine using the original x/y values,
|
| - // whether this character starts a new text chunk, before doing any further processing.
|
| + // When we've advanced to the box start offset, determine using the original
|
| + // x/y values, whether this character starts a new text chunk, before doing
|
| + // any further processing.
|
| if (m_visualMetricsIterator.characterOffset() == textBox->start())
|
| textBox->setStartsNewTextChunk(
|
| logicalTextNode->characterStartsNewTextChunk(
|
| @@ -413,11 +417,12 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(
|
| fontOrientation = adjustOrientationForCharacterInMixedVertical(
|
| fontOrientation, currentCharacter);
|
|
|
| - // Calculate glyph advance.
|
| - // The shaping engine takes care of x/y orientation shifts for different fontOrientation values.
|
| + // Calculate glyph advance. The shaping engine takes care of x/y orientation
|
| + // shifts for different fontOrientation values.
|
| float glyphAdvance = visualMetrics.advance(fontOrientation);
|
|
|
| - // Calculate CSS 'letter-spacing' and 'word-spacing' for the character, if needed.
|
| + // Calculate CSS 'letter-spacing' and 'word-spacing' for the character, if
|
| + // needed.
|
| float spacing = spacingLayout.calculateCSSSpacing(currentCharacter);
|
|
|
| FloatPoint textPathShift;
|
| @@ -454,7 +459,8 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(
|
|
|
| m_textPosition = position;
|
|
|
| - // For vertical text on path, the actual angle has to be rotated 90 degrees anti-clockwise, not the orientation angle!
|
| + // For vertical text on path, the actual angle has to be rotated 90
|
| + // degrees anti-clockwise, not the orientation angle!
|
| if (m_isVerticalText)
|
| angle -= 90;
|
| } else {
|
| @@ -497,7 +503,8 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(
|
| m_currentTextFragment.transform.translate(textPathShift.x(),
|
| textPathShift.y());
|
|
|
| - // For vertical text, always rotate by 90 degrees regardless of fontOrientation.
|
| + // For vertical text, always rotate by 90 degrees regardless of
|
| + // fontOrientation.
|
| // The shaping engine takes care of the necessary orientation.
|
| if (m_isVerticalText)
|
| m_currentTextFragment.transform.rotate(90);
|
| @@ -509,10 +516,12 @@ void SVGTextLayoutEngine::layoutTextOnLineOrPath(
|
| m_currentTextFragment.lengthAdjustScale = m_textPathScaling;
|
| }
|
|
|
| - // Advance current text position after processing of the current character finished.
|
| + // Advance current text position after processing of the current character
|
| + // finished.
|
| advanceCurrentTextPosition(glyphAdvance + spacing);
|
|
|
| - // Apply CSS 'letter-spacing' and 'word-spacing' to the next character, if needed.
|
| + // Apply CSS 'letter-spacing' and 'word-spacing' to the next character, if
|
| + // needed.
|
| if (!m_inPathLayout && spacing)
|
| applySpacingToNextCharacter = true;
|
|
|
|
|