什么样的字库是好字库 写好字库字稿的基本原则 写好书法字库字稿的技术要求 书法字库和书法作品之优劣异同 书法字库和美术字库的异同 小知识 稿纸的制作和书写 形同鸡肋的Hinting技术 字库制作是一种怎样的技术和艺术
形同鸡肋的Hinting技术
我们在使用某些率意字库时,发现其屏显会很“粗糙”,一般人认为是字库造得不好,屡屡抗议。任解释也得不到认可,但用于出版、印刷、打印的时候却并未有多大问题出现。大家不能理解其中的奥妙。在此,我给大家讲一讲是什么道理。
在TrueType诸技术里,有一项技术叫做Hinting。所谓Hinting,英文原意是暗示、提示。字库技术借用了Hinting的含义,转为:字符Glyph在低密度显示时影射到指定的点上。如图所示:
上面两个图像里面的字母,左边的没有做Hinting,右边的做了。未做Hinting的,在该密度设备上显示时好像有点残缺不全的样子。但是,即便是做过Hinting,当显示密度再降低时,也将是一塌糊涂,因为它没做更低分辨率的Hinting。事实上,Hinting只可能做在某一密度上,而不可能做在所有密度上。
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技术呢?道理也很简单:因为Hinting技术是一项必须在手工目视的情况下进行调试的工作。我们之所以能够在这么低的价格上完成整个字库,靠得是自动化。如果没有自动化,我们当然也就没有现在的低价格。而从当代计算机技术的发展水平来看,屏显和打印的精密度都在不断加深。前文说过,Hinting只在低密度(或小字号)下才有意义,如果显示和打印密度加大到一定程度时,Hinting就失去了意义。譬如,现在的打印密度一般都已经达到或超过2500线/英寸,Hinting恐怕只有在显示1磅字体的时候才有用,试问,谁会使用1磅字体打印呢?所以,就完全没有Hinting的必要了。将来如果显示密度达到500~1000/英寸的时候,Hinting就会彻底失去意义。因为也不会有人用极小的字号进行屏显浏览。
此外,随着操作系统和应用软件的改进,系统或软件显示字体的技术也在开始改进。这就是所谓“平滑字体边缘”的技术。该技术的要点是对字体矢量线划过的像素进行占位按比例计算并按此比例进行灰度描绘。举例来说,如果矢量线划过一个像素点的30%,倘按Hinting技术的算法,该点小于50%,应被忽略。但如果按“平滑字体边缘”技术的计算,该点将用30%的灰色显示。经过如此这般的处理,上面残缺不全的图像已不存在,而是稍微暗淡一些而以。譬如上图当中的@符大至会显示出如下的样子:
不过,这是一项Windows98或Office2000以后的技术。如果你使用的是Win98以前的操作系统或使用Office2000以前的排版软件,都得不到这种显示的美妙。当然,即便你使用了具有这项技术的应用环境,未选择使用也和没有一样。不论新老,一般图像排版软件,譬如PhotoShop、Illusretor、CorelDRAW、FreeHand等,都有这项功能。这项技术为一的缺点就是稍微多占用一点CPU资源。具体选择方法见图:
任何技术都是有一定的使用环境的,Hinting也不例外。随着计算机技术的发展,随着显示技术水平的提高,形同鸡肋的字体Hinting技术终将退出历史舞台。
但是,现在的问题是,我们在很多时候需要皮实的、低密度的打印设备,例如9针或24针的打印机。尽管这些设备都是Win31时代的,与当今的Win7已有20多年多代的差距,不过我们得用windows高版本驱动这些设备。试想:当矢量图形转变为点阵图形(尤其是低密度的点阵图形)的时候,如何控制字符当中的俩个笔画不重叠?所以还是得用Hint(映射)。如果字符不做映射,你根本无法控制打印出来的字符究竟是怎样被打印机针描述的,即便有所不满,也几乎无法修改。打个比方:我们都见过有人手持一块刻有字符的板子,贴在墙(或任何想要写字的地方)上漆喷。喷完之后,拿掉刻字的板子,就会有一幅清晰的文字出现在人们面前。所谓TrueType映射,就好比人们把TrueType字符做成了那块模板,往纸上印字。好处是,不必费心,字符自然可以规规矩矩地印(映射)到纸上。若没有这块模板,那就好比徒手使用喷壶喷字,喷是也可以喷的,只是具有相当的不确定性,喷出来的字符也歪歪扭扭不成样子。
所以说,当你使用低密度打印设备的时候,还得做映射。
怎样做TrueType映射?制作TrueType映射必须有专门的程序。现在具有TrueType映射功能的程序只有FontLAB。FontLAB里有专门的工具为每一个字做TrueType映射。值得注意的是,所有的字库编辑程序所制作的TrueType字库都天然的带有映射,只是这个映射做得不够精准,且无法修改的。FontLAB中的TrueType映射有从4点阵~48点阵的不同定义,当然,你需要选定映射模式之后再进行映射制作,否则是没用的。此外,由于映射定义是可以修改的,所以,对于每一个字具体影射成什么样的,需要供求双方协商。凡映射都只能针对一种模式进行,由于商业字库不能确定使用者究竟使用什么映射模式,所以,商业字库都是没有映射的,也就是说,商业字库的映射都是Auto(自动)型的。也就是说,商业字库使用的是TrueType天然自带的不够准确映射。
为什么TrueType映射做不成大字库?尤其是我们中文字库做不成TrueType映射?迄今为止,据我所知,能够做TrueType映射的只有FontLAB,而FontLAB程序只允许制作6400个字符图像。用最小的GB2312字库而论,6763个汉字字符图像已经不够,再加上1000个左右的各种标点符号等附加其他字符,根本不够。有人或许会说,我不会将一个字库分成两半操作不就可以了吗?不可以。问题是你最后怎么办?两个半截子字库不还是得和成为一个完整的字库使用吗?你用什么合成?用FontCreator?不行啊!各程序对TrueType的理解并不一样,用FontLAB制作的映射,用FontCreator转换一下之后,映射便全部失效了。而用FontCreator又不能做映射。所以,对中文而言,使用公共工具,制作不了字符集映射字库。
怎样使用做好了TrueType映射的字库?当你拿到一个做好了映射的TrueType字库,安装上之后,就可以在Windows里的程序中正常使用了。需要注意的是,你必须使用原来预定好的映射模式进行打印作业,而不能使用其他打印模式进行打印作业。如果使用其他模式打印,影射则无效。例如你做的24点阵的映射字库,却要用于9针打印机上,那无疑是要失败的。值得注意的是,使用该字库在显示的时候或许也是失效的,原因是你的显示模式不是打印模式。例如你做了一个24点阵映射的字库,但是在编辑界面上七扭八歪,不成样子,可用于打印的时候却可以正常使用。这就说明你的显示状态不是在标准的映射模式下。造成这种情况的原因会很多。例如你在程序中调用该字库时的显示模式和打印模式不匹配等等。由于我们一般用的主要目的是打印,而不是显示,所以显示难看一点并没有多大关系。或者,你当然也可以制备两个字库,一个不变形的,一个做映射的。如果需要高密度打印的时候,就是用未变形的,使用低密度(当然是影射密度)打印的时候,就用做过影射的便妥。
制作TrueType映射应当说明什么?做TrueType映射前提是什么?这个问题其实很简单,你作为客户,制作映射,必定是要用于低密度打印。你所需要说明的就是:什么样的打印机,什么密度,用什么驱动。由于各种应用程序对TrueType的理解并不完全都是按照Windows函数进行的(例如ADOBE公司的PhotoShop、Illustrator),所以,即便是做了映射,也不能保证在所有程序下都可以绝对准确有效。