LINUX.ORG.RU

Ошибка «QFontEngineFT: Failed to create FreeType font engine»

 , ,


0

1

Захотелось мне попробовать написать Qt приложение под фреймбуфер для устройства Jetson Nano.

Почитал руководства. Скачал отсюда QtEverywhere 5.15.2. Собрал QtEverywhere с такими настройками:

$ ./configure -v -opensource -confirm-license -pkg-config -no-fontconfig -qt-freetype -qt-harfbuzz

Установил Qt. Создал директорию /usr/local/Qt-5.15.2/lib/fonts/. Скопировал туда ttf-шрифт Terminus.

Набросал такую простенькую программу:

 #include <QApplication> // For QApplication
 #include <QLabel> // For QLabel
 
 int main(int argc, char *argv[]) {
   QApplication app(argc, argv);
 
   QLabel label("Привет, Мир!");
   label.show();
 
   return app.exec();
 }

Собрал её и попытался запустить с флагом -platform linuxfb. Получил ругательство вида

QFontEngineFT: Failed to create FreeType font engine

И никакой картинки на экране!

При этом, если запустить с флагом -platform vnc, то никаких проблем, всё отображается и показывается то, что и ожидалось. Правда, через VNC.

В чём оказалась загвоздка: при запуске с флагом -platform linuxfb не выполняется автоматическая задача параметра pixelSize для шрифта и pixelSize оказывается равным нулю. Отсюда и не удаётся создать тот самый FreeType font engine.

Но если задать самостоятельно настройки шрифта, например вот так:

 #include <QApplication> // For QApplication
 #include <QLabel> // For QLabel
 
 int main(int argc, char *argv[]) {
   QApplication app(argc, argv);
 
   QLabel label("Привет, Мир!");
   QFont font;
   font.setFamily("Terminus");
   font.setPixelSize(12);
   label.setFont(font);
   label.show();
 
   return app.exec();
 }

То всё срабатывает как надо и вырисовывается картинка на фреймбуфере.

Перемещено dataman из development