linux安装中文字体关键在fc-cache正确扫描指定路径并识别:lang=zh,须将字体放入系统认可子目录(如/usr/share/fonts/chinese)、设644权限、执行sudo fc-cache -fv验证,旧系统还需mkfontscale/mkfontdir。

Linux安装字体文件不是“复制粘贴完事”,关键在 fc-cache 能否正确扫描到、系统能否识别语言标签(比如 :lang=zh)。直接丢进 /usr/share/fonts/ 但不重建索引,90% 的情况字体根本不会生效。
字体放哪?别乱塞 /usr/share/fonts/ 根目录
系统字体目录结构有约定:子目录名代表字体分类(如 truetype、opentype、chinese),fc-cache 默认只扫描这些已知类型子目录。把 simhei.ttf 直接扔进 /usr/share/fonts/ 根目录,它会被忽略。
- 推荐做法:新建语义化子目录,例如
sudo mkdir -p /usr/share/fonts/chinese - 必须赋权:
sudo chmod 644 /usr/share/fonts/chinese/*.ttf(只读即可,不用 777) - 不要用
~/.fonts(用户级目录)部署服务端应用——很多后台进程(如 Java、Python 图形生成)不读该路径
mkfontscale 和 mkfontdir 还需要吗?看发行版
较新发行版(Ubuntu 22.04+、Alibaba Cloud Linux 4、Fedora 35+)的 fontconfig 已不再依赖 fonts.dir 和 fonts.scale 文件,fc-cache -fv 自动处理元数据。但 CentOS 7 / RHEL 7 等旧系统仍需手动运行:
- 进入字体目录:
cd /usr/share/fonts/chinese - 仅旧系统执行:
sudo mkfontscale && sudo mkfontdir - 无论新旧,最后都必须跑:
sudo fc-cache -fv(-f强制刷新,-v显示过程) - 如果提示
command not found,说明缺工具:CentOS/RHEL 系用sudo yum install fontconfig mkfontscale;Debian/Ubuntu 用sudo apt-get install fontconfig xfonts-utils
验证是否真装上了,别信 fc-list 全量输出
fc-list 输出几百行,根本没法人工确认。真正有效的验证方式是带过滤条件查:
- 查中文字体:
fc-list :lang=zh(注意冒号前无空格) - 查特定字体名(注意大小写和空格):
fc-list | grep -i "simhei"或fc-list | grep -i "sans\|serif" - 查文件路径是否被收录:
fc-list | grep chinese - 如果返回为空,说明
fc-cache没扫到——回头检查目录权限、文件后缀是否为.ttf或.otf、是否漏了-f参数
最易被忽略的一点:某些程序(如 Python 的 matplotlib、Java 的 Graphics2D)会缓存字体列表。即使 fc-list 已显示字体,重启对应服务或进程才能生效。











