更改默认 Grub 字体后无框字符

Las*_*ini 13 grub2 fonts

我已经能够通过使用更改 Grub 的默认字体

grub-mkfont -s 16 -o /boot/grub/grubfont.pf2 font.tty
Run Code Online (Sandbox Code Playgroud)

然后将以下行添加到 /etc/default/grub:

GRUB_FONT=/boot/grub/grubfont.pf2
Run Code Online (Sandbox Code Playgroud)

而且当然

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

新字体确实出现了(记住选择等宽字体)。但是,“框”字符(在条目周围)永远不会正确显示。我想大多数字体根本没有那个字符集。有什么办法可以添加这些字符吗?甚至可以从默认的 unicode.pf2 字体中复制它们?如果这真的不可能,你知道有这些字符的字体吗?

更新:

我尝试了很多不同的方法,例如从 ttf 转换为 bdf,然后再转换为 pf2,并且我尝试仅使用 option 转换 ascii 字符--range=0x0-0x7f,但它们似乎都无法完美运行。我有一种感觉,这是因为我生成的字体比默认字体大,因此无法使用默认字形。

我将尝试查看是否可以使用较小的字体大小,尽管这是我想更改字体的原因之一。

Mar*_*mo- 9

基本上你想要做的是使用范围运算符来限制你的新 grub 字体包含的字符。如果您不使用范围运算符,那么您将获得所有字形,包括来自目标字体的错误或不正确的框元素。

例如:

grub-mkfont -s 16 --range=0x0-0x7f -o /boot/grub/grubfont.pf2 font.tty

将生成仅包含 ASCII 字符的字体,您的字体没有的任何字体都应优雅地衰减为默认字体,因此框和箭头应来自默认字体。请参阅此网站了解更多信息:

http://grub.enbug.org/gfxterm


sla*_*den 8

理论上 grub-mkfont允许传递多种字体。在这种情况下,如果您可以同时传递指向Unifont或其他覆盖范围更广的字体的链接。生成的 Grub 字体将是两种输入字体的覆盖范围的组合。

注意:最近 Grub 启动时字体加载器的性能改进意味着 Grub 字体文件中的字形必须按特定的升序排列,但不幸的是,该grub-mkfont实用程序并未同时进行更改!现在这是一个错误:

  • 错误 #729470 “grub-mkfont 输出 grub 无法使用的字体(字体字符不按升序排列:0 <= 0)”

顺便说一句,如果您有兴趣,这个错误是因为在 Grub 启动菜单中调查使用Ubuntu 字体系列开发中的Ubuntu Mono字体的实验而发现的,并且遇到了与您刚刚遇到的完全相同的问题!

  • 我会让它休息,直到他们将 Ubuntu Mono 字体加载到 grub 中 - 无论如何,这就是我首先想要的:) 非常感谢。 (2认同)

hto*_*que 5

IIRC 我在使用所有字形时遇到了你所描述的:


(来源:xrmb2.net

也许是 的问题grub-mkfont,也许与字体有关,我不知道。:(

什么对我有用:

  1. 使用gbdfed产生从控制台字体(如“/usr/share/consolefonts/Lat15-VGA16.psf”)的“BDF”文件:文件>导入>控制台字体,那么文件>另存为...
  2. 仅转换 ASCII 字符grub-mkfont

    grub-mkfont --output=out.pf2 --range=0x0-0x7f out.bdf