我正在制作一个跨平台图形库(请不要问我为什么要重新发明轮子),我想添加一些我认为很简单的东西:改变字体的大小。以前,我的Expose
事件看起来像这样:
XTextItem textitem;
textitem.chars = some_string;
for (textitem.nchars = 0; textitem.chars[textitem.nchars] != '\0'; textitem.nchars++); // Basically just strlen
textitem.delta = 0;
textitem.font = None;
XDrawText(display, xwindow, gc, x, y, &textitem, 1);
使用Quartz,你可以只使用[NSFont systemFontOfSize:12]
。我正在为Xlib寻找类似的东西。
在互联网上,我没有发现任何关于用Xlib调整字体大小的信息。我已经浏览了手册几十次,我做了无数次谷歌搜索,但仍然没有找到任何东西。我找到了XLoadFont,但网上几乎没有任何关于它的信息,它总是会给予一个BadName
错误。
char* xfontid; asprintf(&xfontid, "-*-*-*-*-*-*-*-%d-*-*-*-*-*-*", fontsize);
textitem.font = XLoadFont(display, xfontid);
free(xfontid);
XDrawText(display, xwindow, gc, x, y, &textitem, 1);
1条答案
按热度按时间fwzugrvs1#
Xlib字体是固定大小的位图。理论上,获得不同大小的唯一方法是在您使用的系统上安装它。但没有人真正将xlib字体用于任何实际目的,正是因为它笨拙且不灵活。在xlib中进行图形编程通常使用Gtk或Cairo等工具包。
https://www.cairographics.org/manual/cairo-fonts.html