Google Chrome中是否有“字体平滑”?
我正在使用谷歌网页字体,他们罚款超大字号,但在18px,他们看起来很糟糕。 我已经在这里和那里看到,有字体平滑的解决scheme,但我没有find任何解释清楚的地方,我发现的几个片段根本不工作。
我的h4
在几乎所有浏览器上看起来都很糟糕,但是Chrome是最糟糕的。 在Chrome中,几乎所有的字体看起来都很糟糕。
任何人都可以指向正确的方向吗? 也许你知道一个解释清楚的资源? 谢谢!
示例屏幕#1
该屏幕截图显示了https://www.dartlang.org/的主页,这是一种由Google制作的编程语言(因此我们可以暗示该网站也是由Google构build的)并使用Google Webfonts。
屏幕截图显示了左侧的Google Chrome浏览器,右侧的Firefox / Internet Explorer浏览器:
示例屏幕#2
此屏幕截图使用Typekit提供的网页字体显示Adobe.com上的产品信息页面。 Adobe和Typekit是字体的专业人士。
屏幕截图显示了右侧的Google Chrome浏览器,左侧是Firefox / Internet Explorer:
问题的状态,2014年6月:修复了Chrome 37
最后,Chrome小组将会发布一个针对此问题的修复程序 ,Chrome 37将于2014年7月发布。请参阅当前稳定版Chrome 35和最新Chrome 37(早期开发预览版)的示例比较:
问题的现状,2013年12月
1.)通过@import
, <link href=
或者google的webfont.js
加载字体时没有合适的解决scheme。 问题在于,Chrome只是简单地请求来自Google API的.woff文件。 令人惊讶的是所有其他的字体文件types渲染漂亮。 但是,有一些CSS技巧会使渲染的字体“平滑”一些,你会在这个答案中find更深层的解决方法。
2.)有一个真正的解决scheme,当自承载的字体,由Jaime费尔南德斯在这个Stackoverflow页面的另一个答案,通过加载Web字体以特殊的顺序修复了这个问题。 我只想复制他的优秀答案感觉不好,所以请在那里看看。 还有一个(未经validation的)解决scheme,build议只使用TTF / OTF字体,因为几乎所有的浏览器都支持这种字体。
3.)Google Chrome开发者团队正在处理这个问题。 由于渲染引擎有几个巨大的变化,显然有一些进展。
我已经写了一个关于这个问题的大型博客文章,请随时看看: 如何修复Google Chrome中丑陋的字体渲染
可重现的例子
看看今天在Chrome 29中最初的问题的例子:
正面的例子:
左:Firefox 23,右:Chrome 29
正面的例子:
顶部:Firefox 23,底部:Chrome 29
负例:铬30
负例:铬29
解
使用-webkit-text-stroke修复上述屏幕截图:
第一行是默认的,第二行有:
-webkit-text-stroke: 0.3px;
第三排有:
-webkit-text-stroke: 0.6px;
所以,修复这些字体的方法就是简单的给他们
-webkit-text-stroke: 0.Xpx;
或RGBa语法(由nezroy,在评论中find!谢谢!)
-webkit-text-stroke: 1px rgba(0,0,0,0.1)
还有一个过时的可能性 :给文本一个简单的(假的)阴影:
text-shadow: #fff 0px 1px 1px;
RGBa解决scheme(可在Jasper Espejo的博客中find):
text-shadow: 0 0 1px rgba(51,51,51,0.2);
我做了一个博客文章:
如果你想在这个问题上进行更新,请查看相应的博客文章: 如何修复谷歌浏览器中丑陋的字体渲染 。 如果有消息,我会发布消息。
我原来的答案是:
这是谷歌浏览器中的一个大错误,谷歌浏览器小组确实知道这一点,请看这里的官方错误报告。 目前,在2013年5月,即使在报告错误11个月之后,也没有解决。 这是一个奇怪的事情,唯一的浏览器,谷歌Webfonts搞砸是谷歌自己的浏览器Chrome(!)。 但是有一个简单的解决方法可以解决问题,请参阅下面的解决scheme。
来自Google Chrome开发团队的声明,2013年5月
在bug报告中的官方声明评论:
我们的Windows字体渲染正在积极进行中。 …我们希望在开发者可以开始玩的一个或两个里程碑内有一些东西。 一如既往地,稳定的速度有多快,我们可以根除和消除任何回归。
我也有同样的问题,我在Sam Goddard这个职位上find了解决办法,
解决scheme是如何定义对字体的调用两次 。 首先,build议使用所有的浏览器,并且在特定的媒体查询之后仅针对Chrome进行特定的调用后:
@font-face { font-family: 'chunk-webfont'; src: url('../../includes/fonts/chunk-webfont.eot'); src: url('../../includes/fonts/chunk-webfont.eot?#iefix') format('eot'), url('../../includes/fonts/chunk-webfont.woff') format('woff'), url('../../includes/fonts/chunk-webfont.ttf') format('truetype'), url('../../includes/fonts/chunk-webfont.svg') format('svg'); font-weight: normal; font-style: normal; } @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'chunk-webfont'; src: url('../../includes/fonts/chunk-webfont.svg') format('svg'); } }
使用这种方法,字体将在所有浏览器中呈现良好。 我发现唯一的负面点是字体文件也被下载两次。
您可以在我的页面中find这篇文章的西class牙文版本
Chrome浏览器不会呈现像Firefox或任何其他浏览器一样的字体。 只有在Windows上运行的Chrome通常是一个问题。 如果要使字体平滑,请使用像这样的yer h4
标签上的-webkit-font-smoothing
属性。
h4 { -webkit-font-smoothing: antialiased; }
你也可以使用亚subpixel-antialiased
,这会给你不同types的平滑(使文本有点模糊/阴影)。 但是,您将需要夜间版本来查看效果。 您可以在这里了解更多关于字体平滑的信息 。
好的,你可以简单地使用它
-webkit-text-stroke-width: .7px; -webkit-text-stroke-color: #34343b; -webkit-font-smoothing:antialiased;
确保你的文本颜色和上面的文本笔画宽度必须相同,就是这样。
我会说,在这之前, 这不会总是有效的 ,我已经testing这与sans-serif
字体和外部字体,如open sans
有时,当你使用巨大的字体,尝试接近font-size:49px
和上
这是一个大小为48px( font-size:48px;
在包含文本的元素中)的标题文本。
但是,如果你把48px改为font-size:49px;
(和50px,60px,80px等),会发生一些有趣的事情
文本自动变得平滑,看起来非常好
另一面…
如果你正在寻找小字体,你可以试试这个,但不是很有效。
对于文本的父项,只需应用下一个CSS属性: -webkit-backface-visibility: hidden;
你可以改变这样的东西:
对此:
(字体是Kreon
)
考虑到当你不把这个属性, -webkit-backface-visibility: visible;
是inheritance
但要小心 ,这种做法不会给出总是好的结果,如果你仔细看,铬只是使文本看起来有点模糊。
另一个有趣的事实
-webkit-backface-visibility: hidden;
当你在Chrome中转换文本(使用-webkit-transform
属性,包括旋转,倾斜等)
没有-webkit-backface-visibility: hidden;
使用-webkit-backface-visibility: hidden;
那么,我不知道为什么这种做法有效,但它对我来说。 对不起,我奇怪的英语。