我正在尝试通过 X 服务器运行应用程序并收到以下消息:
X Error of failed request: BadName (named color or font does not exist)
Major opcode of failed request: 45 (X_OpenFont)
Serial number of failed request: 6
Current serial number in output stream: 9
据我所读到的所有内容,这意味着我试图显示的计算机缺少字体。问题是,我不知道缺少什么字体。上述消息是唯一显示的消息。
我如何确定缺少哪种字体?
跟进:
我将 DISPLAY 变量更改为 localhost:...,并使用 wireshark 观察数据包的通过情况。看起来请求的字体名称是“*”。这个请求有问题吗?在我看来,这只会加载任何字体。我的字体配置有问题吗?
更多后续:
我已经在工作机器上确认它也在请求“*”字体。我知道这一点是因为我使用 gdb 捕获了对 XLoadFont 的调用,并且 name 参数显示为“*”。
在这种情况下应该发生什么?它应该按字面意思返回吗?任何字体?
答案1
根据加载字体文档,带有的查询'*'
应该返回任何匹配的Font
。
ltrace
将对库的调用转储到 中stderr
。如果您比较ltrace
正确执行和失败执行的输出,您应该猜出工作系统中使用了哪种字体。
也可以选择比较xlsfonts
和fc-list
命令的输出。如有疑问,fc-cache -fv
如果缓存已损坏,调用可能会有所帮助。