vs code 切中文后字体变细发虚、中英文不对齐,是因语言包自动将 editor.fontfamily 回退至非等宽中文字体(如 microsoft yahei、pingfang sc),破坏代码排版;需在 settings.json 中显式配置等宽字体栈并同步终端与工作区设置。

VS Code 设置中文语言后字体变细、发虚、中英文不对齐,不是“语言包出问题”,而是 VS Code 在切换语言时自动重置了 editor.fontFamily 为系统默认中文字体(如 Windows 的 "Microsoft YaHei"、macOS 的 "PingFang SC"),而这些字体不是等宽字体,也不适配代码排版。
为什么切中文后编辑器字体突然“不像代码字体”了
VS Code 语言切换本身不改字体,但多数中文语言包(如 Chinese (Simplified) Language Pack)会附带一个默认设置补丁:在用户未显式配置 editor.fontFamily 时,自动 fallback 到本地 GUI 字体。这类字体特点是:
- 非等宽 —— 英文字符宽度不一致,括号、冒号、箭头对不齐
- 无代码优化 —— 小字号下 hinting 差,数字
0和字母O难区分 - 不支持连字(ligatures)—— 即使开了
editor.fontLigatures也无效 - 中英文混排时字重/基线不统一 —— 看起来像两行字叠在一起
怎么快速恢复成原来的等宽代码字体
直接覆盖语言包的默认行为,强制指定你习惯的等宽字体:
- 按
Ctrl+,(Windows/Linux)或Cmd+,(macOS)打开设置 - 右上角点「打开设置(JSON)」图标(
{}) - 在
settings.json里加这三行(示例值可按需替换):"editor.fontFamily": "'Fira Code', 'JetBrains Mono', 'Cascadia Code', 'Consolas', 'monospace'",<br>"editor.fontSize": 15,<br>"editor.fontLigatures": true
- 保存后编辑器立即刷新,无需重启
注意:editor.fontFamily 值必须用单引号包裹每个字体名,多个字体用英文逗号分隔;末尾的 'monospace' 是保底 fallback,不能删。
terminal.integrated.fontFamily 也要同步设
语言包不会动终端字体,但很多人只改了编辑器,结果终端还是用系统中文字体,导致 ls 输出中文路径时字间距崩、git status 符号错位。解决方法一样:在同一个 settings.json 里补上:
"terminal.integrated.fontFamily": "'Fira Code', 'JetBrains Mono', 'Cascadia Code', 'monospace'"-
"terminal.integrated.fontSize": 14(建议比编辑器小 1 号,终端信息密度高) - 改完要关掉已打开的终端页签,再按
Ctrl+Shift+`新建一个才生效
工作区设置可能覆盖你的修复
如果项目根目录下有 .vscode/settings.json,它里面的 editor.fontFamily 会直接压掉你用户级的设置 —— 这就是“别人打开正常,你一进项目就变样”的原因。
- 按
Ctrl+Shift+P输入Preferences: Open Workspace Settings (JSON),检查是否有冲突项 - 若该文件里有
editor.fontFamily,要么删掉,要么改成和你用户设置一致的值 - 多根工作区(multi-root workspace)下,当前焦点所在的文件夹决定读哪个
settings.json,容易误判
真正麻烦的从来不是“换回原字体”,而是三处字体配置要手动对齐:editor.fontFamily、terminal.integrated.fontFamily、还有可能被语言包悄悄改掉的 workbench.fontAliasing —— 它控制抗锯齿强度,某些中文字体开 high 会糊,关掉又发虚,得试。











