Google Chrome文字阴影渲染

Google Chrome在实现CSS3文字阴影方面有一个非常烦人的缺陷。 应用文本阴影时,子像素抗锯齿function将closures。 否则,-webkit-font-smoothing将不会说服它。 粗糙的alpha通道反别名导致阴影与字母的混合,这与像素化文本一起产生一个非常丑陋的外观。 如果使用手写字体,如Monotype Corsiva http://www.newfonts.net/index.php?pa=show_font&id=130

你可以清楚地看到这个地方之一是在Twitter – http://dev.twitter.com/pages/auth 。 文本阴影用于在那里的文字大纲:在Chrome中查看页面,与FF或IE比较,你会看到它有多糟糕。

效果变得更糟糕,直到它使它完全不可读。 有关此问题的技术讨论,请访问: http : //www.google.com/support/forum/p/Chrome/thread?fid= 5d1c0f2082af0f21000483e9a516d36e& hl=zh-CN

在Chromium项目(issue 23440)中提交了一个错误。 这个bug已经有一年多的时间了,还没有分配给任何人。 谷歌的开发者看到它,认为它不是那么重要,并使其老化。 事实certificate,他们只是修复了“stream行”的错误,这种蹩脚的做法让人印象深刻! 我对Chrome非常失望! Web排版和CSS3被越来越多的人每天使用,使网站更加美丽的地方! 存在这样的问题可以减缓这种情况。

所以,需要一个公共的努力来修复这个问题。 告诉其他人,写在你的博客。 您可以访问http://code.google.com/p/chromium/issues/detail?id=23440并投票解决问题。 您可以通过点击位于左上angular的明星(某些types的Google帐户需要 – Gmail等)来实现。

为了使事情更清楚 – 我的问题有两个目标:

  1. find技术解决方法。
  2. 让Google在Chrome中解决这个问题。

我会把每一个链接张贴到关于这个问题的文章上,并将其标记为接受最好的技术解决scheme或公共努力。

@ sebastian的修复可能不适用于旧版本的Chrome。
Iron Browser(Chromium fork)v3.0.197.0下的屏幕截图:

所有被分配了阴影的-webkit-font-smoothing看起来都是一样的, -webkit-font-smoothing-webkit-text-stroke都没有效果。

相反,我已经尝试,直到我想出了这个修复: http : //jsbin.com/acalu4

tldr:在你的其他阴影之前添加一个无害的0 0 0 transparent,

已知问题:某些浏览器只能处理1个text-shadow 。 为了不影响他们(杀死他们唯一的阴影),这只能通过JavaScript应用到Chrome。

第一部分(技术解决方法):给文本一个薄的笔画。

试试这个CSS,你可能需要调整这些值来获得所需的效果。

 -webkit-font-smoothing: subpixel-antialiased; /* or antialiased; */ -webkit-text-stroke: .10pt black; /* or 0.01em might be better */ 

只有webkit浏览器(Chrome,Safari)读取它,所以它不会影响FF或IE。

在这里玩一个例子: http : //jsfiddle.net/SebastianPataneMasuelli/NfmU7/6/

我find了一个解决scheme。 它似乎在Safari 4 +,Chrome(在8.0xtesting)和Firefox 3.5中工作。

尝试一下:

 text-shadow: 0px 0px rgba(0,0,0,0.75), 0px 1px rgba(0,0,0,0.75), 1px 0px rgba(0,0,0,0.75), 0px 0px rgba(0,0,0,0.75);