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é

如显示的结果含上面的内容,则安装成功

最终尝试再次截图,问题修复,结果如下:

本文是针对环境部署过程中发现的问题解决方案,希望能够给大家带来一些便捷

posted @ 2019-09-20 15:34  与客携壶上翠微  阅读(291)  评论(0编辑  收藏  举报