phantomjs 部署到linux服务器后截图中文乱码问题
[场景问题]
在本地环境通过phantomjs截图中文地名正常显示,但是部署到服务器后出现下图情况,所有地名为方框显示。
[思考]
经过排查定位问题,程序在windows环境下截图正常,但是部署到服务器后无法正常截图中文字体,服务器程序截图数字正常显示,初步定位问题是服务器缺少字体
[行动/反馈]
查看字体,确认是否拥有宋体字体:
[root@41linsdom ~]# fc-list
/usr/share/fonts/dejavu/DejaVuSansCondensed-Oblique.ttf: DejaVu Sans,DejaVu Sans Condensed:style=Condensed Oblique,Oblique
/usr/share/fonts/dejavu/DejaVuSansCondensed-Bold.ttf: DejaVu Sans,DejaVu Sans Condensed:style=Condensed Bold,Bold
确实没有宋体字体,centos安装字体:
1、先从本机的C:\Windows\Fonts拷贝或者网络上下载你想要安装的字体文件(*.ttf文件)到/usr/share/fonts/chinese/TrueType 目录下(如果系统中没有此目录,则自行mkdir创建,亦可重命名为自己喜欢的文件夹名)
本文以simsun.tff为例
2、修改字体文件的权限,使root用户以外的用户也可以使用
[root@yc1 / ]# cd /usr/share/fonts/chinese/TrueType
[root@yc1 TrueType]# ll
总用量 15048
-rw-r--r-- 1 root root 15406288 9月 20 14:48 SIMSUNB.TTF
[root@yc1 TrueType]# chmod 755 *.TTF
3、建立字体缓存
[root@yc1 TrueType]# mkfontscale(如果提示 mkfontscale: command not found,需自行安装 # yum install mkfontscale )
[root@yc1 TrueType]# mkfontdir
[root@yc1 TrueType]# fc-cache -fv(如果提示 fc-cache: command not found,则需要安装# yum install fontconfig )
4、查看字体是否加载成功
[root@yc1 TrueType]# fc-list
/usr/share/fonts/chinese/TrueType/SIMSUNB.TTF: SimSun\-ExtB:style=Regular,obyčejné
如显示的结果含上面的内容,则安装成功
最终尝试再次截图,问题修复,结果如下: