记录一下项目中的小问题

1、背景

因为需要用java做报表,发现XChart很好用,但项目在容器中部署后发现,XChart生成的图表中文变成一个个方框,查看资料知,这是由于linux系统中缺少字体导致

2、解决办法

  1. 在系统中安装字体
  2. 使用Java Font 引入外部字体

在这边我们使用的是第二种方法
我们就从项目中自带字体,这里选择黑体(字体下载地址),然后把字体读取到系统的某个目录下,接着根据这个字体文件新建一个Font字体,供调用。(注意:项目打成jar后无法读取项目目录下的字体资源,必须通过getResourceAsStream)

public Font getFont(int style,int size) {
 		// 字体在resource下的路径
        String fontfilename = "/font/simhei.ttf";
        InputStream is = this.getClass().getResourceAsStream(fontfilename);
        //返回一个指定字体类型和输入数据的font
        Font actionJson = null;
        try {
            actionJson = Font.createFont(Font.TRUETYPE_FONT,is);
        } catch (FontFormatException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //通过复制此 Font 对象并应用新样式和大小,创建一个新 Font 对象。
        Font actionJsonBase = actionJson.deriveFont(style,size);
        return actionJsonBase;

    }