Urdunews.net
/** * JavaScript code to detect available availability of a * particular font in a browser using JavaScript and CSS. * * Author : Lalit Patel * Website: http://www.lalit.org/lab/jsoncookies * License: Creative Commons Attribution-ShareAlike 2.5 * http://creativecommons.org/licenses/by-sa/2.5/ * Version: 0.15 * changed comparision font to serif from sans-serif, * as in FF3.0 font of child element didn't fallback * to parent element if the font is missing. * Updated: 09 July 2009 10:52pm * */ /** * Actual function that does all the work. Returns an array with all the info. * This test will fail for the font set as the default serif font. * * Usage: d = new Detector(); * d.test('font_name'); */ var Detector = function(){ var h = document.getElementsByTagName("BODY")[0]; var d = document.createElement("DIV"); var s = document.createElement("SPAN"); d.appendChild(s); d.style.fontFamily = "sans"; //font for the parent element DIV. s.style.fontFamily = "sans"; //serif font used as a comparator. s.style.fontSize = "72px"; //we test using 72px font size, we may use any size. I guess larger the better. s.innerHTML = "mmmmmmmmmmlil"; //we use m or w because these two characters take up the maximum width. And we use a L so that the same matching fonts can get separated h.appendChild(d); var defaultWidth = s.offsetWidth; //now we have the defaultWidth var defaultHeight = s.offsetHeight; //and the defaultHeight, we compare other fonts with these. h.removeChild(d); /* test * params: * font - name of the font you wish to detect * return: * f[0] - Input font name. * f[1] - Computed width. * f[2] - Computed height. * f[3] - Detected? (true/false). */ function debug(font) { h.appendChild(d); var f = []; f[0] = s.style.fontFamily = font; // Name of the font f[1] = s.offsetWidth; // Width f[2] = s.offsetHeight; // Height h.removeChild(d); font = font.toLowerCase(); //alert(navigator.appVersion); //var myRegExp = /MSIE 7.0\/MSIE 8.0/; //alert(navigator.appVersion); var myRegExp = /MSIE 7.0/; var matchPos1 = navigator.appVersion.search(myRegExp); //if(matchPos1>0) //{ defaultWidth=defaultWidth-10; defaultHeight=defaultHeight-41; // alert(defaultWidth); // alert(defaultHeight); //} if (font == "serif") { f[3] = true; // to set arial and sans-serif true } else { f[3] = (f[1] != defaultWidth || f[2] != defaultHeight); // Detected? } // alert(font); // alert(f[0]); // alert(defaultWidth); // alert(f[1]); // alert(defaultHeight); // alert(f[1]); // alert(f[3]); // alert(navigator.appVersion); // alert(f[1]+'-------'+defaultWidth+'----------'+f[2]+'-------------'+defaultHeight); return f; } function test(font){ f = debug(font); return f[3]; } this.detailedTest = debug; this.test = test; } 0