2012-12-05 38 views
1

为了避免增加,字体的不需要的部分,我们定义如何在PDF中嵌入UTF-8字体?

/FirstChar 32 
/LastChar 126 

用于PDF文档中嵌入字体。但是,这并不适用于UTF-8字体,因为我们可能会使用不在一个系列中的字符(整个UTF-8中的随机字符)。另一方面,不可能嵌入整个UTF-8字体,因为它对于PDF文档来说太大了(当然也是没用的)。

如何选择性地嵌入几个字符的字体?我的问题是关于PDF代码(如何编写它)?

可能的方法:

手册:随着程序,如FontForge的帮助,我们可以捕捉一个自定义的字体与选定的字符,但如何指向PDF文档中的自定义字符? PDF只要求FirstCharLastChar

自动(首选):将整个UTF-8字体嵌入到PDF文档中,然后优化PDF文档(使用pdftk等工具)以删除不必要的字符。 有没有这样的工具?

+2

首先你不描述你的环境,你对解决方案有什么要求?当你提到一个“手册”时,你听起来就像有人在那里手动将字节放在一起......你是什么意思的“PDF只需要FirstChar和LastChar”?这些值主要限制宽度数组的维数。 – mkl

回答

4

定义PDF文件中的FirstChar和LastChar并不影响实际的字体数据。为了在字体中嵌入少于整个字符范围,您需要将实际字体数据“子集”。也就是说,找到每个字形的描述,存储所需的每个描述,然后生成一个适当的框架来包含字形描述,这取决于字体类型。

一般来说,没有'UTF-8'字体这样的东西。字体包含一系列关于如何绘制多个字形的说明,以及从字符代码中索引以找到正确的字形描述的方法。对于PostScript字体,这由Encoding给出,对于由CMap给出的CIDFonts和给出的TrueType字体,由嵌入在字体中的CMAP子表给出。

因此,为了实现您的目标,您需要理解您打算完全使用的字体格式(PostScript type 1,type 2,CIDFont或TrueType),能够确定您需要哪些字形描述,从字体,然后建立一个新的字体,其中只包含所需的字形描述。

这将是很多工作。正如@mkl所说,您最好建议您描述您的预期工作流程,并且我们会尽力就如何实现它提供建议。例如,在将PostScript转换为PDF时,bot Adob​​e Acrobat Distiller和Ghostscript的pdfwrite设备将分配字体。