getstartpositionofchar.html (2904B)
1 <!DOCTYPE html> 2 <title>SVGTextContentElement.getStartPositionOfChar and getEndPositionOfChar</title> 3 <link rel="help" href="https://svgwg.org/svg2-draft/text.html#__svg__SVGTextContentElement__getStartPositionOfChar"> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <link rel="stylesheet" href="/fonts/ahem.css"> 7 <style> 8 text { 9 font: 10px/1 Ahem; 10 } 11 #vrl { 12 writing-mode: vertical-rl; 13 } 14 #vlr { 15 writing-mode: vertical-lr; 16 } 17 #srl { 18 writing-mode: sideways-rl; 19 } 20 #slr { 21 writing-mode: sideways-lr; 22 } 23 </style> 24 25 <svg> 26 <text id="vrl" x="100" y="100">ABC</text> 27 <text id="vlr" x="100" y="100">ABC</text> 28 <text id="srl" x="100" y="100">ABC</text> 29 <text id="slr" x="100" y="100">ABC</text> 30 </svg> 31 32 <script> 33 const FONT_SIZE = 10; 34 function $(sel) { return document.querySelector(sel); } 35 36 setup({ explicit_done: true }); 37 38 document.fonts.ready.then(() => { 39 test(() => { 40 const target = $('#vrl'); 41 const base = target.getStartPositionOfChar(0).y; 42 assert_equals(target.getEndPositionOfChar(0).y, base + FONT_SIZE); 43 assert_equals(target.getStartPositionOfChar(1).y, base + FONT_SIZE); 44 assert_equals(target.getEndPositionOfChar(1).y, base + FONT_SIZE * 2); 45 assert_equals(target.getStartPositionOfChar(2).y, base + FONT_SIZE * 2); 46 assert_equals(target.getEndPositionOfChar(2).y, base + FONT_SIZE * 3); 47 }, 'vertical-rl'); 48 49 test(() => { 50 const target = $('#vlr'); 51 const base = target.getStartPositionOfChar(0).y; 52 assert_equals(target.getEndPositionOfChar(0).y, base + FONT_SIZE); 53 assert_equals(target.getStartPositionOfChar(1).y, base + FONT_SIZE); 54 assert_equals(target.getEndPositionOfChar(1).y, base + FONT_SIZE * 2); 55 assert_equals(target.getStartPositionOfChar(2).y, base + FONT_SIZE * 2); 56 assert_equals(target.getEndPositionOfChar(2).y, base + FONT_SIZE * 3); 57 }, 'vertical-lr'); 58 59 test(() => { 60 const target = $('#srl'); 61 const base = target.getStartPositionOfChar(0).y; 62 assert_equals(target.getEndPositionOfChar(0).y, base + FONT_SIZE); 63 assert_equals(target.getStartPositionOfChar(1).y, base + FONT_SIZE); 64 assert_equals(target.getEndPositionOfChar(1).y, base + FONT_SIZE * 2); 65 assert_equals(target.getStartPositionOfChar(2).y, base + FONT_SIZE * 2); 66 assert_equals(target.getEndPositionOfChar(2).y, base + FONT_SIZE * 3); 67 }, 'sideways-rl'); 68 69 test(() => { 70 const target = $('#slr'); 71 const base = target.getStartPositionOfChar(0).y; 72 assert_equals(target.getEndPositionOfChar(0).y, base - FONT_SIZE); 73 assert_equals(target.getStartPositionOfChar(1).y, base - FONT_SIZE); 74 assert_equals(target.getEndPositionOfChar(1).y, base - FONT_SIZE * 2); 75 assert_equals(target.getStartPositionOfChar(2).y, base - FONT_SIZE * 2); 76 assert_equals(target.getEndPositionOfChar(2).y, base - FONT_SIZE * 3); 77 }, 'sideways-lr'); 78 79 done(); 80 }); 81 </script>