CnPack Forum » CnVCL 组件包 » AAFont平滑处理是如何取样的?


2010-11-18 08:43 songyx0
AAFont平滑处理是如何取样的?

如下附件
假设目标点是B1,我曾试过A1, A2, B1, B2, C1, C2这样,效果不怎么样,就跟用ps的模糊工具抹了一下似的,边缘不清晰,看AAFont的代码貌似是跳着取样的?搞不明白啊

2010-11-19 00:10 zjy
AAFont 的原理是这样

先根据平滑精度将字号放大几倍,绘制后再用均值算法缩小成原字号大小。
比如要绘制12点的文字,用3x3的精度,则先在后台绘制36点的文字,再按每3x3个格子9个点取平均值作为目标像素的方法生成12点的平滑文本。

AAFont是Win98时代的产物,那个时候还没有gdiplus,也没有取字体图元数据的api,所以用的笨办法。

在NT系统下,可以用gdiplus来生成平滑字,或者用GetGlyphOutline来实现,当然用FreeType也可以:lol

2010-11-19 11:23 songyx0
哦,这样啊,我以为是直接在原图上平滑的
但是AAfont的循环着实让人捉摸不透,其实研究这东西主要是由于我对GDI+的效率比较担心...

2010-11-19 12:06 songyx0
回复 #2 zjy 的帖子

谢谢zjy的解惑,非常感谢哈

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.