0

Java 1.4を使用して次の問題があります

漢字を含む JTextPane に非常に単純な HTML ドキュメントを表示しようとしています。

Java 仮想マシンの起動時に使用されるロケールが user.language=zh および user.country=CN である場合、グラフィック文字は正しくレンダリングされます。

その他のロケールでは、文字は正方形としてレンダリングされます。

私が見た違いは、Java 1.4 がロケールごとに異なる font.properties ファイルを使用していることです。この特定のケースでは、font.properties.zh ファイルに追加のエントリが含まれています。

dialog.plain.0=Arial,ANSI_CHARSET 
**dialog.plain.1=\u5b8b\u4f53,GB2312_CHARSET**
dialog.plain.1=WingDings,SYMBOL_CHARSET
dialog.plain.2=Symbol,SYMBOL_CHARSET

現在、このエントリは他のロケールでは使用できません。

私が抱えている問題は、ロケールを使用しているときにこの文字列をレンダリングできる必要があることです。さらに、クライアントが使用する JVM を制御できないため、font.properties ファイルを変更してエントリを追加することはできません。

Java 1.5 では、この問題は発生しません。

このマッピングをプログラムで追加する方法はありますか? 他の解決策はありますか?

4

1 に答える 1

0

どうやら答えは……。

この URL によると、Java 1.4 では不可能です。

http://java.sun.com/javase/technologies/core/basic/intl/faq.jsp#desktop-rendering

論理フォント名の使用:

  • 利点: これらのフォント名は、どこでも機能することが保証されており、少なくともホスト オペレーティング システムがローカライズされている言語 (多くの場合、はるかに広い範囲の言語) でのテキスト レンダリングが可能です。

  • 短所: テキストのレンダリングに使用される物理フォントは、実装、ホスト オペレーティング システム、およびロケールによって異なるため、アプリケーションはどこでも同じ外観を実現できません。また、マッピング メカニズムによって、レンダリングできる文字の範囲が制限されることがあります。後者は、5.0 より前の JRE バージョンでは大きな問題でした。たとえば、日本語のテキストは、日本語のフォントがインストールされている場合でも、日本語にローカライズされたホスト オペレーティング システムでのみレンダリングでき、他のローカライズされたシステムではレンダリングできませんでした。2D フォント レンダリングを使用するアプリケーションの場合、JRE バージョン 5.0 ではこの問題はほとんど発生しません。これは、マッピング メカニズムが、サポートされているすべての書記体系のフォントがインストールされていれば、それらを認識して使用するようになったためです。

唯一の可能な方法は、ハードコードされた方法で拡張グラフィック文字をサポートすることがわかっているフォントをコンポーネントに設定することです。

于 2008-11-25T13:24:04.220 に答える