Sublime Text不安装字体,只读取系统已注册的全名;确认方法:Windows查“完整名称”、macOS看“显示简介”全名、Linux用fc-list验证;font_face须严格匹配该全名并写入User设置,如"Microsoft YaHei",填错或未刷新缓存将静默失效。

Sublime Text 本身不安装字体,只读取操作系统已注册的字体名;填错 font_face、漏装系统字体、或未刷新缓存,都会导致设置静默失效——界面看起来没变,其实根本没加载成功。
怎么确认字体真的装进了系统?
别信文件名,也别信中文显示名。Sublime 只认操作系统注册的「全名(Full Name)」,且大小写、空格、连字符全部敏感。
- Windows:打开「设置 → 蓝牙和其他设备 → 字体」,搜索字体名 → 点开详情看「完整名称」字段
- macOS:双击字体文件 → 「显示简介」→ 查「全名」(不是「版权」或「样式」)
- Linux:终端运行
fc-list : family | grep -i "fira",输出中带引号的才是真实 family name,例如"Fira Code"
装完必须先用系统工具确认该名称是否可见,否则 Sublime 一定找不到。
font_face 填什么才生效?
必须写在 Preferences → Settings 右侧(User)面板,JSON 格式合法,字段名一个字母都不能错。
- 正确写法:
"font_face": "Microsoft YaHei"(Windows 微软雅黑)、"font_face": "Source Han Sans CN"(思源黑体)、"font_face": "JetBrains Mono"(macOS/Linux 下需确认实际注册名) - 错误写法:
"font_face": "微软雅黑"、"font_face": "microsoft yahei"、"font_face": "Fira Code"(若系统注册的是FiraCode-Regular则无效) - 中英混合推荐写法:
"font_face": "Microsoft YaHei, Fira Code"(英文逗号分隔,优先中文渲染,英文和符号由后者兜底)
填错一个字符,Sublime 就静默 fallback 到 Consolas 或 Courier New,不会报错也不会提示。
Linux/macOS 装完字体为啥还是不生效?
系统字体缓存没刷新,fc-list 查不到,Sublime 就读不到。
- Linux:复制字体到
~/.fonts/或/usr/local/share/fonts/后,必须运行fc-cache -fv - macOS:安装后若仍不识别,可在终端执行
atsutil databases -remove+atsutil server -restart强制重建字体数据库 - Windows:一般无需手动刷新,但若右键安装后「字体设置」里没出现,需检查是否选了「仅为当前用户安装」
缓存不刷,等于没装;刷完不重启 Sublime(甚至要杀掉托盘进程),新设置也不会加载。
连字字体(如 Fira Code、JetBrains Mono Nerd Font)为什么连字不显示?
连字是字体特性,不是 Sublime 自带功能,启用前提是字体本身支持 + 名称配对准确 + 渲染路径没被绕过。
- 原版 JetBrains Mono 不含图标 glyph,要支持 PowerLine 符号或文件图标插件,必须装
JetBrainsMono Nerd Font补丁版 - macOS 上单写
"font_face": "JetBrains Mono"容易 fallback 到系统等宽字体(如.SF Mono),建议显式加链:"font_face": "JetBrainsMono Nerd Font, DejaVu Sans Mono, monospace" - Windows 用户若发现 Nerd Font 图标显示为空白,可加
"font_options": ["no_directwrite"]避免 DirectWrite 跳过符号映射
最常被忽略的一点:连字开关本身得打开。虽然 Sublime 默认开启,但某些主题或插件会覆盖,可手动加一行 "font_options": ["ligatures"] 显式声明。


















