检测是否启用了IE中的字体下载

Sco*_*ius 12 javascript internet-explorer detect font-face

有没有办法检测Internet Explorer中的字体下载属性是否已禁用或启用?

目前,如果我要为字体渲染实现@ font-face解决方案(font-squirrel或typekit或其他),除非 Internet Explorer禁用其"字体下载"选项,否则所有浏览器都会很好用.

此设置可在IE> Internet选项>安全性>自定义级别>下载>字体下载>启用/禁用中找到.

如果我能检测到这个选项,我可以回到javascript方法.

这些解决方案不起作用,因为此选项实际上不会禁用该功能,它会阻止发生下载:

  • http://paulirish.com/2009/font-face-feature-detection/
  • http://www.lalit.org/lab/javascript-css-font-detect/

编辑:我应该提到我们不能使用服务器端解决方案,它必须是纯粹的客户端脚本.

zop*_*eux 7

由于此功能可防止发生下载,因此(相当脏的)解决方案是要求IE下载所谓的字体,这实际上是服务器上放置的简单脚本,例如.一个cookie说"好吧他得到字体"并返回一个空白页面.当用户加载下一页时,如果没有cookie,您将部署Javascript机器.

在此输入图像描述


Jak*_*ake 5

我意识到这个问题已经过时了,但对于一些IT安全严格的企业互联网用户来说,这个问题仍然存在.我查看了上面的解决方案和其他解决方案,但它们对我来说效果不佳,所以我发现另一个解决方案不需要服务器端代码,没有javascript,也没有css.它本质上是神奇的,但它有一些局限性.

限制1:这仅适用于使用高数字代码点显示图像的图标字体.它不适用于可读文本的字体字体.

限制2:您必须找到一个标准的UTF-8符号,它是您自定义图标的合适替代品.

例如,如果您有一个用于显示星号的自定义字体,那么适当的后备将是unicode代码点0x2605★.因此,在您的字体生成代码中,您需要将该代码点硬编码到您的css类中以获取星形图标.如果您使用的是"grunt-webfont",您可以在grunt文件中执行以下操作:

webfont: {
    icons: {
        options: {
           codepoints: {
              'star': 0x2605
       ...
}}}}
Run Code Online (Sandbox Code Playgroud)

明星就是一个很好的例子; 为您的花式图标找到合适的UTF8替代品可能具有挑战性,因此这可能对每个人都不起作用.考虑到这个问题影响了极少数用户,我们认为这是一个合适的透明解决方案,不会影响普通用户使用额外的js/css/cookie cruft.