1

Я пытаюсь запустить приложение через 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:  6
  Current serial number in output stream:  9

Насколько я понимаю из всего, что я прочитал, это означает, что на компьютере, на котором я пытаюсь отобразить, отсутствует шрифт. Проблема в том, что я не знаю, какой шрифт отсутствует. Приведенное выше сообщение является единственным отображаемым сообщением.

Как определить, какой шрифт отсутствует?

Следовать за:

Я изменил переменную DISPLAY на localhost:... и наблюдал, как пакеты проходят с помощью wireshark. Похоже, имя запрашиваемого шрифта - "*". Есть ли проблема с этим запросом? Мне кажется, что это будет просто загрузить любой шрифт. Есть проблема с моей конфигурацией шрифта?

Больше последующих действий:

Я подтвердил на рабочей машине, что он также запрашивает шрифт «*». Я знаю это, потому что я перехватываю вызовы XLoadFont с помощью gdb, а параметр name отображается как «*».

Что должно произойти в этом случае? Это должно вернуть буквально любой шрифт?

1 ответ1

1

Согласно документации XLoadFont , запрос с '*' должен возвращать любой соответствующий Font .

ltrace сбрасывает вызовы библиотек в stderr . Если вы сравниваете выходные данные ltrace для правильного и неудачного выполнения, вы должны угадать, какой шрифт был использован в рабочей системе.

Также можно сравнить выходные данные команд xlsfonts и fc-list . В случае сомнений, fc-cache -fv может помочь, если кеш был поврежден.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .