我的目标系统是:
- Linux 3.3.7,
- Qt Embedded(开源版)4.8,
- Droid字体(从fonts-droid_20111207+git-1_all.deb Debian软件包中获取,并复制到
/usr/lib/fonts
目录下), - Linux Framebuffer用于主Qt GUI应用程序,
- 所有内容都由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 Hebrew”字体系列时,韩文缺失,但希伯来文/阿拉伯文正常显示)。因此,我的问题是:在Qt嵌入式应用程序中输出多语言文本的正确方法是什么?为什么“Droid Sans”字体系列被分开了?有没有办法将它们合并在一起?
谢谢。