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.) |