【发布时间】:2010-09-05 06:38:37
【问题描述】:
假设我的页面中有以下 CSS 规则:
body {
font-family: Calibri, Trebuchet MS, Helvetica, sans-serif;
}
如何检测用户浏览器中使用了哪一种定义的字体?
对于想知道我为什么要这样做的人来说,因为我检测到的字体包含其他字体中不可用的字形。如果用户确实没有有字体,那么我希望它显示一个链接,要求用户下载该字体(这样他们就可以使用我的网络应用程序和正确的字体)。
目前,我正在为所有用户显示下载字体链接。我只想为那些没有安装了正确字体的人显示这个。
【问题讨论】:
-
要记住的一点是,某些浏览器会用相似的字体替换某些丢失的字体,这是无法使用 JavaScript/CSS 技巧检测到的。例如,如果没有安装 Helvetica,Windows 浏览器会用 Arial 代替它。 MojoFilter 和 dragonmatank 提到的技巧仍然会报告 Helvetica 已安装,即使它没有安装。
-
小提示:如果您提供下载 Calibri 的链接,请注意虽然它捆绑在多个 Microsoft 产品中,但它不是免费字体,并且您通过提供下载来侵犯版权。
-
这几天你也可以使用FontFaceSet接口来检查字体是否可用;见developer.mozilla.org/en-US/docs/Web/API/FontFaceSet/check
-
实际上,您无法检查
div使用了哪种字体,因为任何单个缺失的字符都可能从另一种字体中窃取。
标签: javascript html css fonts