vscode 设置中文字体需分别配置编辑器和终端的等宽字体链,如'fira code', 'microsoft yahei mono', 'pingfang sc', 'noto sans cjk sc', 'monospace',并确保使用系统注册的字体全名、启用utf-8编码、调整抗锯齿设置且重启窗口生效。

VSCode 怎么设置中文字体(不是语言包)
VSCode 默认英文界面下,中文显示发虚、断笔、字距奇怪,根本不是“没汉化”,而是字体没配对。改字体和装中文语言包是两件事,很多人装完 Chinese (Simplified) 插件发现代码里中文还是糊的,就卡在这一步。
关键不是选“微软雅黑”或“思源黑体”就行,而是得让 VSCode 的编辑器区域(Editor)和终端(Terminal)分别指定支持中文的等宽字体,且用逗号分隔、按优先级排列。
- 打开设置:快捷键
Ctrl+Shift+P→ 输入Preferences: Open Settings (UI)→ 在搜索框输入font family - 找到
Editor: Font Family,双击右侧值,清空后填入:'Fira Code', 'Microsoft YaHei Mono', 'PingFang SC', 'Noto Sans CJK SC', 'monospace' - 同样搜
Terminal > Integrated: Font Family,填一样的字体链(终端默认不继承编辑器字体) - 如果用的是 macOS,去掉
Microsoft YaHei Mono(Windows 字体),换成Monaco或SF Mono做 fallback
为什么有些中文字体在 VSCode 里不生效
常见现象:填了 SimSun 或 NSimSun,结果中文全变成方块;或者填了 Source Han Sans CN 却只显示英文——本质是字体名写错了,或系统根本没安装该字体。
VSCode 认的是系统注册的**字体全名**(Font Full Name),不是文件名。比如你下载了“思源黑体”,安装后在字体册里看到的可能是 Source Han Sans CN,但实际要填的是 Source Han Sans CN Normal(macOS)或 Source Han Sans CN Regular(Windows)。填错一个词,整条字体链就跳过它往下找。
- 验证字体是否存在:Windows 可打开「字体设置」搜索;macOS 打开「字体册」,点字体预览右下角的「信息」看「全名」字段
- 避免用带空格或括号的字体名,如
Microsoft YaHei要写成Microsoft YaHei Mono(后者才是等宽变体) - 别把
font family和font ligatures搞混:font ligatures开关只影响连字(如!=显示为≠),不影响中文渲染
终端中文乱码 / 中文宽度异常怎么办
即使编辑器字体设对了,集成终端(Ctrl+`)里的中文仍可能挤在一起、换行错位,甚至显示为 —— 这通常是因为终端用了非等宽中文字体,或没启用 UTF-8 编码。
- 先确认终端编码:在终端里运行
locale,确保输出含LANG=zh_CN.UTF-8(Linux/macOS)或系统区域设为「中文(简体,中国)」(Windows) - VSCode 终端字体必须是**等宽中文字体**,
SimSun不是等宽字体,禁用;推荐Microsoft YaHei Mono、Noto Sans CJK SC、Fira Code(需开启中文支持) - Windows 用户若用 PowerShell,还需检查
PSReadLine版本是否 ≥2.2.6,旧版对中文光标位置计算有 bug
改完字体后中文还是发虚?检查抗锯齿设置
字体清晰度不只取决于字体本身,还受 VSCode 渲染策略影响。特别是高分屏(如 MacBook Retina、4K Windows 笔记本),默认的子像素抗锯齿可能让中文字边缘泛蓝/红,看着“毛”。
- 在设置中搜
font antialiasing,将Editor: Font Antialiasing改为auto(自动)或none(关闭)试试 - Windows 用户可额外开启 ClearType:控制面板 → 「调整 ClearType 文本」→ 勾选并完成向导
- macOS 用户注意:VSCode 1.85+ 默认启用
coretext渲染,若中文模糊,可临时加启动参数:code --disable-gpu --force-renderer-accessibility(仅调试用)
最常被忽略的一点:改完 font family 后没重启窗口,或只改了用户设置却忘了工作区设置覆盖了它。建议直接打开 settings.json,确认 "editor.fontFamily" 和 "terminal.integrated.fontFamily" 两项都存在且无拼写错误——毕竟 VSCode 不报错,只是静默跳过无效字体名。










