个人浅见,字体美化大家总是纠葛三个方面:
1、Hinting和AutoHint
2、DPI的设置
3、三个font-family的字体匹配顺序
我这回遭遇的就是字体匹配顺序问题。
由于app-office/openoffice-bin包依赖于media-fonts/arphicfonts,arphicfonts被自动安装。我的gentoo
在没有设置字体匹配顺序的情况下,arphicfonts中的楷体就成为了Sans serif的默认选择(这个选择还真是奇怪的说,貌似是哪里有bug了)。
今天搜索了很多资料,终于解决了这个问题。
其实很简单,就是创建一个/etc/fonts/local.conf文件,在里面设定好三个font family的匹配顺序即可。
font family有Serif , Sans Serif 和 Monospace三种不同的font family存在
Serif的意思是,在字的笔画开始及结束的地方有额外的装饰,而且笔画的粗细会因直横的不同而不同。
Sans Serif则没有这些额外的装饰,笔画的粗细大致差不多。
Monospace的意思就是等宽字体了。
我们平时所用的Georgia、Times New Roman等就属于Serif字体,
而Arial、Tahoma、Verdana等则属于Sans Serif字体。
对中文而言,同样存在这两大种类,很明显,宋体、细明体(繁体中常用)等就属于Serif,
而黑体、幼圆等则属于Sans Serif。
一个/etc/fonts/local.conf文件,内容如下
<fontconfig>
<!-- # 设置 serif 衬线字体的读取顺序 -->
<alias>
<family>serif</family>
<prefer>
<family>Serif font 1</family>
<family>Serif font 1</family>
</prefer>
</alias>
<!-- # 设置 sans-serif 无衬线字体的读取顺序 -->
<alias>
<family>sans-serif</family>
<prefer>
<family>Sans font 1</family>
</prefer>
</alias>
<!-- # 设置 monospace 等宽字体的读取顺序 -->
<alias>
<family>monospace</family>
<prefer>
<family>Mono font 1</family>
<family>Mono font 2</family>
<family>Mono font 3</family>
</prefer>
</alias>
</fontconfig>
对于已经安装的字体,还可以用以下命令区别其font family并查找字体名称
fc-list| grep Sans
fc-list| grep Mono
一般gentoo还需要确认一步:
sudo eselect fontconfig enable 51-local.conf
参考的文档:
《细说字体 Sans Serif 与 Serif》
《适用于 GNU/Linux 的字型》
《[原创]一个详细的汉化美化方案(freetype/fontconfig/xft)》
=====================
11 月28日追加,/etc/fonts/conf.d/69-unifont.conf是系统默认的字体匹配顺序配置文件。不过这个文件,出现了很多 FreeSerif、FreeSans、Code2000这样的名字,实在费解,不知匹配的是什么字体,以及如何匹配。愿以后能解之。