如何在Linux嵌入式设备上显示汉字Qt

时间:2016-10-03 21:08:14

标签: qt fonts qml

我在用Qt / QML编写的嵌入式Linux上运行软件。我使用的是字体系列,我们称之为SomeFontFamily.otf。这个字体系列不支持中文字符,因此当我想显示中文文本时,我会得到空白字符。如果我在桌面Linux上运行相同的软件,我会得到与中文文本相同的结果,但是如果我在.font文件夹中添加一个home目录,其中一个字体系列支持中文,那么它会显示字符。所以我想我可以在嵌入式设备上做同样的事情,并在我的.font目录中添加了一个home文件夹,其中包含正确的字体,但不幸的是它没有用。然后我在嵌入式设备上找到了关于Qt字体的this doc。它说我应该将我的字体放在lib/fonts目录下,因为Qt会在嵌入式设备上搜索它。我尝试过,但遗憾的是没有成功。有人有类似的问题吗?仅供记录,这与翻译无关。我只是想用英文文本显示中文字符。

3 个答案:

答案 0 :(得分:1)

嵌入式QT版本通常缺少功能,这些功能被那些希望在不首先检查依赖关系的情况下切断依赖关系的人禁用。

要使字体替换工作,您需要启用fontconfig的构建。要获得复杂的文本支持(任何比拉丁字形运动更多的东西)你需要harfbuzz,更新的版本(harfbuzz-ng)更好。

答案 1 :(得分:1)

我已经使用自己的FontConfig修复了阿拉伯语的问题。您必须使用FontConfig& Font Qt Embedded

答案 2 :(得分:0)

我的最终解决方案实际上是为QFont创建了一个包装类,并在我的set字体的构造函数中添加了QFont::insertSubstitution(...)。然后将其暴露给QML并将其用作默认字体。它就像一个魅力。

作为旁注:如果您将字体与资源文件(.qrc)捆绑在一起,则必须使用QFontDatabase::addApplicationFont添加这些字体。