1、问题:开发环境中字体正常显示
// 设置字体
Font font = new Font("宋体",Font.BOLD,15);
graphics2d.setFont(font);
可以看到,这里的字体采用Font方法新建,指定了字体类型为宋体、加粗、字号是15。
但是在测试和生产环境中,文字不能正常显示,变成框框。
2、分析:
测试环境的字体是由使用的基础镜像决定的,本地环境(开发环境)是由个人电脑决定的。
3、解决:
将字体文件ttc或ttf放入项目文件夹,从文件中获取并转换程所需的font格式。
//从本地获取字体文件,blod为加粗,将ttc文件转化为font格式
Font font = ttc2font(Font.bold,15);
graphics2d.setFont(font);
//ttc格式转化为font格式
public static ttc2font(int fontStyle,int fontsize){
Font font = null;
try{
ClassPathResource resource = new ClassPathResource("img/simsun.ttc"); //项目中ttc文件的路径,这里用的是宋体,可以换成别的
font = Font.creatFont(Font.TRUETYPE_FONT,resource.getInputStream()); //ttc文件流新建字体
font = font.deriveFont(fontStyle,fontSize);
}catch(FontFormatException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
Return font;
}