VFlib 如何处理 .GF 和 .PK 位图文件格式?

VFlib 如何处理 .GF 和 .PK 位图文件格式?

最近,我为我的研究工作在 FreeType 中制作了一个小型辅助模块。该模块主要负责处理客户端应用程序输入的 METAFONT。我使用 FTVIEW 作为我的客户端应用程序,它接受 METAFONT 文件以在屏幕上显示样式文本。

我正在使用 Mftrace 程序将任何 METAFONT 请求转换为其相应的 Type1 格式,然后使用默认的 Type1 驱动程序模块对其进行处理并在屏幕上显示结果。它运行良好。

现在我想要的是使用mf程序(METAFONT 的默认编译器)而不是 Mftrace,使用 FreeType 来处理 METAFONT。该mf程序将.mf文件作为输入并返回一个.tfm.gf文件。.gf然后使用 GFtoPK 或 GFtoDVI 分别将此文件转换为.pk.dvi文件,然后可用于显示。

由于 FreeType 引擎不支持.gfpk文件,我了解到有一个名为 VFlib 的旧库实际上支持这两种类型的文件。我读过关于 VFlib 的文章,并了解到它也是一个字体库,可以处理多种字体类型,并且可以从这些不同的字体格式(如、、.ttf等)中将字形制作成位图。.pfb.gf.pk

由于.gf.pk文件实际上是位图字体格式(后者是.gf文件的更压缩的文件,可以使用 GFToPK 等程序获得),我的问题是:这个 VFlib 库实际上如何支持.gf和格式?如果输入或文件.pk,这个库的主要任务是什么?.gf.pk

答案1

在阅读了一些关于此的论文之后 VFlib 库我得到了答案。

GF 和 PK 字体驱动程序的主要目的是让应用程序员不需要了解 GF 和 PK 字体文件中的内部数据表示。VFlib 以通用格式转换位图。术语“通用格式”是指 VFlib 中定义的 VF_Bitmap 结构。这是在 VFlib 中表示位图数据的通用数据结构。无论字体的数据样式(位图/轮廓)如何,VFlib 都使用 VF_Bitmap 结构来表示字体中字符的位图。

支持 gf 和 pk 的另一个目的是,由于它们是位图形式,我们必须为不同的放大倍数和分辨率准备许多文件。例如,当我们使用“cmr10”字体时,我们必须选择由 MetaFont 生成的合适的字体文件。例如,

 - Mangification 1.00, 300 dpi --> "cmr10.300pk"
 - Mangification 1.20, 300 dpi --> "cmr10.360pk"
 - Mangification 1.00, 600 dpi --> "cmr10.600pk"
 - Mangification 1.20, 600 dpi --> "cmr10.720pk"

选择合适的文件名是一件繁琐的事情,而 VFlib 会处理这些麻烦的事情。给定参数字体名称(例如“cmr10.pk”)、设备分辨率(例如 300)和放大倍数(例如 1.20),VFlib PK 驱动程序会在内部计算合适的文件名(例如“cmr10.360pk”)并找到其在文件系统中的位置。应用程序员无需关心实际的字体文件名和字体目录。

参考文献 1 参考文献 2

相关内容