Некорректный рендеринг шрифтов в Qt (Symbian)

Некоторое время я пытался заставить работать рендеринг пользовательских шрифтов в приложении Symbian Qt (4.6). Для большинства шрифтов и большинства глифов все это отлично работает с использованием метода, аналогичного это.

Однако для большинства шрифтов многие глифы отображаются неправильно - по сути, отображается неправильный глиф. Я пробовал приложение Symbian C ++, использующее тот же метод загрузки, и оно работает правильно. Итак, это действительно похоже на ошибку Qt, и на самом деле все кровавые подробности находятся здесь .

Может ли кто-нибудь предложить обходной путь, чтобы получить полный рендеринг шрифтов TTF, работающий на устройствах Symbian ^ 3 в Qt 4.6?


person KevinD    schedule 02.03.2011    source источник


Ответы (2)


Хотя у меня нет опыта работы с приложениями Symbian Qt, я работал в прошлом году в течение нескольких месяцев в приложении Qt с двойной средой (Win32 и Mac OS X), которое в основном связано с рендерингом шрифтов.

Рендеринг QFont -в Win32 / Mac OS X- в целом работает гладко, но если у вас есть расширенные требования к рендерингу шрифтов, вы можете столкнуться с несколькими серьезными проблемами:

a) Невозможно определить, действительно ли конкретный символ Юникода присутствует в определенном шрифте (т.е. невозможно полностью отключить механизм подстановки символов - вы можете предоставить только подсказки замены)

б) Если вы попытаетесь загрузить некоторые определенные (плохие?) шрифты TTF / OTF для исключительного использования вашего приложения (то есть для загрузки неустановленных шрифтов для их использования в вашем приложении), приложение выйдет из строя, и сбой будет внутри кода библиотек Qt (он пытается дважды освободить некоторые буферы). Это очень редкая ошибка: это случилось со мной всего для 5-10 шрифтов из 90 000 шрифтов, которые я тестировал, но все еще раздражает, если основная задача вашего приложения связана с рендерингом шрифтов.

Мое обходное решение заключалось в использовании библиотеки FreeType2 (с открытым исходным кодом):

-> Он никогда не вылетает (просто возвращает ошибку на плохих шрифтах)

-> Это примерно в 4-5 раз быстрее, чем рендеринг QFont

FreeType2 не является прямой заменой QFont и наверняка требует дополнительного времени, чтобы понять некоторые базовые (низкоуровневые) концепции перед его использованием, но если вам действительно нужна быстрая и надежная библиотека для рендеринга любых TTF / OTF (+ other) в серое или черно-белое изображение, я настоятельно рекомендую его как лучший выбор.

person Fivos Vilanakis    schedule 18.03.2011

Окончательный ответ заключается в том, что это ошибка QT, но, к счастью, она исправлена ​​в QT 4.7.2. Теперь просто нужно подождать, пока магазин Ovi не примет приложения Nokia QT 4.7.2 ....

person KevinD    schedule 20.03.2011