根本原因是字体栈未配对导致fallback失控,必须使用原生等宽中英字体如maple mono nf cn,其简体版含完整cjk字符、nerd font图标及opentype连字表,配置时需用单引号包裹全名并确保安装正确版本。

中英文混排时缩进错位、中文标点变方块,根本不是 VSCode 的 bug
这是字体栈没配对导致的 fallback 失控。VSCode 遇到中文字符时,会按 editor.fontFamily 顺序逐个查系统是否安装该字体;一旦某个西文字体(如 Consolas 或 Fira Code)不包含 CJK 字形,就会跳到下一个——但中间可能落到系统默认中文字体(如 Windows 的微软雅黑、macOS 的 PingFang SC),它们是比例字体,宽度 ≠ 2×ASCII,结果 if (user_id === user1d) 对齐全乱,docstring 里中文注释缩进塌陷。
- 必须用原生支持等宽中英文的字体,不能靠 fallback 拼凑
- 「等宽」不是指“看着像”,而是汉字字宽严格等于两个 ASCII 字符(即
0x20–0x7E) - Source Han Sans、Noto Sans CJK 等比例字体,哪怕加
fontFeatureSettings: "tnum"也救不回列对齐
Maple Mono NF CN 是目前唯一开箱即用的中英双等宽方案
它把三个硬需求打包解决了:CN 版本含完整简繁日字符集 + Nerd Font 图标嵌入 + OpenType 连字表 + 可变字重(200–800)。不像 Sarasa Mono SC 虽然中英对齐稳,但缺图标、连字支持弱;也不像 Fira Code 连字强却无中文。
- 安装必须选 GitHub Releases 里的
MapleMonoNF-CN.zip,不是MapleMonoNF.zip - 配置时字体名必须带空格和单引号:
"editor.fontFamily": "'Maple Mono NF CN', 'Sarasa Mono SC', 'Fira Code', monospace" - 若中文标点(如《》、【】)显示为方块,说明加载的是无 CN 后缀的版本,重装即可
editor.fontLigatures 开了却没效果?先确认字体真支持连字
连字不是开关一开就生效的功能,它依赖字体内置的 OpenType liga、calt 表。很多用户装了 Fira Code 却只写 "Fira Code",实际加载的是无 Nerd Font 后缀的基础版——它压根没连字表。
-
Fira Code必须下载FiraCodeNerdFontComplete.ttf,配置写成'FiraCode Nerd Font'(注意空格) -
Cascadia Code要用CascadiaCodeNF.ttf,且推荐Cascadia Code PL(PL = Powerline 优化版) -
Maple Mono NF CN和JetBrains Mono的连字是默认启用的,无需额外参数,但JetBrains Mono NL(No Ligatures)版本要避开
高分屏(2K/4K)下小写字母 a/e/g 开口糊成一团?别硬调 fontSize
这不是字号太小,是渲染链没对齐。Windows 上 Consolas 依赖 ClearType,关了就虚;macOS 上 Monaco 在 Retina 屏默认用 subpixel 渲染,但 VSCode 1.85+ 已默认禁用 subpixel,导致细笔画粘连。
- 2K/4K 屏建议
editor.fontSize设为15或16,低于14时多数等宽字体的小写字母开口会模糊 -
Maple Mono默认字重偏细,editor.fontWeight建议设为500避免发灰 - Linux 用户若用
fc-cache -fv刷新后仍异常,检查是否启用了fontconfig的antialias和hinting(建议开 hinting,关 autohint)
真正卡住人的从来不是“怎么装字体”,而是装完发现中文不对齐、连字不生效、高分屏糊字——问题不在 VSCode,而在字体名拼写、后缀选择、系统渲染开关这三处细微但致命的匹配点上。











