Windows Terminal 显示方块或Powerline断裂,根本原因是字体未被系统正确注册、终端未填对显示名称、shell未启用Nerd Font模式;须右键“为所有用户安装”,在设置中确认字体名完整列出,settings.json中精确填写带英文双引号的显示名如"MesloLGS NF",并确保Oh My Posh或Powerlevel10k等主题配置启用Nerd Font支持。
windows terminal 显示方块、问号或 powerline 分隔符断裂,不是字体没装,而是系统没“认出”它,或者终端没“找到”它。关键在三步:装对位置、刷进系统、填准名字。
字体必须正确安装到系统级字体库
双击 .ttf 文件安装 ≠ Windows Terminal 能用。Nerd Font(如 MesloLGS NF、Cascadia Code PL)依赖完整的 Unicode 映射表,旧版字体管理器可能跳过这部分:
- 务必右键 → “为所有用户安装”,而非仅当前用户;
- 安装后打开「设置 → 蓝牙和其他设备 → 字体」,确认字体名称完整列出(例如 MesloLGS NF,不是文件名 MesloLGS Nerd Font Complete.ttf);
- 若未出现,用 PowerShell 运行:
Get-Font | Where-Object {$_.Name -like "*Meslo*"},检查是否注册成功。
Windows Terminal 设置中填精确显示名称
settings.json 或 UI 设置里,"fontFace" 值不是文件名,也不是模糊匹配名:
- 必须填字体在系统中注册的「显示名称」,大小写、空格、连字符一个都不能错;
- 含空格必须加英文双引号:
"MesloLGS NF"✅,MesloLGS NF❌(会被截断); - 多个备选字体用英文逗号分隔:
"MesloLGS NF", "Cascadia Code PL", "Consolas"; - VS Code 或 Windows Terminal 的下拉菜单不包含 Nerd Font 名称,得手动敲,别依赖自动补全。
确保 Shell 提示符真正启用 Nerd Font 模式
字体只是画笔,输出符号的是 shell 主题。装了字体但没调用,照样显示方块:
-
PowerShell + Oh My Posh:初始化命令中
--config必须指向支持 Nerd Font 的主题(如jandedobbeleer.omp.json),且该 JSON 中blocks[].font字段留空或设为"Nerd Font"; -
WSL / Zsh + Powerlevel10k:在
~/.p10k.zsh中确认有typeset -g POWERLEVEL9K_MODE='nerdfont-complete',或重跑p10k configure并选择 Lean 主题; - 如果用 bash,默认 PS1 不含 Powerline 符号,需改用
powerline-shell或支持 Nerd Font 的插件。
不复杂但容易忽略:系统注册、终端填写、shell 输出,三者缺一不可。

















