Ubuntu 9.04 Jaunty 字体微调的问题

2009年5月25日星期一

Tagged_by_kmc Linux, font, hinting, freetype, gdi++

1. 问题的出现——Linux Freetype hinting

用上了Ubuntu 9.04,第一感觉就是“字体边缘怎么有点彩色啊?”,原来我装的是8.04,当时觉得除了Firefox每夜版之外,字体是没有什么问题的。我用的是Myriad Web Pro。后来就有很久没有用过Linux,这期间装上了gdi++,体验了灰阶渲染的美丽。Ubuntu 9.04出来后,装上用了一小会,就觉得眼睛痛。

事实上在网上看到Linux的字体hinting使得字体边缘呈现出彩色是伤眼睛的元凶。大家可以试一下,在命令行输入xmag回车,鼠标附近会出现一个小框框闪烁着,可以点击它生成一个截图。从这个放大的截图上,你会看到字体笔划边上彩色的边际。

下面是我的测试环境:
没有手动修改.fonts.conf或相关文件。在外观-字体中的设置是:次像素平滑-次像素-轻微,顺序是rgb,事实上就是装好Ubuntu的默认设置

在文件管理器中截图,文本是/home/km,看放大效果截图,如果字体边上出现彩色的边缘,就是我说的“让眼睛累”的效果,但我发现Segoe UI在微调中等的时候没有彩色边缘。

2. 对比gdi++效果

下面是gdi++的效果(LCD显示器)。对比gdi++和Linux可以发现,彩色不是关键,关键是彩色的成份,如果用来微调附加的彩色比主笔划还多的话(像小写 m),就喧宾夺主了。


另外我也尝试了很多fontconfig文件,现在基本上已经弄明白font config的语法了,会给字体单独设置微调等等。不得不说的是,如果英文不打开hinting,只有少数几种设计得非常好的字体,如Segoe UI可以让人看得舒服,其余字体都是虚的;可是一旦打开微调,从hintnone到hintfull,几乎都会出现彩色过多,字体主笔划不够粗的尴尬。(这里只看hinting的设置,autohint始终是false,Antialias始终true)。而Linux的fontconfig有没有办法像gdi++那样用一个saturation=xx的参数来调整主笔划的粗细呢?——显然是没有。

中文方面也差不多,网上很多地方说要单独关闭中文的hinting,只用灰度,但如果这样做的话,字体很虚,打开hinting的问题是笔划可能重叠,但是这不比彩色边缘更影响阅读。

3.问题的暂时解决——纯灰度微调(gray-scale hinting)

找到了一个还可以的解决办法:字体用Lihei Pro + Segoe UI. 渲染方式选“最佳对比”(也就相当于平滑=灰度,微调=完全),这样英文和中文都没有彩色了。

0 个评论: