【问题标题】:@font-face not cooperating in Firefox@font-face 在 Firefox 中不合作
【发布时间】:2011-06-15 14:34:17
【问题描述】:

我尝试了很多事情,包括点击与我的问题相关的所有问题(有很多!)并尝试了他们所有的“解决方案”,但没有一个对我有用。我尝试将 .eot 文件包装在条件 IE 语句中,但这也不起作用。有人说,如果您不在自己的服务器上托管文件,@font-face 将无法在 Firefox 中工作......或者类似的东西。无论如何,去here 看看所有其他浏览器与 Firefox 之间的比较。请不要暴击!我确实尝试了 Google 和 stackoverflow 提供的所有解决方案。 (请记住,这是一个 Tumblr 主题,所有文件/图像都必须通过 Tumblr's uploader 托管。)

提前致谢!

另外,这是我一直在使用的代码:

<!--[if IE]>
<style>
@font-face {
font-family: 'S';
src: url('http://static.tumblr.com/ctwb3zj/5bTlflus9/zegoelight-u-webfont.eot');
}
</style>
<![endif]-->

<style>
@font-face {
font-family: 'S';
src: url('http://static.tumblr.com/ctwb3zj/5bTlflus9/zegoelight-u-webfont.eot');
src: local('S'), 
     local('S'), 
     url('http://static.tumblr.com/ctwb3zj/n4Zlfluv6/zegoelight-u-webfont.ttf')      
format('truetype'),
     url('http://static.tumblr.com/ctwb3zj/ovQlfluz3/zegoelight-u-webfont.svg#font')    
format('svg'); 
     url('http://static.tumblr.com/ctwb3zj/1AJlfluwz/zegoelight-u-webfont.woff')
format('woff');
}
</style>

我尝试在 Firefox 中转到 about:config 并将 security.fileuri.strict_origin_policy 切换为 false,但没有成功。另外,我需要一种方法,以便所有查看或使用我的主题的用户也能够查看字体,并且默认设置为 true。

【问题讨论】:

  • 通过尝试通过我在 Firefox 中遇到的The image “...zegoelight-u-webfont.ttf” cannot be displayed because it contains errors. 的 url 获取其中一种字体。因此,似乎 Tumblr 将文件作为 image/jpeg 提供,从而搞砸了。
  • 那些 HTML 条件 cmets 在你的 CSS 中做了什么?
  • 对不起,它们实际上是我代码的独立部分,我只是将它们放在一起。固定

标签: html css firefox fonts font-face


【解决方案1】:

编辑:

解决方法如下: Cross domain workaround

Firefox 不喜欢跨域嵌入。

【讨论】:

    【解决方案2】:

    Earl,我不想告诉你这个,但你的问题不在于你的@font-face 规则。至少在我查看您的网站时不是这样。当您使用 CSS font-family 时,您需要确保所选堆栈中的每种不同字体之间都有一个逗号。 您的 h6 选择器是:

    h6 {font-size:36px; font-family: 'S' sans-serif;}
    

    应该是:

    h6 {font-size:36px; font-family: 'S', sans-serif;}
    

    试一试,我认为它对你有用。只需确保所有字体系列堆栈在多种字体之间都有逗号。 Firefox 在解析技术上不正确的 CSS 时更加严格; Firefox 只是忽略它。这似乎是您遇到问题的原因,而不是您的@font-face。

    【讨论】:

    • 这并没有解决问题,但感谢纠正我:) 我宁愿有好的代码而不是好的代码。
    • 奇怪,它对我有用。很抱歉没有解决您的问题。
    • 我认为这是因为 Tumblr 本身 :(
    【解决方案3】:

    我并不完全相信你的@font-face 规则。您可以复制以下内容并查看它有什么(如果有的话)不同吗?只是为了收拾东西。

    @font-face {
    font-family: 'S';
    src: url('http://static.tumblr.com/ctwb3zj/5bTlflus9/zegoelight-u-webfont.eot');
    src: local('☺'),
         url('http://static.tumblr.com/ctwb3zj/n4Zlfluv6/zegoelight-u-webfont.ttf')      
    format('truetype'),
         url('http://static.tumblr.com/ctwb3zj/ovQlfluz3/zegoelight-u-webfont.svg#font')    
    format('svg'); 
         url('http://static.tumblr.com/ctwb3zj/1AJlfluwz/zegoelight-u-webfont.woff')
    format('woff');
    }
    

    这只是清理了一些小问题。我还建议将您的字体名称更改为“S”以外的名称;例如“Zegoe Light”。

    Ivo Wetzel 从您的 cmets 中是正确的,这可能是 Tumblr 提供具有未知文件扩展名的媒体的方式的问题。

    【讨论】:

      【解决方案4】:

      我遇到过类似的问题,它在任何地方都有效,但在 Mac 上的 Firefox4 中却不行。我在另一个@media 块中声明了@font-face-Stuff(只为非移动设备加载字体)——这就是导致错误的原因。

      这不起作用:

      @media sth... {
      
        @font-face {
          ...
        }
      
      }
      

      这确实有效:

      @font-face {
        ..
      }
      
      @media sth... {
      
      }
      

      【讨论】:

      • 其实我很久以前就想通了。最好的方法是下载 css 样式表附带的 font-squirrel 文件。您需要在浏览器中打开它并查看源代码,然后单击代码中的样式表之一,它将引导您进入字体嵌入。将其复制并粘贴到记事本中,然后将字体文件从 font-squirrel 上传到 Tumblr 的静态上传器中,并使用上传中的 url 代替嵌入中的 url,然后在您的主题中使用该样式表。
      猜你喜欢
      • 2013-01-04
      • 2012-08-19
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      相关资源
      最近更新 更多