让emacs23使用xft字体

Author: Karron Qiu
HomePage:http://karronqiu.googlepages.com
Blog:http://karronqiu.spaces.live.com

最新的emacs23增加了xft字体支持,可以使用漂亮的字体了,并且可以AA,看起来圆滑,非常漂亮.我之前编译了一个,发现英文字体非常漂亮.可惜,中文字体是非常丑陋的粗体,让人不忍卒读.我再次发出了我为什么不是外国人的哀号.这种哀号,在我使用计算机的日子里面经常发出.唉.

日子就这样过去了几个月,我想再次编译一下最新的版本,结果发现至少在中文字体上面,没有任何改进.但是在水木的emacs版,看到FlawZero@newsmth说有方法可以使用系统漂亮的中文字体.于是在他的方法下面,非常惊险地达到了这个目的.为什么说惊险呢,因为中途我差点绝望,因为最后连一个中文都显示不出来了....

不过最终还是好了,也用上了漂亮的中文字体.这里我把我的过程写在这里,供大家参考.

编译最新的emacs23

这里我就不详述了, 有很多的文章已经介绍了.这里推荐几篇. zhan@ubuntu-cn 的一篇,很详细. 注意的是,在执行 ./configure 的时候一定要用这样的参数 ./configure --prefix=/usr --enable-font-backend --with-xft --with-freetype --with-gtk ,加上xft等支持.

调试emacs23的中文字体

emacswiki 上的这篇文章讲述了如何让emacs支持xft. 编译完成之后我们用 emacs --enable-font-backend --font "Bitstream Vera Sans Mono-10" 来启动emacs,打开一个文件,就可以看到非常漂亮的英文了.可是中文会很丑.

好本文的重点来了,如何调教中文字体.

首先用下面的python脚本,把一些字体unlink掉.

#!/usr/bin/env python

import os

FONTPATH = '/usr/share/X11/fonts/misc' #'/usr/share/fonts/X11/misc'

def process(line):
    tokens = line.split(' -')
    if len(tokens) > 1:
        parts = tokens[1].split('-')
        if len(parts) > 1 and not parts[-2].startswith('iso'):
            return os.path.join(FONTPATH, tokens[0])

fontlist = [process(line) for line in open(os.path.join(FONTPATH, 'fonts.dir'))]
fontlist = filter(None, fontlist)
for font in fontlist:
    os.unlink(font)
os.system('mkfontdir %s' % FONTPATH)

保存之后注意加上可执行的属性,然后用sudo执行.

接着我把 xorg里面的fontpath全部注释掉了,这步不知道是否有用. 然后在emacs选中一个字,用 M-x describe-char ,取得字体信息,比如 mincho什么的.然后 apt-cache search 这个字体,把这个字体卸载了,然后再打开emacs看看字体怎么样,如果不满意,就继续进行. 我卸载的字体有 ttf-kochi-gothic , ttf-kochi-mincho ,ttf-baekmuk , ttf-arphic-uming.

我现在是 ar pl shanheisun un ,在我的LCD上看起来还行.就没有继续尝试了.

下面是截图一张,可以看看效果.如果使用的是方正黑体,微软雅黑,效果可能会更好些.

UPDATE: 我现在已经用的是微软雅黑了,效果要好些,主要是颜色要深些,看起来不那么费劲.

snapshot2.png