关于ANSI转义序列SGR参数10-19(替代字体)的技术咨询
ANSI SGR参数10-19:替代字体说明与Windows终端配置
一、参数10-19的作用机制
- 参数10:切换回默认字体,是11-19的重置选项
- 参数11-19:对应第1到第9号替代字体,规则是「参数值-10=替代字体编号」——比如
\033[11m选第1号替代字体,\033[12m选第2号,以此类推
这些属于ANSI转义序列里的SGR(Select Graphic Rendition)指令,终端收到\033[<参数>m格式的序列后,会切换对应的字体显示后续文本,直到遇到重置指令(比如\033[0m)或者其他字体切换指令。
二、Windows 11终端没效果的解决办法
Windows默认的CMD(命令提示符)对SGR字体切换的支持几乎为零,哪怕配置了也没用。想看到效果,得用Windows Terminal,还要做以下配置:
1. 配置终端的附加字体
- 打开Windows Terminal,按
Ctrl+,调出设置 - 找到你当前使用的配置文件(比如PowerShell、CMD)
- 往下翻到「外观」板块,找到「附加字体」选项
- 添加你想用的等宽字体(必须是等宽,比如Fira Code、Consolas、JetBrains Mono),添加顺序对应替代字体编号:第一个附加字体对应参数11,第二个对应12,以此类推
- 保存设置后重启终端,再运行测试代码就能看到效果
2. 其他注意事项
- 非等宽字体在终端中显示会错乱,务必选择等宽字体
- 把Windows Terminal更新到最新版,旧版本可能不支持该特性
- 确认终端已开启「启用ANSI颜色」选项(默认是开启状态,可在设置中检查)
测试代码
print('\033[10m', end='') print('font0 TEST123test') print('\033[11m', end='') print('font1 TEST123test') print('\033[12m', end='') print('font2 TEST123test') print('\033[0;33m', end='') print('TEST123test') print('\033[1;33m', end='') print('TEST123test')
内容的提问来源于stack exchange,提问作者Mars Baboon
相关产品推荐
相关产品推荐

