Java GUI中的日语字体

时间:2010-04-21 08:34:47

标签: java internationalization

是否可以用Java编写一个能够正确显示日文字体的GUI,无论其运行的操作系统的语言设置如何?

我想写一个能够做到这一点的程序,但我不知道如何开始这个。任何建议都将是一个巨大的帮助!

5 个答案:

答案 0 :(得分:7)

这里的语言设置不是问题。字体是。

Java当然可以处理日文文本,无论系统设置是什么,如果开发人员不使用FileReader或{{1}之类的内容而陷入依赖于平台默认编码的陷阱}。

但是要实际显示日文文本,您需要一个包含日文字符的字体,而字体不是Java的一部分。根据操作系统的不同,支持日语的字体可能是默认安装的一部分,或者可能会提示用户根据需要安装它们,或者可能必须手动安装它们。

答案 1 :(得分:6)

无论操作系统是否安装了字体,Java都可以轻松显示日语,但这仅适用于Swing应用程序。使用控制台窗口的任何内容都需要在操作系统中安装字体。

步骤:

1)从这里下载其中一种truetype字体:http://www.wazu.jp/gallery/Fonts_Japanese2.html

2)使用以下代码允许您的swing客户端使用您的字体:

InputStream fontStream = getClass().getResourceAsStream("/locationoffontonclasspath/myfontname.ttf");
Font japaneseEnabledFont = null;
boolean japaneseDisplayEnabled = false;
try {
    japaneseEnabledFont = Font.createFont(Font.TRUETYPE_FONT, fontStream);
    GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(japaneseEnabledFont);
    japaneseDisplayEnabled = true;
} catch (Exception e) {
    // handle exceptions here
} finally {
    if (fontStream != null) {
        try {fontStream.close();} catch (Exception e1) {}
    }
}

if (japaneseDisplayEnabled) {
   .....
}

此外,如果您希望在源代码中使用日语文字,则必须使用-Dfile.encoding = utf-8进行编译。如果使用IDE进行编译,则可以在以下屏幕上更改设置(右键单击项目并选择属性以获取此窗口):screenshot

More information is available at this page

答案 2 :(得分:3)

您可以将TrueType字体打包到程序中并加载并在Swing组件中使用它,如下所示:

// Create a label in Japanese.
String message = "かつ、尊厳と権利とについて平等である。";
JLabel label = new JLabel(message);

// Load the TrueType font with Japanese characters and apply it.
File file = new File("msmincho.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, file);
font = font.deriveFont(Font.PLAIN, 14f);
label.setFont(font);

小心使用正确的字符集。如果在代码中编译日语字符,则应使用javac -encoding utf-8 Foo.java进行编译。使用Readers时也一定要明确使用charset。

答案 3 :(得分:0)

-Dfile.encoding=utf-8添加到启动应用程序的命令行脚本中。

答案 4 :(得分:0)

您可以在$ JAVA_HOME \ jre \ lib \ fonts \ fallback中复制您的truetype日语字体。 您必须创建此文件夹。在linux上,符号链接可以解决问题。

来源:http://www.asahi-net.or.jp/~ik2r-myr/kanji/german/linos_g.htm