光栅、矢量、TrueType 和 OpenType 字体

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

  • 光栅
  • 向量
  • TrueType
  • Microsoft OpenType

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

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

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

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

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