| 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;
|
|
|