47 lines
1.6 KiB
HTML
47 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<link rel="help" href="https://drafts.csswg.org/css-text-4/#text-autospace-property">
|
|
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="../support/get-char-advances.js"></script>
|
|
<style>
|
|
.test {
|
|
font-family: Ahem;
|
|
font-size: 40px;
|
|
}
|
|
.no-autospace {
|
|
text-autospace: no-autospace;
|
|
}
|
|
</style>
|
|
<div id="container">
|
|
<div class="test" expect="1,5">国国אבג国国</div>
|
|
<div class="test" expect="1,5">国国<span>אב</span>ג国国</div>
|
|
<div class="test" expect="1,11">国国مُرَبَّعْ国国</div>
|
|
</div>
|
|
<script>
|
|
// Compute expected advances from advances without `text-autospace` and the
|
|
// `expect` attribute.
|
|
const container = document.getElementById('container');
|
|
container.classList.add('no-autospace');
|
|
const tests = [];
|
|
for (const element of document.getElementsByClassName('test')) {
|
|
const em = parseFloat(getComputedStyle(element).fontSize);
|
|
const spacing = em / 8;
|
|
const advances = getCharAdvances(element);
|
|
const expect = element.getAttribute('expect').split(',').map(i => parseInt(i));
|
|
for (const i of expect) {
|
|
advances[i] += spacing;
|
|
}
|
|
tests.push({element: element, advances: advances});
|
|
}
|
|
|
|
// Apply `text-autospace` and compare the actual advances.
|
|
container.classList.remove('no-autospace');
|
|
for (const t of tests) {
|
|
const advances = getCharAdvances(t.element);
|
|
test(() => {
|
|
assert_array_equals(advances, t.advances);
|
|
})
|
|
}
|
|
</script>
|