grub-mkfont 输入和输出格式

grub-mkfont 输入和输出格式

我有一个可以设置的字体设置字体和 rc.conf [CONSOLEFONT]。它是在PSF2格式。我也想在 Grub 中使用该字体。我用的是Grub2。当我跑步时

grub-mkfont -o ~/outfont pc.psf

我得到输出

can't open file pc.pf2, index 0: error 2: unknown file format

虽然手册页有点缺乏,但从我读到的来看别处,看起来 grub-mkfont 应该能够接受多种输入格式(包括 psf2?)并输出 psf2 字体。这与我所看到的不符。我有一个可以使用的 grub 字体,我注意到它的顶部没有 psf2“魔法”,而是以FILE, {0,0,0,4} (字节)等开头PFF2NAME,通常看起来像文本/二进制混合格式,其中包含MAXHRegular 16、等内容。 FAMIGrub2 在这方面有什么不同吗?

问题是:grub-mkfont 采用什么格式并输出?如何将我的 psf2 字体转换为该格式?

看起来这些东西的信息有些匮乏,所以即使你不能完全回答问题,也请提供信息!任何小事都可能很大!谢谢。

答案1

我知道这个问题已经很老了,但我仍然想分享我的发现,因为这仍然相关。就我而言,我试图转换 Terminus Bold 字体。

警告:不要觉得太有动力,我最终仍然无法将 psf 转换为 pf2,但其他人报告说它确实对他们有用。也许您会成为幸运者之一。它还可能取决于您要转换的字体。不过,我确实设法下载了我想要的另一种格式的字体,可以通过 grub-mkfont 进行转换。请继续阅读。

请注意,psf2 与 pf2 不同! psf2 是控制台使用的,pf2 是 GRUB 使用的。我将在此答案中使用 psf 而不是 psf2,因为这是该文件格式常用的扩展名。

找到此页面后,我的思考过程是:如果 grub-mkfont 不理解 psf,是否可以将 psf 转换为 grub-mkfont 可以理解的内容(最好是位图和无损)?答案是bdf。

(grub-mkfont 理解FreeType 库可以理解的任何内容

我找到的答案是PSF工具可以将 psf 转换为 bdf,所以我编译了它并将我的 psf 字体转换为 bdf,但是 grub-mkfont 抱怨它的字体大小无效(24x24),但是,字体本身是 24x12:

grub-mkfont: error: can't set 24x24 font size: Freetype error 23: invalid pixel size.

查看bdf文件,我发现大小确实设置为24x12。这是仅 Linux 控制台中的帧缓冲区支持的字体大小,但我也尝试了较小的 VGA 大小并遇到了相同的问题。我得出的结论是,这是 PSF Tools 或 grub-mkfont 中的错误。

然后我继续搜索,发现了一个名为国联(对我来说幸运的是,它位于 Ubuntu 存储库中)可以导入 psf 并另存为 bdf。

现在,grub-mkfont 毫无怨言地解析了它(因此之前的问题出在 PSF Tools 中,而不是 grub-mkfont 中),但生成的 pf2 字体恰好包含零个字形。我再次尝试了 VGA 版本,混淆了 grub-mkfont 的参数,但没有任何效果。

最后,我发现我试图转换为bdf的psf文件实际上是bdf的源形式,所以我追踪到原始bdf文件这次,grub-mkfont 实际上接受了它并创建了一个有效的 pf2!不过,我还没有测试它,因为我现在需要睡觉,但我现在可能遇到的唯一问题是 pf2 中有太多字形,GRUB 无法理解。

如果我的英语很难理解,我很抱歉,这不是我的母语。

相关内容