blob: 0051529640773ad99949adf1d9284a21b455cb08 [file] [log] [blame]
<meta charset="utf-8">
<style id="fontfaces">
</style>
<body>
<script>
function getFontsWithTestCharsForOS() {
if (navigator.userAgent.indexOf("Android") !== -1) {
// Intersection of available fonts of Android Kitkat to Oreo that kept the
// same family names to compare against for these postscript or full font
// names. (RobotoThin* and RobotoLight* had differing family names on
// different Android versions.
return [
["AndroidClock-Regular", "0"],
["Roboto-Bold", "0"],
["DroidSansMono", "0"],
["Roboto-Regular", "0"],
["Noto Color Emoji", "☺"],
["NotoSansBengali-Bold", "0"],
["NotoSansBengali", "0"],
["NotoSansBengaliUI-Bold", "0"],
["NotoSansBengaliUI", "0"],
["NotoSansDevanagari-Bold", "0"],
["NotoSansDevanagari", "0"],
["NotoSansDevanagariUI-Bold", "0"],
["NotoSansDevanagariUI", "0"],
["NotoSansKannada-Bold", "0"],
["NotoSansKannada", "0"],
["NotoSansKannadaUI-Bold", "0"],
["NotoSansKannadaUI", "0"],
["NotoSansLao-Bold", "0"],
["NotoSansLao", "0"],
["NotoSansLaoUI-Bold", "0"],
["NotoSansLaoUI", "0"],
["NotoSansMalayalam-Bold", "0"],
["NotoSansMalayalam", "0"],
["NotoSansMalayalamUI-Bold", "0"],
["NotoSansMalayalamUI", "0"],
["NotoSansTamil-Bold", "0"],
["NotoSansTamil", "0"],
["NotoSansTamilUI-Bold", "0"],
["NotoSansTamilUI", "0"],
["NotoSansTelugu-Bold", "0"],
["NotoSansTelugu", "0"],
["NotoSansTeluguUI-Bold", "0"],
["NotoSansTeluguUI", "0"],
["NotoSansThai-Bold", "๐"],
["NotoSansThai", "๐"],
["NotoSansThaiUI-Bold", "๐"],
["NotoSansThaiUI", "๐"],
["Roboto-BoldItalic", "0"],
["RobotoCondensed-BoldItalic", "0"],
["RobotoCondensed-Bold", "0"],
["RobotoCondensed-Italic", "0"],
["RobotoCondensed-Regular", "0"],
["Roboto-Italic", "0"],
];
} else if (navigator.userAgent.indexOf("Linux") !== -1
|| navigator.userAgent.indexOf("CrOS") !== -1) {
return [
["Ahem", "0"],
["Arimo-Bold", "0"],
["Arimo-BoldItalic", "0"],
["Arimo-Italic", "0"],
["Arimo-Regular", "0"],
["Cousine-Bold", "0"],
["Cousine-BoldItalic", "0"],
["Cousine-Italic", "0"],
["Cousine-Regular", "0"],
["DejaVuSans", "0"],
["DejaVuSans-Bold", "0"],
["Garuda", "0"],
["Gelasio-Bold", "0"],
["Gelasio-BoldItalic", "0"],
["Gelasio-Italic", "0"],
["Gelasio-Regular", "0"],
["Lohit-Devanagari", "0"],
["Lohit-Gurmukhi", "0"],
["Lohit-Tamil", "0"],
["NotoSansKhmer-Regular", "០"],
["Tinos-Bold", "0"],
["Tinos-BoldItalic", "0"],
["Tinos-Italic", "0"],
["Tinos-Regular", "0"],
["muktinarrow", "0"],
["Tinos-Regular", "0"]
];
} else if (navigator.userAgent.indexOf("Macintosh") !== -1) {
return [
[ "AmericanTypewriter-CondensedLight", "0" ],
[ "ArialNarrow-BoldItalic", "0" ],
[ "Baskerville-SemiBoldItalic", "0" ],
[ "DevanagariMT", "0" ],
[ "DINAlternate-Bold", "0" ],
[ "GillSans-LightItalic", "0" ],
[ "IowanOldStyle-Titling", "0" ],
[ "MalayalamSangamMN", "0" ],
[ "HiraMaruPro-W4", "0" ],
[ "HiraKakuStdN-W8", "0" ],
];
} else if (navigator.userAgent.indexOf("Windows") !== -1) {
return [
["CambriaMath", "0"],
["Ming-Lt-HKSCS-ExtB", "0"],
["NSimSun", "0"],
["calibri-bolditalic", "0"]
];
}
return [];
}
function stripSpaces(fontName) {
return fontName.replace(/\s+/g, '');
}
async function addTestNodes() {
var containerDiv = document.createElement("div");
var fontFaceDeclarations = "";
for (font_name_and_testchars of getFontsWithTestCharsForOS()) {
var font_name = font_name_and_testchars[0];
// Add cursive to font stack to avoid ignoring failures when Roboto is used as fallback.
fontFaceDeclarations +=
`@font-face { font-family: ${stripSpaces(font_name)}_webfont; \
src: local("${font_name}"); } .${stripSpaces(font_name)}_style \
{ font-family: ${stripSpaces(font_name)}_webfont, cursive; } `;
var testElement = document.createElement("div");
testElement.classList += `testnode ${stripSpaces(font_name)}_style`;
testElement.innerText = font_name_and_testchars[1];
containerDiv.appendChild(testElement);
}
fontfaces.innerText = fontFaceDeclarations;
document.body.appendChild(containerDiv);
await document.fonts.ready;
// Force layout so that the DevTools side of the test can start accessing
// nodes' font information reliably.
document.body.offsetTop;
return containerDiv.children.length;
}
</script>