Не удается загрузить персональный шрифт с помощью XLoadFont - PullRequest
0 голосов
/ 08 марта 2019

Привет, я новичок в 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

1 Ответ

0 голосов
/ 08 марта 2019

XLoadFont() может загружать только те растровые шрифты X11, которые уже доступны для X-сервера.Он не может загружать файлы шрифтов TTF и не может загружать шрифты из указанных вами файлов.

Чтобы найти имена шрифтов, доступных в вашей системе, запустите xfontsel.

Практически все современныеПрограммное обеспечение использует внешние библиотеки, такие как Каир, для рисования текста.Шрифты X11 используются только несколькими очень старыми приложениями, такими как xterm.

...