Qt: Невозможно загрузить файл TTF

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

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам