我查阅了java文档,并在网上搜寻了有关java对具有特定字体(如等宽字体)的国际字符的支持的信息,但没有得到明确而具体的答案。
在java 1.4和java 1.5/1.6之间有一个变化。例如,在java1.4中,如果您将JTextArea上的字体设置为等宽字体,它将不能处理外来字符(取而代之的是矩形),但在java1.5/1.6中,它似乎工作得很好。
这些差异/改进的支持是否有明确的文档记录?
谢谢
发布于 2008-09-26 13:12:13
来自Internationalization Enhancements
多语言文本渲染为了使用逻辑字体渲染多语言文本,2D现在利用所有支持的书写系统的已安装主机操作系统字体。例如,如果在泰语区域设置环境中运行,但安装了韩语字体,则将同时渲染泰语和韩语。JRE现在还会自动检测安装到其lib/ fonts /fallback目录中的物理字体,并将这些物理字体添加到用于2D呈现的所有逻辑字体中。在Windows上使用Unicode API现在使用Windows2000/XP上的Unicode API。因此,它的某些组件可以处理文本,而不受Windows区域设置的限制。例如,AWT文本组件可以接受和显示天成文书书写系统中的文本,而不考虑Windows的区域设置。(重点是我的)
发布于 2008-09-26 16:10:04
这些字符有多“外来”?大多数基于拉丁语的字体至少可以处理ISO-8859-1的上半部分中的重音字母和其他字符,但我认为您不能合理地指望对其他字体的支持。
最好的办法通常是让用户从支持的字体列表中进行选择,您可以从底层操作系统中检索这些字体。如果不能这样做,或者不想这样做,您可以采用CSS方法:遍历可接受的字体列表,并使用您发现安装的第一个字体。
要填充列表,只需在Google中搜索“程序员字体”或“等宽字体”。我从来不喜欢Java的任何逻辑字体,特别是Monospace,它在Windows盒子上是Courier或Courier New。我几年前就不用了。
https://stackoverflow.com/questions/141859
复制相似问题