言成言成啊 | Kit Chen's Blog

Centos7安装中文字体

发布于2023-03-05 01:28:07,更新于2023-03-05 02:16:50,标签:devops  转载随意,文章会持续修订,请注明来源地址:https://meethigher.top/blog

一、背景

最近一直在重写2021年毕设的前端页面,用vue3+vite实现的响应式布局,目前完成10%。但在部署到Linux上时,遇到了服务端生成的中文验证码混乱的问题,通过远程断点,排除编码的问题,原来是由于Linux没有中文字体导致。

两年前的毕业设计,是想做一个支持动态业务逻辑的签到系统,我随时随地都可以修改业务逻辑,哪怕拉着屎,灵感一来,手机当场修改业务逻辑。由于当时眼界、技术都比较短浅,最终只是做了一个类似于binux/qiandao: 签到,但功能还要更简陋的系统。

能力在一点点进步,系统也在一直迭代,21年的雏形,22年的重写,23年的全部推翻。

结果发现,预期的系统就像现在比较火的工作流引擎或是低代码平台,虽然是简易版。

不得不自恋一下,我真有远见。不过这也说明,创造是由需求推动的。当大众都有这个需求的时候,就是猪都能飞起来的风口了吧。

二、安装中文字体

2.1 验证环境

首先查看服务器是否安装了字体,若没安装,就进行安装

1
2
3
4
# 验证是否安装
yum info fontconfig
# 若没安装,进行安装
yum -y install fontconfig

2.2 查询字体

查询已有字体

1
2
3
4
5
6
7
8
9
10
# 查询所有字体
fc-list
# 查询所有字体详细信息
fc-list -v
# 查询所有字体简略信息
fc-list -b
# 查询中文字体
fc-list :lang=zh
# 查询英文字体
fc-list :lang=en

此时系统上,是没有中文字体的。这时候的验证码(使用楷体生成的验证码)是这个样子。

这时候,验证一下楷体,在Linux上使用的字体

1
for family in 楷体 楷体_GB2312; do   echo -n "$family: ";   fc-match "$family"; done

可以看到,是使用一款英文字体解析的,那肯定不对啊。

2.3 安装字体

2.3.1 上传中文字体

在Win上可以,在Linux不可以。因此Win上是有楷体的,只需要上传至Linux即可。

进入Windows的目录C:\Windows\Fonts下,找到楷体(对应的名称是simkai.ttf),然后上传至Linux

Windows想要使用Linux上的命令,可以安装git bash,或者直接使用xftp也可。

我就是喜欢奇技淫巧,没办法,所以用了git bash

1
2
3
4
5
6
mkdir -p /usr/share/fonts/zh

#登录进入sftp。sftp是ssh内含的协议,只要sshd服务器启动了,它就可用
sftp root@10.0.0.10
# 在sftp中执行命令上传
put simkai.ttf /usr/share/fonts/zh

2.3.2 安装并验证字体

进入到Linux系统,再次查询所有字体和中文字体,命令参考2.2。

1
fc-list :lang=zh

此时如果没有,需要执行以下三个命令刷新缓存

mkfontscale

mkfontdir

fc-cache -fv

再次执行命令,验证安装是否成功。

1
for family in 楷体 楷体_GB2312; do   echo -n "$family: ";   fc-match "$family"; done

此时,就大功告成了。

三、参考致谢

linux - CentOS7安装中文字体 - 吴尼玛的技术后花园 - SegmentFault 思否

在Centos7.X上安装中文字体及相关配置_centos 安装字体没有mkfontscale 和mkfontdir_路飞onepiece的博客-CSDN博客

发布:2023-03-05 01:28:07
修改:2023-03-05 02:16:50
链接:https://meethigher.top/blog/2023/centos-zh-font/
标签:devops 
付款码 打赏 分享
shift+ctrl+1可控制目录显示