确定QFont是否支持某个UTF-8字符

时间:2011-12-20 00:01:28

标签: qt utf-8 fonts character

我正在将一些花哨的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 个答案:

答案 0 :(得分:5)

canRender也由QFontMetrics::inFont(QChar)调用。