| Index: third_party/WebKit/Source/core/layout/svg/SVGTextLayoutAttributesBuilder.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutAttributesBuilder.cpp b/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutAttributesBuilder.cpp
|
| index f2c8cd5fe00a874ac796e3f0da51ff2c78b886fb..1d7780c9c50e4e004b04509679ab7869dcd46b83 100644
|
| --- a/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutAttributesBuilder.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/svg/SVGTextLayoutAttributesBuilder.cpp
|
| @@ -19,6 +19,7 @@
|
|
|
| #include "core/layout/svg/SVGTextLayoutAttributesBuilder.h"
|
|
|
| +#include "core/layout/api/LineLayoutSVGInlineText.h"
|
| #include "core/layout/svg/LayoutSVGInline.h"
|
| #include "core/layout/svg/LayoutSVGInlineText.h"
|
| #include "core/layout/svg/LayoutSVGText.h"
|
| @@ -33,16 +34,14 @@ void updateLayoutAttributes(LayoutSVGInlineText& text, unsigned& valueListPositi
|
| SVGCharacterDataMap& characterDataMap = text.characterDataMap();
|
| characterDataMap.clear();
|
|
|
| - const Vector<SVGTextMetrics>& metricsList = text.metricsList();
|
| - auto metricsEnd = metricsList.end();
|
| - unsigned currentPosition = 0;
|
| - for (auto metrics = metricsList.begin(); metrics != metricsEnd; currentPosition += metrics->length(), ++metrics) {
|
| - if (metrics->isEmpty())
|
| + LineLayoutSVGInlineText textLineLayout(&text);
|
| + for (SVGInlineTextMetricsIterator iterator(textLineLayout); !iterator.isAtEnd(); iterator.next()) {
|
| + if (iterator.metrics().isEmpty())
|
| continue;
|
|
|
| auto it = allCharactersMap.find(valueListPosition + 1);
|
| if (it != allCharactersMap.end())
|
| - characterDataMap.set(currentPosition + 1, it->value);
|
| + characterDataMap.set(iterator.characterOffset() + 1, it->value);
|
|
|
| // Increase the position in the value/attribute list with one for each
|
| // "character unit" (that will be displayed.)
|
|
|