Java、unicode和字体

Java、unicode和字体,java,unicode,fonts,internationalization,Java,Unicode,Fonts,Internationalization,我已经阅读了java文档,并在网上搜索了java支持具有特定字体的国际字符(如Monospace)的信息,但还没有得到明确的具体答案 Java1.4和Java1.5/1.6之间发生了变化。例如,在java 1.4中,如果将JTextArea上的字体设置为Monospace,它将无法处理外来字符(改为获取矩形),但在java 1.5/1.6中,它似乎工作正常 这些差异/改进的支持是否清晰地记录在任何地方 感谢: 多语言文本呈现 为了使用逻辑字体呈现多语言文本,2D现在可以利用所有支持的书写系统安装

我已经阅读了java文档,并在网上搜索了java支持具有特定字体的国际字符(如Monospace)的信息,但还没有得到明确的具体答案

Java1.4和Java1.5/1.6之间发生了变化。例如,在java 1.4中,如果将JTextArea上的字体设置为Monospace,它将无法处理外来字符(改为获取矩形),但在java 1.5/1.6中,它似乎工作正常

这些差异/改进的支持是否清晰地记录在任何地方

感谢:

多语言文本呈现

为了使用逻辑字体呈现多语言文本,2D现在可以利用所有支持的书写系统安装的主机操作系统字体。例如,如果在泰国语言环境中运行,但安装了韩文字体,则会同时呈现泰文和韩文。JRE现在还自动检测安装到其lib/fonts/fallback目录中的物理字体,并将这些物理字体添加到所有用于2D渲染的逻辑字体中。

在Windows上使用Unicode API

AWT现在在Windows 2000/XP上使用Unicode API。因此,它的一些组件可以处理文本,而不受Windows区域设置的限制。例如,无论Windows语言环境设置如何,AWT文本组件都可以在Devanagari书写系统中接受和显示文本。(强调矿山)

这些角色有多“外来”?大多数基于拉丁语的字体至少可以处理ISO-8859-1上半部分中的重音字母和其他字符,但我认为,除此之外,您无法合理地指望任何支持

您最好的选择通常是让用户从支持的字体列表中进行选择,您可以从底层操作系统中检索这些字体。如果你不能这样做,或者不想这样做,你可以采用CSS的方法:遍历一个可接受的字体列表,然后使用你发现安装的第一个字体

要填充列表,只需在谷歌上搜索“程序员字体”或“单间距字体”。我从来都不喜欢Java的任何逻辑字体,尤其是Monospace,它要么是Courier,要么是Courier在Windows框中的新字体。我几年前就不用了