我尝试使用 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"),我没有什么不同。
在我的系统上,我的字体文件夹中有这些文件夹:
$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
......