虚拟终端下等宽字体超标宽度字符显示
2019年12月24日 星期二
Linux的精髓就是强大方便的终端命令行,不过日常使用不可能也在tty终端下,因此桌面用户面对的是虚拟终端。
一直使用xterm作为虚拟终端,因为自定义程度高、速度快。另外把rxvt-unicode作为备用,不过很少使用。
最近发现vim-airline在urxvt下有个特殊字符「☰」不显示,显示为一个长方形框框。刚开始以为是字体的字符不全,检查后发现使用的等宽字体是有这个字符的。
用fontforge打开等宽字体找到这个字符,把它缩小为原来的50%以后生成新字体,复制新字体到/usr/share/fonts下刷新字体缓存。再打开urxvt就可以显示「☰」了,不过比xterm下原来未修改的字体字符小多了。
同样的字体xterm和urxvt处理的方式不同,对某些宽度超标的字符,xterm压缩其宽度至达标,urxvt则直接显示一个框框完事,而且不止「☰」,很多宽度超标的字符都无法显示。
要解决这个问题有两个方法:修改字体或者更换终端。修改字体太麻烦太累,更换终端简单多了。
不喜欢臃肿花哨的终端,选来选去决定用termite代替urxvt作为备用终端,同样轻快小巧。
termite对宽度超标的字符处理又与前两者不同,命令输入行截断超标宽度字符显示,但是下方命令反馈显示结果则不压缩其宽度完整显示,虽然破坏了等宽字体的等宽特性,但是不影响美观,可以接受。