您是否曾经写过这样的代码?
body {
font-family: Helvetica, Arial, Sans-Serif;
}
您可能会这样想:“Helvetica 是 最棒的字体,所以我希望首先使用它,然后是电脑上的 Arial,因为它非常接近,然后回退到任何 McSansSerif,因为一些奇怪的电脑根本没有安装正常的字体。”
事实证明,这个方法更好
body {
font-family: Sans-Serif;
}
Mac 默认情况下会使用很棒的 Helvetica。在电脑上,即使他们拥有 Helvetica,它看起来可能比 Arial 更糟糕,出于某种原因,所以这种方式他们默认情况下会使用 Arial。您仍然可以使用通用的关键词。更短、更简单、赞。
感谢 @mathias 指出 这个视频的特定部分 (29:32),Paul Irish 在这里谈论 HTML5 Boilerplate。
如果您希望扩展 Helvetica 堆栈并在可用时使用一些更好的变体,请查看这个。
只有在浏览器首选项恰好设置为那样时才成立。'sans-serif' 所说的是“使用客户端设置为默认无衬线字体的任何字体”,默认情况下可能是 Helvetica 和 Arial,也可能不是,并且可能会被用户修改。在我的 Ubuntu 机器上,最终将使用 Ubuntu 字体呈现。
'sans-serif' 值只是表示“覆盖浏览器的默认首选项,即衬线与无衬线”,它没有说明选择 Arial 而不是 Calibri 或其他任何字体。
@shoutyman:但这难道不是一件好事吗?如果我已经费心专门设置 Ubuntu 或 Gill Sans 甚至 Comic Sans 作为我的无衬线字体,那么如果网站尊重我的选择会很不错。
完全同意。更进一步说:如果您热衷于衬线字体,可以将其设置为 Georgia 或其他类似字体。如果有人出于可读性原因或纯粹的固执而设置字体,当然还有很多其他选择,例如永远不使用网站自己的字体。
不过,我的印象是,这篇文章的要点是使用“在任何给定客户端上呈现效果更好的 Helvetica/Arial”,这是一种常见的目标(例如,品牌可能会规定使用其中一种字体,另一种字体作为次佳回退),就我个人而言,我认为“font-family: sans-serif;” 不是实现此目标的正确方法。
(我认为 bfred.it 下面的策略是一个好策略。)
@Andy 如果该网站只有在使用该字体的情况下才能正常显示,则情况并非如此。
是的,甚至更多。如果您在浏览器中将其他字体设置为默认字体(例如,很棒的俄语免费字体“PT Sans”),它将显示。
如果您要从这里开始,那么我们作为网络工作者永远不应该更改链接的颜色,标题的字号或背景颜色,对吧?
完全同意。是的,网站可能旨在以某种方式显示,但如果网站只应该以一种方式显示,并且没有定制和调整的空间,难道我们不是在倒退吗?如果更改默认字体的选项毫无用处,那有什么意义呢?
我个人不会这样做,但 Sean 提出一个很好的观点。符合标准?不。如果有人设置了他们想要的回退字体,那就是他们的回退字体。
我认为这种方法很模糊,但是如果您想要正确的设置/类型的计算机和文件,那就没有问题。
从未想过这一点。我听说过 Helvetica 在电脑上呈现效果很糟糕,所以我一直使用字体堆栈“Helvetica Neue”, Arial, sans-serif;
这将在 Mac 上显示 Helvetica Neue(所有 Mac 都安装了它),并在 Windows 上显示 Arial,因为大多数电脑没有安装它。
不过,对于简单的字体堆栈,我只使用 sans-serif;
我遵循了完全相同的思路,直到我看到一位 Windows 同事安装了 Helvetica Neue。它似乎显示的是 Helvetica Neue-Condensed(或类似字体),而不是中等粗细/变体。令人失望。
从那时起,对于文本内容(排版不是为了传达除文字内容以外的意思),我默认使用 sans-serif,而对于标题,我仍然使用字体堆栈。这是一种廉价的方法,可以将富有表现力的字体保留在突出位置,同时降低了在大多数内容中出现严重问题的风险。
(当然)受众和需求各不相同。
这些年来花费在创建字体层次结构上的时间……要改掉这个习惯可真不容易!
说到这里,css-tricks 的任何人知道为什么该网站在 Chrome 和 Firefox 中看起来这么糟糕吗?字体看起来很糟糕。
默认正文字体 Myriad Pro 不是网络安全字体。我见过的最好的网络字体工具在 http://www.typetester.org。它会提供网络安全字体列表、Windows/Mac 默认字体列表,并且允许您预览不同字号/行高/字距/颜色看起来的样子。
我非常喜欢这种字体在我这里的呈现效果。(Mac,安装了 CS5 字体——顺便说一下,还安装了 Chrome)
只使用网络安全字体?这就是使用字体堆栈的全部意义所在……我认为在大多数用户都安装了 Adobe 产品的网页上使用 Myriad 很巧妙。现在,如果我们能让所有电脑都能实现漂亮的字体呈现就好了。
它是 Myriad,但通过 Typekit 提供:http://typekit.com/fonts/myriad-pro
您可以在该页面上查看浏览器的示例,了解它应该是什么样子。不知道为什么它看起来会不一样,但有可能他们或我做错了什么(对于某些浏览器/平台/版本的组合)。
在安装了 myriad pro 的 PC Vista 上看起来不太好,http://i.imgur.com/e92sz.jpg
安装了 Myriad Pro,PC,Win7,Fox4
http://image.freecy.tk/images/188_SNAG_0036.png
XP,没有安装 Myriad*,FF3:http://image.freecy.tk/images/266_ccfonthorror.png
在我这里,在 Firefox 和 Chrome 中看起来很棒。您的操作系统和浏览器版本是什么?据我了解,以及我所做的事情,通过 typekit 或谷歌 API 甚至 FontSquirrel 提供的字体通常在 Firefox 和 Chrome 中处于最佳状态,并且在其他浏览器中的视觉效果可能有所下降。我只是很好奇。
Windows XP 浏览器不会对文本进行抗锯齿处理,除非您为系统启用了 ClearType。抗锯齿功能在 IE 7 及更高版本以及 FireFox 4 中自动开启。这是使用自定义字体进行小文本处理的最大障碍。很快,这将不再是一个大问题……
对于字体呈现,您还可以尝试 CSS 命令 text-rendering…
https://mdn.org.cn/en/CSS/text-rendering
Typekit 支持中的精选语录
我确信最近看到了一些关于为什么不应该单独使用 san-serif 的内容……
无论哪种方式,它基本上都说它在某些情况下会留给一些奇怪的解释。但是,如果您不在乎,那么更简洁的代码就是更简洁的代码!
(事实上,在 Opera Mac 中快速查看了一下,看起来它回退到 Lucida Grande)
我之前没意识到我可以设置 sans-serif,它只会显示默认字体。我将在我的下一个网站项目中使用它。感谢您的提示,Chris!
我使用了 font-family: ‘Helvetica Neue’, ‘HelveticaNeue’, Arial, Helvetica, Garuda, sans-serif; 但一些使用 Windows 的客户看到所有字体都变成了粗体和斜体。
酷提示。:)
另外,“你以前写过...?” 真的吗?
已修复
我刚接触这个,但字体一直让我很沮丧。你之前的帖子要求:font-family: “HelveticaNeue-Light”, “Helvetica Neue Light”, “Helvetica Neue”, Helvetica, Arial, “Lucida Grande”, sans-serif; ; 现在,这似乎说“砍掉 Helvetica 和 Arial,只使用 sans-serif”。那么,这是否意味着在第一个代码中省略 Helvetica 和 Arial,保留其他部分?“Lucida Grande”怎么样?我注意到它在 Helvetica 和 Arial 后面,但是,它在所有机器类型上仍然比简单的“sans-serif”更好吗?
抱歉这么笨,但是:我还注意到你要求大小为“300”——我希望我的网站具有最佳的可读性,但我的电脑上没有安装所有字体,所以我无法自己查看。这些字体的大小都等效吗?我注意到许多字体需要调整大小以确保可读性。
感谢你的帮助
虽然更短可能更容易,并且了解浏览器如何处理事物也很好。但我真的认为明确胜过简短易懂的隐式方法。你也不能保证浏览器将来会默认使用相同的值。
[...]它可能看起来比 Arial 还糟糕[...]
明白了,谢谢
如果 PC 用户安装了 Helvetica 会怎么样?我用的是 Mac,但有些设计师用的是 Windows。所以,这是唯一正确的方式
font-family: “Neue Helvetica”,”Helvetica Neue”,helvetica, arial, sans-serif;
我已经这样做了很多年了,自从我不再追求跨浏览器的像素完美之后,我开始专注于创建灵活的页面,以适应浏览器的差异。放弃完全针对特定字体是一个合乎逻辑的结论。
当我看到 Paul Irish 得出相同的结论时,我非常高兴...
另外,只是澄清一下之前评论中的一点,Shoutyman 似乎暗示 sans-serif 会针对浏览器的默认、无样式字体。事实并非如此,如果你的默认字体是 Times New Roman,sans-serif 会用 Arial(或 Helvetica,或其他字体)覆盖它。
如果我误解了原始评论,我表示歉意。
它“覆盖了浏览器对 serif 和 sans-serif 的默认偏好”,但选择了默认的 sans-serif——由于 Times 是 serif,因此会被覆盖
关于主题:我相信,如果你想要确切的外观,设置特定字体仍然是最好的选择——特别是由于默认设置将来可能存在差异(另外,孩子们会把他们妈妈的默认设置改为 Comic Sans ;)
我从你的帖子和上面的评论中得到了很多技巧。谢谢
不错的文章,内容很好
好点!但‘Helvetica Neue’ 比 ‘Helvetica’ 好看,所以我更喜欢
font-family: ‘Helvetica Neue’, sans-serif;
这将给你:在 Mac 上是 ‘Helvetica Neue’, Helvetica,在 PC 上是 ‘Helvetica Neue’, Arial。
我不关心少数人更改默认浏览器字体设置,因为比例不到 1%。
Helvetica Neue 在很多浏览器上都没有按照预期的方式渲染,包括 XP 上的 Chrome(有时)。总之,我认为它是你项目中最糟糕的字体选择之一。
有时重新思考一些你“只是”做的一些默认技巧是件好事。感谢你分享这一点。
@claude 当我们在 Windows XP 机器上进行测试时遇到了这个问题。我们从未找到原因。
这里还有一个讨论字体堆栈的有用链接
http://unitinteractive.com/blog/2008/06/26/better-css-font-stacks/
将你的样式表编写成依赖于 Mac 或 Windows 上的默认设置太冒险了,因为这些默认设置可能会在将来更改。
哥们,我甚至找不到你网站上的导航——你为什么给人们提供技巧?
默认设置可能会改变,但这是规避风险的做法。默认环境字体因其无表现力、始终如一的可读输出而被选择。如果需要特定的 x 高度或每 em 像素,默认字体可能根本不会参与讨论——这是一种完全合理的做法,只是不同的做法,会因项目而异。
虽然这对于减少字体堆栈和赋予用户控制权很有用,但我确实想知道你如何检查网站在各种平台和浏览器组合上的可用性,以确保字体可读且网站可用?
仅仅因为某人可以将他们的默认字体设置为 Comic Sans,并不意味着他们应该这样做。显然,某些用户可能从使用特定的字体中获益,但字体是品牌和网站整体视觉美感的组成部分。例如,如果新闻网站 bbc.co.uk 上的一篇报道使用 Comic Sans 设置,它还会保持相同的严肃性吗?它还可读吗?我认为不会。
虽然我认为网络是一种了不起的变革性的交流形式,它让所有人(用户和企业)平等,但像这样的讨论让我同意 Sean 的评论,即改变颜色和字体大小,并认为我们也可能消除所有样式。
为了节省半行代码,我认为你最好定义一个实际的字体堆栈。
排版是网页设计中的一个重要组成部分,我们花了好几个小时来调整设计周围的其他部分。将其留作未知数对我来说有点太可怕了!
可能是一个愚蠢的问题,但无论如何
俄罗斯语、中文等设置如何工作——假设他们可能将字体设置为浏览器默认设置...
我们俄罗斯人使用 Arial 作为浏览器的默认字体,但我将其更改为 Calibri。
嗯,我遇到了一个关于 Helvetica 的 bug(在我的 PC 上)。所有将 Heletica Neue 作为首选的 CSS 网站看起来都很丑陋。它选择了超级粗体斜体的 HN 字体类型... 任何人都遇到过同样的“bug”或者有解决方案吗?
Wikipedia 是我唯一看到使用它的网站。大多数情况下,最好让用户决定他们想使用什么字体,而不是强迫使用 Arial。
哈哈,我在视频上也看到了。我当时想“天才!”
感谢你的分享,这是一个全新的想法,我更喜欢保持一切一致,这对品牌推广很有用。
我已经使用它一段时间了,它很好。:)
我也更喜欢使用短格式。我真的很不喜欢 Helvetica 在 Windows XP 上的渲染方式。如果我自己的网站在 Mac 上使用 Helvetica 渲染得很好,在 PC 上使用 Arial 渲染得稍微差一点,那我就很满意了。
我建议使用 CSS 重置。
嗯,我很好奇,今天早上仅仅是这一个讨论就消耗了多少总电量。所有的小电脑都在欢快地嗡嗡作响,所有的小手指都在敲打着,所有的小消费者都在网络上大声喊着,“我我我!看看我!这是我‘认为’的!这是我‘相信’的!”当地球在它自己的网络泡沫的可怕粘性涂层下慢慢窒息。
我想我在这个讨论中有点晚了,但我不能不回复。如果你不想为了解决 IE 中的字体渲染问题而放弃对字体堆栈的控制,有一个更好的解决方案:使用 IE 条件注释。
首先,使用包含 Helvetica 的第一个字体堆栈提供你的样式表,然后使用
<!--[if IE]><link type="stylesheet" href="ie.css"><![endif]-->
为 IE 提供一个自定义样式表,该样式表会将字体堆栈覆盖为首先使用 Arial。这样,除了 IE 用户之外,每个人都会得到 Helvetica,并且你的字体更有可能看起来符合你的预期。