Определите, поддерживает ли QFont определенный символ UTF-8 - PullRequest
5 голосов
/ 20 декабря 2011

Я печатаю некоторые причудливые символы UTF-8, то есть стрелку вправо 0x2192 и молнию 0x21AF, в QTextEdit. Это прекрасно работает в современной операционной системе, такой как Ubuntu, но не работает, например. Windows XP, поскольку шрифты, похоже, не поддерживают эти символы UTF-8. Вместо этого нарисованы печально известные маленькие квадраты-заполнители.

Есть ли способ узнать, поддерживает ли текущий шрифт экземпляра QFont данный символ, чтобы я мог вернуться к более простым символам, таким как "->" для стрелки вправо?

Я обнаружил, что в Qt 4.8 есть класс QRawFont, у которого действительно есть метод QRawFont :: supportsCharacter (), который делает именно то, что я хочу, но сейчас я не могу использовать 4.8, я на 4.6 или 4.7 в лучшем случае. Я посмотрел на реализацию, и они вызывают QFontEngine :: canRender (). Тем не менее, QFontEngine представляется классом, недоступным извне. Единственные похожие классы звучания, которые я могу найти в 4.7, это QFontEngineInfo и QFontEnginePlugin, оба, похоже, не дают ничего полезного в моем случае.

1 Ответ

5 голосов
/ 20 декабря 2011

canRender также вызывается QFontMetrics::inFont(QChar).

...