linux查看字体列表和安装新字体的核心是fc-list查看、fc-cache -fv刷新缓存;fc-list : family | sort -u可快速列出去重排序的字体家族名;中文字体验证应使用fc-list : lang=zh | grep -i simsun;手动安装需确保字体放对目录、权限正确并强制刷新缓存。

Linux 查看字体列表和安装新字体,核心就两件事:用 fc-list 看,用 fc-cache -fv 刷缓存。其他命令或图形工具只是辅助,不刷新缓存,新字体永远不生效。
怎么快速列出所有可用字体名称(不含路径)
直接运行 fc-list : family 就能只输出字体家族名,比如 Noto Sans、DejaVu Serif。加上 | sort -u 去重排序更清晰:fc-list : family | sort -u。如果想确认某个中文字体是否存在,别搜“宋体”,试试 fc-list : lang=zh | grep -i simsun —— 因为系统识别的是语言标签和内部名,不是中文显示名。
为什么 fc-list 找不到刚复制的字体文件
常见原因有三个:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 字体文件没放在正确目录:
~/.local/share/fonts/(用户级)或/usr/share/fonts/truetype/custom/(系统级),~/.fonts/已被弃用,部分新版 fontconfig 不再扫描它 - 权限不对:字体文件需可读,普通用户安装时确保
chmod 644 ~/.local/share/fonts/*.ttf - 漏了缓存刷新:复制完必须运行
fc-cache -fv(用户级)或sudo fc-cache -fv(系统级),否则fc-list完全看不到新增项
安装中文字体后仍显示方块?重点检查这几点
中文字体问题往往不是“没装”,而是“没配对”:
- 单独安装一个
simsun.ttc不够,得配AR PL UMing CN或Noto Sans CJK SC这类完整覆盖 GB2312/GBK/Unicode 的字体 - 某些桌面环境(如 GNOME)会优先使用
fontconfig规则匹配字体,而不是直接选中文字体名;可运行fc-match -s "sans-serif"看当前默认无衬线字体实际映射到哪个家族 - 终端或浏览器可能缓存字体列表,改完要重启应用,不是只刷新系统缓存
- 验证是否真生效,别只靠
fc-list | grep,用fc-match "SimSun"看它返回的是否是你的simsun.ttc路径
包管理器安装 vs 手动复制,选哪个
优先走包管理器,尤其对中文字体:
-
sudo apt install fonts-wqy-zenhei(Ubuntu/Debian)或sudo dnf install wqy-zenhei-fonts(Fedora/RHEL)—— 自动处理路径、权限、缓存,且字体已针对 Linux 渲染调优 - 手动复制适合私有字体(如公司定制字体)或未打包的新字体,但必须自己保证
.ttf/.otf文件完整、无损坏,且注意有些 TTC 合集包(如simsun.ttc)含多个字体,fc-list会把它们拆成多行显示 - 别混用:
~/.fonts/和~/.local/share/fonts/同时存在时,fontconfig 可能只扫其中一个,建议统一用后者
最常被忽略的一点:字体安装不是“复制+刷新”就结束。很多应用(特别是 Electron 类如 VS Code、Slack)启动时只读一次字体列表,改完必须完全退出再启动,不能只靠重载窗口。










