Maison >interface Web >tutoriel CSS >Comment JavaScript peut-il détecter les polices disponibles pour la sélection des polices par l'utilisateur ?

Comment JavaScript peut-il détecter les polices disponibles pour la sélection des polices par l'utilisateur ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-27 10:49:12817parcourir

How Can JavaScript Detect Available Fonts for User Font Selection?

Détection des polices prises en charge pour la personnalisation de l'utilisateur

Question :

Comment utiliser JavaScript pour obtenir le navigateur Une liste de toutes les polices qui peuvent être affichées pour fournir une fonctionnalité de sélection de police à l'utilisateur ?

Réponse :

Bibliothèque de détection de polices JavaScript de Lalit Patel : http://www.lalit.org/lab/javascript-css-font-detect

Code :

/**
 * Detector JavaScript code to identify available fonts in a browser.
 */
var Detector = function() {
    // Base fonts for comparison against candidate fonts
    var baseFonts = ['monospace', 'sans-serif', 'serif'];

    // Test string with characters of varying widths and heights
    var testString = "mmmmmmmmmmlli";

    // Test font size
    var testSize = '72px';

    // Append a SPAN element to the body for font width measurement
    var s = document.createElement("span");
    s.style.fontSize = testSize;
    s.innerHTML = testString;

    var defaultWidth = {}, defaultHeight = {};

    // Calculate default widths for base fonts
    for (var index in baseFonts) {
        s.style.fontFamily = baseFonts[index];
        document.body.appendChild(s);
        defaultWidth[baseFonts[index]] = s.offsetWidth;
        defaultHeight[baseFonts[index]] = s.offsetHeight;
        document.body.removeChild(s);
    }

    function detect(font) {
        var detected = false;

        // Compare candidate font's width and height against base fonts
        for (var index in baseFonts) {
            s.style.fontFamily = font + ',' + baseFonts[index]; // Fallback to base font
            document.body.appendChild(s);
            var matched = (s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]);
            document.body.removeChild(s);
            detected = detected || matched;
        }

        return detected;
    }

    this.detect = detect;
};

Comment ça marche :

Cette bibliothèque analyse les différences de largeur et de hauteur des caractères entre les différentes polices. L'apparence de chaque caractère varie selon les caractères. polices, ce qui donne des largeurs et des hauteurs uniques pour la même chaîne de test. En comparant une police candidate à trois polices de base, la bibliothèque peut déterminer si la police candidate est disponible dans le navigateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn