blob: 1e13a83846fe2db4d907722a6cc79a89d2b0fdb8 [file] [log] [blame]
<!DOCTYPE html>
<meta charset="utf-8">
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<style>
.macsystemfont {
font-family: system-ui;
}
</style>
<div id="testDivs"></div>
<script>
setup({
explicit_done: true
});
test(function() {
// SFNSText's trak table cutoff boundaries are as follow, let's measure width to
// font size ratio at these font sizes.
// We expect to observe a non linear increase in width, due to tracking.
var trakTableFontSizes = [6.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0,
16.0, 17.0, 20.0, 22.0, 28.0, 32.0, 36.0, 50.0, 64.0, 80.0, 100.0, 138.0 ];
for (var i = 0; i < trakTableFontSizes.length; i++) {
containerDiv = document.createElement('div');
el = document.createElement('span');
el.classList += "macsystemfont";
el.style.fontSize = trakTableFontSizes[i] + "px";
el.appendChild(document.createTextNode('YouWebTorrentVa'));
containerDiv.appendChild(el);
testDivs.appendChild(containerDiv);
}
// Width to font size ratios from Safari for ".SF NS Text". If the ratio
// is not constant, this means letter spacing is not linearly changing
// with font size, which means varying tracking is applied. At font sizes
// above 78px, the tracking table ends and values become constant again.
var expectedRatios = [11.873046875,
11.443359375,
11.306640625,
11.189453125,
11.072265625,
10.955078125,
10.857421875,
10.759765625,
10.681640625,
10.61328125,
10.159505208333334,
10.110677083333334,
10.052083333333334,
10.032552083333334,
10.013020833333334,
9.934895833333334,
9.856770833333334,
9.798177083333334,
9.798177083333334,
9.798177083333334
];
var theDivs = document.querySelectorAll(".macsystemfont");
assert_equals(theDivs.length, expectedRatios.length);
var kCssPixelsPerPoint = 96 / 72;
for (var i = 0; i < theDivs.length; ++i) {
var fontSize = parseFloat(getComputedStyle(theDivs[i])[
'fontSize'], 10);
var width = theDivs[i].getBoundingClientRect().width;
var ptSize = fontSize / kCssPixelsPerPoint;
var ratio = width / ptSize;
var expectation = expectedRatios[i];
assert_less_than(Math.abs(ratio - expectation), 0.01);
}
testDivs.style.display = "none";
},
"Font size to width ratio should match Safari and stay constant above 80px, according to the font's trak table."
);
done();
</script>