|  | <!DOCTYPE html> | 
|  | <link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> | 
|  | <link rel="help" href="https://developer.mozilla.org/en-US/docs/Web/API/Element/getClientRects"> | 
|  | <link rel="help" href="https://drafts.csswg.org/css-multicol/"> | 
|  | <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> | 
|  | <style> | 
|  | .multicol { | 
|  | visibility: hidden; | 
|  | position: absolute; | 
|  | left: 100px; | 
|  | top: 50px; | 
|  | columns: 3; | 
|  | column-gap: 10px; | 
|  | inline-size: 290px; | 
|  | font: 20px/1 Ahem; | 
|  | orphans: 1; | 
|  | widows: 1; | 
|  | } | 
|  | #horizontalTbLtr { | 
|  | writing-mode: horizontal-tb; | 
|  | } | 
|  | #verticalLrLtr { | 
|  | writing-mode: vertical-lr; | 
|  | } | 
|  | #verticalRlLtr { | 
|  | writing-mode: vertical-rl; | 
|  | } | 
|  | #horizontalTbRtl { | 
|  | writing-mode: horizontal-tb; | 
|  | direction: rtl; | 
|  | } | 
|  | #verticalLrRtl { | 
|  | writing-mode: vertical-lr; | 
|  | direction: rtl; | 
|  | } | 
|  | #verticalRlRtl { | 
|  | writing-mode: vertical-rl; | 
|  | direction: rtl; | 
|  | } | 
|  | </style> | 
|  | <div class="multicol" id="horizontalTbLtr"> | 
|  | <div style="block-size:20px;"></div> | 
|  | <span>XXXX XXXX XXXX XXXX</span> | 
|  | </div> | 
|  | <div class="multicol" id="verticalLrLtr"> | 
|  | <div style="block-size:20px;"></div> | 
|  | <span>XXXX XXXX XXXX XXXX</span> | 
|  | </div> | 
|  | <div class="multicol" id="verticalRlLtr"> | 
|  | <div style="block-size:20px;"></div> | 
|  | <span>XXXX XXXX XXXX XXXX</span> | 
|  | </div> | 
|  | <div class="multicol" id="horizontalTbRtl" > | 
|  | <div style="block-size:20px;"></div> | 
|  | <span>XXXX XXXX XXXX XXXX</span> | 
|  | </div> | 
|  | <div class="multicol" id="verticalLrRtl"> | 
|  | <div style="block-size:20px;"></div> | 
|  | <span>XXXX XXXX XXXX XXXX</span> | 
|  | </div> | 
|  | <div class="multicol" id="verticalRlRtl"> | 
|  | <div style="block-size:20px;"></div> | 
|  | <span>XXXX XXXX XXXX XXXX</span> | 
|  | </div> | 
|  | <script src="/resources/testharness.js"></script> | 
|  | <script src="/resources/testharnessreport.js"></script> | 
|  | <script> | 
|  | setup({ explicit_done: true }); | 
|  |  | 
|  | document.fonts.ready.then(() => { | 
|  | test(()=> { | 
|  | var span = document.querySelector("#horizontalTbLtr span"); | 
|  | var rects = span.getClientRects(); | 
|  | assert_equals(rects.length, 4); | 
|  | assert_equals(rects[0].left, 100); | 
|  | assert_equals(rects[0].top, 70); | 
|  | assert_equals(rects[1].left, 200); | 
|  | assert_equals(rects[1].top, 50); | 
|  | assert_equals(rects[2].left, 200); | 
|  | assert_equals(rects[2].top, 70); | 
|  | assert_equals(rects[3].left, 300); | 
|  | assert_equals(rects[3].top, 50); | 
|  | }, "horizontal-tb ltr"); | 
|  |  | 
|  | test(()=> { | 
|  | var span = document.querySelector("#verticalLrLtr span"); | 
|  | var rects = span.getClientRects(); | 
|  | assert_equals(rects.length, 4); | 
|  | assert_equals(rects[0].left, 120); | 
|  | assert_equals(rects[0].top, 50); | 
|  | assert_equals(rects[1].left, 100); | 
|  | assert_equals(rects[1].top, 150); | 
|  | assert_equals(rects[2].left, 120); | 
|  | assert_equals(rects[2].top, 150); | 
|  | assert_equals(rects[3].left, 100); | 
|  | assert_equals(rects[3].top, 250); | 
|  | }, "vertical-lr ltr"); | 
|  |  | 
|  | test(()=> { | 
|  | var span = document.querySelector("#verticalRlLtr span"); | 
|  | var rects = span.getClientRects(); | 
|  | assert_equals(rects.length, 4); | 
|  | assert_equals(rects[0].left, 100); | 
|  | assert_equals(rects[0].top, 50); | 
|  | assert_equals(rects[1].left, 120); | 
|  | assert_equals(rects[1].top, 150); | 
|  | assert_equals(rects[2].left, 100); | 
|  | assert_equals(rects[2].top, 150); | 
|  | assert_equals(rects[3].left, 120); | 
|  | assert_equals(rects[3].top, 250); | 
|  | }, "vertical-rl ltr"); | 
|  |  | 
|  | test(()=> { | 
|  | var span = document.querySelector("#horizontalTbRtl span"); | 
|  | var rects = span.getClientRects(); | 
|  | assert_equals(rects.length, 4); | 
|  | assert_equals(rects[0].left, 310); | 
|  | assert_equals(rects[0].top, 70); | 
|  | assert_equals(rects[1].left, 210); | 
|  | assert_equals(rects[1].top, 50); | 
|  | assert_equals(rects[2].left, 210); | 
|  | assert_equals(rects[2].top, 70); | 
|  | assert_equals(rects[3].left, 110); | 
|  | assert_equals(rects[3].top, 50); | 
|  | }, "horizontal-tb rtl"); | 
|  |  | 
|  | test(()=> { | 
|  | var span = document.querySelector("#verticalLrRtl span"); | 
|  | var rects = span.getClientRects(); | 
|  | assert_equals(rects.length, 4); | 
|  | assert_equals(rects[0].left, 120); | 
|  | assert_equals(rects[0].top, 260); | 
|  | assert_equals(rects[1].left, 100); | 
|  | assert_equals(rects[1].top, 160); | 
|  | assert_equals(rects[2].left, 120); | 
|  | assert_equals(rects[2].top, 160); | 
|  | assert_equals(rects[3].left, 100); | 
|  | assert_equals(rects[3].top, 60); | 
|  | }, "vertical-lr rtl"); | 
|  |  | 
|  | test(()=> { | 
|  | var span = document.querySelector("#verticalRlRtl span"); | 
|  | var rects = span.getClientRects(); | 
|  | assert_equals(rects.length, 4); | 
|  | assert_equals(rects[0].left, 100); | 
|  | assert_equals(rects[0].top, 260); | 
|  | assert_equals(rects[1].left, 120); | 
|  | assert_equals(rects[1].top, 160); | 
|  | assert_equals(rects[2].left, 100); | 
|  | assert_equals(rects[2].top, 160); | 
|  | assert_equals(rects[3].left, 120); | 
|  | assert_equals(rects[3].top, 60); | 
|  | }, "vertical-rl rtl"); | 
|  |  | 
|  | done(); | 
|  | }); | 
|  | </script> |