
3步替换Ventoy启动菜单字体彻底解决高分屏菜单模糊【免费下载链接】VentoyA new bootable USB solution.项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy深夜十一点你正要帮同事挑一个 ISO 装系统。屏幕是 27 寸 4K 显示器但 BIOS 里只开了 1080p 输出Ventoy 启动菜单弹出来ISO 列表那一行字只有几像素高文件名里的版本号眯着眼还是看串行。模糊的锅不在显示器而在字体Ventoy 自带的 PF2 位图字体按低分辨率屏幕定死了字号分辨率越高字越小。菜单文字从哪来grub.cfg 里的两行加载链Ventoy 的文字菜单由 GRUB2 渲染。GRUB 手里没有字体引擎读不懂 TTF 这种只存字形轮廓的字体它只认 PF2——可以理解为预先刻好的字模贴纸转换时指定什么字号PF2 里就存好什么字号的现成字模启动时直接抠下来贴到屏幕上不需要任何渲染环节。字体文件放在 VTOYEFI 分区的grub/fonts/目录仓库里对应的源码位置是 INSTALL/grub/fonts/里面两个文件ascii.pf2基础拉丁字符负责启动早期界面unicode.pf2扩展字符集菜单正文实际用它渲染要替换的就是它加载逻辑在 INSTALL/grub/grub.cfg 约 2485 行一共就两行vt_load_file_to_mem auto $prefix/fonts/unicode.pf2 vtoy_font_mem loadfont mem:${vtoy_font_mem_addr}:size:${vtoy_font_mem_size}第一行把文件原样读进内存第二行把这块内存加载为当前字体。这条链意味着文件本身被换掉重启即生效不需要重装 Ventoy也不需要动其他任何文件。让字变大的路线改的是什么代价提高 BIOS 输出分辨率GRUB 画面的渲染尺寸受显卡 BIOS 支持的最高分辨率限制改完字只是没被压缩替换unicode.pf2本文方案字模本身的尺寸与字符覆盖任何分辨率下字号都固定可控更换主题背景菜单背后的装饰图对文字零影响只改变观感实操如何一次替换到位从 TTF 到 PF2grub-mkfont 转换命令先把手头的 TTF 转成 PF2。这一步必须做因为 GRUB 不认 TTFsudo apt install grub2-common # 提供 grub-mkfont其他发行版换对应包名 grub-mkfont -s 16 -o unicode.pf2 SourceHanSansCN-Regular.ttf # -s 单位为像素1080p 建议 14-164K 可上 18-20定位并挂载 VTOYEFI 分区字体不在数据分区而在 U 盘的 EFI 分区里先把它找出来挂上lsblk -f # 找 label 为 VTOYEFI 的 FAT32 分区通常是第 2 个分区 sudo mount /dev/sdb2 /mnt/vtoyefi ls /mnt/vtoyefi/grub/fonts # 能列出 ascii.pf2 和 unicode.pf2 才算挂对挂上之后grub/目录里除了fonts/还有themes/ventoy/默认背景就是这张图等下可以顺手处理备份、覆盖、卸载 ⚠️cd /mnt/vtoyefi/grub/fonts cp unicode.pf2 unicode.pf2.bak # 留一份原件翻车时秒级回滚 cp ~/unicode.pf2 . # 用新字体覆盖 sync sudo umount /mnt/vtoyefi⚠️ 一定要sync再正常卸载FAT 文件系统没有日志机制直接拔 U 盘可能只写了一半下次开机找不到字体文件菜单会退回最朴素的默认字。重启后菜单字号应当肉眼可见地变大想二次确认可按c进 GRUB 调试 shell 执行lsfonts见下文选读。选读三个按需深入的定制方向中文菜单的 CJK 字体嵌入如果开启了中文菜单纯拉丁字体的 CJK 字模覆盖不全会缺字。用带中文的字库重新转一次一次写两个尺寸——PF2 文件头允许存多个尺寸渲染时自动取最接近当前画面字号的那个grub-mkfont -s 14 -s 20 -o unicode.pf2 NotoSansCJK-Regular.ttc # 双尺寸文件小界面用 14大画面用 20主题背景顺手换掉背景图就在同分区的grub/themes/ventoy/仓库源码INSTALL/grub/themes/ventoy/保持 1024x768 原尺寸直接覆盖background.png即可和字体文件互不干扰调试 shell 里先验证再动手改动前也可以先进 GRUB 调试 shell 确认当前加载的是什么字体避免白忙# 倒计时按 c 进入调试 shell lsfonts # 列出已加载字体应看到 unicode 与 ascii loadfont unicode替换之后操作后确认清单lsblk -f确认写入的是 VTOYEFI 分区FAT32不是数据分区新unicode.pf2由grub-mkfont成功生成且非空文件原文件已备份为unicode.pf2.bak新字体落在/grub/fonts/文件名保持unicode.pf2不变执行过sync并正常umount后才拔盘重启后菜单字号与转换时指定的像素值一致中文菜单如启用无方块缺字三个最常见的不对劲重启后字体没变——九成是写错了分区用blkid复核目标盘符是不是 VTOYEFI菜单出现方块或乱码——字库不覆盖对应字符集按选读 1 换 CJK 字体重转部分字符忽大忽小——单尺寸 PF2 与画面不匹配改用 14/20 双尺寸转换整件事只有一步转换、一次拷贝剩下全是确认没写错地方。现在就可以打开终端跑一遍lsblk -f把 U 盘上的 VTOYEFI 分区找出来这是上面所有操作的起点。【免费下载链接】VentoyA new bootable USB solution.项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考