Atom终端字体不随editor设置变化,因terminal-plus等插件完全不读取config.cson的editor.fontFamily,须在各自插件Settings中单独配置Font Family并确保字体名与系统注册名一致。

Atom 控制台(Terminal)字体不随 editor 设置变化
Atom 的 terminal-plus、platformio-ide-terminal 或 atom-ide-ui 自带的终端插件,**完全不读取 config.cson 中的 editor.fontFamily 设置**。你改了编辑区字体,控制台照样用默认等宽字体(通常是 Courier New 或 DejaVu Sans Mono),这是设计使然,不是 bug。
terminal-plus / platformio-ide-terminal 字体配置路径
这两类主流终端插件都依赖自己的设置项,不能靠 styles.less 一揽子覆盖:
-
terminal-plus:打开 Settings → Packages → 搜索terminal-plus→ 点击 Settings → 找到Font Family输入框,填入单引号包裹的字体名,例如'Fira Code', 'JetBrains Mono', monospace -
platformio-ide-terminal:Settings → Packages →platformio-ide-terminal→Font Family字段同样填字体列表,注意末尾保留monospace保底 - 如果字段留空,插件会 fallback 到系统默认等宽字体,且不报错——你看到“没变”,其实是 fallback 成功了
自定义 terminal 字体时容易漏掉的三件事
即使填对了字体名,仍可能显示异常,常见原因:
- 字体名必须和系统注册名完全一致:
Fira Code Retina≠Fira Code;macOS 用「字体册」双击预览看「完整名称」,Windows 在「控制面板 → 字体」里核对,Linux 运行fc-list | grep -i "fira code" - 终端插件默认禁用连字(ligatures):即使你用了
Fira Code,==、=>也不会合并。需在插件设置中手动开启Enable Ligatures(如有该选项),或在插件对应 CSS 规则里加font-feature-settings: "liga" 1 - 某些插件(如旧版
term3)根本不支持font-family字段,只能靠styles.less强制覆盖:.terminal .xterm-viewport { font-family: 'JetBrains Mono', monospace !important; }但这类写法易被后续更新覆盖,优先走插件原生设置
为什么 styles.less 对 terminal 字体效果有限
styles.less 可以覆盖终端 DOM 元素的 font-family,但实际生效受三重限制:
- 终端内容渲染由 xterm.js 或类似库接管,CSS 作用域常被 shadow DOM 隔离,直接写
.terminal往往无效 - 插件自身内联样式(inline style)权重高于
styles.less,除非加!important,否则会被覆盖 - 高分屏下,部分终端插件强制启用
text-rendering: optimizeLegibility,反而干扰连字渲染——此时应关掉插件里的「抗锯齿优化」选项,而非在 CSS 里硬调
真正稳定的方式永远是:先查清你用的是哪个终端插件,再进它的 Settings 页面配字体,而不是指望全局样式文件一把梭。

















