我使用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中,不会出现此问题。
有没有办法以编程方式添加此映射?还有其他解决方案吗?
答案 0 :(得分:0)
显然答案是......
根据此网址,java 1.4不可能:
http://java.sun.com/javase/technologies/core/basic/intl/faq.jsp#desktop-rendering
使用逻辑字体名称:
优点:这些字体名称保证可以在任何地方使用,并且它们至少可以使用主机操作系统本地化的语言(通常是更大范围的语言)进行文本呈现。
< / LI>缺点:用于呈现文本的物理字体在不同的实现,主机操作系统和区域设置之间有所不同,因此应用程序无法在任何地方实现相同的外观。 此外,映射机制偶尔会限制可呈现的字符范围。后者曾经是5.0之前的JRE版本的一个大问题:例如,日文文本只能在日本本地化主机操作系统上呈现,而不是在其他本地化系统上呈现,即使已经安装了日语字体。对于使用2D字体渲染的应用程序,这个问题在JRE 5.0版本中很少见,因为映射机制现在通常会识别并使用所有支持的书写系统的字体(如果已安装)。
唯一可行的方法似乎是在组件中设置一种已经以硬编码方式支持扩展图形字符的字体。