| <!doctype html> | |
| <meta charset="utf-8"> | |
| <title>CSS Font Loading: FontFace width and stretch aliases</title> | |
| <link rel="help" href="https://drafts.csswg.org/css-font-loading/#fontface-interface"> | |
| <link rel="help" href="https://drafts.csswg.org/css-fonts-4/#font-width-prop"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script> | |
| const source = "url(/fonts/Ahem.ttf)"; | |
| test(() => { | |
| const face = new FontFace("width-default", source); | |
| assert_equals(face.width, "normal"); | |
| assert_equals(face.stretch, "normal"); | |
| }, "FontFace width and stretch have the same default value"); | |
| test(() => { | |
| const face = new FontFace("width-constructor", source, {width: "expanded"}); | |
| assert_equals(face.width, "expanded"); | |
| assert_equals(face.stretch, "expanded"); | |
| }, "The width constructor descriptor initializes both aliases"); | |
| test(() => { | |
| const face = new FontFace("width-precedence", source, { | |
| stretch: "condensed", | |
| width: "expanded", | |
| }); | |
| assert_equals(face.width, "expanded"); | |
| assert_equals(face.stretch, "expanded"); | |
| }, "The width constructor descriptor takes precedence over stretch"); | |
| test(() => { | |
| const face = new FontFace("width-setter", source); | |
| face.width = "condensed"; | |
| assert_equals(face.width, "condensed"); | |
| assert_equals(face.stretch, "condensed"); | |
| face.stretch = "125%"; | |
| assert_equals(face.width, "125%"); | |
| assert_equals(face.stretch, "125%"); | |
| }, "Setting either width alias updates the other alias"); | |
| test(() => { | |
| const face = new FontFace("width-invalid", source, {width: "expanded"}); | |
| assert_throws_dom("SyntaxError", () => { face.width = "invalid"; }); | |
| assert_equals(face.width, "expanded"); | |
| assert_equals(face.stretch, "expanded"); | |
| }, "Setting width to an invalid value throws and preserves its value"); | |
| </script> |