+ -
当前位置:首页 → 问答吧 → cairo 1.1.10 ebuild + ClearType 补丁,矢量字体边缘更平滑

cairo 1.1.10 ebuild + ClearType 补丁,矢量字体边缘更平滑

时间:2006-06-20

来源:互联网

关于ClearType详情见http://en.wikipedia.org/wiki/ClearType
thx to sunmoon1997
这里有图
http://groups.google.com/group/gento...eda8800ff9c271
如果你没有xgl-coffee overlay, 那么你需要附件里的git.eclass,把它放到你overlay目录下的eclass目录里,比如/usr/local/portage/eclass

如果从cairo 1.1.6开始,你经历过simsun缺字的现象
在装过这个版本之后,请尝试不要再对simsun禁用antialias,也就是说如果之前是false的,请注释掉。
我这里这样做过之后,就不再缺字了
不过,使用libXft的程序,比如qt程序里simsun会发虚,所以这个还不是最终解决办法。
上传的附件
cairo.tar.bz2 (5.9 KB, 51 次查看)
git.eclass.txt (3.6 KB, 39 次查看)

作者: zhllg   发布时间: 2006-06-20

very good,
received the cleartype's patch from sunmoon last night, but didn't apply them to cairo 1.1.6 which I currently used.


try this tonight

作者: younker   发布时间: 2006-06-20

代码:
$ sudo emerge -uDNpv world

These are the packages that would be merged, in order:

Calculating world dependencies /
!!! ERROR: x11-libs/cairo-1.1.10_alpha20060620 failed.
Call stack:
 ebuild.sh, line 1448: Called source '/usr/local/portage/chinese-overlay-zhllg/x11-libs/cairo/cairo-1.1.10_alpha20060620.ebuild'
 cairo-1.1.10_alpha20060620.ebuild, line 7: Called inherit 'git' 'eutils' 'autotools'
 ebuild.sh, line 1183: Called die

!!! git.eclass could not be found by inherit()
!!! If you need support, post the topmost build error, and the call stack if relevant.


aux_get(): (0) Error in x11-libs/cairo-1.1.10_alpha20060620 ebuild. (1)
 Check for syntax error or corruption in the ebuild. (--debug)

作者: 食古不化   发布时间: 2006-06-20

楼主改得挺快,谢谢!

作者: 食古不化   发布时间: 2006-06-20

一个较新的git.eclass,显示信息更多。
代码:
>>> Unpacking source...
 * git update start -->
 * repository: git://git.cairographics.org/git/cairo
Unpacking 25 objects
 100% (25/25) done
* refs/heads/master: fast forward to branch 'master' of git://git.cairographics.org/git/cairo
 from 72e7667ed904b93475d7e4540778c498aa781cdf to bb11980f14560ea16174c6531678b9b7a623f813
 src/cairo-output-stream.c | 48 +++++++++++++++++++++++++++++---------------
 src/cairo-pdf-surface.c | 29 ++++-----------------------
 src/cairo-ps-surface.c | 13 ++----------
 test/cairo-test.c | 15 +++++++++++++-
 test/fallback-resolution.c | 2 --
 5 files changed, 52 insertions(+), 55 deletions(-)
 * local clone: /usr/portage/distfiles/git-src/cairo
 * committish: master

>>> Source unpacked.
上传的附件
git.eclass.tar.bz2 (2.5 KB, 11 次查看)

作者: midx   发布时间: 2006-06-21

直接 git 下来,patch,再 configure,最后 make && make install,搞定。效果很好,昨天试过了。:)。。

作者: 晨想   发布时间: 2006-06-21

不错 不错!
不过如果之前有/usr/portage/distfiles/git-src/cairo的话,要先删掉这个目录
引用:
作者: midx
一个较新的git.eclass,显示信息更多。
代码:
>>> Unpacking source...
 * git update start -->
 * repository: git://git.cairographics.org/git/cairo
Unpacking 25 objects
 100% (25/25) done
* refs/heads/master: fast forward to branch 'master' of git://git.cairographics.org/git/cairo
 from 72e7667ed904b93475d7e4540778c498aa781cdf to bb11980f14560ea16174c6531678b9b7a623f813
 src/cairo-output-stream.c | 48 +++++++++++++++++++++++++++++---------------
 src/cairo-pdf-surface.c | 29 ++++-----------------------
 src/cairo-ps-surface.c | 13 ++----------
 test/cairo-test.c | 15 +++++++++++++-
 test/fallback-resolution.c | 2 --
 5 files changed, 52 insertions(+), 55 deletions(-)
 * local clone: /usr/portage/distfiles/git-src/cairo
 * committish: master

>>> Source unpacked.

作者: zhllg   发布时间: 2006-06-21

似乎只是英文字体有点分别。不过我倒是觉得no_cleartype那张图字体更清晰。

作者: kohno   发布时间: 2006-06-21

中文大家用的都是内嵌点阵了吧
ClearType是针对矢量字体的,英文一般都是矢量的

作者: zhllg   发布时间: 2006-06-21

我的缺字问题似乎解决了
看第一贴

作者: zhllg   发布时间: 2006-06-21

引用:
作者: kohno
似乎只是英文字体有点分别。不过我倒是觉得no_cleartype那张图字体更清晰。
呵呵,我也觉得是,不知道cleartype好在哪里

作者: arping   发布时间: 2006-06-22

楼主的两张截图分别是Grayscale Smoothing和Subpixel-ClearType下的情况,而ClearType是相对于传统的Subpixel的改进。客观地说,后两者比较才有实际意义。

作者: midx   发布时间: 2006-06-23

同意 midx 的说法。

这两张图看起来:
如果用的是 linux 自带字体
前一张是可能是 antialias + autohint 的效果, 没开 subpixel,用的是 Grayscale
后一张可能是 antialias + subpixel + autohint,因为子像素原理,放大后边缘呈现彩色状。

截图质量有点差,用了 jpg,效果基本都看不出来了 ,最好截成 png 的。而且最好比较一下小字下的效果。

我觉得 MS 的 ClearType 就是 antialias + subpixel,给它换了个好听的名字,可能在算法上更先进一些。

我想问一下该补丁和系统本身带的 AA + subpixel 比较,具体做了哪些方面的改进,谢谢!

顺便传张图,抱歉用的是 vista 字体,用过类似一个 subpixel 补丁,开 hinting + AA + subpixel
上传的图像
segoe-subpixel.png (117.6 KB, 90 次查看)
segoe-subpixel-2.png (150.6 KB, 88 次查看)

作者: quanliking   发布时间: 2006-08-19

我用Segoe UI作的英文显示,打开AA的效果在非粗体下还凑合,粗体的就很难看了……边缘非常模糊……不知道这个用了有没有改善……

作者: Freesnake   发布时间: 2006-08-19

引用:
作者: Freesnake
我用Segoe UI作的英文显示,打开AA的效果在非粗体下还凑合,粗体的就很难看了……边缘非常模糊……不知道这个用了有没有改善……
我上面的截图就是 segoe ui 字体。

作者: quanliking   发布时间: 2006-08-19

引用:
作者: quanliking
同意 midx 的说法。

这两张图看起来:
如果用的是 linux 自带字体
前一张是可能是 antialias + autohint 的效果, 没开 subpixel,用的是 Grayscale
后一张可能是 antialias + subpixel + autohint,因为子像素原理,放大后边缘呈现彩色状。

截图质量有点差,用了 jpg,效果基本都看不出来了 ,最好截成 png 的。而且最好比较一下小字下的效果。

我觉得 MS 的 ClearType 就是 antialias + subpixel,给它换了个好听的名字,可能在算法上更先进一些。

我想问一下该补丁和系统本身带的 AA + subpixel 比较,具体做了哪些方面的改进,谢谢!

顺便传张图,抱歉用的是 vista 字体,用过类似一个 subpixel 补丁,开 hinting + AA + subpixel
改进:subpixel之后的字体彩色边缘问题....记得我在debian版说过一次?

这个patch需要和libXft的合用,单打libXft的patch就会对QT程序有效果了。

作者: lucida   发布时间: 2006-08-19

比我这里的好太多了啦……字体设置的技术太高深了……

作者: Freesnake   发布时间: 2006-08-19

引用:
作者: quanliking
我觉得 MS 的 ClearType 就是 antialias + subpixel,给它换了个好听的名字,可能在算法上更先进一些。

我想问一下该补丁和系统本身带的 AA + subpixel 比较,具体做了哪些方面的改进,谢谢!

顺便传张图,抱歉用的是 vista 字体,用过类似一个 subpixel 补丁,开 hinting + AA + subpixel
实际上这个跟你所用的是同一个补丁,只是sunmoon1997跟随cairo-git版本维护了一下。
据说该补丁与MS ClearType的算法同宗,只是MS把ClearType注册为己独用...

作者: midx   发布时间: 2006-08-20

sigh
要能达到bitmap的效果就好了。。。其实现在来看,字型有点走样问题不大,倒是毛茸茸的很讨厌

下图用compiz的zoom效果截的,已经打了cairo/libXft的对应patch...
上传的图像
aa.png (46.8 KB, 46 次查看)

作者: lucida   发布时间: 2006-08-20

引用:
作者: midx
实际上这个跟你所用的是同一个补丁,只是sunmoon1997跟随cairo-git版本维护了一下。
据说该补丁与MS ClearType的算法同宗,只是MS把ClearType注册为己独用...
多谢!
这两天发现该补丁的作者 David Turner( freetype 主要作者)当时放这个补丁的网页已经取消了,记不清他在主页上是如何解释的,好像说他自己也不确定是否触及了一些专利问题。应该是由于专利问题,所以一直没放到主流的版本中去。如果谁还保留着他当时在网页上放的原 subpixel 补丁,不嫌麻烦的话,用短消息告诉我一声。

从使用来看,这个带有专利色彩的补丁的确不少人喜欢。

作者: quanliking   发布时间: 2006-08-20

没看出有什么区别啊

作者: Yuri   发布时间: 2006-08-20

以下是我个人观点:
开了后边缘肯定是会出现彩色光晕的,也就是毛茸茸的感觉,不可能做到位图字体那样黑白分明。
据我这几天找资料来看,不能把用了 subpixel 的图片,放大了来讨论,这是一种错误的做法,包括我前几天也是这样来判断的。应该在原始尺寸下做比较。而且你不能离屏幕太近,要保持适当距离,必要时戴眼睛,否则你会被这些光晕困扰。还有重要一点就是色深要开到 24bit 以上,还能发挥子像素的作用。

bitmap font 技术比较原始,它根本没有用到 subpixel 技术,既一个像素包含红绿蓝三个子像素,甚至没用传统的 grayscale antialiasing。在白底黑字下,对位图而言,一个像素只有两种可能,非黑即白,也没有中间的灰阶过渡,所以看起来会感觉边缘非常尖锐。bitmap font 一旦开了 antialias 就看不得了,边缘会非常的模糊,非常淡。

bitmap font 只适合于低解析的屏幕, 对亚洲字型会有比较好的效果,但到了高解析度的屏幕上,比划非常的细,比如竖线只占一个像素宽,会很难看。

而且 bitmap font 对英文早已经力不从心了,所以后来才会开发 grayscale antialiasing ,以及再后来的 subpixel antialiasing。随着显示设备解析度的提高,现在 bitmap font 已经退居二线,你看现在 MS 的 vista 专门开发了七种 Cleartype 英文字体,也就是专门为 subpixel antialias 定制的新字体,隐含的告诉我们,快去买高解析度大屏幕的 LCD,否则你将不能充分的见识到 cleartype 的威力。而对于亚洲字体,vista 开始推崇不带点阵的纯矢量字体了,如中文雅黑,繁体正黑体,日文的 meiryo 等等。

现在人们觉得 bitmap font 中文好看,一是习惯问题,二是还没有非常优秀的中文矢量字体,三是最重要一点,大多数人的显示设备远没达到完全利用 cleartype 或 subpixel antialias 的地步,所以据我推测或者讲人所共知,当 vista 或 linux xgl 或 mac xxxx 真正成熟推向市场是,必将掀起一股 LCD 热潮。

顺便补充一下,字型走样跟你用什么类型字体有关,如果用 MS truetype 字体,开 hinting 是保持字型的好办法。

最后传两张图,不是我渲染的,而是在 MS 网站上抓来的,用的都是 cleartype 字体,MS 自己渲染的。
上传的图像
SegoeUI.gif (4.6 KB, 52 次查看)
Consolas.gif (7.1 KB, 39 次查看)

作者: quanliking   发布时间: 2006-08-20

这样的讨论气氛多好~~
既然quanliking需要,附件是tmp里翻出来的两个patch。请查收。
上传的附件
cleartype_patch_original.tar.bz2 (9.1 KB, 11 次查看)

作者: midx   发布时间: 2006-08-20

差点一口水喷出来。。。算了,啥都不说了

作者: lucida   发布时间: 2006-08-20

再废话一下,不用长篇大论,仔细对比一下win和linux的英文小字号,你会发现windows的干净的多。不要和我重复subpixel的原理了....

btw, 几乎确认的怀疑一下,日月兄的patch能不修改的用在1.2.2的cairo上,但是几乎无效果...

作者: lucida   发布时间: 2006-08-20

引用:
作者: lucida
差点一口水喷出来。。。算了,啥都不说了
要的就是这效果:)

作者: midx   发布时间: 2006-08-20

引用:
作者: lucida
再废话一下,不用长篇大论,仔细对比一下win和linux的英文小字号,你会发现windows的干净的多。不要和我重复subpixel的原理了....

btw, 几乎确认的怀疑一下,日月兄的patch能不修改的用在1.2.2的cairo上,但是几乎无效果...
OK, 既然 lucida 兄不喜欢长篇大论,请不要介意,就当我没说。
我已经把跟帖中引话删去了。

同时谢谢 midx 兄提供补丁。

作者: quanliking   发布时间: 2006-08-20

看看 arch wiki 里的中文字体设置,不知道谁写的,透彻,实用,我见过最好的字体设置文章。

http://wiki.archlinux.org/index.php/...AE%BE%E7%BD%AE

作者: VirusCamp   发布时间: 2006-08-21

midx 兄,我发现用了该补丁的一个问题,就是字体看上去比较粗,造成字符之间比较拥挤,不清楚你是否有这种感觉,我大概找到原因,明天再贴一下比较图。

作者: quanliking   发布时间: 2006-08-21

Linux sub-pixel 非官方补丁 和 MS Cleartype 的比较,使用 Vista Cleartype 字体 Segoe UI.
希望你是 LCD 用户,子像素排列为 rgb,否则看不到图片效果。

MS 官方的字体渲染图:
http://www.linuxsir.org/bbs/attachme...9&d=1156056219

更多的 vista 新字体见:
Jensen Harris: An Office User Interface Blog
http://blogs.msdn.com/jensenh/archiv...ory/11727.aspx

我的 ubuntu 打了 sub-pixel 后的字体渲染图,见附件一。

图片下载后,请把图片放在一块观看,而且要把图片浏览器,如 eye of gnome 里的 Image Interpolation 选项关闭,然后再放大观看。

两者的比较图,上图为 MS cleartype,下图为 ubuntu subpixel patch.
原始大小比较见附件二,放大后的比较见附件三。

我从纯业余的角度来谈一下我的看法:
两者各有千秋。
1。
从文字边缘的光滑角度来看,ubuntu subpixel patch 超过 ms cleartype。
ubuntu 边缘更加细腻, 而 ms 还是隐约看到边缘的锯齿状,见附件二。

2。
从边缘的色彩光晕控制来看,ubuntu subpixel patch 超过 ms cleartype 。
在观屏距离合适的前提下,ubuntu subpixel patch 几乎看不到彩色光晕,而 ms cleartype 还是比较明显感觉到彩色光晕,见附件二。
原因见附件三,ubuntu 的像素之间的色差更小一些,色彩平衡性更好一些,而 ms cleartype 色差比较大,字体边缘偏红。

3。
从字型的控制角度来看,ms cleartype 超过 ubuntu subpixel patch。
ubuntu subpixel patch 渲染后的英文有点过粗,造成 8pt 小字有些模糊不清,看起来显得字符间隔有点短,快贴到一块。
而 ms cleartype 的效果比较好,小字灵便清晰。
具体我们再来看一下 18pt 的情况,大家仔细观察一下附件二 U I l 等字符,可以比较明显的看到 ubuntu subpixel patch 渲染的过粗了。
什么原因造成的呢?
看一下附件四,注意一下 UI 两字符的右侧蓝颜色的竖线部分,ubuntu 的蓝色有点过重了,或者讲这一排像素分得的能量太多了,当你在原始大小观看时,人眼会感觉黑色成份加重,即过粗了。
或从子像素原理角度来讨论一下该蓝色部分,一个像素是由红绿蓝三个子像素组成的,三原色原理,三个子像素同时完全关闭,人眼感觉该像素为纯黑,同时打开,该像素为白色。简单讲(事实并非纯蓝,并不是完全打开或关闭),要取得蓝颜色,只需将红绿两个子像素关闭,保留蓝色子像素,子像素关闭后,该子像素处即为黑色,而 ubuntu 的红绿两子像素刚好靠近它们左边的黑色的竖线,因此加粗了 U 的右侧竖线。其它地方也可以类似分析,这也就是我说的不能老用放大后的图片说事,要根据原理来分析问题。当然还要考虑到人眼对不同色彩的敏感度

而 ms cleartype 在这方面色彩处理的比较干净。
另外 ms cleartype 在一些小细节,如拐弯的最后一下做得要好。

综上,所谓有得必有失,要是将两者的优点结合自然最好,我想 subpixel 算法还是有改进的空间。
我只是在一种字体的两个字号下做了比较,可能有失偏颇,从使用 ubuntu subpixel patch 浏览网页的感受来看,还是感觉有点粗。

背景材料:子像素渲染原理见
http://www.grc.com/cleartype.htm
http://www.grc.com/cttech.htm
上传的图像
my-segoeUI.png (13.1 KB, 17 次查看)
normal-compare.png (22.0 KB, 24 次查看)
large-compare.png (10.7 KB, 15 次查看)
UI-compare.png (2.1 KB, 10 次查看)

作者: quanliking   发布时间: 2006-08-21

professional

作者: zhllg   发布时间: 2006-08-21

按30帖细致的比较应该足以提供harker去修改完善了...改天非缠住某7...

作者: midx   发布时间: 2006-08-21

奇怪,为什么我的overlay总是不起作用,PORTDIR已经设置到/usr/local/portage,东西也都解压到那下面了,cairo搜索一下还是1.2.2的……

作者: Freesnake   发布时间: 2006-08-21