Qt: Невозможно загрузить файл TTF - PullRequest
7 голосов
/ 16 августа 2011

У меня есть встроенное приложение Qt, которое я разрабатываю в OpenSuse 11.4, где мне нужно загрузить файл шрифта TTF.Однако когда я вызываю функцию int QFontDatabase::addApplicationFont(), она возвращает -1.

После прочтения документации я обнаружил, что добавление шрифтов приложений на платформах Unix / X11 без fontconfig в настоящее время не поддерживается.

Я проверил через YaST, установлен ли у меня fontconfig, и он установлен - но я не думаю, что это связано, потому что я использую встроенную библиотеку qt.Я думаю, что мне нужна поддержка fontconfig библиотеки, встроенной в qt, но как мне это сделать?

Поддерживает ли fontconfig даже встроенную qt?Кто-нибудь может сказать мне, что происходит?

1 Ответ

5 голосов
/ 25 декабря 2012

Вы можете использовать QPA или Qt Platform Abstraction (ранее известный как Lighthouse ).Вам необходимо создать реализацию (может быть сделана как плагин или просто использоваться напрямую) QPlatformIntegration , которая предоставляет пользовательскую QPlatformFontDatabase.Хитрость заключается в том, чтобы повторно использовать большую часть существующей реализации Qt QFontconfigDatabase (которая является аналогом подкласса QBasicUnixFontDatabase).

Это именно та техника, которую мы используем для PhantomJS так что он работает без головы (без X11) в Linux, все еще используя Fontconfig (и, следовательно, FreeType ) для рендеринга текста.

К сожалениюЯ думаю, что Qt 4.5 слишком стар, чтобы запустить Lighthouse.Либо перейдите на версию 4.8, которая официально поддерживает QPA, либо попробуйте зарегистрировать Lighthouse.

...