| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" > | 4 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" > |
| 5 <title>Font Width Variant Text Combine</title> | 5 <title>Font Width Variant Text Combine</title> |
| 6 <style> | 6 <style> |
| 7 @font-face { | 7 @font-face { |
| 8 font-family: LiberationSansWidthVariants; | 8 font-family: LiberationSansWidthVariants; |
| 9 src: url(../../third_party/LiberationSansWidthVariants/liberation_sans_width
_variants.ttf) format("truetype"); | 9 src: url(../../third_party/LiberationSansWidthVariants/liberation_sans_width
_variants.ttf) format("truetype"); |
| 10 } | 10 } |
| 11 | 11 |
| 12 #test { | 12 .vertical { |
| 13 font-family: "LiberationSansWidthVariants"; | 13 font-family: "LiberationSansWidthVariants"; |
| 14 font-size: 24px; | 14 font-size: 24px; |
| 15 text-rendering: geometricPrecision; | 15 text-rendering: geometricPrecision; |
| 16 -webkit-writing-mode: vertical-lr; |
| 16 line-height: 100%; | 17 line-height: 100%; |
| 17 margin: 0; | 18 margin: 0; |
| 18 padding: 0px; | 19 padding: 0px; |
| 19 } | 20 } |
| 20 | 21 |
| 21 .hwid { | 22 .combine { |
| 22 -webkit-font-feature-settings: 'hwid'; | 23 -webkit-text-combine: horizontal; |
| 23 } | |
| 24 .twid { | |
| 25 -webkit-font-feature-settings: 'twid'; | |
| 26 } | |
| 27 .qwid { | |
| 28 -webkit-font-feature-settings: 'qwid'; | |
| 29 } | 24 } |
| 30 | 25 |
| 31 </style> | 26 </style> |
| 32 <script src="../../resources/testharness.js"></script> | 27 <script src="../../resources/testharness.js"></script> |
| 33 <script src="../../resources/testharnessreport.js"></script> | 28 <script src="../../resources/testharnessreport.js"></script> |
| 34 <script> | 29 |
| 30 <script type="text/javascript"> |
| 35 setup({ explicit_done: true }); | 31 setup({ explicit_done: true }); |
| 36 function testWidthVariant() { | 32 function testWidthVariant() { |
| 37 var elements = document.querySelectorAll("#test > div"); | 33 var EXPECTED_COMBINED_UNTIL = 8; |
| 38 for (var i = 0; i < elements.length; ++i) { | 34 var EXPECTED_LINE_HEIGHT = 24; |
| 39 var div = elements[i]; | 35 var NUM_TESTS = 9; |
| 40 var normal = div.firstChild; | 36 for (var testId = 0; testId < NUM_TESTS; testId++) { |
| 41 var text = normal.innerText; | 37 rectHeight = document.getElementsByClassName("combine")[testId].getB
oundingClientRect().height; |
| 42 test(function () { | 38 if (testId < EXPECTED_COMBINED_UNTIL) { |
| 43 var hwid = addVariant(normal, "hwid"); | 39 test(function() { |
| 44 var twid = addVariant(normal, "twid"); | 40 assert_equals(rectHeight, EXPECTED_LINE_HEIGHT, "Numbers lai
d out in one combining block."); |
| 45 var qwid = addVariant(normal, "qwid"); | 41 }, "Numbers expected to be laid out in one combining block"); |
| 46 var width = normal.getBoundingClientRect().width; | 42 } else { |
| 47 var widthHwid = hwid.getBoundingClientRect().width; | 43 test(function() { |
| 48 var widthTwid = twid.getBoundingClientRect().width; | 44 assert_true(rectHeight > EXPECTED_LINE_HEIGHT, EXPECTED_LINE
_HEIGHT, "Number laid out vertically, not combined."); |
| 49 var widthQwid = qwid.getBoundingClientRect().width; | 45 }, "Number laid out vertically, not combined."); |
| 50 assert_less_than(widthHwid, width, "hwid"); | 46 } |
| 51 assert_less_than(widthTwid, widthHwid, "twid"); | |
| 52 assert_less_than(widthQwid, widthTwid, "qwid"); | |
| 53 }, text); | |
| 54 } | 47 } |
| 55 done(); | 48 done(); |
| 56 } | 49 } |
| 57 function addVariant(base, variantClassName) { | |
| 58 var variant = base.cloneNode(true); | |
| 59 variant.className = variantClassName; | |
| 60 base.parentElement.appendChild(document.createTextNode(" ")); | |
| 61 base.parentElement.appendChild(variant); | |
| 62 return variant; | |
| 63 } | |
| 64 </script> | 50 </script> |
| 65 </head> | 51 </head> |
| 66 | 52 |
| 67 <body onload="testWidthVariant();"> | 53 <body onload="testWidthVariant();"> |
| 68 <div id="test"> | 54 <div class="vertical"> |
| 69 <div><span>1</span></div> | 55 <!-- horizontally combined --> |
| 70 <div><span>9</span></div> | 56 <div><span class="combine">1</span></div> |
| 71 <div><span>22</span></div> | 57 <div><span class="combine">9</span></div> |
| 72 <div><span>99</span></div> | 58 <div><span class="combine">11</span></div> |
| 73 <div><span>123456</span></div> | 59 <div><span class="combine">99</span></div> |
| 74 <div><span>222222</span></div> | 60 <div><span class="combine">111</span></div> |
| 75 <div><span>999999</span></div> | 61 <div><span class="combine">999</span></div> |
| 62 <div><span class="combine">1111</span></div> |
| 63 <div><span class="combine">9999</span></div> |
| 64 <!-- vertical --> |
| 65 <div><span class="combine">11111</span></div> |
| 66 <div><span class="combine">99999</span></div> |
| 67 <div><span class="combine">123456</span></div> |
| 68 <div><span class="combine">111111</span></div> |
| 69 <div><span class="combine">999999</span></div> |
| 76 </div> | 70 </div> |
| 77 <div id="log"></div> | 71 <div id="log"></div> |
| 78 </body> | 72 </body> |
| 79 </html> | 73 </html> |
| 80 | 74 |
| OLD | NEW |