Subject:
AAFont平滑处理是如何取样的?
[Print This Page]
Author:
songyx0
Time:
2010-11-18 08:43
Subject:
AAFont平滑处理是如何取样的?
如下附件
假设目标点是B1,我曾试过A1, A2, B1, B2, C1, C2这样,效果不怎么样,就跟用ps的模糊工具抹了一下似的,边缘不清晰,看AAFont的代码貌似是跳着取样的?搞不明白啊
Image Attachment:
未标题-1.gif
(2010-11-18 08:43, 11.69 K) / Download count 38
http://bbs.cnpack.org/attachment.php?aid=785
Author:
zjy
Time:
2010-11-19 00:10
Subject:
AAFont 的原理是这样
先根据平滑精度将字号放大几倍,绘制后再用均值算法缩小成原字号大小。
比如要绘制12点的文字,用3x3的精度,则先在后台绘制36点的文字,再按每3x3个格子9个点取平均值作为目标像素的方法生成12点的平滑文本。
AAFont是Win98时代的产物,那个时候还没有gdiplus,也没有取字体图元数据的api,所以用的笨办法。
在NT系统下,可以用gdiplus来生成平滑字,或者用GetGlyphOutline来实现,当然用FreeType也可以
Author:
songyx0
Time:
2010-11-19 11:23
哦,这样啊,我以为是直接在原图上平滑的
但是AAfont的循环着实让人捉摸不透,其实研究这东西主要是由于我对GDI+的效率比较担心...
Author:
songyx0
Time:
2010-11-19 12:06
Subject:
回复 #2 zjy 的帖子
谢谢zjy的解惑,非常感谢哈
Welcome to CnPack Forum (http://bbs.cnpack.org/)
Powered by Discuz! 5.0.0