2014-08-30 21 views
1

我正在学习X11编程,稍微弄乱了XLoadFont。以下代码适用于一台计算机,但不适用于另一台。但是,从所有文档中我可以发现它看起来是合法的。请让我知道,如果我感到困惑的东西:Legal X11是否加载字体?

// 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 

如果我理解正确的XLoadFont“*”应该只是返回找到的任何字体。然而,在我试过的三台电脑中,有两台失败。请指教。

回答

1

事实证明,我的发行版(巴布亚)将安装在顶部以下行一些不好的fonts.alias文件:匹配

! $Xorg: fonts.alias,v 1.3 2000/08/21 16:42:31 coskrey Exp $ 

这结果(我认为)的“!”到“*”,然后尝试加载行的其余部分作为字体,显然不是字体名称。杀死这条线,现在一切正常。