【问题标题】:Beautiful (Anti-alias) Chinese Character Display漂亮的(抗锯齿)汉字显示
【发布时间】:2010-06-19 09:13:40
【问题描述】:


(来源:google.com

最近,我发现在我的应用程序中显示的汉字相当难看。

我认为我应该将它们设置为“抗锯齿”。但是,我怎样才能在 Java 中做到这一点?

仅供参考,我没有明确选择要在我的 GUI 应用程序中使用的字体。我只是让系统在启动时自己决定。但是,在显示 GUI 之前,我会明确设置语言环境。

Locale.setDefault(locale);

系统会一直选择

javax.swing.plaf.FontUIResource[family=Tahoma,name=Tahoma,style=plain,size=11]

不管我是英文还是中文。

【问题讨论】:

  • 我试过了,但还是不行。我想也许我需要提供自己的字体以使它看起来更好。 wazu.jp/gallery/Fonts_ChineseSimplified.html 但是,我如何告诉 Java 系统,“这个 xxx.ttf 将是您的默认字体。如果我没有具体说明,请使用 xxx.ttf”?
  • 您可以使用一种方法来选择所需的字体。您的默认 GraphicsEnvironment 包含所有可用字体的列表。您可以查看是否支持任何已知的、认可的字体,或者您可以通过说font.canDisplay('\u4e00') 来测试字体是否支持中文。

标签: java internationalization


【解决方案1】:

抗锯齿被认为是有害的:http://www.joelonsoftware.com/articles/fog0000000041.html

关键是,人物的美不一定是用户界面的目标。这不是一切。您应该寻找的是文本的可读性。当你的汉字看起来不流畅时,它可能正是帮助人眼控制回路知道它在焦点上并停止将模糊归咎于眼部肌肉的原因。真的,不要掉入这个陷阱。

【讨论】:

  • 好的。我设法制作了一个抗锯齿版本。但是,我通过论坛与中国社区互动,让他们比较两个版本,做了一些调查。他们似乎更喜欢没有抗锯齿的版本。
【解决方案2】:

这是从类路径中读取 truetype 字体并将其注册到图形环境的方法:

private static Font readFont(String name) {
    InputStream in = Fonts.class.getResourceAsStream(name + ".ttf");
    if (in == null) {
        throw new IllegalArgumentException(name);
    }
    try {
        Font retval = Font.createFont(Font.TRUETYPE_FONT, in);
        GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(retval);
        return retval;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

然后您可以使用此字体对象来派生不同大小的字符,或者您可以尝试使用 Swing CSS 应用此字体。在这种情况下,您将放在“font-family”属性中的值是 Font.getName() 返回的值。

例如:

static {

    Font font = readFont("VeraMono");
    if (font != null) {
        font = font.deriveFont(14f);
    } else {
        throw new IllegalStateException();
    }

    MONOSPACED_TEXT_FONT = font;
    MONOSPACED_TEXT_FONT_STYLE = "font-family: " + font.getName() + "; font-size: 14pt; font-weight: normal;";

}

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 2011-07-05
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多