function insertFontFaceRule(inlineStyle){ var head = document.head || _AN_Call_getelementsbytagname('getElementsByTagName', document, 'head')[0]; var style = _AN_Call_appendchild('appendChild', head, _AN_Call_createelement('createElement', document, 'style')); return _AN_Call_appendchild('appendChild', style, document.createTextNode('@font-face{' + inlineStyle + '}')); } function insertFontFaceDetector(inlineStyle, family, fallback){ var inlineStyle = inlineStyle.concat(detectorStyle); var detectBlock = _AN_Call_createelement('createElement', document, 'font-detection'); _AN_Call_appendchild('appendChild', detectBlock, document.createTextNode(detectorText)); inlineStyle[0] = 'font-family:' + fallback; _AN_Call_setattribute('setAttribute', detectBlock, 'style', inlineStyle.join(';')); _AN_Call_appendchild('appendChild', document.body, detectBlock); var returnValue = { element: detectBlock, width: detectBlock.offsetWidth, height: detectBlock.offsetHeight} ; inlineStyle[0] = 'font-family:' + family + ',' + fallback; _AN_Call_setattribute('setAttribute', detectBlock, 'style', inlineStyle.join(';')); return returnValue; } function loadFont(family, weight, style, src){ var familyGenerated = family + Math.floor(Math.random() * 99999999); var inlineStyle = ['font-family:' + family, 'font-style:' + style, 'font-weight:' + weight] ; var styleText = insertFontFaceRule(inlineStyle.concat('src:' + src).join(';')); function onready(){ if (document.readyState === 'complete') { var detectors = { monospace: insertFontFaceDetector(inlineStyle, family, 'monospace'), sansserif: insertFontFaceDetector(inlineStyle, family, 'sans-serif'), serif: insertFontFaceDetector(inlineStyle, family, 'serif')} ; function timeout(){ if (detectors.monospace.width === detectors.monospace.element.offsetWidth && detectors.monospace.height === detectors.monospace.element.offsetHeight && detectors.sansserif.width === detectors.sansserif.element.offsetWidth && detectors.sansserif.height === detectors.sansserif.element.offsetHeight && detectors.serif.width === detectors.serif.element.offsetWidth && detectors.serif.height === detectors.serif.element.offsetHeight) setImmediate(timeout); else { document.body.removeChild(detectors.monospace.element); document.body.removeChild(detectors.sansserif.element); document.body.removeChild(detectors.serif.element); _AN_Write_nodevalue('nodeValue', styleText, false , _AN_Call_replace('replace', _AN_Read_nodevalue('nodeValue', styleText), familyGenerated, family)); } } timeout(); } else setImmediate(onready); } onready(); } function loadFonts(fonts){ var index = -1; while (font = fonts[++index]){ loadFont(font.family, font.weight, font.style, _AN_Read_src('src', font)); } } var detectorStyle = ['clip:rect(0 0 0 0)', 'overflow: hidden', 'position: absolute'] ; var detectorText = 'AxmTYklsjo190QW'; var setImmediate = window.requestAnimationFrame || window.setTimeout;