我有一个可以使用setfont和 rc.conf [CONSOLEFONT] 设置的字体。它是psf2格式。我也想在 Grub 中使用该字体。我用的是Grub2。当我跑步时
grub-mkfont -o ~/outfont pc.psf
Run Code Online (Sandbox Code Playgroud)
我得到输出
can't open file pc.pf2, index 0: error 2: unknown file format
Run Code Online (Sandbox Code Playgroud)
虽然手册页有点缺乏,但从我在其他地方读到的内容来看,grub-mkfont 看起来应该能够接受多种输入格式(包括 psf2?)并输出 psf2 字体。这与我所看到的不符。我有一个可以使用的 grub 字体,我注意到它的顶部没有 psf2“魔法”,而是以FILE
, {0,0,0,4} (字节)PFF2NAME
等开头,通常看起来像文本/二进制混合格式,其中包含MAXH
、Regular 16
、FAMI
等内容。Grub2 在这方面有什么不同吗?
问题是:grub-mkfont 采用什么格式并输出?如何将我的 psf2 字体转换为该格式?
看起来这些东西的信息有些匮乏,所以即使你不能完全回答问题,也请提供信息!任何小事都可能很大!谢谢。
我知道这个问题已经很老了,但我仍然想分享我的发现,因为这仍然相关。就我而言,我试图转换 Terminus Bold 字体。
警告:不要觉得太有动力,我最终仍然无法将 psf 转换为 pf2,但其他人报告说它确实对他们有用。也许您会成为幸运者之一。它还可能取决于您要转换的字体。不过,我确实设法下载了我想要的另一种格式的字体,可以通过 grub-mkfont 进行转换。请继续阅读。
请注意,psf2 与 pf2 不同!psf2 是控制台使用的,pf2 是 GRUB 使用的。我将在此答案中使用 psf 而不是 psf2,因为这是该文件格式常用的扩展名。
找到此页面后,我的思考过程是:如果 grub-mkfont 不理解 psf,是否可以将 psf 转换为 grub-mkfont 可以理解的内容(最好是位图和无损)?答案是bdf。
(grub-mkfont 能够理解FreeType 库能够理解的任何内容)
我找到的答案是PSF Tools可以将 psf 转换为 bdf,因此我编译了它并将我的 psf 字体转换为 bdf,但是 grub-mkfont 抱怨它的字体大小无效(24x24),但是,字体本身是 24x12:
grub-mkfont: error: can't set 24x24 font size: Freetype error 23: invalid pixel size.
Run Code Online (Sandbox Code Playgroud)
查看bdf文件,我发现大小确实设置为24x12。这是仅 Linux 控制台中的帧缓冲区支持的字体大小,但我也尝试了较小的 VGA 大小并遇到了相同的问题。我得出的结论是,这是 PSF Tools 或 grub-mkfont 中的错误。
然后,我继续搜索,找到了一个名为gbdfed的实用程序(幸运的是,它位于 Ubuntu 存储库中),可以导入 psf 并另存为 bdf。
现在,grub-mkfont 毫无怨言地解析了它(因此之前的问题出在 PSF Tools 中,而不是 grub-mkfont 中),但生成的 pf2 字体恰好包含零个字形。我再次尝试了 VGA 版本,混淆了 grub-mkfont 的参数,但没有任何效果。
最后,我发现我试图转换为bdf的psf文件实际上是bdf的源形式,所以我追踪到了原始的bdf文件,这一次,grub-mkfont 实际上接受了它并创建了一个有效的 pf2!不过,我还没有测试它,因为我现在需要睡觉,但我现在可能遇到的唯一问题是 pf2 中有太多字形,GRUB 无法理解。
如果我的英语很难理解,我很抱歉,这不是我的母语。
归档时间: |
|
查看次数: |
3004 次 |
最近记录: |