78 lines
3.1 KiB
HTML
78 lines
3.1 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<title>SVGTextContentElement.getCharNumAtPosition</title>
|
|
<link rel="help" href="https://svgwg.org/svg2-draft/text.html#__svg__SVGTextContentElement__getCharNumAtPosition">
|
|
<link rel="stylesheet" href="/fonts/ahem.css">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
|
|
<svg width="800" height="600">
|
|
<style>
|
|
text {
|
|
font: 20px/1 Ahem;
|
|
}
|
|
</style>
|
|
<text><tspan id="htb" x="40" y="100">abc</tspan></text>
|
|
<text style="writing-mode:vertical-lr"><tspan id="vlr" x="40" y="120">abc</tspan></text>
|
|
<text style="writing-mode:vertical-rl"><tspan id="vrl" x="80" y="120">abc</tspan></text>
|
|
<text style="writing-mode:sideways-rl"><tspan id="srl" x="80" y="200">abc</tspan></text>
|
|
</svg>
|
|
|
|
<script>
|
|
function newPoint(x, y) {
|
|
const p = document.querySelector('svg').createSVGPoint();
|
|
p.x = x;
|
|
p.y = y;
|
|
return p;
|
|
}
|
|
|
|
setup({ explicit_done: true });
|
|
|
|
document.fonts.ready.then(() => {
|
|
test(() => {
|
|
const element = document.querySelector('#htb');
|
|
assert_equals(element.getNumberOfChars(), 3);
|
|
const start = 40;
|
|
assert_equals(element.getCharNumAtPosition(newPoint(start - 10, 100)), -1);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(start + 10, 100)), 0);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(start + 30, 100)), 1);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(start + 50, 100)), 2);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(start + 70, 100)), -1);
|
|
}, 'horizontal-tb');
|
|
|
|
test(() => {
|
|
const element = document.querySelector('#vlr');
|
|
assert_equals(element.getNumberOfChars(), 3);
|
|
const start = 120;
|
|
assert_equals(element.getCharNumAtPosition(newPoint(40, start - 10)), -1);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(40, start + 10)), 0);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(40, start + 30)), 1);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(40, start + 50)), 2);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(40, start + 70)), -1);
|
|
}, 'vertical-lr');
|
|
|
|
test(() => {
|
|
const element = document.querySelector('#vrl');
|
|
assert_equals(element.getNumberOfChars(), 3);
|
|
const start = 120;
|
|
assert_equals(element.getCharNumAtPosition(newPoint(80, start - 10)), -1);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(80, start + 10)), 0);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(80, start + 30)), 1);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(80, start + 50)), 2);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(80, start + 70)), -1);
|
|
}, 'vertical-rl');
|
|
|
|
test(() => {
|
|
const element = document.querySelector('#srl');
|
|
assert_equals(element.getNumberOfChars(), 3);
|
|
const start = 200;
|
|
assert_equals(element.getCharNumAtPosition(newPoint(80, start - 10)), -1);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(80, start + 10)), 0);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(80, start + 30)), 1);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(80, start + 50)), 2);
|
|
assert_equals(element.getCharNumAtPosition(newPoint(80, start + 70)), -1);
|
|
}, 'sideways-rl');
|
|
|
|
done();
|
|
});
|
|
</script>
|