光栅、矢量、TrueType 和 OpenType 字体

应用程序可以使用四种不同类型的字体技术来显示和打印文本:

  • 光栅
  • 向量
  • TrueType
  • Microsoft OpenType

这些字体之间的差异反映了每个字符或符号的 字形 在相应的字体资源文件中的存储方式:

  • 在光栅字体中,字形是系统用来在字体中绘制单个字符或符号的位图。
  • 在矢量字体中,字形是线条端点的集合,用于定义系统用于在字体中绘制字符或符号的线段。
  • 在 TrueType 和 OpenType 字体中,字形是线条和曲线命令的集合以及提示的集合。

系统使用线条和曲线命令为 TrueType 或 Microsoft OpenType 字体中的字符或符号定义位图的轮廓。 系统使用提示调整用于绘制字符或符号的曲线的线条和形状的长度。 这些提示和相应的调整基于用于减小或增加位图大小的缩放量。 OpenType 字体等效于 TrueType 字体,但除了 TrueType 字形定义外,OpenType 字体还允许 PostScript 字形定义。

由于光栅字体中每个字形的位图都是针对设备的特定分辨率设计的,因此光栅字体通常被视为依赖于设备。 另一方面,矢量字体不依赖于设备,因为每个字形都存储为可缩放线条的集合。 但是,矢量字体的绘制速度通常比光栅字体或 TrueType 和 OpenType 字体更慢。 TrueType 和 OpenType 字体提供相对快速的绘制速度和真正的设备独立性。 通过使用与字形关联的提示,开发人员可以向上或向下缩放 TrueType 或 OpenType 字体中的字符,并保持其原始形状。

如前所述,字体的字形存储在字体资源文件中。 字体资源文件实际上是只包含数据的 DLL,没有代码。 对于光栅字体和矢量字体,此数据分为两个部分:描述字体指标的标题和字形数据。 光栅字体或矢量字体的字体资源文件由 .fon 文件扩展名标识。 对于 TrueType 和 OpenType 字体,每种字体有两个文件:第一个文件包含相对较短的标题,第二个文件包含实际字体数据。 第一个文件由 .fot 扩展名标识,第二个文件由 .ttf 扩展名标识。