Java - Linux环境下图片上drawString中文字体后不显示. ( 但英文数字可以... )

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

扫描二维码关注公众号,回复: 9455947 查看本文章

4.查看字体:fc-list

5.重启tomcat服务器. ( 重点 - 不重启不生效. )
在这里插入图片描述

常见问题?

1.若fc-list没看到添加的字体,有可能是此字体受版权保护无法添加进去,建议换成免费字体。
2.添加字体后不会马上生效,需要重启服务器。

发布了107 篇原创文章 · 获赞 173 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_42986107/article/details/103001305
今日推荐