blob: 3a98c75c25bcee7548107eb5e042ce423e7b3990 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Fonts Module Level 4: getComputedStyle().fontSize</title>
<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#font-size-prop">
<meta name="assert" content="font-size computed value is an absolute length.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
<style>
#container {
font-size: 40px;
}
</style>
</head>
<body>
<div id="container">
<div id="target"></div>
</div>
<font id="reference"></font>
<script>
function test_relative_size(first, second) {
test(() => {
const target = document.getElementById('target');
target.style.fontSize = first;
const firstResult = Number(getComputedStyle(target).fontSize.replace('px', ''));
target.style.fontSize = second;
const secondResult = Number(getComputedStyle(target).fontSize.replace('px', ''));
assert_less_than_equal(firstResult, secondResult);
}, first + ' <= ' + second);
}
test_relative_size('xx-small', 'x-small');
test_relative_size('x-small', 'small');
test_relative_size('small', 'medium');
test_relative_size('medium', 'large');
test_relative_size('large', 'x-large');
test_relative_size('x-large', 'xx-large');
// Added in Fonts level 4: https://github.com/w3c/csswg-drafts/issues/3907
test_relative_size('xx-large', 'xxx-large');
// <relative-size>
test_relative_size('inherit', 'larger');
test_relative_size('smaller', 'inherit');
// <length-percentage>
test_computed_value('font-size', '10px');
test_computed_value('font-size', '20%', '8px');
test_computed_value('font-size', 'calc(30% - 40px)', '0px');
test_computed_value('font-size', 'calc(30% + 40px)', '52px');
test_computed_value('font-size', 'calc(10px - 0.5em)', '0px');
test_computed_value('font-size', 'calc(10px + 0.5em)', '30px');
function test_font_size(attribute, keyword) {
test(() => {
const reference = document.getElementById('reference');
reference.setAttribute('size', attribute);
const target = document.getElementById('target');
target.style.fontSize = keyword;
assert_equals(getComputedStyle(target).fontSize, getComputedStyle(reference).fontSize);
}, '<font size="' + attribute + '"> is font-size: ' + keyword);
}
test_font_size('2', 'small');
test_font_size('3', 'medium');
test_font_size('4', 'large');
test_font_size('5', 'x-large');
test_font_size('6', 'xx-large');
test_font_size('7', 'xxx-large');
</script>
</body>
</html>