所有 Windows 浏览器的@font-face 问题

Posted

技术标签:

【中文标题】所有 Windows 浏览器的@font-face 问题【英文标题】:@font-face issues with ALL Windows browsers 【发布时间】:2011-09-23 14:15:47 【问题描述】:

编辑: 谢谢大家!问题似乎解决了;我认为这与字体的路径有关,并为浏览器提供足够的替代字体类型以供访问。我最终使用了 fontsquirrel.com 和 Paul Irish 的 @font-face 的防弹语法来让一切运行起来。 :)


我正在尝试在我的网站上使用@font-face,它可以在我所有的 Mac 浏览器(Firefox、Safari、Chrome)上完美运行。但我发现 Windows 浏览器都没有显示字体。

这不是浏览器版本问题:即使使用 FF5.0 和 Chrome 12.x 也无法使用。

这不是服务器端问题:我通过上传到两个不同的服务器对其进行了测试,两者都表现出相同的行为。

不是 Windows 版本问题:我在 WinXP 和 Win7 上测试过。

这不是一个小的“新字体看起来如何”问题:字体只是没有显示出来。

另外,奇怪的是:我尝试使用 Wine 在我的 Mac 上安装 Windows Firefox4,然后运行它,它运行良好!但是在实际 Windows 上运行的 Firefox 4 不会使用这些字体。这是否意味着正在发生的任何事情都是由操作系统检测触发的?

对这里可能发生的事情有什么想法吗?


编辑:我正在使用以下内容:

@font-face 
     font-family:"Name", src:url("./fonts/FontName.ttf") format("truetype"); 
 

并尝试过语法的变体,例如:

@font-face 
     font-family:Name, src:url(fonts/FontName.ttf) format("truetype"); 

上述两种语法在 Mac 上都能正确呈现,但在 Windows 上却不行。

【问题讨论】:

这不是 html5 的问题,请停止这样标记。 您使用的是什么字体文件类型? ttf,暂时。我知道这不是普遍支持的,但它应该大部分时间都可以工作,不是吗?没有浏览器,没有时间?尤其是当相同的浏览器在 MacOS X 上正常显示时? 我假设您已经测试过字体本身确实可以在 Windows 中工作 - 总有一个外部机会它是 Mac 可以处理但 Windows 不能处理的损坏的字体文件。 @Shauna:我编辑 [html5][css3] 问题只是为了将它们从我的反对票中拯救出来,这通常让我很恼火。令人作呕的无知。 【参考方案1】:

我想知道你的src url 是否窒息。

将此src:url("./fonts/FontName.ttf") 更改为此src:url("../fonts/FontName.ttf")(添加另一个句点)。

或者您可以尝试不带句点:src:url("/fonts/FontName.ttf")

或者把它放在 CSS 文件夹中并完全删除路径。

您也可以尝试使用单引号 ' 而不是 "

【讨论】:

试过没有句号,用单引号 - 没用;将尝试使用“../”并将其放在同一文件夹中。【参考方案2】:

这不是正确的语法:

@font-face 
     font-family:"Name", src:url("./fonts/FontName.ttf") format("truetype"); 

使用分号代替逗号,如下所示:

@font-face 
     font-family: "Name";
     src: url("./fonts/FontName.ttf") format("truetype"); 

但你可以考虑使用 Paul Irish 的 Bulletproof @font-face 语法:http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/

【讨论】:

好吧,我确实是从分号开始的,但事实证明,由于某种原因(即使在 Mac 上,当然在 Windows 上也是如此),Firefox 被淘汰了。使用逗号似乎可以解决这个问题,所以这就是现在的内容。我也不知道为什么会这样! 我使用的是 Mac,而 Firefox 与(有效的)分号语法完美配合。您是否尝试过其他字体文件?也许文件本身已损坏。

以上是关于所有 Windows 浏览器的@font-face 问题的主要内容,如果未能解决你的问题,请参考以下文章

@font-face - 如何让它在所有浏览器上工作

@font-face 使用过程

@font-face 真的可以强制自定义字体显示并覆盖用户的选择吗?

如何防止@font-face 使用本地文件而不是服务器文件?

@font-face 是不是适用于电子邮件模板?

为啥这个@font-face 代码在 Firefox 3.6 中不起作用?