3

I've looked at the java documentation and scoured the net for information on java's support for international characters with specific fonts (such as Monospace), but haven't been able to get a clear concrete answer.

There has been a change between java 1.4 and java 1.5/1.6. For example, in java 1.4 if you set the font on a JTextArea to Monospace, it won't be able to handle foreign characters (get rectangles instead), but in java 1.5/1.6 it seems to work fine.

Are these differences/improved support clearly documented anywhere?

Thanks

4

2 回答 2

2

来自国际化增强

多语言文本渲染

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

在 Windows 上使用 Unicode API

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

于 2008-09-26T21:12:12.807 回答
0

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

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

要填充列表,只需谷歌搜索“程序员字体”或“等宽字体”。我从不喜欢 Java 的任何逻辑字体,尤其是 Monospace,它在 Windows 机器上是 Courier 或 Courier New。我几年前就停止使用它了。

于 2008-09-27T00:10:04.300 回答