做了一个项目,其中有一个图片合成的步骤,合成的过程中在图片上添加文字用到 微软雅黑 字体
Font f = new Font("Microsoft Yahei UI",Font.TRUETYPE_FONT ,20);
在windows 下开发测试肯定是没有问题的,但把项目部署到Linux服务器上时,就会发现合成的图片上的汉字都是一个长方形乱码。
想了一下,应该是Linux上默认是没有Microsoft 的字体造成的,所以要把windows上的字库放到Linux上。
可以执行 fc-list :lang=zh-cn 命令,查看Linux下是否包含要使用的中文字体。
fc-list :lang=zh-cn
1. 复制字体
windows 的字体在 C:\Windows\Fonts 目录下
Linux 的字体一般在 /usr/share/fonts/ 目录下
可在/usr/share/fonts/ 下建立一个 winfonts 目录放要复制的windows 字体。
2. 导入字体
复制完成后,命令行下依次执行下面三条命令(root用户无须加sudo):
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv
有可能在执行过程中提示 mkfontscale 没有安装,需要先安装 xfonts-utils 再使用,
下面是ubuntu的安装,导入成功后会提示fc-cache: succeeded
这时再执行fc-list :lang=zh-cn 就可以看到已导入的字体了。
已经部署的项目需要重新启动才生效,个人是部署在tomcat上,重启tomcat,再操作就不会出现乱码了。
Good luck!
root@sdfsfsfsfs:/usr/share/fonts/windfonts# mkfontscale
The program 'm