字体编码是字符代码和字形描述之间的关联关系,对于程序员来说,字符编码非常熟悉,经常遇到的乱码问题,基本上都是字符编码不正确造成的。
本章节将描述用于简单PDF字体的字符编码方案。复合字体(Type 0)使用字符映射来达到相同的目的,后续章节会介绍到。
除 Type 3 字体外,每个字体程序应具有内置(built-in)编码。
一些字符集由256个以上的字符组成,包括连字、重音字符和高质量排版或非拉丁文字系统所需的其他符号。不同的编码可以选择同一字符集的不同子集。
拉丁文字体程序中,常用的字体编码被称为StandardEncoding,或Adobe标准编码。StandardEncoding编码作为默认编码。Mac OS和Windows系统上用于拉丁文字体的常规编码,分别命名为MacRomanEncoding和WinAnsiEncoding。MacExpertEncoding编码被应用与“expert”字体,该类字体包含用于复杂排版的字符。
在PDF中,根据字体的所有字符是否都是标准拉丁字符集的成员,字体分为非符号字体和符号字体。PDF格式中,使用字体描述符字典中的Flags的值来体现;标准的14种字体中,有两个符号字体,分别是Symbol和ZapfDingbats。
字体程序的内置编码,通过在PDF字体字典中Encoding条目来取代。编码值取决于字体类型。Encoding的值,可以是名称编码(MacRomanEncoding、