Linux JRE中文字体支持

默认情况下,无论Oracle JDK还是OpenJDK,Linux JRE都不提供中文字体支持,这会给那些AWT应用开发者或者基于AWT实现的图表库(jfreechart等)使用者带来一些困扰,本来应该显示中文的地方都被方框代替:

fonts

解决方法可以很简单:

1. 拷贝中文字体到JRE目录。以宋体为例,从一台含中文字体的机器上(Mac下字体在/library/fonts目录,Windows下字体在C:\Windows\Fonts目录)拷贝SimSun.ttf文件到目标机器的$JAVA_HOME/jre/lib/fonts。
2. 重启应用(JVM)。

下面这段程序可以查看当前JRE环境支持哪些字体:

import java.awt.Font;
import java.awt.GraphicsEnvironment;

public class FontTest {

    public static void main(String[] args) {
        Font[] fonts = GraphicsEnvironment
                        .getLocalGraphicsEnvironment().getAllFonts();
        for (Font f : fonts) {
            System.out.println("Name:" + f.getFontName());
        }
    }
}

--EOF--