sublime text中font_face填错会静默失效,必须确保值与系统注册字体全名完全一致:windows填"fira code",macos查字体册全名如"sf mono",linux用fc-list确认并刷新缓存;侧边栏不读font_face,需修改主题文件中sidebar_label类。

font_face填错就静默失效,不是没生效而是根本没认出
Sublime 不会报错,但只要 font_face 值和系统注册的字体全名差一个字符(比如多空格、少连字符、大小写不对),就会自动回退到默认字体。最常踩的坑是:把安装包文件名(FiraCode-Regular.ttf)或网页上看到的简称(monaco)直接填进去。
必须确认三件事:
- Windows 下填
"Fira Code",不是"FiraCode"或"Fira Code Regular" - macOS 在「字体册」App 中搜索,点开字体详情看「全名」字段,通常是
"SF Mono"或"JetBrains Mono",注意带不带空格、有没有 "Regular" 后缀 - Linux 运行
fc-list | grep -i "fira"确认实际注册名,再执行fc-cache -fv刷新缓存
中英文混排必须用 fallback 字体列表,单字体方案必出方块
纯编程字体(如 Fira Code、Source Code Pro)基本不含中文字符,设成唯一 font_face 会导致注释/字符串里的中文显示为□□□。
正确写法是用英文逗号分隔的 fallback 列表:
{"font_face": "Fira Code, PingFang SC, Microsoft YaHei"}
要点:
- 第一个字体负责英文和连字,后面按顺序兜底中文;顺序不能颠倒
- Windows 推荐加
Microsoft YaHei或YaHei Consolas Hybrid(需手动安装) - macOS 必须包含
PingFang SC或Heiti SC,SF Mono本身不支持中文 - 别加
subpixel_antialias——它会让多数中文字体更模糊,直接删掉这一项
连字(ligatures)要三重条件同时满足才真有效
输入 !=、=> 没反应?不是插件问题,是底层链断了。
必须同时满足:
- 字体文件本身含连字表:用
Fira Code ≥ v6.2、Cascadia Code或完整版JetBrains Mono;Consolas、Courier New即使配对也无效 - Sublime 配置写全:
"font_face": "Fira Code"+"font_options": ["liga"],少一个都不行 - ST 版本 ≥ 4.4143(Build 4143+),旧版连字支持极不稳定,部分符号渲染失败
验证方式:直接在编辑区输入 != == => && ||,别依赖插件提示;若无效,优先重装字体而非反复调配置。
侧边栏/标签页字体根本不读 font_face,改主题文件才管用
你改了 font_face 发现代码区变了,但左侧文件树还是小得费眼——这不是配置没生效,是 Sublime 根本就没设计让侧边栏读这个字段。它走的是 UI 主题渲染路径,和编辑器正文完全两套系统。
必须改当前启用的主题文件(如 Adaptive.sublime-theme 或 Material-Theme.sublime-theme):
- 用
PackageResourceViewer插件打开主题资源,搜索"class": "sidebar_label" - 在其 rule 里加
"font.face": "Fira Code"和"font.size": 13 - 改完必须完全退出 Sublime(macOS 要从菜单栏选「退出」,不是关窗口),否则缓存不刷新
ST4.4277+ 支持 ui_font_size 全局缩放,但仅限菜单/状态栏等基础 UI,侧边栏、标签页仍需硬改主题——这点很容易被忽略,尤其当你以为加了 ui_font_size 就一劳永逸时。











