X字体配置的小心得



想当初Redhat 7-8-9的时代,汉化美化文章满天飞,但最终结果实在是不满意,基本是费了很大功夫,最后还是不一定能用。但在那个时代之后,字体技术也是突飞猛进,到现在已经很简单了,所以脑子里记下的东西反而更少。

先是X的核心字体,老辈子的技术,目前多数X程序都已经不再使用,但还有个xmms,还有一些终端仿真程序,像rxvt一类还在使用。对这种字体的要求是只要有,也就可以了。

核心字体可以用xlsfonts来查看,西文的不说,加上 |grep gb2312来查看gb码的字体,形式是:

-misc-simsun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0

至于它是什么意思已经完全不重要了,以前这些是相当地重要,还要改一些参数以便有斜体,粗体等。现在只要看到simsun的名字,以及后面gb2312-1980-0这个编码就行了,表示有这个字体,支持这种编码,一切OK。如果要看unicode编码,它这里用的是iso10646。

这种字体的配置是首先把字体放到字体目录下,如/usr/share/fonts下面建个zhfonts目录就行。放后字体文件,然后在这个目录下执行ttmkfdir,或者mkfontdir,它们有什么区别不清楚,总这会在字体目录下生成fonts.dir/fonts.scale这两个文件之一,然后拷贝成另外一个即可。这两个文件里面第一行是行数,下面前面是字体文件,后面是核心字体名,一个文件可能对应多个字体名。这里的工作就结束了。如果没有那两个程序,就装一下xfonts-utils这个或其他什么包吧,Debian直接搜就出来了。

然后是新的字体技术,一般说是xft,支持这个就是使用这种技术的了。有xft/freetype/pango/fontconfig等几种不同的技术,依稀记得说是pango管布局,freetype管画线,xft是编程的,fontconfig是配置管理的(不对请指出啊)。这都完全不重要了,知道名字就行。

这个新技术是更加简单的。在字体目录下放好字体文件,执行:fc-cache -v -f就可以看到系统一个个目录地过滤这些字体,找出其中能用的,无须重启,然后在应用程序的配置中就可以看到并使用这些字体了。

X需要知道字体目录在哪里,这个在/etc/fonts下面设置,文件有两个,fonts.conf和local.conf,前一个是系统的,推荐不修改,有时候升级系统时还要替换成新的,某次就是这个文件在升级时没有替换,造成了一些问题。自己改的东西可以放在locla.conf里面,这个方法应该没有问题。当然也可以在用户目录下建一个.fonts.conf。

这两个文件开头就是dir的设置,一行一个,用< dir >标签包上即可,把自己的目录加进去即可。我观察似乎这些目录是可以自动包含子目录的。

另有一个设字体路径的是在X的设置中,我一直没搞懂这两个具体区别是什么。这个在/etc/X11/xorg.conf里面,section files,一长串FontPath。我一般是把fonts.conf里的路径在这里又重复一遍(估计比较土)。这里似乎还有个顺序问题,可以把自己想优先使用的放得靠上一些(可能是民科了)。

在fonts.conf文件(或者local.conf或者~/.fonts.conf)中,一个比较重要的工作就是指定字体的查找顺序,也就是程序在需要字体时按一个什么的顺序来过滤这些字体文件。一般前面放几个西文字体,紧接自己最想用的中文字体。比如:

1
2 <alias>
3 <family>sans</family>
4 <prefer>
5 <family>Bitstream Vera Sans</family>
6 <family>Arial</family>
7 <family>SimSun</family>
8 <family>WenQuanYi Bitmap Song</family>
9 </prefer>
10 </alias>
11

这里的Prefer就指定了当遇到sans字体时按Bitstream/arial/simsun/wqy这个顺序来找,如果是英文就用bitstream,如果是中文的,优先就是simsun了。用同样的方法指定Serif和Mono字体。这些文件都是xml,看意思其实也算是很明白的。

这个Sans,据说是法文,意思是without,它全称是sans-serif;而这个serif一般称为有衬线的,有修饰的,其实就是西文字体在笔划终端处的突出的尖。这个的来历是在石头上刻字时进刀或出刀的地方,久之形成了风格。而Sans自然就是没这个装饰的字体,这算是字体的两大流派。一般咱们的宋体,对岸及日本称为明体的,也带这个装饰。但刻石时完成可以用其他刀法来避免这个尖的出现。

一般认为屏幕上Sans,也就是圆头圆脑的字体比较好,而印刷时有衬线比较好。而Mono类,就是等宽字体,一般编程时用,这种字体每个字母都占同样的宽度,w和l完全一样宽,而一个中文正好是两个字母宽。当然编程还有其他要求,比如LlIi1/Oo0这些都要能清楚地分辨。

Linux这里有两套自由字体,Bitstream和DeJavu,样子基本一致,据说de系字符要多一些,推荐使用这两个。下面的fonts.conf语法可以把这个字体指定到sans上:

1
2 <match target="pattern" >
3 <test name="family" qual="any" >
4 <string>sans</string>
5 </test>
6 <edit mode="append" binding="strong" name="family" >
7 <string>DejaVu Sans</string>
8 </edit>
9 </match>
10


这里的字体是XFT字体,用名字就可以了。可以用fc-list命令来查看系统上有哪些xft字体

另外一个语法是粗体:

1
2 <match target="font">
3 <!-- check to see if the font is just regular -->
4 <test name="weight" compare="less_eq">
5 <int>100</int>
6 </test>
7 <!-- check to see if the pattern requests bold -->
8 <test target="pattern" name="weight" compare="more_eq">
9 <int>180</int>
10 </test>
11 <edit name="embolden" mode="assign">
12 <bool>true</bool>
13 </edit>
14 </match>
15

这一段其实在标准的fonts.conf里面就有,但Debian下缺少会设成200,于是网页上的粗体就显示不出来,所以才要自己再设成180。其实在印刷上中文没有粗体这个说法,也没有斜体,在西文用粗体的地方中文一般用黑体,在用斜体的地方中文可用楷体或仿宋体,正文一般是宋体。

还有一段是关闭中文小字号的AA,也就是防锯齿,就是显得虚的那种,总之是小字号时点阵比较清楚漂亮些。


1
2 <match target="font">
3 <test compare="contains" name="lang">
4 <string>zh-cn</string>
5 <string>zh-tw</string>
6 </test>
7 <test compare="more_eq" name="pixelsize" qual="any">
8 <double>11</double>
9 </test>
10 <test compare="less_eq" name="pixelsize" qual="any">
11 <double>15</double>
12 </test>
13 <edit mode="assign" name="antialias">
14 <bool>false</bool>
15 </edit>
16 </match>
17


中间指定的11-15点,这个依各人喜好设置。我记得Win2k上中文直到18点都不开AA,其实很不好看。simsun好看的原因之一也就是它内置了比较全比较多的点阵字体,WenQuanYi也是这样,效果也不错。这个关闭AA也可以针对字体来设置,而不是语言。

还有英文用了和中文一样的宽度等问题,都可以在fonts.conf里面设置,这个就不说了。

最后是应用程序的设置,通常xft程序都带有字体设置,指定某个字体给它用就是了,一般可以指定一个好看的西文字体,然后中文就会按fons.conf里的顺序来自动查找。桌面上的窗口用的字体一般也有设置,Gnome/xfce都有,可以指定一下。Firefox的字体设置要分中文和西文。而gvim的设置是写在.gvimrc里的,可以命令模式下用set guifont?来查看。


2006-06-11 10:49:46,由cathayan发表。目录:电脑
得分: -5  [  |  ]   浏览 1109 次   引用URL  EMail This
::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com


订阅 substack 体验古早写作:


点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

关注公众号, 持续获得相关各种嗯哼:
zoomquiet


自怼圈/年度番新

DU22.4
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::