Helvetica在Windows操作系统上显示为Arial

8
在我的网站http://helvetitee.com上,我使用以下字体堆栈:
font-family: "helvetica neue", helvetica, nimbus-sans;

Nimbus Sans(一种网络字体)是从TypeKit中引入的。

在Windows机器上,无论使用哪个浏览器,用户都会看到Arial字体。似乎Helvetica被Windows渲染为Arial而不是回退到Nimbus(它是Helvetica的克隆版本,因此比Arial更可取)。

除了OS嗅探之外,是否有其他方法可以防止这种情况?这是一个已知问题吗?Windows似乎假定显示Arial而不是Helvetica是可以接受的。


使用网络字体怎么样? - Uwe Keim
3
奇怪,我在电脑上安装了Helvetica Neue字体,但你说得对,我的所有浏览器都在呈现Arial字体。Nimbus Sans也被忽略了。 - BoltClock
2
Nimbus Sans是一种网络字体,它使用TypeKit引入。 - cavill
@MarcB 我明白。这就是为什么我们有一个字体堆栈。机器应该遵循堆栈,直到找到它已安装的字体,对吧?所以它应该读取 Helvetica Neue - 不行;Helvetica - 不行;Nimbus sans - 是的(因为它是通过 TypeKit 的 Web 字体)。然而,Windows 正在读取 Helvetica Neue 并决定用 Arial 替换它。这是一种异常行为。我不认为它会用 Arial 替换 Futura 等字体。它应该继续查找堆栈。 - cavill
2
尝试使用这个堆栈: font-family: "Helvetica Neue", Helvetica, nimbus-sans, Arial, sans-serif; (大小写可能会影响结果) - Klaas Leussink
5个回答

9
Windows会将Arial字体作为Helvetica的替代品。(具体来说是Helvetica,而不是Helvetica Neue。)一个简单的方法是声明font-family: Helvetica, Courier。在Windows平台上的浏览器将使用Arial,而不是Courier(应该这样做)。
可以通过编辑Windows注册表来更改此设置,但作为网络作者,您无法采取任何措施(除了尝试通过浏览器嗅探进行操作系统嗅探)。虽然这是一个旧问题(至少可以追溯到Windows 3),但并不广为人知。

那么将Helvetica从字体堆栈中移除能够解决问题吗?我会尝试并回报结果。 - cavill
我一直认为Helvetica在Windows中看起来不对劲,并了解到C的标志性水平大写字母,在Arial中是倾斜的。我以前不知道为什么。但我找到了你的答案,并进行了一些研究。要修复它(仅限于您的计算机),注册表键位于“HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ FontSubstitutes”。更多信息:https://technet.microsoft.com/en-us/library/cc939628.aspx - Radley Sustaire

2
是的,Windows注册表在其默认配置中将Arial替换为Helvetica,除了Opera浏览器之外的所有主要浏览器都会优先使用这种替换。因此,大多数Windows用户将看到Arial而不是Helvetica,除非在字体堆栈中Helvetica之前有以下内容:
  1. Web字体;或者
  2. 可靠地存在于Windows系统中的替代字体。在我的类似Helvetica的字体堆栈中,我建议使用Google的"Arimo" Web字体。在标准Windows字体中,Microsoft Sans Serif是Helvetica直立体的良好替代品,但对斜体则难以接受。

2

Windows系统没有这些字体,但是聪明地默认使用他们的无衬线字体,即Arial。

一个网络安全的替代方案可以是font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;

至于使用网络字体,fonts.com有Helvetica Neue 45 Light可供嵌入。


2
是的,我正在使用网络字体 - Nimbus Sans - 来解决这个问题。问题在于Windows不会继续往下查找字体堆栈 - 它会遇到Helvetica并将其呈现为Arial,而不是像应该做的那样继续往下查找到Nimbus。当Nimbus是堆栈中唯一的字体时,Windows会呈现它 - 所以这绝对是Windows选择将Helvetica呈现为Arial的问题。感谢提供fonts.com链接。我几天前在测试中实施了它,但它仍然将其呈现为Arial。 - cavill
@cavill IE9存在Adobe Type I字体的错误,这可能是一个症状吗?http://bobbyjoneswebdesign.blogspot.com/2011/12/internet-explorer-9-type-1-font-bug.html - JKirchartz
@cavill 你确定你已经正确设置了带有 EOT 版本的 Web 字体吗?也许你可以发布一下你的 @font-face 代码。 - Pointy

0

我认为这是跨浏览器和设备的最佳字体堆栈

body {
  font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
  font-weight: 300;
}

另外,使用

body {
  font-family: sans-serif
}

在你的字体堆栈之前覆盖浏览器默认设置。


0
据我所知,Windows没有安装Helvetica(或其任何成员),如果它不是已安装的字体,则无法在网站上使用。
Arial被认为是Helvetica的明显剽窃(尽管它基于Monotype Grotesque,但被认为是Helvetica的替代品),因此微软不必支付Haas Typefoundry(Helvetica家族的创作者和许可证持有人)高额的许可费用。
我的建议是尝试使用Web字体,您可以实际嵌入字体。Font Squirrel是一个很好的起点。(但请记住,未经许可嵌入Helvetica Neue技术上是违规的..)

我认为Arial字体并不是基于Helvetica Neue变体。事实上,Arial比Helvetica Neue还要早。 - BoltClock
你说得对,它是Monotype Grotesque字体,但被修改成类似于Helvetica的样式(请参见http://en.wikipedia.org/wiki/Arial#Design_characteristics)。谢谢。 - Klaas Leussink
1
谢谢您的回答,但请看一下我对@jkirchartz答案的评论(我已经在使用网络字体)。 - cavill
1
@c_kick 因为Nimbus不是真正的Helvetica,我不希望使用Helvetica(即我们大多数客户)的用户看到它。因此,它只能作为备选方案。然而 - 你是对的 - 这是Windows用户的最佳解决方案。但我只是想找出是否有办法在不进行操作系统嗅探的情况下解决这个问题。 - cavill
我明白了。试试我在你原问题下面评论的那个堆栈,我有一种感觉它与大小写敏感性有关(我以前在CSS字体声明中遇到过大小写敏感性和引号的问题)。 - Klaas Leussink
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接