2014-08-30 64 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 $ 

這結果(我認爲)的「!」到「*」,然後嘗試加載行的其餘部分作爲字體,顯然不是字體名稱。殺死這條線,現在一切正常。