私のターゲットシステムは次のとおりです。
- 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
(中国語用、アラビア語用、キリル文字用など) が 1 つあるだけです。
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 Embedded アプリケーションで多言語テキストを出力する適切な方法は何ですか? 「Droid Sans」ファミリーはなぜ離散したのですか? それらを組み合わせる方法はありますか?
ありがとう。