GDIPP——字体渲染的另一种选择
gdipp是由CrendKing发起的,是一个可自定义的 Windows 文字渲染器,旨在重新实现 gdi++ 的功能,使之具有更好的兼容性、稳定性和性能的开源项目。其实我自己用gdipp已经很久了,应该说从gdipp推出我就已经切换到gdipp了。早就想写一篇关于gdipp的文章,好吧,我承认我比较懒……
gdipp项目地址:http://code.google.com/p/gdipp/
大家可以在以上地址获取到最新的gdipp源代码或者一些帮助。
gdipp虽然也是脱胎于gdi++,但CrendKing重构了大部分的代码,并且把hook组件从Detours移植到了EasyHook,这使得gdipp可以原生支持64位操作系统,使得64位的用户也能够品尝到字体渲染所带来的视觉感受。
gdipp的另一大改进就是将配置文件从ini文件切换到了xml文件,并引入了正则表达式。这样做的好处是什么呢?好处就是我们可以单独定义每一个程序甚至一种字体的渲染效果,下面讲配置文件的时候我会讲到如何单独定义一个程序的渲染参数。
简单说说gdipp相对于gdi++的改进吧:支持64位系统、支持shadow(针对氦版而言)、程序兼容性大幅度提高、渲染效率大幅度提高、配置文件功能强大、支持更多的渲染模式(DirectWrite等)、修正了Windows的FontLink问题、支持服务模式……太多了,这些还只是摆在明面上的一部分改进,至于核心改进,这个就只有CrendKing自己才有数了。
效果图大家就随便看看吧,用过gdi++的网友对这种文字的渲染应该不陌生了。
以上效果纯属个人喜好!
不管是gdi++也好,MacType也好,gdipp也好,对于一个使用它的用户来说,最重要的是什么?是配置文件,它直接决定了渲染的效果,而很多初学者望而却步也就是因为配置文件太复杂,调整起来太麻烦。先来看一下我用的gdipp的配置文件:
由于我的排除列表太长,所以这里做了简化,只列出了几个系统进程。
gdipp的配置文件不算复杂,参数不懂的可以猛击这里查看官方说明。
我的配置文件是最常见的黑名单工作模式,即<exclude>字段中的程序都不会加载gdipp,但由于gdipp的exclude列表支持正则表达式,所以其实还有一种特殊的白名单模式,如下所示:
意思就是说只渲染notepad和mspaint两个程序,其他程序忽略,这点gdipp做的比Mactype和gdi++都强大。
当然,gdipp绝不会只有这点功能,XML格式配置文件和正则表达式的加入使它更加灵活:
比如可以单独制定某个程序的渲染参数:
或者单独设置某个字体的渲染参数:
gdipp我用了也一年多了,以服务模式加载,很稳定,资源占用也不大,如果你不需要MacType的热替换之类的功能,或许gdipp同样会是一个不错的选择。