在使用linux部署项目的时候,要将包含中文的html转换为image,而html中的字体默认使用的是系统字体,在windows上部署没有问题,但是在linux中运行的时候,由于没有中文相关字体,导致生成的图片中的汉子无法识别。
解决办法:
1、查看容器支持的字体。
fc-list :lang=zh
返回的结果为-bash: fc-list: command not found
说明没有安装字体管理,需要安装字体库
2、安装字体库。
yum -y install fontconfig
安装完成后,在/usr/share目录下就能看到fontconfig、fonts文件夹
3、将下载下来的字体ttc、ttf文件拷贝到容器的/usr/share/fonts文件中。
cp msyh.ttf 容器:/usr/share/fonts
4、然后重启linux,通过fc-list :lang=zh命令就可以看到安装的中文字体。
/usr/share/fonts/msyh.ttf: Microsoft YaHei,微软雅黑:style=Regular
使用Docker容器的同理,可以将上面命令写入dockerfile,下面附上我的dockerfile
FROM java:8
EXPOSE 8282
VOLUME /tmp
ADD uhome-emailjob.jar /app.jar
ADD msyh.ttf /usr/share/fonts
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN bash -c 'touch /app.jar'
ENV JAVA_OPTS="-Dfile.encoding=UTF8 -Duser.timezone=GMT+08"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
由于我的docker镜像已经安装了字库,只用将字体拷贝到相应目录下即可
加上这一行ADD msyh.ttf /usr/share/fonts即可
附字体对应文件名
字体
文件名
字体
文件名
宋体
SIMSUN.TTF/simsunb.ttf
黑体
simhei.ttf
仿宋
simfang.ttf
楷体
simkai.ttf
方正舒体
FZSTK.TTF
方正姚体
FZYTK.TTF
隶书
SIMLI.TTF
华文彩云
STCAIYUN.TTF
华文细黑
STXIHEI.TTF
华文行楷
STXINGKAI.TTF
华文新魏
STXINWEI.TTF
华文中宋
STZHONGS.TTF
幼圆
SIMYOU.TTF
华文琥珀
STHUPO.TTF
华文楷体
STKAITI.TTF
华文隶书
STLITI.TTF
华文宋体
STSONG.TTF
新宋体
NSIMSUN.TTF