【问题标题】:Java Locale Font question..?Java 语言环境字体问题..?
【发布时间】:2009-05-22 06:48:40
【问题描述】:

[编辑] 这发生在带有 Java 1.5 的 OSX 上! (但也可能发生在 Windows 上!)

我的 Java Swing 程序的日语用户似乎无法在 JTextFields 中编写日语符号。实际上他们可以写它们但看不到它们。他们只看到以某种方式表明我认为该字体不支持这些符号的块。

出于各种原因(“Lucida Sans”,Font.PLAIN,12),我设置了自己的字体 - 我不想更改。我的问题是:

  1. 如果我不设置此字体,JTextFields 会显示日文符号吗?

  2. 我能否检测出我的字体完全支持哪些语言环境,并仅在这些情况下设置它,而为所有其他情况(如 Locale.Japan)保留标准 Java 字体?

  3. 您还有其他建议吗?

感谢您的帮助!

【问题讨论】:

    标签: java fonts locale


    【解决方案1】:

    如果我不设置此字体,JTextFields 会显示日文符号吗?

    很可能因为 JRE 会选择默认值。

    我能否检测出我的字体完全支持哪些语言环境,并仅在这些情况下设置它,而为所有其他情况(如 Locale.Japan)保留标准 Java 字体?

    理论上是的,尽管使用 Font 中的 canDisplay(char) 方法更容易测试此字体是否可以显示特定于语言环境的字符。如果没有,您可以切换到默认值。

    您还有其他建议吗?

    Here's a link on this topic that may help

    您的产品有链接吗?

    【讨论】:

      【解决方案2】:

      正是出于这个原因,我的国际化应用程序会根据语言环境设置其字体。回答您的问题:

      1. 这可能取决于所使用的 Windows 版本。这是安装了日文字体的美国版,还是在日本销售的版本?我不知道您的问题的确切答案,但我希望答案是“视情况而定”。

      2. 我不知道有什么标准方法可以做到这一点。我发现了一个很好的工具来调查这种事情:BabelMap。这将准确地告诉您任何给定字体都支持哪些字符。

      3. 其他建议:根据区域设置设置字体,至少对于选择区域设置。

      【讨论】:

      • 这发生在使用 Java 1.5 的 OSX 上! (但也可能发生在 Windows 上)。
      • 在 BabelMap 中——日文符号对应的 Unicode 块名是什么?
      • 我几乎猜到了。似乎 Lucida Sans 不支持它或任何其他块。还是我错了?
      • 在这个 WinXP Pro 盒子上,Lucida Sans 有很多块,但它没有片假名。例如,它确实有西里尔字母。
      • 所以我猜如果 WinXP 的 Luicida 支持 Cyrillic 这并不意味着 OSX 的 Luicida 也支持它?
      猜你喜欢
      • 2023-03-27
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多