![更改默认 Grub 字体后无方框字符](https://linux22.com/image/1033586/%E6%9B%B4%E6%94%B9%E9%BB%98%E8%AE%A4%20Grub%20%E5%AD%97%E4%BD%93%E5%90%8E%E6%97%A0%E6%96%B9%E6%A1%86%E5%AD%97%E7%AC%A6.png)
我已经能够通过使用来更改 Grub 的默认字体
grub-mkfont -s 16 -o /boot/grub/grubfont.pf2 font.tty
然后将以下行添加到 /etc/default/grub:
GRUB_FONT=/boot/grub/grubfont.pf2
而且当然
sudo update-grub
新的字体确实出现了(记得选择等宽字体)。但,条目周围的“方框”字符永远无法正确显示。我猜大多数字体根本没有该字符集。有什么方法可以添加这些字符吗?甚至可以从默认的 unicode.pf2 字体中复制它们?如果这真的不可能,您知道有哪些字体有这些字符吗?
更新:
我尝试了很多不同的方法,例如从 ttf 转换为 bdf,然后转换为 pf2,并且尝试使用选项仅转换 ascii 字符--range=0x0-0x7f
,但似乎都没有让它完美地工作。我感觉这是因为我生成的字体比默认字体更大,因此无法使用默认字形。
我会尝试看看是否可以让它以较小的字体大小工作,尽管这是我想要更改字体的原因之一。
答案1
基本上,您要做的就是使用范围运算符来限制新 grub 字体包含的字符。如果不使用范围运算符,那么您将获得目标字体中的所有字形,包括错误或不正确的框元素。
例如:
grub-mkfont -s 16 --range=0x0-0x7f -o /boot/grub/grubfont.pf2 font.tty
将生成仅包含 ASCII 字符的字体,字体中没有的所有内容都应优雅地衰减为默认字体,因此方框和箭头应来自默认字体。请参阅此网站了解更多信息:
http://web.archive.org/web/20100429235139/http://grub.enbug.org/gfxterm
答案2
理论上 grub-mkfont
允许传递多种字体。在这种情况下,如果您可以传递链接至统一字体或同时输入覆盖范围更广的另一种字体。生成的 Grub 字体将是两种输入字体覆盖范围的组合。
注意:Grub 启动时字体加载器最近进行了性能改进,这意味着 Grub 字体文件中的字形必须按特定的升序排列,但不幸的是,该grub-mkfont
实用程序没有同时进行更改!这现在是一个错误:
- 错误 #729470 “grub-mkfont 输出 grub 无法使用的字体(非升序排列的字体字符:0 <= 0)”
顺便说一句,如果你感兴趣的话,这个漏洞是在调查使用Ubuntu 字体系列开发中Ubuntu MonoGrub 启动菜单中的字体并遇到与您刚刚遇到的完全相同的问题!
答案3
据我所知,在使用所有字形时我遇到了你所描述的情况:
(来源:xrmb2网)
也许这是一个问题grub-mkfont
,也许与字体有关,我不知道。:(
对我有用的是:
- 使用
gbdfed
从控制台字体生成“bdf”文件(例如“/usr/share/consolefonts/Lat15-VGA16.psf”):文件 > 导入 > 控制台字体,然后文件 > 另存为... - 仅转换 ASCII 字符
grub-mkfont
:grub-mkfont --output=out.pf2 --range=0x0-0x7f out.bdf
答案4
使用unicode字体..几乎可以正常工作(例如arialuni.ttf,按要求显示所有字符)..我的问题是字符间距稍大...而且我测试的每种字体都是这种情况。