2011-12-20 74 views
5

我正在向QTextEdit打印一些精美的UTF-8字符,即右箭头0x2192和闪电0x21AF。这对于像Ubuntu这样的现代操作系统非常适用,但是对于例如Windows XP,因为字体似乎不支持这些UTF-8字符。相反,臭名昭着的小占位符正方形画出来。确定QFont是否支持某个UTF-8字符

有没有办法找出QFont实例的当前字体是否支持给定字符,所以我可以回退到更简单的字符,如“ - >”的右箭头?

我发现Qt 4.8有一个QRawFont类,它确实有一个QRawFont :: supportsCharacter()方法,它完全符合我的要求,但现在我不能使用4.8,我在4.6或最好4.7。 我看了一下实现,他们调用QFontEngine :: canRender()。但是,QFontEngine似乎是一个无法从外部访问的类。我能在4.7中找到的唯一类似的探测类是QFontEngineInfo和QFontEnginePlugin,两者似乎都没有提供对我有用的任何东西。

回答

5

canRender也被称为QFontMetrics::inFont(QChar)

+0

是的,就是这样!谢谢!我显然在那个字体相关的丛林中迷失了一些,所以我错过了那个不起眼的方法:)。 – DerManu 2011-12-20 03:46:31