VSCode中文显示异常的根源是字体配置错误:需用系统注册的字体全名(如Microsoft YaHei Mono)、按西文优先+中文兜底顺序配置editor.fontFamily,且终端、调试控制台须单独设置对应fontFamily,并调整fontSize和lineHeight适配中文字体度量。

VSCode 里中文显示发虚、断笔、标点挤在一起,不是语言没汉化,而是 editor.fontFamily 没配对——西文字体优先匹配,遇到中文就 fallback 到不一致的字体,甚至系统默认宋体,结果就是糊、细、错位。
为什么改了 font family 还是英文或方块
最常见原因是字体名写错,或系统根本没装那个字体。VSCode 不认“微软雅黑”“思源黑体”这种俗称,只认系统注册的「字体全名」,大小写、空格、连字符、Mono 后缀一个都不能错。
-
Microsoft YaHei在 Windows 上要写成Microsoft YaHei Mono(等宽变体),写Microsoft YaHei UI或SimSun基本无效 - macOS 上
PingFang SC是正确全名,PingFang或Heiti SC(注意不是Heiti)才可用;SF Mono必须放在中文字体前,否则{}符号会变细 - Linux 用户运行
fc-list :lang=zh | cut -d: -f2 | sort -u查真实名称,Noto Sans CJK SC是常见有效值,但noto-sans-cjk-sc(文件名)就失效 - 只写一个字体如
"Microsoft YaHei",而系统未安装,VSCode 静默跳过,直接回退到 Consolas/Monaco,中文就成方块
编辑器、终端、调试控制台字体必须分开设
editor.fontFamily 完全不影响终端和调试输出——它们各自读取独立配置项,漏配一个,中文就断在某一层。
- 编辑器:确保
editor.fontFamily是西文优先 + 中文兜底链,例如:"Fira Code", "JetBrains Mono", "Microsoft YaHei Mono", "PingFang SC", "Noto Sans CJK SC", "monospace" - 终端:
terminal.integrated.fontFamily必须显式设置,且建议与编辑器一致;Windows 下避免Courier New,Linux/macOS 避免Menlo单独使用 - 调试控制台:
debug.console.fontFamily也要设,否则断点里用户信息这类中文变量名可能显示为方块或乱码 - 别用引号嵌套错误,比如
"'Fira Code', 'Microsoft YaHei'"是合法的;但"'Fira Code', '微软雅黑'"在 Linux 下因编码/名称不匹配直接失效
中文字体生效后还要调 fontSize 和 lineHeight
多数中文字体的度量(metrics)和西文字体不同,尤其在等宽场景下,不调参数会导致字挤、行高塌陷、光标错位。
-
editor.fontSize建议从14或15起试,比纯英文环境略大更舒服 - 必须加
editor.lineHeight,设为24或26(像素单位),避免中英文混排时某一行被压扁 - 别碰
editor.fontLigatures:中文不需要连字,开启反而让顿号、省略号等标点错位 - 工作区
.vscode/settings.json会覆盖用户设置,协作项目里字体突然变小,八成是它写了"editor.fontSize": 12
真正卡住人的地方,从来不是“有没有装字体”,而是字体链顺序、全名拼写、终端/调试器独立配置这三处——改完 editor.fontFamily 就以为万事大吉,结果终端里 console.log('你好') 输出仍是方块,问题就出在这儿。


















