Une technique qui fonctionne consiste à examiner le style calculé de l'élément. Cette technique est prise en charge par Opera et Firefox (et je pense que Safari l'est aussi, mais je n'ai pas testé). IE (7 au moins), fournit une méthode pour obtenir un style, mais il semble que ce soit ce qui était dans la feuille de style, pas le style calculé. Plus de détails sur quirksmode : Obtenir des styles
Voici une fonction simple pour récupérer la police utilisée dans un élément :
/**
* 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 règle CSS pour ceci était :
#fonttester {
font-family: sans-serif, arial, helvetica;
}
Ensuite, il doit renvoyer helvetica si celle-ci est installée, sinon, arial, et enfin, le nom de la police sans-serif par défaut du système. Notez que l'ordre des polices dans votre déclaration CSS est important.
Un hack intéressant que vous pourriez aussi essayer est de créer beaucoup d'éléments cachés avec beaucoup de polices différentes pour essayer de détecter quelles polices sont installées sur une machine. Je suis sûr que quelqu'un pourrait créer une page de collecte de statistiques sur les polices avec cette technique.
3 votes
Il ne faut pas oublier que certains navigateurs remplacent certaines polices manquantes par des polices similaires, ce qui est impossible à détecter avec l'astuce JavaScript/CSS. Par exemple, les navigateurs Windows remplaceront l'Helvetica par l'Arial si celle-ci n'est pas installée. L'astuce mentionnée par MojoFilter et dragonmatank indiquera toujours que l'Helvetica est installée, même si elle ne l'est pas.
14 votes
Une petite mise en garde : Si vous proposez un lien permettant de télécharger Calibri, sachez que, bien qu'il soit intégré à plusieurs produits Microsoft, il n'est pas disponible sur le marché. no une police gratuite, et vous violez le droit d'auteur en la proposant au téléchargement.
1 votes
De nos jours, vous pouvez également utiliser l'interface FontFaceSet pour vérifier si une police est disponible. developer.mozilla.org/fr/US/docs/Web/API/FontFaceSet/check
0 votes
En fait, vous ne pouvez pas vérifier quelle police a été utilisée pour une
div
par exemple, car tout caractère manquant peut être récupéré dans une autre police.