首页 >web前端 >css教程 >JavaScript 可以检测用户浏览器可以显示的所有字体吗?

JavaScript 可以检测用户浏览器可以显示的所有字体吗?

DDD
DDD原创
2024-11-30 21:46:13381浏览

Can JavaScript Detect All Fonts a User's Browser Can Display?

列出用户浏览器可以显示的每种字体

JavaScript 可以检索浏览器可显示的字体吗?

是的,可以使用以下命令获取用户浏览器支持的所有字体的列表JavaScript。这样可以创建一个包含可供用户选择的可用字体的下拉列表。

字体检测实现

请参阅 http://www.lalit.org/lab/javascript -css-font-detect 用于高效的 JavaScript 解决方案:

代码片段:

var Detector = function() {
    // baseFonts
    var baseFonts = ['monospace', 'sans-serif', 'serif'];

    // testString
    var testString = "mmmmmmmmmmlli";

    // testSize
    var testSize = '72px';

    // helper functions
    var h = document.getElementsByTagName("body")[0];
    var s = document.createElement("span");
    s.style.fontSize = testSize;
    s.innerHTML = testString;

    // default measurements
    var defaultWidth = {};
    var defaultHeight = {};
    for (var index in baseFonts) {
        s.style.fontFamily = baseFonts[index];
        h.appendChild(s);
        defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font
        defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font
        h.removeChild(s);
    }

    this.detect = function(font) {
        var detected = false;
        for (var index in baseFonts) {
            s.style.fontFamily = font + ',' + baseFonts[index];
            h.appendChild(s);
            var matched = (s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]);
            h.removeChild(s);
            detected = detected || matched;
        }
        return detected;
    };
};

工作原理

此代码利用了不同字体中字符的独特外观。通过比较以特定字体呈现的文本与以基本字体呈现的文本的宽度和高度,确定是否支持目标字体。

以上是JavaScript 可以检测用户浏览器可以显示的所有字体吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn