private static void CheckFontLoad()
{
var isWorker = JsContext.JsCode("typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope").As<bool>();
if (isWorker)
{
// no web fonts in web worker
IsFontLoaded = false;
return;
}
var cssFontLoadingModuleSupported = JsContext.JsCode("!!document.fonts && !!document.fonts.load").As<bool>();
if (cssFontLoadingModuleSupported)
{
// ReSharper disable once UnusedVariable
JsFunc<bool> onLoaded = () =>
{
IsFontLoaded = true;
return true;
};
JsContext.JsCode("document.fonts.load('1em alphaTab').then(onLoaded)");
}
else
{
Action checkFont = null;
checkFont = () =>
{
var testItem = HtmlContext.document.getElementById("alphaTabFontChecker").As<HtmlDivElement>();
if (testItem == null)
{
// create a hidden element with the font style set
testItem = HtmlContext.document.createElement("div").As<HtmlDivElement>();
testItem.setAttribute("id", "alphaTabFontChecker");
testItem.style.opacity = "0";
testItem.style.position = "absolute";
testItem.style.left = "0";
testItem.style.top = "0";
testItem.classList.add("at");
testItem.innerHTML = "&#" + (int)MusicFontSymbol.ClefG + ";";
HtmlContext.document.body.appendChild(testItem);
}
// get width
var width = testItem.offsetWidth;
if (width > 30)
{
IsFontLoaded = true;
HtmlContext.document.body.removeChild(testItem);
}
else
{
HtmlContext.window.setTimeout(() => {
checkFont();
}, 1000);
}
};
HtmlContext.window.addEventListener("DOMContentLoaded", e =>
{
checkFont();
});
}
}