LINUX.ORG.RU

QFontDatabase: Cannot find font directory

 


0

1

Пытаюсь сделать Portable-версию одной программы на Qt 5, вот этой: https://github.com/figec/ttyhlauncher Вот моя сборка. https://yadi.sk/d/YtD-7CREdsbRT

При запуске вот что выдаёт:

(10:16:33) Logger >> 10.01.15 ttyhlauncher-0.9 started.
(10:16:33) Settings >> Updating local clisent list...
(10:16:33) Util >> Make GET: http://store.ttyh.ru/prefixes.json
(10:16:34) Settings >> OK. Saving local copy...
(10:16:34) Settings >> Loading local client list...
(10:16:34) Settings >> Error: JSON: invalid UTF8 string at 50
(10:16:34) Settings >> Updating local java keystore...
(10:16:34) Util >> Make GET: http://store.ttyh.ru/store.ks
(10:16:34) Settings >> OK. Saving local copy...
QFontDatabase: Cannot find font directory /home/zenitur/qt5-install/lib/fonts - is Qt installed correctly?
run_game.sh: line 21: 28627 Аварийный останов         $BIN $@

Гугление дало решение - переменная QT_QWS_FONTDIR. Я её указываю - и нифига, программа продолжает искать всё там же. Как заставить приложение видеть шрифты? Qt компилировал сам, могу внести изменения в код.

★★★★★

Последнее исправление: ZenitharChampion (всего исправлений: 1)

Переменная окружения называется QT_QPA_FONTDIR, а не QT_QWS_FONTDIR. Вот с этой строчкой в run_game.sh прога запускабельна.

export QT_QPA_FONTDIR=$LIBS/fonts
archie
()
Ответ на: комментарий от archie

Спасибо! Решено. Теперь осталось пофиксить неработающие русские буквы (пересобираю без патчей noicu - странно, а на новой системе с ними работает) и ошибку «Не удаётся что-то там скачать» (а это пока не знаю как).

ZenitharChampion ★★★★★
() автор топика
Ответ на: комментарий от ZenitharChampion

Что касается русских букв, то QWebView скорее всего выбирает шрифты, не содержащие кириллических глифов. Удалил из lib/fonts все файлы, кроме DejaVu*.ttf - русские буквы появились.

А вообще бандлить шрифты вместе с аппой - имхо плохая идея. Нужно использовать системные настройки тем, шрифтов и сглаживания. Например у меня в гноме прога использует культевую дефолтную тему Fusion и выглядит как ненативное уг. Для гтк-базед DE нужно к приложению прикладывать плагин libqgtk2.so. Тогда он в теории должен подхватить системную тему вместе с пользовательскими шрифтами.

archie
()
Ответ на: комментарий от archie

Странно что Qt устанавливает свои шрифты, а не берёт из системы. Может в системе их просто нет, вот он и решил установить сам? CentOS 5. Почитаю о параметрах сборки.

Я использовал системный Freetype при компиляции. Значит Qt берёт /usr/lib/libfreetype.so.6, а не несёт с собой, как Firefox с ftp://ftp.mozilla.org/pub. Значит настройки сглаживания подхватываются. Кроме того, это полезно для безопасности: системные библиотеки обновляются из репозитория дистрибутива.

В мануалке, по которой я собрал, в команде ./configure есть параметры -system-freetype и -fontconfig. Но Fontconfig пришлось выключить: компилятор заругался на Fontconfig, и ошибка не гуглилась (5.2 ещё собиралось). Может ли из-за этого не быть сглаживания шрифтов у конечного пользователя я не знаю.

ZenitharChampion ★★★★★
() автор топика
Ответ на: комментарий от ZenitharChampion

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

Но Fontconfig пришлось выключить: компилятор заругался на Fontconfig, и ошибка не гуглилась (5.2 ещё собиралось).

А вот это проблема. fontconfig в том числе отвечает за настройки сглаживания. У меня они прописаны и в dconf, и в ~/.config/fontconfig/fonts.conf для тех приложений, которые в dconf не умеют. Но прога игнорирует и то, и другое. Попробуй добить поддержку fontconfig, в репах культи всегда с ним собираются.

archie
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.