Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(185)

Unified Diff: LayoutTests/svg/text/svgtextcontentelement-glyphqueries-rtl.html

Issue 1041693002: Adjust glyph positions in RTL runs in SVGTextQuery (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: More TEs. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/svg/text/svgtextcontentelement-glyphqueries-rtl.html
diff --git a/LayoutTests/svg/text/svgtextcontentelement-glyphqueries-rtl.html b/LayoutTests/svg/text/svgtextcontentelement-glyphqueries-rtl.html
new file mode 100644
index 0000000000000000000000000000000000000000..28dd923e7adfe4d86885a88f7cd5b66334f269ff
--- /dev/null
+++ b/LayoutTests/svg/text/svgtextcontentelement-glyphqueries-rtl.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>SVGTextContentElement query interface RTL</title>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<svg width="50px" height="60px" font-family="Arial" font-size="30px">
+ <text x="0" y="50">הפוך</text>
+</svg>
+<script>
+setup(function() {
+ window.textElement = document.querySelector("text");
+ window.totalExtent = textElement.getComputedTextLength();
+});
+
+test(function() {
+ assert_equals(textElement.textContent.length, 4);
+ var positions = [];
+ for (var i = 0; i < 4; ++i)
+ positions.push(textElement.getStartPositionOfChar(i).x);
+
+ assert_approx_equals(positions[0], totalExtent, 0.5);
+ assert_less_than(positions[1], positions[0]);
+ assert_less_than(positions[2], positions[1]);
+ assert_less_than(positions[3], positions[2]);
+ assert_greater_than(positions[3], 0);
+}, document.title+', getStartPositionOfChar().');
+
+test(function() {
+ assert_equals(textElement.textContent.length, 4);
+ var positions = [];
+ for (var i = 0; i < 4; ++i)
+ positions.push(textElement.getEndPositionOfChar(i).x);
+
+ assert_less_than(positions[0], totalExtent);
+ assert_less_than(positions[1], positions[0]);
+ assert_less_than(positions[2], positions[1]);
+ assert_less_than(positions[3], positions[2]);
+ assert_approx_equals(positions[3], 0, 0.5);
+}, document.title+', getEndPositionOfChar().');
+
+test(function() {
+ assert_equals(textElement.textContent.length, 4);
+ var bounds = [];
+ for (var i = 0; i < 4; ++i)
+ bounds.push(textElement.getExtentOfChar(i));
+
+ function right(r) {
+ return r.x + r.width;
+ }
+
+ // Verify right sides descending.
+ assert_approx_equals(right(bounds[0]), totalExtent, 0.5);
+ assert_less_than(right(bounds[1]), right(bounds[0]));
+ assert_less_than(right(bounds[2]), right(bounds[1]));
+ assert_less_than(right(bounds[3]), right(bounds[2]));
+ assert_greater_than(right(bounds[3]), 0);
+
+ // Verify left sides descending.
+ assert_less_than(bounds[0].x, totalExtent);
+ assert_less_than(bounds[1].x, bounds[0].x);
+ assert_less_than(bounds[2].x, bounds[1].x);
+ assert_less_than(bounds[3].x, bounds[2].x);
+ assert_approx_equals(bounds[3].x, 0, 0.5);
+
+ // Verify approx. adjacent.
+ assert_approx_equals(bounds[0].x, right(bounds[1]), 0.5);
+ assert_approx_equals(bounds[1].x, right(bounds[2]), 0.5);
+ assert_approx_equals(bounds[2].x, right(bounds[3]), 0.5);
+}, document.title+', getExtentOfChar().');
+
+test(function() {
+ assert_equals(textElement.textContent.length, 4);
+
+ var prevOffset = 3;
+ var queryPoint = document.querySelector('svg').createSVGPoint();
+ queryPoint.y = 40;
+
+ // Sample left-to-right, expecting a decreasing character number.
+ for (var queryX = 0.5; queryX < totalExtent - 0.5; queryX += 0.5) {
+ queryPoint.x = queryX;
+ var offset = textElement.getCharNumAtPosition(queryPoint);
+ assert_less_than_equal(offset, prevOffset);
+ prevOffset = offset;
+ }
+ assert_equals(prevOffset, 0);
+
+ // Sample right-to-left, expecting an increasing character number.
+ for (var queryX = totalExtent - 0.5; queryX >= 0.5; queryX -= 0.5) {
+ queryPoint.x = queryX;
+ var offset = textElement.getCharNumAtPosition(queryPoint);
+ assert_greater_than_equal(offset, prevOffset);
+ prevOffset = offset;
+ }
+ assert_equals(prevOffset, 3);
+}, document.title+', getCharNumAtPosition().');
+</script>

Powered by Google App Engine
This is Rietveld 408576698