iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Docker容器不识别宋体等字体怎么办
  • 255
分享到

Docker容器不识别宋体等字体怎么办

2023-06-14 07:06:35 255人浏览 八月长安
摘要

这篇文章主要介绍了Docker容器不识别宋体等字体怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。问题背景:在使用docker部署项目的时候,由于项目中调用打印控件默认使

这篇文章主要介绍了Docker容器不识别宋体等字体怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

问题背景:

在使用docker部署项目的时候,由于项目中调用打印控件默认使用的是系统字体,在windows上部署没有问题,但是在docker容器中运行的时候,由于docker中没有宋体等相关字体,导致系统报错无法找到相应的字体。

解决思路:

其实就像解决linux本身没有宋体的问题一样,也可以用来解决容器问题。发现其实很多docker容器的问题最后都可以仿照linux的解决思路来处理。大体就是下载宋体ttf、ttc文件,然后将其考入容器字体目录下,重启容器即可。

解决办法:

查看容器支持的字体。

fc-list :lang=zh

当看到下列情况,说明没有安装字体管理,需要安装字体

Docker容器不识别宋体等字体怎么办

安装字体库。

yum -y install fontconfig

安装完成后,在/usr/share目录下就能看到fontconfig、fonts文件夹,如图:

Docker容器不识别宋体等字体怎么办

将下载下来的字体ttc、ttf文件拷贝到容器的/usr/share/fonts文件中。

cp simsun.ttc 容器:/usr/share/fontscp simsun.ttf 容器:/usr/share/fonts

然后重启容器,就可以看到安装的中文字体。

Docker容器不识别宋体等字体怎么办

也可以将此步骤写到Dockerfile中,在构建镜像的时候自动实现。

补充:Docker | Docker容器中安装中文字体 和 更改 utf-8 编码(解决中文乱码问题)

1. 项目背景

开发团队反馈,在项目运行中,使用 paGoffice 和 使用 Wordpdf 会出现乱码,针对这一问题,进行解决,做此记录,用以回顾。

2. 问题分析

使用 pagoffice 和 使用 word 转 pdf 出现乱码有两个问题,对应关系为:

pagoffice ---- 未使用 UTF-8 编码,部分 docker 容器中默认为 POSIX。

word2pdf ---- Liunx 中未安装中文字体缺失,linux及docker容器中默有部分中文,或无中文字体。

综上所述,要想彻底解决容器乱码问题,则需要解决:1.使用 utf-8 ,支持中文; 2.安装中文字体。

3. 解决方案

3.1. 使用 UTF-8 编码,支持中文

1.1 使用C.UTF-8编码

使用C.UTF-8编码能够支持中文的,官网上的docker镜像是支持并默认是C.UTF-8编码。

locale -a#查看容器所有语言环境
locale#查看容器使用的语言环境

如果使用的镜像不是C.UTF-8编码,则可以更改为此编码格式,在运行容器时添加以下参数:

-e export LANG="C.UTF-8"

1.2 其他方案

也可以在 docker 启动的时候,加上参数。

-e export LANG="zh_CN.UTF-8"

但是我使用的是docker官网的镜像,使用参数后,确实是设置使用了"zh_CN.UTF-8",但是没有进行安装。会有报错:

locale#查看设置的字符集
locale: Cannot set LC_CTYPE to default locale: No such file or directorylocale: Cannot set LC_MESSAGES to default locale: No such file or directorylocale: Cannot set LC_ALL to default locale: No such file or directoryLANG=zh_CN.UTF-8LC_CTYPE="zh_CN.UTF-8"LC_NUMERIC="zh_CN.UTF-8"LC_TIME="zh_CN.UTF-8"LC_COLLATE="zh_CN.UTF-8"LC_MONETARY="zh_CN.UTF-8"LC_MESSAGES="zh_CN.UTF-8"LC_PAPER="zh_CN.UTF-8"LC_NAME="zh_CN.UTF-8"LC_ADDRESS="zh_CN.UTF-8"LC_TELEPHONE="zh_CN.UTF-8"LC_MEASUREMENT="zh_CN.UTF-8"LC_IDENTIFICATioN="zh_CN.UTF-8"LC_ALL=
locale -a#查看安装的字符集
locale: Cannot set LC_CTYPE to default locale: No such file or directorylocale: Cannot set LC_MESSAGES to default locale: No such file or directorylocale: Cannot set LC_COLLATE to default locale: No such file or directoryCPOSIXen_US.utf8

3.2. 安装中文字体,显示中文

2.1 查看现有字体

查看Linux目前的所有字体

fc-list

查看Linux目前的所有中文字体

fc-list :lang=zh

2.2 获取其他字体

在 windows 系统中,字体存在于 C:\Windows\Fonts 下。复制后,打上传到 Linux 服务器 /opt/software/chinese 中(我是要在docker容器中安装字体,如果要在linux主机中安装字体,则直接放在服务器的 /usr/share/fonts/ 文件夹下)。

2.2 容器安装字体

docker ps -a#查看容器
docker cp /opt/software/chinese Tomcat:/usr/share/fonts/#tomcat为容器名称
docker exec -it tomcat /bin/bash#进入容器
chmod 644 -R chinese/授权文件夹
fc-list :lang=zh#查看中文字体

Docker容器不识别宋体等字体怎么办

fc-cache -fv#刷新缓存

Docker容器不识别宋体等字体怎么办

3.3. 验证

pagoffice ---- 改动docker 容器后,需要重启容器

word2pdf ---- 刷新字体缓存即可,不需要重启容器

感谢你能够认真阅读完这篇文章,希望小编分享的“Docker容器不识别宋体等字体怎么办”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Docker容器不识别宋体等字体怎么办

本文链接: https://www.lsjlt.com/news/269042.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Docker容器不识别宋体等字体怎么办
    这篇文章主要介绍了Docker容器不识别宋体等字体怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。问题背景:在使用docker部署项目的时候,由于项目中调用打印控件默认使...
    99+
    2023-06-14
  • Docker容器不识别宋体等字体的解决方案
    问题背景: 在使用docker部署项目的时候,由于项目中调用打印控件默认使用的是系统字体,在windows上部署没有问题,但是在docker容器中运行的时候,由于docker中没有宋...
    99+
    2022-11-11
  • 移动端h5不支持font-family里面的楷体、微软雅黑等字体怎么办
    这篇文章给大家分享的是有关移动端h5不支持font-family里面的楷体、微软雅黑等字体怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。移动端h6不支持font-famil...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作