记录一下项目中的小问题
1、背景
因为需要用java做报表,发现XChart很好用,但项目在容器中部署后发现,XChart生成的图表中文变成一个个方框,查看资料知,这是由于linux系统中缺少字体导致
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;
}