Java GUI中的日语字体

是否可以在Java中编写一个能够正确显示日语字体的GUI,而不管它运行的操作系统的语言设置如何?

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

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

Java当然可以处理日文文本,无论系统设置是什么,如果开发人员不会通过使用FileReadernew String(byte[]) FileReader东西陷入依赖于平台默认编码的陷阱。

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

无论操作系统是否安装了字体,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

有关详细信息,请参见此页面

您可以在程序中打包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。

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

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

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