PostScript Type 1、TrueType 和 OpenType 在文件结构上的差异

PostScript Type 1、TrueType 和 OpenType 在文件结构上存在显著差异,以下为你详细介绍:

PostScript Type 1

PostScript Type 1 字体文件一般由两部分构成:二进制的 PFB(Printer Font Binary)文件和 ASCII 文本的 PFM(Printer Font Metrics)文件,也可以将二者整合在一个 PFA(Printer Font ASCII)文件中。

1. PFB 文件
  • 二进制数据:PFB 文件是二进制格式,包含了字体的轮廓数据,也就是用 PostScript 语言描述的字符轮廓信息,这些轮廓由三次贝塞尔曲线构成,用于精确地定义字符的形状。
  • 加密与压缩:为了保护字体版权,PFB 文件中的部分数据是经过加密处理的。同时,文件中的一些数据会进行压缩以减少文件大小。
2. PFM 文件
  • 文本格式:PFM 文件是 ASCII 文本格式,它存储了字体的度量信息,如字符的宽度、高度、间距、基线位置等。这些信息对于排版和文本显示时的布局至关重要。
  • 易读性:由于是文本格式,PFM 文件可以被人类直接阅读和编辑,方便字体开发者进行调整和优化。
3. PFA 文件
  • 整合形式:PFA 文件是 PFB 和 PFM 文件的 ASCII 文本整合版本,它将字体的轮廓数据和度量信息都包含在一个文件中,方便管理和分发。但文件大小通常会比 PFB 大,因为其未经过二进制压缩。

TrueType

TrueType 字体使用单一的二进制文件(.ttf)存储所有信息,其文件结构基于表(Table)的概念。

1. 文件头(Header)
  • 基本信息:文件头位于文件的起始部分,包含了文件的基本信息,如文件版本、表的数量、搜索范围、条目选择器和范围移位等。这些信息用于帮助操作系统和应用程序快速定位和解析文件中的各个表。
2. 表目录(Table Directory)
  • 表索引:表目录列出了文件中所有表的信息,包括表的标签(如“cmap”“glyf”等)、校验和、偏移量和长度。通过表目录,程序可以快速找到所需的表数据。
3. 主要表
  • 字符映射表(cmap):该表定义了字符编码与字形索引之间的映射关系,使得操作系统能够根据输入的字符代码找到对应的字形。
  • 字形数据表(glyf):存储了每个字形的轮廓数据,使用二次贝塞尔曲线描述字符的形状。同时,还包含了一些控制信息,如提示信息(Hinting),用于优化字体在不同分辨率屏幕上的显示效果。
  • 字体头表(head):包含了字体的全局信息,如字体的创建时间、修改时间、字体的设计单位等。
  • 水平度量表(hmtx):记录了每个字形的水平度量信息,如字符的宽度、左偏移等。

OpenType

OpenType 是一种更灵活和强大的字体格式,它既可以基于 TrueType 轮廓(.ttf),也可以基于 PostScript 轮廓(.otf),其文件结构同样以表为基础。

1. 与 TrueType 类似的部分
  • 文件头和表目录:OpenType 文件的开头同样有文件头和表目录,其作用和结构与 TrueType 文件基本相同,用于存储文件的基本信息和表的索引。
  • 常见表:OpenType 也包含了许多与 TrueType 相同的基本表,如“cmap”“glyf”“head”“hmtx”等,以确保与 TrueType 字体的兼容性。
2. 扩展部分
  • 高级排版表:OpenType 增加了一系列用于支持高级排版功能的表,如“GSUB”(Glyph Substitution Table,字形替换表)和“GPOS”(Glyph Positioning Table,字形定位表)。这些表可以实现复杂的排版效果,如连字替换、上下文替换、位置调整等。
  • 更多字符集支持:OpenType 字体可以包含多个字符映射表,以支持不同的字符编码标准和语言。同时,它还可以包含变体选择器表等,用于处理字符的不同变体形式。
  • PostScript 轮廓支持(OTF):当 OpenType 采用 PostScript 轮廓时,其文件中会包含 PostScript 字体程序,用于描述字符的轮廓。这些程序使用三次贝塞尔曲线,与 PostScript Type 1 字体的轮廓描述方式类似,但存储在 OpenType 的文件结构中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值