【发布时间】:2010-10-31 01:06:32
【问题描述】:
有没有办法测试安装了哪些字体,或者我可以读出所有字体?我想在我们的产品中进行一项调查,看看我可以在我们的项目中使用哪些字体。
【问题讨论】:
标签: javascript jquery css fonts
有没有办法测试安装了哪些字体,或者我可以读出所有字体?我想在我们的产品中进行一项调查,看看我可以在我们的项目中使用哪些字体。
【问题讨论】:
标签: javascript jquery css fonts
【讨论】:
没有很好的方法来做到这一点。虽然如果你有一个你想知道的字体列表,创建一个始终存在的后备类:
span#knownfont{font-family:Verdana, font-size:12px;}
span#font1{font-family:NonExistingFont1, Verdana, font-size:12px;}
span#font2{font-family:NonExistingFont2, Verdana, font-size:12px;}
...
Then create HTML for each case:
<span id="knownfont">Lorem ipsum dolor sit amet</span>
<span id="font1">Lorem ipsum dolor sit amet</span>
<span id="font2">Lorem ipsum dolor sit amet</span>
然后编写一个脚本,比较已知字体跨度和其他每个的宽度。如果宽度不同,则该字体存在于客户端。
【讨论】:
我知道并非所有浏览器都支持它,但在 css 中有 @font-face ,如 here 所述,因此如果您知道您的用户在 IE 上(例如),您可以使用它来获取字体。
【讨论】:
这是一个list of the most common fonts on windows and mac machines(每个都有图像比较)。我在选择要在项目中使用的字体时使用它。
【讨论】:
有一个脚本可以用不同的字体渲染一堆 DIV,然后检查生成的 DIV 是否具有给定字体的正确尺寸。
【讨论】:
没有万无一失的方法可以通过浏览器确定客户端计算机上已安装(和可用)的字体。
Flash 可能允许您这样做,或者可能是一些疯狂(但编写起来很有趣)的 JavaScript,它对具有给定字体的元素的大小做出假设 - 但无论有多少,此脚本都可能容易受到客户端设置差异的影响它考虑的情况。
我强烈反对您提议的调查/部署方法。您将做出一些不可能的决定 - 例如,可接受的可用性百分比是多少?如果是 100%,当出现没有此字体的新用户时,您会怎么做?如果不是,您有多少比例的用户对体验下降感到满意?
您是否考虑过 sIFR 或只是具有适当 alt 属性的图像元素?
如果您有特定的排版要求,可能值得关注:http://blog.typekit.com/。
【讨论】:
签出 jQuery 插件 FontUnstack,来自这个 question。
【讨论】:
您可以使用 Flash 获取客户端操作系统中安装的字体列表:
var embeddedAndDeviceFonts:Array = Font.enumerateFonts(true);
然后您可以使用ExternalInterface 在 Flash 和 Javascript 之间移动此信息。它不需要太多代码。
查看my blog post about it 了解更多信息和a demo implementation。
【讨论】: