在使用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
Logo

更多推荐