Sublime Text仅识别系统已安装字体的名称而非文件路径,需在系统中安装字体并使用其完整注册名(如“Microsoft YaHei”),注意大小写与空格;中英混排应配置多字体回退链;Windows上DirectWrite可能导致中文字体异常,可改用GDI渲染。

字体路径没写对,Sublime根本找不到文件
Sublime Text 不支持直接引用本地字体文件路径(比如 C:\Windows\Fonts\msyh.ttc),它只认系统已安装的字体名称。很多人把字体文件复制到某个文件夹后,在配置里写 "font_face": "C:/myfonts/SourceHanSansCN-Regular.otf",结果完全无效——这不是 Sublime 的 bug,是它压根不解析文件路径。
正确做法只有两个:
- 在操作系统层面安装字体:Windows 右键安装、macOS 双击“安装字体”、Linux 把字体复制到
~/.local/share/fonts/后运行fc-cache -fv - 用系统字体册里显示的**完整字体名**,不是文件名。例如微软雅黑在 Windows 中实际注册名为
Microsoft YaHei,不是msyh.ttf;思源黑体简体中文安装后通常叫Source Han Sans CN或Noto Sans CJK SC
font_face 值拼错或大小写敏感,尤其 macOS/Linux
macOS 和 Linux 对字体名大小写更敏感,"font_face": "source han sans cn" 或 "Source han sans cn" 都不会生效。必须严格匹配字体管理器中显示的名称(通常首字母大写、空格和连字符固定)。
验证方式很简单:
- macOS:打开“字体册”,选中目标字体 → 右键“在访达中显示” → 查看“完整名称”字段
- Linux:终端运行
fc-list :family | grep -i "source",看输出的实际 family 名 - Windows:在字体文件属性“详细信息”页,“字体名称”字段才是 Sublime 要用的值
字体本身不包含中文字符集,显示方块或 fallback 到其他字体
有些编程字体(如 Fira Code、JetBrains Mono)默认不含中文字形,即使配置成功,中文也会显示为方块,或悄悄 fallback 到系统默认中文字体(导致混排、字号/行高不一致)。
这不是配置错误,而是字体能力问题。解决办法只有:
- 换用带中文支持的等宽字体:如
Source Code Pro + Source Han Sans CN组合(需在 font_face 中用逗号分隔)、Noto Sans Mono CJK SC、YaHei Consolas Hybrid - 避免单字体硬扛中英:Sublime 支持字体回退链,
"font_face": "Fira Code, Noto Sans CJK SC"是更稳妥的写法 - 别信“某某字体支持中文”的模糊宣传,下载后用字体工具(如 Font Book / FontForge)检查是否真有 GB2312 或 Unicode CJK Unified Ideographs 区段
font_options 与字体渲染冲突,尤其 Windows 上 DirectWrite 模式
在 Windows 上启用 "font_options": ["directwrite"] 时,部分中文字体(尤其是旧版微软雅黑、某些自定义合成字体)会出现字形错位、繁简混用甚至直接不显示。这不是字体坏了,而是 DirectWrite 在子像素渲染和字形替换策略上过于激进。
临时绕过方式是切换回 GDI 渲染:
- 加一行
"font_options": ["gdi"],它兼容性更好,但可能轻微发虚 - 或者删掉
font_options整项,让 Sublime 用默认行为(新版 ST4 默认已倾向 GDI 回退) - 注意:
["gdi"]和["directwrite"]不能共存,且该选项只在 Windows 有效,macOS/Linux 忽略
真正麻烦的是:同一个字体名,在 DirectWrite 和 GDI 下可能调用不同的字体文件实例(比如雅黑 Regular vs. YaHei UI),导致你改了配置却看不出变化——得连字体名一起换着试。


















