终端字体重叠变形源于字体链或渲染层错配导致的等宽失准,必须配置合法等宽字体链:"'Cascadia Code', 'Fira Code', 'Consolas', monospace",并同步设置 editor.fontFamily 与 terminal.integrated.fontFamily,且需确认字体已真实安装、Windows 终端属性未覆盖配置。

终端字体重叠变形不是编码问题,是字体链或渲染层错配导致的等宽失准——改对配置项比换字体更关键。
terminal.integrated.fontFamily 必须用等宽字体链,不能只写一个名字
Windows 上直接填 "Consolas" 或 "Cascadia Code" 看似合理,但 VS Code 会尝试 fallback 到系统默认非等宽字体(比如 SimSun),一旦遇到中文就触发字符宽度不一致,光标偏移、字体重叠、换行错位全跟着来。
- 正确写法是用逗号分隔的等宽字体链:
"'Cascadia Code', 'Fira Code', 'Consolas', monospace" - 单引号包裹含空格的字体名,避免解析失败
- 末尾必须加
monospace作为保底,否则某些系统 fallback 会选到SimSun或Microsoft YaHei——它们不是等宽字体,终端立刻失准 - 别在设置里写
"fontFamily": "Cascadia Code, Consolas"(缺引号)或"fontFamily": "Cascadia Code, monospace"(没加单引号)——JSON 解析失败后 VS Code 会静默降级回默认字体
字体设置必须同时覆盖 terminal 和 editor,否则光标行为不一致
只改 terminal.integrated.fontFamily 而忽略 editor.fontFamily,会导致你在编辑器里敲代码时一切正常,但切到终端后光标突然“卡顿”“跳格”“覆盖前一个字”——因为两处渲染引擎用的字体宽度表不同。
- 在
settings.json中同步设置两项:"editor.fontFamily": "'Cascadia Code', 'Fira Code', 'Consolas', monospace""terminal.integrated.fontFamily": "'Cascadia Code', 'Fira Code', 'Consolas', monospace" - 不要依赖 GUI 设置界面粘贴字体名——它会自动删掉单引号和空格,生成非法 JSON
- 改完必须重启终端(Ctrl+Shift+` 关闭再打开),旧终端进程不会重载字体链
Windows 终端属性里的字体设置会覆盖 VS Code 配置
VS Code 的集成终端底层调用的是 Windows conhost 或 Windows Terminal。如果你右键终端 → “属性” → “字体” 里手动选了 Lucida Console 或 宋体,那无论 settings.json 写得多规范,终端都优先走这个设置。
- 检查方法:新开一个终端 → 右键标题栏 → “属性” → 切到“字体”页签 → 确认选中的是等宽字体(如
Consolas、Cascadia Code) - 如果看到
宋体、微软雅黑、新宋体,立刻换掉——这些字体在 CMD/PowerShell 下强制启用 GDI 渲染,中文字符宽度 ≠ ASCII 字符宽度 - 该设置是 per-profile 的(即每个 shell 类型独立保存),PowerShell、CMD、Git Bash 各自有一套,需分别检查
最常被忽略的一点:字体链生效前提是终端进程启动时加载成功。如果 Cascadia Code 没装,VS Code 会顺次尝试 Fira Code,再失败才落到 monospace——而很多系统里 monospace 指向的是 NSimSun,照样重叠。务必确认至少一个链中字体已真实安装并能被系统识别。


















