连字需字体支持、atom显式启用及正确识别字体名三者同时满足;font family中含空格字体必须用单引号包裹;styles.less须针对atom-text-editor设置font-feature-settings;连字由字体opentype表定义,非编辑器可控。

连字不是“开了就显示”,而是必须字体支持 + Atom 渲染层显式启用 + 字体名被正确识别三者同时满足,缺一不可。
Font Family 里填了 Fira Code 却没连字?先检查引号和空格
Atom 的 Font Family 设置对语法极其敏感:字体名含空格(如 Fira Code)或连字符(如 JetBrains Mono)时,必须用单引号包裹,否则解析失败,直接 fallback 到默认字体。
-
'Fira Code', 'JetBrains Mono', monospace✅ 正确写法 -
Fira Code, JetBrains Mono, monospace❌ 解析失败,第二项起全被忽略 -
"Fira Code"或Fira\ Code同样无效 — Atom 只认单引号
styles.less 里加了 font-feature-settings 却还是分开显示?确认是否命中 atom-text-editor
Atom 的代码编辑区由 atom-text-editor 元素承载,但注释、行号、折叠标记等区域不走这个样式规则。如果你在 styles.less 里写了全局 body 或 .editor,连字不会生效。
- 必须使用
atom-text-editor作为选择器(不能简写为atom-editor或漏掉-text-) - 推荐完整写法:
atom-text-editor { text-rendering: optimizeLegibility; font-feature-settings: "liga" 1, "calt" 1; } - 保存后立即生效,无需重启 Atom;但若改完没反应,可试
Cmd+Shift+P→Window: Reload
连字符号(如 !=、=>)仍不合并?排查字体实际加载路径
即使设置全对,Atom 也可能因系统 fallback 机制,悄悄换用了备用字体(比如 monospace),而该字体根本不支持连字。
- 打开开发者工具(
Cmd+Alt+I),选中一行代码,查看Computed面板里的font-family实际值 - 如果显示的是
monospace或DejaVu Sans Mono,说明你指定的字体根本没装上或未被识别 - Windows/macOS:确认字体已通过系统字体管理器安装(不是只丢进项目文件夹);Linux:确认
fc-list | grep "Fira Code"能查到
为什么有些连字(如 ===)始终不出现?这是字体本身的定义限制
连字是字体设计师在 OpenType 表中预设的字符组合映射,不是 Atom 或编辑器能动态生成的。Fira Code 支持 !=→≠、=>→⇒,但 === 默认不连字 —— 这不是配置问题,是字体没做这个 ligature。
- 想确认支持哪些连字,查对应字体的 GitHub README(如 Fira Code ligatures list)
- JetBrains Mono NL 版本连字更全,但依然不覆盖全部三字符组合
- 别试图用
font-variant-ligatures: discretionary-ligatures强开 — Atom 不支持该属性,纯属无效配置
最容易被忽略的点:连字只作用于普通代码文本,终端面板、Markdown 预览、甚至某些语法高亮插件渲染的区域,都可能绕过 atom-text-editor 样式链 —— 这时候看到“没连字”,不是你配错了,是压根没走到那条渲染路径里。










