1.问题:
window环境下测试都没问题, 代码更新到linux服务器上, 发现生成图片后中文字体不显示?
2.分析: ( 相关代码如下 )
跟linux系统有关系? 最后查找发现是Linux服务器上没有相应字体类型导致的. 因为图片是在linux下的系统里生成的,用到java.awt.Font这个类。实例化的时候它会到jre里去找字体,如果找不到对应字体,就会显示不出来。
// 在图片上写文字!
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bufferedImage.createGraphics();
g.drawImage(image, 0, 0, null);
// 字体、字型、字号大小.
g.setFont(new Font("仿宋", Font.PLAIN, fontSize));
// 指定位置画文字
g.drawString("啦啦", 100, 100);
g.dispose();
3.解决如下:
前提: 先在本地Windows下找到字体文件:
解决一、在jre中添加相应的字体。( 没有试 )
1.找到Java运行环境安装目录( /user/…/jre/lib/fonts ) , 放到jre下面.
2.创建一个文件夹. ( mkdir winFonts )
3.重启tomcat服务器. ( 重点 - 不重启不生效. )
解决二、在Linux系统中添加字体文件。 ( 亲测有效 )
1.在 该目录下( /usr/share/fonts ) 创建文件夹 winFonts.(文件夹名称随意)
2.复制需要添加的字体文件(参考3.1)到新创建的文件夹下.
3.刷新字体:fc-cache
4.查看字体:fc-list
5.重启tomcat服务器. ( 重点 - 不重启不生效. )
常见问题?
1.若fc-list没看到添加的字体,有可能是此字体受版权保护无法添加进去,建议换成免费字体。
2.添加字体后不会马上生效,需要重启服务器。