You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现自定义内核无法识别.psf格式字体问题求助

排查步骤

  • 优先给LoadPSF1Font加分支日志定位错误点
    当前你所有失败场景都返回NULL并打印同一句提示,无法区分是找不到文件、文件校验失败还是内存分配失败。可以在每个返回NULL的分支加不同的打印内容,比如找不到文件打印L"字体文件不存在",魔数校验失败打印L"PSF格式校验失败",内存分配失败打印L"字体内存分配失败",直接定位故障环节。
  • 校验PSF格式解析逻辑
    PSF1格式的合法头部魔数固定为0x0436,首先确认你的校验代码是否写错了魔数值、是否搞反了字节序。另外确认你使用的zap-light16.psf确实是PSF1格式,而非PSF2格式:PSF2的魔数为0x864ab572,头结构和PSF1完全不兼容,用PSF1的解析逻辑读取会直接判定无效。
  • 检查文件读取逻辑
    虽然同路径可以加载其他文件,仍需确认两个点:
    1. 读取文件时申请存储字体内容的内存是否分配成功,内存分配失败会直接导致加载函数返回NULL
    2. 读取到的文件总大小和本地zap-light16.psf的实际大小是否一致,避免读文件时只读取了部分内容就结束,导致头部校验失败
  • 检查路径传参逻辑
    你传入的文件名是宽字符串L"zap-light16.psf",确认UEFI文件接口对宽字符路径的处理是否正确,也可以排查是否存在文件名大小写不匹配的问题:部分自定义文件系统实现会区分大小写,而FAT32默认不区分,若实际文件名大小写和传入的不一致可能导致找不到文件。

额外渲染Bug修复提示

你贴出的渲染代码存在一个不影响当前加载问题、但后续渲染会触发的bug:putChar函数中的fontPtr++写在了循环外侧,完全没有生效,需要将其移动到y循环的末尾,否则每一行字符位图都会读取同一个字节,渲染结果为重复竖线。

内容的提问来源于stack exchange,提问作者Alexito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:54:00