Sunday, June 18, 2006

Strange fontset for Emacs23

奇怪的Emacs23字体设置

sourceforge
下载了最新的预编译Emacs23 for Windows。这个版本应该是支持Unicode,中文GBK字库。但是用了原先Emacs22的设置,却不能显示所有的GBK汉字,比如“镕”,显示为一个方框。
后来在newsmth上找了一下,必须把中文字体设置为新宋体,用以下代码:

(create-fontset-from-fontset-spec
"-outline-Courier New-normal-r-*-*-17-97-96-96-c-*-fontset-chinese")
(set-fontset-font
"fontset-default" nil
"-outline-新宋体-*-r-*-*-20-*-96-96-c-*-iso10646-1" nil 'prepend)
(set-fontset-font
"fontset-chinese" 'kana
"-outline-新宋体-*-r-*-*-20-*-96-96-c-*-iso10646-1" nil 'prepend)
(set-fontset-font
"fontset-chinese" 'han
"-outline-新宋体-*-r-*-*-20-*-96-96-c-*-iso10646-1" nil 'prepend)
(set-fontset-font
"fontset-chinese" 'cjk-misc
"-outline-新宋体-*-r-*-*-20-*-96-96-c-*-iso10646-1" nil 'prepend)
(set-fontset-font
"fontset-chinese" 'symbol
"-outline-新宋体-*-r-*-*-20-*-96-96-c-*-iso10646-1" nil 'prepend)
(set-default-font "fontset-chinese")

但是发现直接把这段写在.emacs里不起作用,启动后必须重新编译这段代码才行。相当诡异,因为其他人只要直接这样设置就可以了。难道是因为XP英文系统就不行吗?

后来再次试了一下,把这段字体设置写入fontset.el,然后在.emacs里load就可以了,需要注意的是,必须在设置了语言环境之后再load。有可能XP中文的默认语言环境已经是chinese-gbk了,所以就可以直接设置字体?


(add-to-list 'load-path "~/emacs.configuration")
(setq w32-charset-info-alist
(cons
'("gbk" w32-charset-gb2312 . 936) w32-charset-info-alist))
(set-w32-system-coding-system 'chinese-gbk)
(set-keyboard-coding-system 'chinese-gbk)
(set-language-environment 'chinese-gbk)
(setq locale-coding-system 'chinese-gbk)
(setq current-language-environment "Chinese-GBK")
(set-selection-coding-system 'chinese-gbk)
(set-language-environment 'chinese-gbk)
(setq current-language-environment "Chinese-GBK")

(load "fontset")

使用Courier New 17号和新宋体20号,字体看起来都比较大,不费眼力,而且汉字的宽度正好是字母的两倍。

相关链接:


del.icio.us Tags:

2 comments:

Yao said...

你好,你用ntemacs时,windows的输入法是不是正常。我没法输入多语言。

我是日文系统,输入中文不正常。

注:上面所说的都是用windows的输入法。

jasonal said...

我用的是英文系统,输入法是正常的。
你所说的不正常是什么现象?