|
|
这两天比较着迷于opentype,主要是XeTeX可以直接调用系统中的TTF和OTF字体导致我无意中了解到opentype字体的优点种种,细细发掘发现优点实在是XeTeX用户很难抗拒的。
首先,说说一般比较容易见到的英文字体能给我们带来什么好处。
一般的英文TTF字体实际上比较不适合用于XeTeX的排版,原因是比如ff,ffi fi等连字的缺失。使得XeTeX只能排出分开的ff等。这样一来,TeX排版的专业性就打了一个折扣。
另外,opentype字体可以支持输出上标,下标,以及small capital(比如最常见的A.M, BC都应该用small capital而不是和正文一样大的capital),还能支持不同风格的数字,以及字母的连笔等等。一个opentype 字体到底能支持什么排版上的特性可以用otfinfo -f xxx.otf来了解。如果你用XeTeX来排版,强烈建议你用OpenType的字体,电驴和BT上一把一把的,可以从中找出满意的sans, serif和monospace字体作为rmfamily, sffamily, ttfamily之用,效果确实相当好。
实际上opentype字体有两种内部描述,一是用TTF字体格式描述,称为truetype型opentype,也叫OpenType(CID),用ttf作为后缀名;二是用CFF(实际上就是Type2,也是用PostScript描述的)字体格式描述,称为PS型opentype,用otf作为后缀名。原因是opentype是由微软和Adobe公司联合开发的,所以两个公司的格式都支持上了。当然根据不用的应用,两种格式各有优缺。
用TTF格式的和原先的TTF一样,体积比较小,同时嵌入文档的时候是TrueType(CID)子集占地也比较小。而用CFF格式的体积比较大,同时嵌入文档的时候的Type1C(CID)子集,占地比较大。为什么呢,因为TTF用的是2次的曲线来描述字形的,而CFF,其实是所有PS字体是用3次曲线来描述字形的,这样一来,TrueType就比较轻省些。两者在屏幕上都是完美显示,但是一旦到了打印机或印刷机那里,情况就不同的。打印机说的PS语言,TrueType的描述方式它得翻译一下,而CFF对它等于母语,结果就是TrueType字体可能会有一些失真而CFF则HiFi了。所以在印刷业中,把TrueType字体叫做前端字体或软字体,把Type1字体叫做硬字体。在实际的出版中,为了保证印刷质量,印刷前一般都要把pdf文档中的truetype换成相应的type1(中文的情况是换成CID字体,CID即Character ID是Adobe为用解决CJK字符而推出的type1字体格式)。
也就是说,如果你在生成pdf的时候用的是PS型的opentype字体的话,因为嵌入文档的是Type1字体,你的文档相当于已经和出版商用N多钱买来的后端输入设备处理过的文档一样,可以完美地送交印刷了。
现在世界上的各大英文字体商都推出了其OpenType字体,Adobe更是在2005年把它全部的字体升级为OpenType,但中文字体的OpenType在大陆好像没有见到过,台湾和香港倒是有,比如华康和文鼎,但一般都是GB2312和Big5编码的,GB18030的比较罕见(虽然OpenType是用unicode编码的,但CJK字体仍然是用CID编码的,没办法CJK字符太多了)。为何大陆没有呢,据不少网友推测,大陆的字体公司大多有自己的后端输出软件,其配套有CID字体卖给出版公司用于印前的最后处理,如果推出OpenType字体,以后这些后端软件和CID字体还有谁买呢?
但是不用失望,我们一样是可以用上中文的OpenType字体的,不过需要我们发挥DIY的精神。
首先,你手头得有中文的TTF字体,最好当然是GB18030字集的。
然后用fontforge打开TTF字体,在基础->字体信息 中把 名称->字体名 改成正确的名字,因为中文字体只有Regular的,所以可以直接和字族名相同,然后把 字体信息中的 OS/2 -> OS/2版本 改成2,因为OpenType需要它大于1。然后点确定,这时fontforge可能会问说字体有多个语言的Unique Font Identification,直接点确定。
最后点 文件->生成字体, 选格式为 OpenType (CFF),选项中要把OpenType勾上。之后改一下生成文件的名字,点保存就可以生成相应的中文OpenType字体了。
把生成的OpenType字体放到你的字体目录下,把你原先相应的TrueType字体移出,再运行fc-cache即可。
当然如果你希望继续使用原先的TrueType字体,那么在生成OpenType字体的时候把字体名和字族名改成和原先不同的即可。
OK,现在你已经有了中文的OpenType字体了,用XeLaTeX把这个字体用上,生成pdf文档后,在evince或acroread中看文档的文件->属性->字体就可以看到嵌入的是Type1C(CID)子集了。 |
|