在 CodePen 上进行一些跨浏览器探查时,我注意到代码编辑器的字体在 WebKit 浏览器(Safari 和 Chrome)中明显比 Firefox 或 Opera 中更暗淡、更弱。 我很喜欢 Chrome,知道我会花很多时间看着看起来质量较差的文本,这让我感到难过,所以我开始寻找解决方案。
这是“之前”的照片

过去有 文本阴影技巧,但现在它不再起作用,实际上是用于使文本变薄,而不是更粗。 然后有 -webkit-font-smoothing 内容 可以玩。 但在那里没有骰子。 none 值看起来很糟糕,在这种情况下,antialiased 和 subpixel-antialiased 之间没有视觉差异。
答案照常出现在 Twitter 上!
@chriscoyier 试试 -webkit-text-stroke: 0.35px
— Kevin Ennis (@kevincennis) 2012 年 7 月 11 日
将此添加到文本中显着地增强了文本。 仍然没有 Opera 或 Firefox 那么明亮和锐利,但更接近了。 由于该效果使用 -webkit- 供应商前缀应用,所以我无需担心它会影响其他浏览器。

我很自豪,这将解决问题,一切都将变得美好。 当然,我醒来收到这样的邮件
嘿,
我在 Chrome 上看到了文本的更改,它真的让你头痛,太模糊了。
啊,互联网。 你能做什么呢?
更新
来自此的反馈大约是 50/50。 有些人讨厌“伪粗体”(我认为这并不真正是伪粗体,但我理解),有些人更喜欢细文本,有些人更喜欢尝试亮度。
这里有内幕。 最上面的屏幕截图中的细文本并不是“这就是 WebKit 的工作方式”的结果,而是因为文本同一父元素中的一个元素应用了 CSS 3D 变换。 即,transform: translate3d(0, 0, 0)。 这里最大的讽刺是,该代码是为了**防止**文本在 CSS 过渡发生时出现“变薄”的外观而应用的,这是 CSS 过渡的一个奇怪的副作用。 虽然它奏效了,但也导致编辑器中的文本一直都呈现出“变薄”的外观。
因此,在 CodePen 中,我已经删除了 -webkit-text-stroke,因此文本渲染看起来好多了,并且与 Opera 和 Firefox 更具可比性。 然后,我更仔细地将 3D 变换修复应用于过渡期间需要帮助的其他元素。
做一个投票! 我投票支持更亮的文本 :)
如果/何时 WebKit 修复字体渲染,您的文本将看起来格外粗。
不过,我必须同意匿名发件人的意见:我更喜欢较浅的文本。 我发现它更容易阅读。
嗯,我以前更喜欢它。 如果你在真实的网站上看到它,而不是在屏幕截图中,它并不暗淡,而是更薄。 这样看起来好多了。 更干净,更简洁。 此外,由于这些原因,它更易于阅读!
是的,我今天也注意到 Chrome/Windows 上的文本有点模糊
我现在自己比较了浏览器。 这是没有你的 hack 的网站: http://f.cl.ly/items/3n1z1Q1Y2K1u001X1K2W/Bildschirmfoto%202012-07-11%20um%2017.31.42.png
它看起来更像你的 hack 启用了。 你的浏览器怎么了? :-)
不错! 现在我可以尝试在 Isotope.js 上重新启用图形加速,而无需担心细字体。
感谢 Chris! (当然也要感谢 Kevin)
是的,这是一种文本描边可能始终是一个好主意的情况。
对我来说,黑色背景上的浅色通常没问题,但我通常会在深色背景上的白色使用文本阴影,以帮助提高对比度并使它“弹出”一点。 Kevin Ennis 建议的
-webkit-text-stroke: 0.35px
似乎是一种不错的微妙方法
读完这个后我哈哈大笑 :D
提高文本可读性的真正有趣的方法。 然而,我确认文本的模糊。
我通常使用
-webkit-font-smoothing: antialiased;
并且,作为补充,我也添加了这个
text-rendering: optimizeLegibility;
我尝试了这两件事,但它们都没有影响细文本。 事实证明,伪 3D 变换正在影响文本,请查看上面的更新。
您能告诉我您在 Firefox 中使用的字体是什么吗?
文本不仅看起来更细,而且更窄。 看起来几乎像不同的字体。 实际上,您屏幕截图中 Chrome 中使用的代码字体绝对不同。
我投票支持不要搞乱字体渲染,我认为这是我们必须处理的怪异事物之一,并希望浏览器供应商对其进行改进。
我更喜欢它稍微暗淡一点。 更容易阅读 : )
这是不是那些您可能需要担心 Opera 支持 WebKit 前缀*并且*文本最初具有所需粗细程度的情况之一?
这是 Windows 上 Chrome 的有/没有对比
http://bit.ly/MkWAjN
绝对更模糊,这说明了在 Windows 上,文本通常是超级反锯齿的。
哎呀。 我会说它们都非常糟糕,难以选择。 幸运的是,您无需这样做,请查看上面的更新。
跟我说吧。 每次我向我的设计师展示他们在 Windows 机器上精心选择的字体发生了什么时,我都会让他们心碎。 唉。
绝对是 Windows 的问题,因为 Chrome 使用的文本渲染 (GDI)。
Cap: http://i.imgur.com/WCQaz.png
底部与 MacOS 文本更加一致,因此对于习惯使用 OSX 方法的人来说可能看起来并不奇怪。 但在 Windows 上,当页面上其余的文本(不仅在操作系统中,而且在页面上其余的文本)以标准方式渲染时,它绝对会让人感到刺眼。
您可以在 html 标签上编写一个 win|mac|xnix 类,在进行一些操作系统检测后(http://www.javascripter.net/faq/operatin.htm)。 我很好奇是否认为这值得… 尤其是考虑到您的用户统计数据可能非常有利于 Mac 用户。
让我们知道您最终的决定!
Danny
我其实很想看看哪些操作系统访问 csstricks 最多。也许 Chris 可以告诉我们 Windows 和 Mac 的访问比例。我猜他应该有更多 Windows 用户访问他的网站,因为 Windows 的使用范围比 Mac 广泛得多。Chris?
我不知道,所以我查了一下
Windows 61.81%
Mac 27.00%
Linux 8.09%
iOS 2.25%
Android 0.59%
引用的邮件是对的。你在标题中所说的“单调”文本只是锐利、均匀加重的、清晰的抗锯齿文本。用文本描边来处理只是另一种伪粗体技术,完全破坏了 WebKit 中漂亮的锐利渲染。这就像亚像素渲染在酒吧里喝醉了,然后在你显示器上呕吐了一样。拜托,拜托,拜托,对伪粗体说“不”。
我认为伪粗体是指当你在没有提供粗体的字体上使用 font-weight: bold; 时,浏览器会接管并模拟粗体效果。现代 Webkit 甚至不允许你再这样做。(然而,它会模拟斜体)。
我不这么认为。事实证明,文本完全是“伪细化”文本,这是 WebKit 漏洞导致的,该漏洞会导致文本元素在过渡期间或靠近 3D 变换时的外观出现问题。
这似乎是渐进增强的一个完美的现实世界示例。你试图修复一件事,结果却发现你破坏了另一件事。:D lol
你有没有考虑过增加字体大小?根据我的经验,白色文字在比黑白等效文本略大时,总是更容易阅读。而且,大号字体总是比小号粗体字体更容易阅读。
另一种技巧是稍微增加行高。
你有没有 Windows 机器上结果的截图?我想知道 Windows 会如何处理描边的渲染。
哦,没事了,我刚看到上面的一条评论……该死的 Windows =/
我在我的几个网站上试过,发现深色背景才是使用它的最佳位置。
不错的帖子。非常有用的信息,可以提高文本的可读性。
我之前写过一篇关于使用这种技术的文章。我用它来模拟渲染效果不好的 Typekit 文本的抗锯齿效果。
要让整个网站都正确显示,你必须进行几个级别的设置,并进行微调,直到它们看起来正确为止。
另外,请记住,结果在 PC 上可能会有很大差异。
Owen
我发现 Firefox 在渲染文本方面做得明显比 Webkit 好,特别是在重量和字距调整方面。希望 Webkit 能改进,因为字体渲染是一个关键功能。
哇,非常出色的工作。我们可以用 CSS 做任何事情,感谢你分享你的经验。
看起来你想要的是一种半粗体的权重。我最近一直在做的是指定以下内容
font-weight: 600;
无论好坏,至少在撰写本文时,非 WebKit 浏览器只会将其渲染为粗体。只有基于 WebKit 的浏览器才能理解超过 2 种字体权重(正常和粗体)。值得一提的是,我认为 Safari 的文本渲染效果最好,其次是 Chrome。其余的就像斗牛进入瓷器店一样。例如,看看图形中面板标题中的“HTML”文本:在 Chrome 和 Safari 中完美地成比例且美观,而在 FF 和 Opera 中则严重超重。
完美的文章,在这里有效..(谢谢)
这是一个不错的解决方案,但我还没有决定是否喜欢它,特别是随着超细字体的流行。看起来这是一个很好的解决方案,可以使较厚的 H 标签看起来更平滑,因为字体在 Chrome(Windows)上总是看起来很粗糙。
我不想说难听的话,但这些截图几乎毫无价值,因为它们是带有压缩伪影的 JPEG。对于像字体渲染这样精细的东西,只有无损压缩或根本不压缩。
像魅力一样解决了 Chrome 中的像素化字体问题。谢谢。