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

现在,此条目不适用于其他语言环境。

我遇到的问题是,我需要能够在使用任何语言环境时呈现此字符串。此外,我无法修改 font.properties 文件来添加额外的条目,因为我无法控制客户端使用的 JVM。

在 Java 1.5 中不会出现此问题。

有没有办法以编程方式添加这个映射?还有其他解决方案吗?

4

1 回答 1

0

显然答案是......

根据此网址,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 回答