2013-08-19 22 views
4

有关/ Widths数组和/ FontFile数据流的Adobe PDF参考说明,但Adobe Type 1字体程序(.pfb或.pfa文件)不包含字体数据;它们包含在字体指标文件(.afm或.pfm文件)中,但这些文件不嵌入PDF文件中。在PDF文件中如何对嵌入式Adobe Type 1字体进行字距编码?

PDF只能编码字符宽度度量,或者它也可以编码字符对呢?怎么样?

+1

字距通过在页面内容流明确的偏移量完成。 – mkl

回答

6

如果您研究PDF规范ISO 32000-1(见下文)的第9.4.4节,您会发现计算字形位移时不会包含特殊的字距信息(例如从字体程序中提取)。

但是,您还会看到有一个值,其中表示TJ阵列中的数字(如果有的话),它指定位置调整。该值用于实现字距调整。

E.g.该短语“表示在TJ阵列的数量,如果有的话,它指定的位置调整”从规范本身被设定为:

[(de)-5.5(no)-5.5(te)-5.5(s a nu)-5.5(m)-5.7(b).5(e)-5.5(r).3(in a)]TJ 
... 

您参见例如字距调整施加E的”表示 '和'n','o'和't','e'和's'。

的从规范部分:在PDF文件

The section 9.4.4 referenced above

+0

所以这是唯一的方法,并将在所有的PDF查看器上显示相同?我必须确保文本行宽度在不同的查看者之间保持一致,并且任何软件都会尝试从其他来源获取字距信息(例如,从主机系统上已安装的字体程序获取字距表)。 – MRuizEscribano

+1

*所以这是唯一的方法* - 因为这是来自规范,是的,这是如何呈现页面内容。 *将在所有PDF查看器上显示相同* - 仅限于那些在此方面实施PDF标准而没有错误;这应该意味着每个人都不知道。 *任何软件都会尝试从另一个来源获取核心信息* - 有一种情况需要考虑:如果PDF包含没有预先创建的外观流的表单元素,则不同的查看者可能会在创建的外观上有所不同。表单字段是**不是常规页面内容的一部分。 – mkl