Una técnica que funciona es mirar el estilo calculado del elemento. Esto es compatible con Opera y Firefox (y lo reconozco en safari, pero no lo he probado). IE (7 al menos), proporciona un método para obtener un estilo, pero parece ser lo que haya en la hoja de estilo, no el estilo calculado. Más detalles sobre quirksmode: Obtener estilos
Aquí hay una función simple para tomar la fuente utilizada en un elemento:
/**
* Get the font used for a given element
* @argument {HTMLElement} the element to check font for
* @returns {string} The name of the used font or null if font could not be detected
*/
function getFontForElement(ele) {
if (ele.currentStyle) { // sort of, but not really, works in IE
return ele.currentStyle["fontFamily"];
} else if (document.defaultView) { // works in Opera and FF
return document.defaultView.getComputedStyle(ele,null).getPropertyValue("font-family");
} else {
return null;
}
}
Si la regla CSS para esto era:
#fonttester {
font-family: sans-serif, arial, helvetica;
}
Entonces debería devolver helvetica si está instalado, si no, arial y, por último, el nombre de la fuente sans-serif predeterminada del sistema. Tenga en cuenta que el orden de las fuentes en su declaración CSS es significativo.
Un truco interesante que también podrías probar es crear muchos elementos ocultos con muchas fuentes diferentes para tratar de detectar qué fuentes están instaladas en una máquina. Estoy seguro de que alguien podría hacer una ingeniosa página de recopilación de estadísticas de fuentes con esta técnica.