在过去的日子里(即火狐浏览器的版本还是个位数的时候),字体的渲染在Mozilla的浏览器上是最好的。我记得我曾将Firefox的抗锯齿功能与新出炉的Chrome浏览器进行过比较:两者的差别很大。
随着时间的推移,我们都知道发生了什么:大多数网络开发人员发现自己使用Chrome作为他们工作的主要浏览器,这正是发生在我身上的事情。不知何故,字体渲染的问题被忽略了。
快进到今天:我启动了火狐浏览器来检查我的博客的渲染情况,惊喜的是:我所有的主体文字都是假 粗体。我试过经典的font-weight: normal 和opacity: 0.99 ,但没有成功。
经过一番摸索,我发现有一个特殊的CSS属性可以解决这个问题,即:text-stroke 。具有讽刺意味的是,:引用这个属性的文章试图复制一个完全相反的结果,即让文本在Webkit浏览器中呈现出一种类似于Firefox的粗体风格。
在Chrome浏览器中对该属性稍作处理,就可以很容易地用text-stroke: 0.35px 来复制FF的渲染风格,通过将其设置为0px ,我们实际上是重置了它,因此在FF中使用同样的属性也会重置其渲染效果。遗憾的是,正如你在caniuse的这个可爱的表格中看到的那样, Firefox和Opera不支持它,好吧,Opera采用了Webkit的方式,它很快就会支持它。
那IE浏览器呢?确实是个好问题!由于IE10已经推出了一段时间,我更新了我的旧版本9(当然需要重启)并启动了它。结果是:可怕的文本渲染和非常迅捷的体验。
我可能很快会在Linux和OS X上做一些测试(这些都是在Windows上做的),在那里我希望/应该会得到更一致的结果。
还有:
css
-webkit-font-smoothing: none;
-webkit-font-smoothing: antialiased;
-webkit-font-smoothing: subpixel-antialiased;
然而,它似乎并没有什么作用。
似乎在Windows平台下的字体渲染根本不一致,我估计其中一些问题也是由于硬件加速的实现。我真的不喜欢Firefox通过CSS@font-face 属性渲染字体的方式(是的,Verb字体是为网络优化的)。
这个问题在使用字体大小在16~32像素的范围内时,明显可见。在较小的尺寸上,这种效果实际上是有用的,因为它使文本更容易阅读。
更新 №1
对于Firefox来说,有一个简单的修复方法:检测是通过JavaScript完成的,它只是给body元素添加了一个类,然后我们就可以做:
css
.firefox_is_bad section p { opacity: 0.75; }
这只是一个笑话,我仍然喜欢Mozilla的浏览器。
用于轻松检测Firefox的代码:
coffeescript
is_firefox: ->
if window.mozInnerScreenX is undefined then false else true
更新 №2
在OS X上的状态 : 同样的问题,然而与win平台相比,本地抗锯齿的效果要好一些。
-webkit-font-smoothing css属性似乎在Chrome中起作用,渲染看起来像。
人们可以清楚地看到,使用-webkit-font-smoothing: antialiased; ,文本的渲染效果最好,不知为何,我一直以为subpixel抗锯齿的渲染效果会更好。
希望这个问题能在某个时候得到解决。