Index: Source/core/layout/svg/SVGTextQuery.cpp |
diff --git a/Source/core/layout/svg/SVGTextQuery.cpp b/Source/core/layout/svg/SVGTextQuery.cpp |
index 6a61544ed7e96373b7b39193f22b88038e36b3ed..46543ffaa507858c41ff97ea518ef1e325513f4e 100644 |
--- a/Source/core/layout/svg/SVGTextQuery.cpp |
+++ b/Source/core/layout/svg/SVGTextQuery.cpp |
@@ -256,7 +256,7 @@ bool SVGTextQuery::subStringLengthCallback(Data* queryData, const SVGTextFragmen |
if (!mapStartEndPositionsIntoFragmentCoordinates(queryData, fragment, startPosition, endPosition)) |
return false; |
- SVGTextMetrics metrics = SVGTextMetrics::measureCharacterRange(queryData->textLayoutObject, fragment.characterOffset + startPosition, endPosition - startPosition); |
+ SVGTextMetrics metrics = SVGTextMetrics::measureCharacterRange(queryData->textLayoutObject, fragment.characterOffset + startPosition, endPosition - startPosition, queryData->textLayoutObject->styleRef().direction()); |
data->subStringLength += queryData->isVerticalText ? metrics.height() : metrics.width(); |
return false; |
} |
@@ -291,7 +291,7 @@ bool SVGTextQuery::startPositionOfCharacterCallback(Data* queryData, const SVGTe |
data->startPosition = FloatPoint(fragment.x, fragment.y); |
if (startPosition) { |
- SVGTextMetrics metrics = SVGTextMetrics::measureCharacterRange(queryData->textLayoutObject, fragment.characterOffset, startPosition); |
+ SVGTextMetrics metrics = SVGTextMetrics::measureCharacterRange(queryData->textLayoutObject, fragment.characterOffset, startPosition, queryData->textLayoutObject->styleRef().direction()); |
if (queryData->isVerticalText) |
data->startPosition.move(0, metrics.height()); |
else |
@@ -336,7 +336,7 @@ bool SVGTextQuery::endPositionOfCharacterCallback(Data* queryData, const SVGText |
data->endPosition = FloatPoint(fragment.x, fragment.y); |
- SVGTextMetrics metrics = SVGTextMetrics::measureCharacterRange(queryData->textLayoutObject, fragment.characterOffset, startPosition + 1); |
+ SVGTextMetrics metrics = SVGTextMetrics::measureCharacterRange(queryData->textLayoutObject, fragment.characterOffset, startPosition + 1, queryData->textLayoutObject->styleRef().direction()); |
if (queryData->isVerticalText) |
data->endPosition.move(0, metrics.height()); |
else |
@@ -417,14 +417,14 @@ static inline void calculateGlyphBoundaries(SVGTextQuery::Data* queryData, const |
extent.setLocation(FloatPoint(fragment.x, fragment.y - queryData->textLayoutObject->scaledFont().fontMetrics().floatAscent() / scalingFactor)); |
if (startPosition) { |
- SVGTextMetrics metrics = SVGTextMetrics::measureCharacterRange(queryData->textLayoutObject, fragment.characterOffset, startPosition); |
+ SVGTextMetrics metrics = SVGTextMetrics::measureCharacterRange(queryData->textLayoutObject, fragment.characterOffset, startPosition, queryData->textLayoutObject->styleRef().direction()); |
if (queryData->isVerticalText) |
extent.move(0, metrics.height()); |
else |
extent.move(metrics.width(), 0); |
} |
- SVGTextMetrics metrics = SVGTextMetrics::measureCharacterRange(queryData->textLayoutObject, fragment.characterOffset + startPosition, 1); |
+ SVGTextMetrics metrics = SVGTextMetrics::measureCharacterRange(queryData->textLayoutObject, fragment.characterOffset + startPosition, 1, queryData->textLayoutObject->styleRef().direction()); |
extent.setSize(FloatSize(metrics.width(), metrics.height())); |
AffineTransform fragmentTransform; |