OLD | NEW |
(Empty) | |
| 1 var TOLERANCE = 0.01; |
| 2 |
| 3 var FONT_SIZE_START = 10; |
| 4 var FONT_SIZE_BASELINE = 12; |
| 5 var FONT_SIZE_STEP = 0.25; |
| 6 var FONT_SIZE_END = 25; |
| 7 |
| 8 var PASS = 0; |
| 9 var FAIL = 1; |
| 10 |
| 11 function numberToNode(n) |
| 12 { |
| 13 return document.createTextNode(n.toFixed(2)); |
| 14 } |
| 15 |
| 16 function createElement(type, opt_textContent, opt_className) |
| 17 { |
| 18 var el = document.createElement(type); |
| 19 if (opt_className) |
| 20 el.className = opt_className; |
| 21 if (opt_textContent) |
| 22 el.appendChild(document.createTextNode(opt_textContent)); |
| 23 return el; |
| 24 } |
| 25 |
| 26 function runTest(containerEl, pangram, opt_writingMode) |
| 27 { |
| 28 var cont = document.getElementById('test'); |
| 29 |
| 30 var el = createElement('div', undefined, 'header'); |
| 31 el.appendChild(createElement('div', 'Font Size')); |
| 32 el.appendChild(createElement('div', 'Width')); |
| 33 el.appendChild(createElement('div', 'Normalized')); |
| 34 el.appendChild(createElement('div', 'Diff')); |
| 35 el.appendChild(createElement('span', 'Content')); |
| 36 containerEl.appendChild(el); |
| 37 |
| 38 var referenceElement; |
| 39 for (var fontSize = FONT_SIZE_START; |
| 40 fontSize < FONT_SIZE_END; |
| 41 fontSize += FONT_SIZE_STEP) { |
| 42 var el = createElement('div'); |
| 43 el.appendChild(createElement('div')); |
| 44 el.appendChild(createElement('div')); |
| 45 el.appendChild(createElement('div')); |
| 46 el.appendChild(createElement('div', undefined, 'results')); |
| 47 var textSpan = createElement('span'); |
| 48 el.appendChild(textSpan); |
| 49 textSpan.appendChild(document.createTextNode(pangram)); |
| 50 textSpan.style.fontSize = fontSize; |
| 51 containerEl.appendChild(el); |
| 52 if (fontSize == FONT_SIZE_BASELINE) |
| 53 referenceElement = el; |
| 54 } |
| 55 |
| 56 referenceElement.className = 'reference'; |
| 57 var rect = referenceElement.lastChild.getBoundingClientRect(); |
| 58 var expectedWidth = opt_writingMode == 'vertical' ? rect.height : rect.width
; |
| 59 |
| 60 var failures = 0; |
| 61 for (var row, i = 0; row = containerEl.children[i + 1]; i++) { |
| 62 var rect = row.lastChild.getBoundingClientRect(); |
| 63 var fontSize = FONT_SIZE_START + (FONT_SIZE_STEP * i); |
| 64 var width = opt_writingMode == 'vertical' ? rect.height : rect.width; |
| 65 var normalizedWidth = (width / fontSize) * FONT_SIZE_BASELINE; |
| 66 row.children[0].appendChild(numberToNode(fontSize)); |
| 67 row.children[1].appendChild(numberToNode(width)); |
| 68 row.children[2].appendChild(numberToNode(normalizedWidth)); |
| 69 row.children[3].appendChild(numberToNode(normalizedWidth - expectedWidth
)); |
| 70 if (Math.abs(expectedWidth - normalizedWidth) <= TOLERANCE) { |
| 71 row.classList.add('size-pass'); |
| 72 } else { |
| 73 row.classList.add('size-fail'); |
| 74 failures++ |
| 75 } |
| 76 } |
| 77 |
| 78 return failures ? FAIL : PASS; |
| 79 } |
OLD | NEW |