折腾了半天字体。
起因是在linux下用ReText写rst格式文档,写标题的时候报错文字下的标记长度不够,明明是对对齐的。原因是中英文字体不是严格1:2等宽,1个中文字宽度不等于2个英文字宽度,造成错觉。换了几个等宽字体也不行。
搜索折腾了一番。总结如下:
-
最简单实用的办法是安装一个为中文优化过的等宽英文字体,设置字体时就选这个等宽英文字体。这种字体不多,例如:ubuntu mono。据说还有mplus fonts,应该是含有中日文的,没试过。
-
gnome terminal和vim,gvim有特殊处理,不用安装特殊字体,自动中英文1:2等宽。
-
Windos 7下,我记得有款达人自制的雅黑Consolas混合字体,挺棒的。中英文看起来都比较舒服。至于是不是中英文1:2等宽,有段时间没用Windows 7,不太记得了。
-
Windows 10下,看程序心情。
-
正常程序notepad, notepad++, 选择普通的等宽英文字体,自动中英文1:2等宽。
-
自制雅黑Consolas混合字体,不再中英文1:2等宽。
-
较高版本的Visual Studio 2012, 2017、SQL Server Management Studio 2017, 字体不会自动等宽。进入抽风模式
- 原本包含1:2等宽中英文的字体,如“新宋体”,能保持中英文1:2等宽
- ubuntu mono,设置12号字体,能中英文1:2等宽
- 其他字体,抽风
-
Visual Studio 2008, 抽风模式
-
-
其他:
-
Linux下可能会找到一些修改fontconfig的办法。别折腾,弄来弄去不如安装字体实用。人家字体设计就没有为中英文比例设计。再说强行等宽也不见的好看。
-
Windows下可能会有些FontLink方案,修改系统注册表的SystemLink。也别折腾,弄来弄去,重启注销N次也调不出个好结果。
另:FontLink时,有个缩放因子,比较难以调整把握,很难找到这个缩放因子的说明,附注一段找到的说明1, Mark一下。
-
如前所述,我找不到任何关于这两个缩放因子的详细资料,唯一能找到的相关信息就是开源软件gdipp的一个源程序文件。在这个文件里,Fontlink里定义的两个缩放因子被用来以如下方式计算另外一个缩放参数:
new_info.scaling = (factor1 / 128.0) * (96.0 / factor2);
来源:oschina
链接:https://my.oschina.net/u/947271/blog/1832676