| Index: third_party/WebKit/LayoutTests/svg/text/text-rect-precision.html
|
| diff --git a/third_party/WebKit/LayoutTests/svg/text/text-rect-precision.html b/third_party/WebKit/LayoutTests/svg/text/text-rect-precision.html
|
| index ea8a29ba2f892c0b3ccdbf95eb7034fea69c0739..b8bf650c6a436e7afc2c76c04909e8311a18d323 100644
|
| --- a/third_party/WebKit/LayoutTests/svg/text/text-rect-precision.html
|
| +++ b/third_party/WebKit/LayoutTests/svg/text/text-rect-precision.html
|
| @@ -1,56 +1,48 @@
|
| -<html xmlns="http://www.w3.org/1999/xhtml">
|
| -<head>
|
| - <script src="../../resources/js-test.js"></script>
|
| -</head>
|
| -<body>
|
| - <svg style="position: absolute; top: 10px; left: 10px; width: 500px; height: 300px;">
|
| - <g>
|
| - <text id="test" x="0" y="50" font-size="25" fill="#000" text-rendering="geometricPrecision">Sphinx of black quartz, judge my vow.</text>
|
| - </g>
|
| - <g>
|
| - <text id="measure" x="0" y="150" fill="#000" text-rendering="geometricPrecision" xml:space="preserve"> </text>
|
| - </g>
|
| - </svg>
|
| +<!DOCTYPE html>
|
| +<title>The width of text element is similar to the sum of the width of all characters.</title>
|
| +<script src="../../resources/testharness.js"></script>
|
| +<script src="../../resources/testharnessreport.js"></script>
|
| +<svg style="position: absolute; top: 10px; left: 10px; width: 500px; height: 300px;">
|
| + <g>
|
| + <text id="test" x="0" y="50" font-size="25" fill="#000" text-rendering="geometricPrecision">Sphinx of black quartz, judge my vow.</text>
|
| + </g>
|
| + <g>
|
| + <text id="measure" x="0" y="150" fill="#000" text-rendering="geometricPrecision" xml:space="preserve"> </text>
|
| + </g>
|
| +</svg>
|
| <script>
|
| +function measureText(testElement) {
|
| + var measureElement = document.getElementById('measure');
|
| + measureElement.setAttribute('font-size', testElement.getAttribute('font-size'));
|
| + var str = testElement.firstChild.nodeValue;
|
|
|
| - function measureText(testElement)
|
| - {
|
| - var measureElement = document.getElementById('measure');
|
| - measureElement.setAttribute('font-size', testElement.getAttribute('font-size'));
|
| - var str = testElement.firstChild.nodeValue;
|
| -
|
| - var characterWidths = {};
|
| - var width = 0;
|
| - for (var i = 0; i < str.length; i++) {
|
| - var c = str[i];
|
| - var w = characterWidths[c];
|
| - if (!w) {
|
| - measureElement.firstChild.nodeValue = c;
|
| - w = measureElement.getBoundingClientRect().width;
|
| - characterWidths[c] = w;
|
| - }
|
| - width += w;
|
| - }
|
| - return width;
|
| - }
|
| + var characterWidths = {};
|
| + var width = 0;
|
| + for (var i = 0; i < str.length; i++) {
|
| + var c = str[i];
|
| + var w = characterWidths[c];
|
| + if (!w) {
|
| + measureElement.firstChild.nodeValue = c;
|
| + w = measureElement.getBoundingClientRect().width;
|
| + characterWidths[c] = w;
|
| + }
|
| + width += w;
|
| + }
|
| + return width;
|
| +}
|
|
|
| - var el = document.getElementById('test');
|
| - var elementWidth = el.getBoundingClientRect().width;
|
| - var textWidth = measureText(el);
|
| - // This tolerance value is made up but our goal is to ensure that the
|
| - // sum of individual glyph widths is roughly similar to the total element
|
| - // width.
|
| - var glyphOverflowTolerance = Math.min(elementWidth, textWidth) / 2;
|
| - if (elementWidth > textWidth) {
|
| - // The sum of individual character widths will include the glyph
|
| - // overflow of each character separately and therefore the total element
|
| - // width should be smaller.
|
| - testFailed('Width of text element is ' + elementWidth + ', expected the sum of individual character widths, ' + textWidth + ', to be larger.');
|
| - } else if (Math.abs(elementWidth - textWidth) > glyphOverflowTolerance) {
|
| - testFailed('Width of text element is ' + elementWidth + ', expected the sum of individal character widths, ' + textWidth + ', to be similar.');
|
| - } else {
|
| - testPassed('Width of text element is similar to the sum of the width of all characters.');
|
| - }
|
| -</script>
|
| -</body>
|
| -</html>
|
| +test(function() {
|
| + var element = document.getElementById('test');
|
| + var elementWidth = element.getBoundingClientRect().width;
|
| + var textWidth = measureText(element);
|
| + // This tolerance value is made up but our goal is to ensure that the
|
| + // sum of individual glyph widths is roughly similar to the total element
|
| + // width.
|
| + var glyphOverflowTolerance = Math.min(elementWidth, textWidth) / 2;
|
| + // The sum of individual character widths will include the glyph
|
| + // overflow of each character separately and therefore the total element
|
| + // width should be smaller.
|
| + assert_less_than_equal(elementWidth, textWidth);
|
| + assert_less_than_equal(Math.abs(elementWidth - textWidth), glyphOverflowTolerance);
|
| +});
|
| +</script>
|
|
|