1

我正在为运行 X11 的设备开发 QT/QML (4.7.4) 应用程序。在 linux 桌面上运行,中文和俄文字体工作正常,但在设备上时却不行。

从我所做的所有研究和调查中,我不确定这是 QML FontLoader 问题还是我应该修复 X11 字体?

我花了几天时间研究 fc-cache 和 xset +fp 以及相关的命令,但没有运气。我也试过使用 QFontDatabase::addApplicationFont() 没有运气。

如果我应该使用 FontLoader,我是否必须告诉整个应用程序中的每个文本项何时字体不同(当用户切换语言时?)这可能是一项艰巨的任务。如果可能的话,我宁愿通过 X11 解决这个问题。

如果答案在 X11 中,我需要一些帮助。我将 Qt 发行版中的所有字体复制到设备上并运行以下命令(以及现在添加中文字体,因为我只需要查看其中一个字体即可知道我有解决方案):

(这可能不完整,因为它已经有几天了)

1. go into the directory that I copied the Qt fonts to and:
   A. mkfontscale .
   B. mkfontdir .
2. sudo xset +fp "/dir/to/qt/fonts/dir"
3. sudo xset fp rehash
4. xset q  (shows whats set)
5. sudo fc-cache -fv
6. export FC_DEBUG=1024  (shows debug info when app starting app or fc-list)

在我的 Qt 应用程序中,我有:

int ret = fonts.addApplicationFont("/opt/project/lib/fonts/wqy-zenhei.ttc");
if (ret == -1)
   qDebug() << "ERROR - font didnt load";

我没有看到错误消息,所以我的字体显然已正确加载。

当我运行我的应用程序时,我看不到列表中的字体(通过 FC_DEBUG 和 fc-list)。

我感谢任何有关解决此问题的见解/帮助。谢谢

4

1 回答 1

0

事实证明,如上所述,我做的事情是正确的。我的 qml 直接在源代码中使用中文(和其他)字体,但其他 qml 文件正在被翻译。一旦我选择了语言(我们在启动时有一个选择 qml 面板),字体就在那里。现在我只需要解决没有显示的初始字体。

于 2015-11-01T09:55:48.210 回答