我的目标系统是:
- linux 3.3.7,
- Qt Embedded(开源版)4.8,
- Droid 字体(取自 fonts-droid_20111207+git-1_all.deb Debian 包并复制到
/usr/lib/fonts
目录中), - 用于主要 Qt GUI 应用程序的 Linux 帧缓冲区,
- 一切都是由Buildroot包构建的。
我的测试应用程序非常简单:只有一个对话框,QLabel
上面有一些静态(一个用于中文,一个用于阿拉伯语,一个用于西里尔文等)。
当我在我的 linux 桌面上运行它时,所有标签都正确显示。但是当它在我的目标系统上运行时,一些文本会消失。
经过一番研究,我发现 Qt 框架的行为存在这种差异:
QFontDatabase
类报告说我的桌面系统上只有 4 个 Droid 字体系列:
Droid Sans [unknown]
Droid Sans [monotype]
Droid Sans Mono
Droid Serif
但是同一个QFontDatabase
班级报告说我的目标系统上有很多分离的字体系列:
Droid Arabic Naskh
Droid Sans
Droid Sans Armenian
Droid Sans Ethiopic
Droid Sans Fallback
Droid Sans Georgian
Droid Sans Hebrew
Droid Sans Japanese
Droid Sans Mono
Droid Sans Thai
Droid Serif
结果,如果我更改我的应用程序的“默认”字体系列(通过-fn
命令行选项或通过在我的应用程序内部手动调用setFont()
)会显示一些文本标签,但不会显示其他标签(例如,当我使用“Droid Sans 希伯来语”字体时)家庭,缺少韩文文本,但希伯来文/阿拉伯文都可以)。
所以,我的问题是:在 Qt Embedded 应用程序中输出多语言文本的正确方法是什么?为什么“Droid Sans”一家会分开?有没有办法将它们结合在一起?
谢谢。