【问题标题】:Using font resources for graphical languages in Java 1.4在 Java 1.4 中使用图形语言的字体资源
【发布时间】:2008-11-25 10:58:38
【问题描述】:

我在使用 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 中不会出现此问题。

有没有办法以编程方式添加此映射?有没有其他解决办法?

【问题讨论】:

    标签: java internationalization


    【解决方案1】:

    显然答案是......

    对于 java 1.4 来说,这个 url 是不可能的:

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

    使用逻辑字体名称:

    • 优点:这些字体名称保证在任何地方都可以使用,并且它们至少可以使用主机操作系统本地化的语言(通常是更大范围的语言)进行文本呈现。

    • 缺点:用于呈现文本的物理字体因不同的实现、主机操作系统和语言环境而异,因此应用程序无法在所有地方实现相同的外观。 此外,映射机制有时会限制可以呈现的字符范围。后者曾经是 5.0 之前的 JRE 版本的一个大问题:例如,日文文本只能在日文本地化的主机操作系统上呈现,即使安装了日文字体,也不能在其他本地化系统上呈现。对于使用 2D 字体渲染的应用程序,这个问题在 JRE 5.0 版中要少得多,因为映射机制现在通常可以识别并使用所有支持的书写系统的字体(如果已安装)。

    似乎唯一可能的方法是在组件中以硬编码的方式设置已知支持扩展图形字符的字体。

    【讨论】:

      猜你喜欢
      • 2019-02-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      相关资源
      最近更新 更多