editor.letterspacing对中文基本无效,因其仅作用于单字体内部,而中文显示常触发fallback导致中英文advance width不一致;应改用匹配的双语等宽字体链并显式配置fontfamily。

VSCode 里调 editor.letterSpacing 对中文字符间距基本无效——它不是设计来解决中文字距问题的,强行设负值还可能让全角字符重叠。
为什么 editor.letterSpacing 设了没反应
这个配置只在「单字体内部」起作用:给每个字符右侧加固定像素偏移。但中文显示通常触发字体 fallback(比如英文用 Fira Code,中文 fallback 到 Microsoft YaHei),两个字体的 glyph advance width 不一致,editor.letterSpacing 根本不跨字体生效。
- 设
"editor.letterSpacing": -0.5:英文字符会挤,中文几乎看不出变化,甚至因全角字形被硬拉导致光标错位 - 设
"editor.letterSpacing": 0.3:在Fira Code下可见,在SimSun或KaiTi下完全无感——它们的 internal spacing 是固定的 - 改完不重启:必须执行
Developer: Reload Window(Ctrl+Shift+P 输入后回车),否则编辑器缓存不刷新 - 工作区覆盖:如果项目根目录有
.vscode/settings.json且写了"editor.letterSpacing": 0,全局设置再大也无效
真正该动的是 editor.fontFamily fallback 链
目标不是“调间距”,而是让中英文走同一套度量体系。关键在选 advance width 匹配的双语等宽字体,并显式声明顺序。
- 推荐组合:
"editor.fontFamily": "'Cascadia Code PL', 'HarmonyOS Sans SC', 'Noto Sans CJK SC', monospace" - 必须加单引号:像
Microsoft YaHei这种带空格的字体名,不加引号会被 VSCode 解析失败,退回到Courier New + 某中文字体,间隙最大 - 禁用混搭:别把
'Fira Code'和'SimSun'写一起——宋体字面宽度比等宽西文字体窄 15%~20%,fallback 后括号匹配、缩进、光标定位全乱 - 终端要单独配:
terminal.integrated.fontFamily和编辑器互不影响,同样需用双语等宽字体,例如"terminal.integrated.fontFamily": "'Cascadia Code PL', 'Noto Sans CJK SC', monospace"
终端里中文突然变松?先看 terminal.integrated.fontFamily
Ubuntu / Debian 中文环境常见现象:终端中文字距炸开,不是行高问题,是 fallback 到了系统默认的宽松中文字体(如 WenQuanYi Micro Hei)。
- 最简解法:
"terminal.integrated.fontFamily": "monospace",强制走浏览器级等宽 fallback,多数情况下比手动列一堆字体更稳 - 若想精细控制:删掉所有非等宽中文字体,只留
'Cascadia Code PL'或'JetBrains Mono'(后者需确认已安装中文补丁版) - 改完必须关闭当前终端面板(点垃圾桶图标),再按
Ctrl+`重开,仅 reload window 不够 - 别碰
terminal.integrated.letterSpacing:它对中文效果极弱,还可能让命令补全框错位
最容易被忽略的点是:你调的从来不是“中文间距”,而是「中英混合渲染时的度量对齐」。字体栈写错一位,所有间距类配置都白搭。











