注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

邓征宇的BLOG

一个硬币总有不同的两面。

 
 
 

日志

 
 

[学习]笔画拼接技术、Hinting 和 AA(Anti-aliasing)  

2013-01-22 19:19:43|  分类: 技术和产经 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

汉字构形的自动拼字技术    

根据汉字的结构特点,提取出笔画部件库,用部件自动组成汉字。设计新字体时,只需要设计600个基本字,就可以拼出GB2312或GBK字库。

TrueType字库压缩技术

   采用部件数据共用的方法大大降低了字库的数据量,同时采用Hint技术提高小字显示精度,这种字库的数据量只有同类普通字库的20%左右,并且小字号的显示精度很高,非常适合在嵌入式系统中应用。

字体制造技术,笔画拼接技术,能有效减少字体文件的体积,主要用于智能手机、电子书和电子词典等,适合液晶屏幕显示。如方正晶宋、方正晶黑等。


[学习]笔画拼接技术 - 邓征宇 - 邓征宇的BLOG

 如“就”字可拆为“京、尤”,显示“凉”的时候,那个“京”就有用了。这样可以节省很多空间,不过会比较慢。这和五笔字型输入法的编码原理有点相同。

Hinting技术:小字还原技术,在曲线字形技术中起着控制作用,用于保证字体还原的质量。

我们在使用某些率意字库时,发现其屏显会很“粗糙”,一般人认为是字库造得不好,屡屡抗议。任解释也得不到认可,但用于出版、印刷、打印的时候却并未有多大问题出现。

在TrueType诸技术里,有一项技术叫做Hinting。所谓Hinting,英文原意是暗示、提示。字库技术借用了Hinting的含义,转为:字符Glyph在低密度显示时影射到指定的点上。

Hinting技术是有着历史局限性的。TrueType是上个世纪80年代的产物。那时不论显示器(240线)还是打印机(9~24针),单位密度都很低。所以字体很有必要做Hinting,否则即便放得很大,打印或显示出来也不像样子。西文字母笔画又少,一旦缺损就不易辨识了。但到了21世纪的今天,无论是显示技术还是打印技术都有了突飞猛进的发展,单位显示密度大大提高。可以基本肯定地说,一般Hinting所适用的密度一般已不再使用或肉眼已难辨识。所以Hinting存在的意义大幅缩水。现在的TrueType字一般都不再做Hinting。

     “既然没有必要做Hinting了,那么为什么我们的字看上去还那么粗糙呢?”那是因为显示器的显示密度(和打印设备相比较)还不够高。现在一般的显示器的行距都是.24的,也就是说,屏幕显示密度(ppi)约为100线/英寸,而现在的打印机密度已经是2500~10000线/英寸以上了。打印密度相当于屏显密度的25~100倍。屏幕上显示的一个点,如果用于打印的话,大约有25~100倍的点阵密度来描述它,所以谁都是在屏幕上看见了大叫不满,但是打印出来却又不言语了。因为打印出来的东西没有缺陷,精密到自己也难以相信。还要说明的是,虽然“看上去粗糙”,并无笔画短缺之虞。

 “这就不对了,同是字库,为什么方正字库看上去就很清晰,而你的字库却很粗糙?”回答很简单,因为方正字库作了Hinting。

既然Hinting技术可以提高字库质量,你们的率意字库为什么不加上Hinting技术呢?道理也很简单:因为Hinting技术是一项必须在手工目视的情况下进行调试的工作。我们之所以能够在这么低的价格上完成整个字库,靠得是自动化。如果没有自动化,我们当然也就没有现在的低价格。而从当代计算机技术的发展水平来看,屏显和打印的精密度都在不断加深。前文说过,Hinting只在低密度(或小字号)下才有意义,如果显示和打印密度加大到一定程度时,Hinting就失去了意义。譬如,现在的打印密度一般都已经达到或超过2500线/英寸,Hinting恐怕只有在显示1磅字体的时候才有用,试问,谁会使用1磅字体打印呢?所以,就完全没有Hinting的必要了。将来如果显示密度达到500~1000/英寸的时候,Hinting就会彻底失去意义。因为也不会有人用极小的字号进行屏显浏览。

     此外,随着操作系统和应用软件的改进,系统或软件显示字体的技术也在开始改进。这就是所谓“平滑字体边缘”的技术。该技术的要点是对字体矢量线划过的像素进行占位按比例计算并按此比例进行灰度描绘。举例来说,如果矢量线划过一个像素点的30%,倘按Hinting技术的算法,该点小于50%,应被忽略。但如果按“平滑字体边缘”技术的计算,该点将用30%的灰色显示。经过如此这般的处理,上面残缺不全的图像已不存在,而是稍微暗淡一些而以。譬如上图当中的@符大至会显示出如下的样子:


 任何技术都是有一定的使用环境的,Hinting也不例外。随着计算机技术的发展,随着显示技术水平的提高,形同鸡肋的字体Hinting技术终将退出历史舞台。

     但是,现在的问题是,我们在很多时候需要皮实的、低密度的打印设备,例如9针或24针的打印机。尽管这些设备都是Win31时代的,与当今的Win7已有20多年多代的差距,不过我们得用windows高版本驱动这些设备。试想:当矢量图形转变为点阵图形(尤其是低密度的点阵图形)的时候,如何控制字符当中的俩个笔画不重叠?所以还是得用Hint(映射)。如果字符不做映射,你根本无法控制打印出来的字符究竟是怎样被打印机针描述的,即便有所不满,也几乎无法修改。打个比方:我们都见过有人手持一块刻有字符的板子,贴在墙(或任何想要写字的地方)上漆喷。喷完之后,拿掉刻字的板子,就会有一幅清晰的文字出现在人们面前。所谓TrueType映射,就好比人们把TrueType字符做成了那块模板,往纸上印字。好处是,不必费心,字符自然可以规规矩矩地印(映射)到纸上。若没有这块模板,那就好比徒手使用喷壶喷字,喷是也可以喷的,只是具有相当的不确定性,喷出来的字符也歪歪扭扭不成样子。

     所以说,当你使用低密度打印设备的时候,还得做映射。

关于字体的Hinting及AA等
http://www.phpmore.com
Posted: May 22nd, 2006, 11:54pm CST by gene
1. Hinting 与 Autohinter
Hinting 用来最佳化字型显示的方法。由于屏幕的像素有限,向量字型的缩放需要有更多的考虑, 例如当一条线位在两个像素格子中间时, 该取左边的格子还是右边的格子? 如果这方面的控制没有做好,就常常会出现字型的衬线没有对齐,或是小字歪七扭八的情况。 Hinting 是额外的信息, 它告诉 renderer 该如何处理这些细节的部份,使得向量字在小字的时候能够好看。也因此 Hinting 是非常费时费人力的工作,TrueType 字型很多,但是有良好 Hinting 的字型不多。拙劣的 Hinting 就会让字变得很难看。
为 了稍微改善这个问题,freetype 有 autohint 的功能,可以自动为没有 hint 的字型做 hinting 的工作。另外由于 TrueType 的 hinting 是有专利的,不能完全自由地使用, autohint 就不受这个限制。autohint 自然无法做得像人力的 hint 一样好,不过至少比没有 hint 要好些。话虽如此,对于许多笔划复杂的文字 (如中文) 目前 freetype 的 autohint 还做得不甚完美,而因为建立完整的 hinting 的难度,即使是英文字,原本就很高,内建有 hinting 的中文字型就少之又少了。所以常常有人抱怨中文字在屏幕上很难看,就是没有理想 hinting, 或者是使用了 autohinter 所造成的一些反效果。
2. AA(Anti-aliasing)
Antialiasing 是将字体在后台先以数倍的大小来绘画,然后再缩成想要的大小,未满一格的格子用灰阶补点。由于原本 X 所支持的 logic 运算不敷使用,所以才用 XRender 的 extension 来达成目的。
Antialiasing 会给人一种朦胧的感觉,习惯了Windows XP 下清晰,锐利的字体显示时,Antialiasing 会让人不太适应,会让用户觉得Linux下的字体显示不如Windows XP。但是,其实 Antialiasing是一种很先进的显示技术,当长时间显示器上阅读的时候,Windows XP 下的锐利的字体显示风格,会让眼睛更加容易疲劳,使用Antialiasing,字体的显示更加柔和,更加适合长时间的在显示器上阅读文档,减少眼睛的疲劳。
  评论这张
 
阅读(532)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017