Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 48 subtest issues.
 - This WPT test may be referenced by the following Test IDs:
            
- /css/css-fonts/format-specifiers-variations.html - WPT Dashboard Interop Dashboard
 
 
<!DOCTYPE HTML>
<html>
<head>
<title>CSS Test: Supported format specifiers should load</title>
<meta name="assert" content="Supported format specifiers should load"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
setup({
    explicit_done: true
});
var formatSpecifiers = [
    "woff",
    "truetype",
    "opentype",
    "woff2",
    "woff-variations",
    "truetype-variations",
    "opentype-variations",
    "woff2-variations"
];
var defaultAhemSrc = 'url("/fonts/Ahem.ttf") format("INSERT_FORMAT")';
function runTestOnFormatSpecifiers(formats, expectFail) {
    for (var i = 0; i < formats.length; ++i) {
        promise_test((testDetails) => {
            var familyName = "load_ahem_" + i;
            var ahemSrcFormat = defaultAhemSrc.replace("INSERT_FORMAT", testDetails.properties.format);
            var fontFace = new FontFace(familyName, ahemSrcFormat);
            if (!expectFail) {
                return fontFace.load();
            } else {
                return promise_rejects_dom(testDetails, "SyntaxError", fontFace.load());
            }
        }, (expectFail ? "Do not load" : "Load") + " Ahem with format " + formats[i], {
            "format": formats[i]
        });
    }
}
runTestOnFormatSpecifiers(formatSpecifiers, false);
runTestOnFormatSpecifiers(formatSpecifiers.map(x => "xyz" + x), true);
runTestOnFormatSpecifiers(formatSpecifiers.map(x => x + "xyz"), true);
runTestOnFormatSpecifiers(formatSpecifiers.map(x => x.slice(0, -2)), true);
runTestOnFormatSpecifiers(formatSpecifiers.map(x => x.slice(2)), true);
runTestOnFormatSpecifiers(formatSpecifiers.map(x => x.slice(0, x.length / 3) + x.slice(x.length / 3 + 1)), true);
done();
</script>
</body>
</html>