因为sun jdk1.8之后要开始收费了,不得已转入使用openJDK。相对于sun JDK来讲openJDK缺少了部分组件支持,并且重写了一些实现。在openJDK中,是不包含任何字体的,在生成图形验证码等使用awt.font的需求时,需要额外的字体支持。
一, 环境
openJDK 1.8, springboot2.x
二, 外部字体加载
可以在本地windows环境中找到字体的支持包。
控制面板 -》 外观和个性化 -》 字体
在这个目录下, 你可以找到想要的字体包。例如,我想要华文细黑,直接复制这个包到你的项目下。
在springboot环境里,我放在resource -->font 目录下。
华文细黑对应的包为STXIHEI.TTF
awt.font加载代码
private Font loadFontResource() {
InputStream resourceAsStream = null;
try {
String path = "/font/STXIHEI.TTF";
resourceAsStream = this.getClass().getResourceAsStream(path);
Font font = Font.createFont(Font.TRUETYPE_FONT, resourceAsStream);
Font targetFont = font.deriveFont(Font.PLAIN);
return targetFont;
} catch (FontFormatException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
if (resourceAsStream != null){
resourceAsStream.close();
}
}
}