Space Mono字体自动将</转为箭头,求解决方法及原理
问题:Space Mono字体中
</被自动渲染为箭头,如何取消或了解原因? 
我尝试在终端/neovim环境中使用Space Mono字体,但遇到一个奇怪的问题:</会被自动转换为箭头。截图来自Adobe字体官网。
我希望能手动取消这一效果——因为这种渲染方式显然会导致XML/HTML开发工作变得麻烦甚至无法进行。即便无法取消,我也想了解其背后的原因。
起初我以为是终端配置的问题,但在Google Fonts和Adobe Fonts中输入</时也出现了同样的结果。
回答
原因
这是Space Mono字体内置的**连字(Ligatures)**特性导致的。为了优化代码阅读体验,部分等宽字体(包括Space Mono)会将特定字符组合(如</、->、==等)设计成合并后的特殊字形,</被替换成箭头就是该字体预设的连字规则之一。
取消方法
根据使用场景不同,有几种解决方案:
终端环境
主流终端都支持禁用字体连字:- Alacritty:在配置文件
alacritty.yml中添加/修改:font: ligatures: false - iTerm2:打开「偏好设置 > 配置文件 > 文本」,取消勾选「启用字体连字」
- Kitty:在
kitty.conf中设置disable_ligatures all
- Alacritty:在配置文件
Neovim环境
- 若使用
nvim-treesitter,可在配置中禁用连字:require('nvim-treesitter.configs').setup({ ligatures = { enable = false, } }) - 直接通过Vimscript设置:
(部分版本需配合终端已禁用连字生效)set noligatures
- 若使用
字体修改(终极方案)
如果终端/编辑器不支持禁用连字,可以用FontForge等字体编辑工具打开Space Mono字体,找到并删除</对应的连字规则,重新导出字体后安装使用。
内容的提问来源于stack exchange,提问作者Sam Johnson
相关产品推荐
相关产品推荐

