【问题标题】:Java, unicode and fontsJava、Unicode 和字体
【发布时间】:2010-09-13 14:24:49
【问题描述】:

我查看了 java 文档并在网上搜索了有关 java 对具有特定字体(例如 Monospace)的国际字符的支持的信息,但未能得到明确的具体答案。

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

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

谢谢

【问题讨论】:

    标签: java unicode fonts internationalization


    【解决方案1】:

    来自Internationalization Enhancements

    多语言文本呈现

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

    在 Windows 上使用 Unicode API

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-06-19
        • 2012-09-14
        • 1970-01-01
        • 2012-11-25
        • 1970-01-01
        • 1970-01-01
        • 2013-05-22
        • 2011-10-03
        • 1970-01-01
        相关资源
        最近更新 更多