CnPack Forum


 
Subject: AAFont平滑处理是如何取样的?
songyx0
新警察
Rank: 1



UID 55128
Digest Posts 0
Credits 10
Posts 3
点点分 10
Reading Access 10
Registered 2010-11-17
Status Offline
Post at 2010-11-18 08:43  Profile | Blog | P.M. 
AAFont平滑处理是如何取样的?

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


Image Attachment: 未标题-1.gif (2010-11-18 08:43, 11.69 K)

Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2010-11-19 00:10  Profile | Site | Blog | P.M. 
AAFont 的原理是这样

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

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

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




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
songyx0
新警察
Rank: 1



UID 55128
Digest Posts 0
Credits 10
Posts 3
点点分 10
Reading Access 10
Registered 2010-11-17
Status Offline
Post at 2010-11-19 11:23  Profile | Blog | P.M. 
哦,这样啊,我以为是直接在原图上平滑的
但是AAfont的循环着实让人捉摸不透,其实研究这东西主要是由于我对GDI+的效率比较担心...
Top
songyx0
新警察
Rank: 1



UID 55128
Digest Posts 0
Credits 10
Posts 3
点点分 10
Reading Access 10
Registered 2010-11-17
Status Offline
Post at 2010-11-19 12:06  Profile | Blog | P.M. 
回复 #2 zjy 的帖子

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




All times are GMT++8, the time now is 2024-4-20 14:54

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.009218 second(s), 9 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP