无法使用XLoadFont加载个人字体

问题描述 投票:0回答:1

嗨,我是X11的新手,我正在尝试使用XLoadFont从目录加载字体,然后使用XDrawText打印一些文本但由于某种原因,我无法加载字体(.ttf格式),我加载字体:

static void setFont(
    Object *_this,
    const char *path)
{
    mc_textPr *this = _this;
    Display *display = getDisplay();
    Font tmp = XLoadFont(display, path);

    if (!tmp) {
        raise("Invalid path to font\n");
        return;
    }
    unloadFont(this->text.font, display);
    this->text.font = tmp;
}

在你之前,告诉我X11很难,并且应该使用其他东西,这是一个需要使用X11的学校项目。

我也知道资源

http://xopendisplay.hilltopia.ca/2009/Feb/Xlib-tutorial-part-4----Text.html

https://tronche.com/gui/x/

但我找不到为什么它吓坏了。

这是实际的错误:

X Error of failed request:  BadName (named color or font does not exist)
  Major opcode of failed request:  45 (X_OpenFont)
  Serial number of failed request:  17
  Current serial number in output stream:  27
c fonts x11
1个回答
0
投票

XLoadFont()只能加载X服务器已经可用的X11位图字体。它无法加载TTF字体文件,也无法从您指定的文件加载字体。

要查找系统上可用的字体名称,请运行xfontsel

事实上,所有现代软件都使用外部库(如Cairo)来绘制文本。 X11字体仅供一些非常古老的应用程序使用,例如xterm。

© www.soinside.com 2019 - 2024. All rights reserved.