必须将字体放入系统认可路径(如~/.local/share/fonts/或/usr/share/fonts/truetype/custom/),执行fc-cache -fv并确认终端输出含该路径,再用fc-list :lang=zh验证;否则即使文件存在也无效。

fc-list :lang=zh 查不到中文字体?不是字体没下载,而是系统压根没“看见”它。Linux 只认几个固定路径,其他地方丢进去等于白扔。
字体必须放对位置,否则 fc-cache 压根不扫
别把 SimHei.ttf 往 ~/Downloads 或桌面一拖就完事——fc-cache 默认根本不扫描这些目录。
- 推荐用户级路径(不用
sudo):~/.local/share/fonts/(注意:不是过时的~/.fonts/) - 系统级路径(所有用户可用):
/usr/share/fonts/truetype/custom/或/usr/share/fonts/opentype/;别硬塞进/usr/share/fonts/truetype/根目录,容易和包管理器冲突 - 操作示例:
mkdir -p ~/.local/share/fonts/zh<br>cp ~/Downloads/SimHei.ttf ~/.local/share/fonts/zh/
fc-cache -fv 不报错 ≠ 成功,要看输出里有没有你的路径
fc-cache 是个“静默跳过狂魔”:权限不对、文件损坏、目录为空、甚至文件名含中文(某些旧版 fontconfig),它都不提示,只默默跳过。
- 执行后盯住终端输出,确认出现类似这行:
/home/yourname/.local/share/fonts/zh: caching, new cache contents: 1 fonts, 0 dirs - 常见失败原因:
– 目录权限不对:ls -ld ~/.local/share/fonts/zh应至少是drwxr-xr-x
– 字体文件不可读:ls -l ~/.local/share/fonts/zh/SimHei.ttf至少得是-rw-r--r--(644)
– 路径拼错,比如写成~/.local/share/font/zh(少了个s)
fc-list :lang=zh 无输出?可能字体根本没标语言标签
有时 fc-list | grep SimHei 能搜到,但 fc-list :lang=zh 没结果——说明字体注册了,但没带 lang=zh 标签。Firefox、LibreOffice 等应用 fallback 时大概率忽略它。
- 验证命令:
fc-list :lang=zh | grep -i "simhei\|wqy\|noto" - 若无输出,优先换用带语言标签的开源字体,比如:
fonts-wqy-zenhei(Debian/Ubuntu)、google-noto-sans-cjk-ttc-fonts(Fedora/RHEL) - 包管理器安装最稳:
sudo apt install fonts-wqy-zenhei # Ubuntu/Debian<br>sudo dnf install google-noto-sans-cjk-fonts # Fedora/RHEL
GUI 应用仍乱码?检查 fontconfig 是否真加载了你的路径
即使 fc-list :lang=zh 有输出,应用仍显示方块或问号,大概率是字体路径没进 fontconfig 的扫描列表。
- 查缓存目录是否包含你放字体的路径:
fc-config -v | grep cachedir,输出里必须有类似/home/yourname/.local/share/fonts - 如果没出现,说明
fontconfig没配置该路径——此时要手动加fonts.conf规则,但绝大多数情况只需确保路径正确 +fc-cache -fv输出含该路径即可 - 重启应用(不是重启系统):GTK/Qt 应用通常需完全关闭再打开,终端模拟器需新开窗口
真正卡住的地方往往不是“怎么装”,而是“系统到底扫没扫到”。每次执行 fc-cache -fv 后,第一件事不是开浏览器测试,是看终端输出里有没有你刚放字体的那个路径。











