字体
中文字体
字体渲染效果 | Windows | Linux (with Infinality) |
---|---|---|
Microsoft Yahei | 好 | 一般 |
Source Han Sans / Noto Sans CJK SC | 好 | 一般 |
WenQuanYi | 差 | 差 |
[1] : Noto Sans CJK SC 的中文部分用的是 Source Han Sans
在 Windows 平台上:
- 低字号时雅黑比 Noto Sans 锐利,Noto Sans 有点糊
- 高字号时 Noto Sans 更美观
在 Linux 平台上:未对比。
英文字体
Sans
Open Sans 首选,全平台上都不错。Noto Sans (derived from Droid Sans) 与 Open Sans 很相近,字型更可辨(比如 I vs l)。
Sans Serif
没有特别的喜好,感觉 PT Serif 不错。
Monospace
Windows 平台上首选 Consolas。Linux 下,Noto Sans Mono (derived from Droid Sans Mono) 在 Konsole 下渲染很不错,字型相较 Consolas 更简洁。
IntelliJ 系列 IDE 因为用了 Settings Sync 在全平台同步,使用 Noto Sans Mono 作为统一字体,它在不同平台上都有不错的渲染。
字体渲染
要改善字体渲染效果,最简单的办法是买个 27 寸 4K 屏幕,不管什么系统都好看。
Chrome
CSS 设置 -webkit-font-smoothing
对字体渲染很有帮助,但是这个选项已经被 CSS 标准废弃:
body {
-webkit-font-smoothing: subpixel-antialiased !important;
font-family: 'Open Sans', 'Noto Sans CJK SC';
}
Windows
Windows 下现阶段没有除系统自带的 ClearType 之外的字体渲染调整方法。MacType 现在不被积极维护。不过 Win 10 的字体渲染已经相当不错。
Linux
在 Arch Linux 上,可以用 AUR 中的 ttf-opensans 来安装 Open Sans 字体。同时在 Dropbox/Fonts/MicrosoftYahei
中有微软雅黑的字体,手动装上去就 OK 了。
以前 Linux 的字体渲染是个相当折腾人的活,需要用 Infinality 的补丁来优化字体渲染 。但是 Freetype 2.7 开始,显示效果已经非常赞了。 Freetype 2.7.0 在 2016 年 7 月发布,宣称支持类似 Windows 下的 DirectWrite / ClearType 的渲染效果。所以没有必要再去折腾 Infinality 了。
使用 Infinality 优化字体渲染(过时)
自己去调 fonts.conf
(Arch Wiki | Man Page) 是非常不理智的行为。直接用 Infinality 就好了。参考它的 Arch Wiki 条目 进行安装和配置。
同时注意,Infinality 的配置可能存在一些问题,会导致一些汉字渲染出来偏瘦,比如「的」字。参考这个 GitHub Issue ,你需要在 /etc/profile.d/infinality-settings.sh
加入:
export INFINALITY_FT_STEM_ALIGNMENT_STRENGTH=0
export INFINALITY_FT_STEM_FITTING_STRENGTH=0
# export INFINALITY_FT_STEM_SNAPPING_SLIDING_SCALE=0
# export INFINALITY_FT_AUTOHINT_SNAP_STEM_HEIGHT=0
# export INFINALITY_FT_AUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH=0
export INFINALITY_FT_AUTOHINT_INCREASE_GLYPH_HEIGHTS=false
Java 相关
Java 程序(如 PyCharm, CLion)的字体渲染又有不一样的机制,跟系统的字体渲染效果差很多。但是也有解决办法,主要参见 Arch Wiki 中的 Java Runtime Environment 条目。其中比较好的办法是从 AUR 中 安装 jre8-openjdk-infinality
以及 jre8-openjdk-headless-infinality
。
安装完后,Java 程序(如 PyCharm)的字体渲染就跟原生的程序一样了。