【问题标题】:Does windows XP support unicode button text in an SWT Java program?Windows XP 是否支持 SWT Java 程序中的 unicode 按钮文本?
【发布时间】:2011-10-01 02:30:10
【问题描述】:

我在我的 SWT Java UI 中包含了几个 unicode 箭头,并且刚刚注意到我的 Windows XP 机器不呈现这些字符。

XP

7

Windows XP 不支持 unicode UI 文本还是我需要做一些特殊的事情来启用支持?

【问题讨论】:

  • 我相信这是字体回退问题。您的系统字体可能没有这些字形,并且由于某种原因无法回退到有这些字形的字体。
  • AFAIK 我只是使用“Windows Classic”主题中的普通 Windows XP 字体。我应该避免在 UI 元素中使用非 ASCII 字符还是有一些是安全的?
  • 如何将 unicode char 键入到代码中?直接还是一些转义序列? (如 \uXXXX 或 XX;)
  • @mchr:我没有说你使用了一些特殊的字体。我刚刚说过,显然这种字体无法向您显示这些箭头,并且操作系统需要用其他东西代替这些特定字符。这被称为字体回退机制,它似乎无法正常工作。您可能需要向注册表添加一些键。至于您的问题,您的应用程序支持 Unicode,因为 Java 在内部使用 UTF-16。
  • 帕维尔·戴达是对的。我在 W7(有效)和 XP(无效)中尝试了箭头字符 (\u21D3)。但是,如果您尝试使用其他字符,它们是 unicode,但使用选定的字体(检查字符映射应用程序),它们工作得很好。

标签: java windows unicode swt


【解决方案1】:

这里的关键问题是默认的 XP UI 字体是 Tahoma,它的字符集非常有限。这可以通过打开 Character Map 应用程序来查看。

当 UI 字体为 Tahoma 时,可以通过选择适当的字符来解决此问题。我选择了这些字符:

private static final String UP = "\u25B2";
private static final String DOWN = "\u25BC";
private static final String RIGHT = "\u25BA";

private static final String TAHOMA_UP = "\u06F8";
private static final String TAHOMA_DOWN = "\u06F7";
private static final String TAHOMA_RIGHT = "\u003E";

我检测到使用这一行代码可以使用哪些联系人。

boolean tahomaUIFont = composite.getFont().getFontData()[0].getName().equalsIgnoreCase("tahoma");

【讨论】:

    猜你喜欢
    • 2012-04-17
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多