我正在学习X11编程,并且有点乱用XLoadFont。以下代码适用于一台计算机但不适用于另一台计算机。但是,从我可以发现的所有文档看来,它似乎是合法的。如果我对某事感到困惑,请告诉我:
// fail.c
#include <X11/Xlib.h>
int main(int argc, char** argv) {
Font f;
Display* disp;
XFontStruct* f1;
disp = XOpenDisplay("");
f = XLoadFont(disp, "*");
f1 = XQueryFont(disp, f);
XFreeFont(disp, f1);
return 0;
}
当然编译为:
gcc -o fail fail.c -lX11
如果我理解正确,那么&#34; *&#34;的XLoadFont应该只返回找到的任何字体。然而,在我尝试过的三台计算机中的两台上,它失败了。请指教。
答案 0 :(得分:1)
事实证明我的发行版(gentoo)安装了一些在上面有以下行的bad.alias文件:
! $Xorg: fonts.alias,v 1.3 2000/08/21 16:42:31 coskrey Exp $
这个结果(我假设)匹配“!”到“*”,然后尝试将该行的其余部分加载为字体,这显然不是字体名称。杀了这条线,现在一切正常。