| Index: LayoutTests/fast/text/sub-pixel/resources/text-scaling.js
|
| diff --git a/LayoutTests/fast/text/sub-pixel/resources/text-scaling.js b/LayoutTests/fast/text/sub-pixel/resources/text-scaling.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3752e756c01e4f43dfbc3bf4dcc9955c663b6c9c
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/text/sub-pixel/resources/text-scaling.js
|
| @@ -0,0 +1,79 @@
|
| +var TOLERANCE = 0.01;
|
| +
|
| +var FONT_SIZE_START = 10;
|
| +var FONT_SIZE_BASELINE = 12;
|
| +var FONT_SIZE_STEP = 0.25;
|
| +var FONT_SIZE_END = 25;
|
| +
|
| +var PASS = 0;
|
| +var FAIL = 1;
|
| +
|
| +function numberToNode(n)
|
| +{
|
| + return document.createTextNode(n.toFixed(2));
|
| +}
|
| +
|
| +function createElement(type, opt_textContent, opt_className)
|
| +{
|
| + var el = document.createElement(type);
|
| + if (opt_className)
|
| + el.className = opt_className;
|
| + if (opt_textContent)
|
| + el.appendChild(document.createTextNode(opt_textContent));
|
| + return el;
|
| +}
|
| +
|
| +function runTest(containerEl, pangram, opt_writingMode)
|
| +{
|
| + var cont = document.getElementById('test');
|
| +
|
| + var el = createElement('div', undefined, 'header');
|
| + el.appendChild(createElement('div', 'Font Size'));
|
| + el.appendChild(createElement('div', 'Width'));
|
| + el.appendChild(createElement('div', 'Normalized'));
|
| + el.appendChild(createElement('div', 'Diff'));
|
| + el.appendChild(createElement('span', 'Content'));
|
| + containerEl.appendChild(el);
|
| +
|
| + var referenceElement;
|
| + for (var fontSize = FONT_SIZE_START;
|
| + fontSize < FONT_SIZE_END;
|
| + fontSize += FONT_SIZE_STEP) {
|
| + var el = createElement('div');
|
| + el.appendChild(createElement('div'));
|
| + el.appendChild(createElement('div'));
|
| + el.appendChild(createElement('div'));
|
| + el.appendChild(createElement('div', undefined, 'results'));
|
| + var textSpan = createElement('span');
|
| + el.appendChild(textSpan);
|
| + textSpan.appendChild(document.createTextNode(pangram));
|
| + textSpan.style.fontSize = fontSize;
|
| + containerEl.appendChild(el);
|
| + if (fontSize == FONT_SIZE_BASELINE)
|
| + referenceElement = el;
|
| + }
|
| +
|
| + referenceElement.className = 'reference';
|
| + var rect = referenceElement.lastChild.getBoundingClientRect();
|
| + var expectedWidth = opt_writingMode == 'vertical' ? rect.height : rect.width;
|
| +
|
| + var failures = 0;
|
| + for (var row, i = 0; row = containerEl.children[i + 1]; i++) {
|
| + var rect = row.lastChild.getBoundingClientRect();
|
| + var fontSize = FONT_SIZE_START + (FONT_SIZE_STEP * i);
|
| + var width = opt_writingMode == 'vertical' ? rect.height : rect.width;
|
| + var normalizedWidth = (width / fontSize) * FONT_SIZE_BASELINE;
|
| + row.children[0].appendChild(numberToNode(fontSize));
|
| + row.children[1].appendChild(numberToNode(width));
|
| + row.children[2].appendChild(numberToNode(normalizedWidth));
|
| + row.children[3].appendChild(numberToNode(normalizedWidth - expectedWidth));
|
| + if (Math.abs(expectedWidth - normalizedWidth) <= TOLERANCE) {
|
| + row.classList.add('size-pass');
|
| + } else {
|
| + row.classList.add('size-fail');
|
| + failures++
|
| + }
|
| + }
|
| +
|
| + return failures ? FAIL : PASS;
|
| +}
|
|
|