github kumo

遇到Linux环境下, 中文显示不正常, 这是因为Linux环境中, 字体设置不正确导致的.这个可以参考 issue

Java中安装字体

全局VM

将字体文件放到 jre/lib/fonts/ 目录下, 然后重启你的应用即可

仅在App生效

这时, 可以自行注册字体驱动即可(ClassPathResource 是Spring组件的一个类, 如果你不用Spring来开发, 可以修改为 new File(...), Font.createFont() 方法也可以接受一个 File 参数):

    /**
     * 注册字体
     */
    private void registeFont() {
        try {
            final GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            for (final String fontName : FONTS_FILE_NAME) {
                final ClassPathResource classPathResource = new ClassPathResource(fontName);
                final boolean ok = ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, classPathResource.getInputStream()));
                log.info("注册字体 {} => {}", ok ? "成功" : "失败", classPathResource.getPath());
            }
        } catch (IOException | FontFormatException e) {
            log.error(e.getMessage(), e);
        }
    }

查看当前环境可用字体:

    private void listFonts() {
        final GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        for (String fontName : ge.getAvailableFontFamilyNames()) {
            log.info("font name => {}", fontName);
        }
    }