チュートリアルの Xft を使用しようとしましたが、それをチュートリアルと呼んでもらいました...北朝鮮のキャンプで書かれたようです...これも見つけました。それでは、ステップバイステップでやってみましょう:
// g++ XftTest.cc -lX11 -lXft `pkg-config --cflags freetype2`
#include<unistd.h>
#include<X11/Xlib.h>
#include<X11/Xutil.h>
#include<X11/Xft/Xft.h>
int main()
{
Display *display;
XftFont *font;
XftDraw *xftdraw;
XRenderColor xrcolor;
XftColor xftcolor;
display = XOpenDisplay(0);
Window XP = XCreateSimpleWindow(display,DefaultRootWindow(display),0,0,360,90,0,0,0);
XMapWindow(display,XP);
font = NULL; /* added 6/16 */
//font = XftFontOpenName(display,0,"NorthKorea-50"); // how to check if this is good ?
font = XftFontOpenName(display,0,"") /* added 6/16 */
if (!font) return 1;
xftdraw = XftDrawCreate(display,XP,DefaultVisual(display,0),DefaultColormap(display,0));
xrcolor.red =65535;
xrcolor.green=0;
xrcolor.blue =0;
xrcolor.alpha=65535;
XftColorAllocValue(display,DefaultVisual(display,0),DefaultColormap(display,0),&xrcolor,&xftcolor);
XftDrawString8(xftdraw, &xftcolor, font, 20,70 , (XftChar8 *)"Joe Dalton", 10);
XFlush(display);
sleep(2);
XftDrawDestroy(xftdraw);
XftColorFree(display,DefaultVisual(display,0),DefaultColormap(display,0),&xftcolor);
return 0;
}
ご覧のXftFontOpenName
とおり
XftFontOpenName(display,0,"NorthKorea-50")
、私のようにでたらめを書いても、NorthKorea というフォントを持っていないことを伝えるエラーや何かはありません。XftFontOpenName
文字列から最も近いフォントを返すため、これは理にかなっています。
では、フォントが一致するかどうかを確認するにはどうすればよいですか? arial のようなフォントを使用するにはどうすればよいですか? XftFontOpenName(display,0,"arial-50") を試してみましたが、違いはありませんでした。
私のシステムでは、これらのフォルダーが fonts フォルダーにあります。
$ls /usr/share/fonts/
100dpi 75dpi cyrillic encodings misc OTF TTF Type1 util
これらのフォルダのフォントを同じ方法で使用できますか?
素敵なインターネット リンクをいくつかお持ちでしたら、ぜひご覧ください。
注意:xftタグはありません...
6/16更新
私はまだそのようなもので立ち往生しています...私が置き換えても理解できません
font = XftFontOpenName(display,0,"NorthKorea-50");
に
font = XftFontOpenName(display,0,"");
まだフォントをロードしています...
xlsfonts は dat one のように多くのものを返します:
-monotype-courier new-bold-r-normal--0-0-0-0-m-0-iso8859-10
しかし、これを引数として渡してXftFontOpenName
も何も変わりません。私もフォントを読み込もうとしてXftFontOpenXlfd
いますが、常に返されますNULL
...