emacs乱码问题

http://linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=136702 

 

http://xxo.blog.163.com/blog/static/240022006931702378/

 

http://www.dirk.sh/diary/install_emacs_23_in_ubuntu_610

这几个是关于emacs安装方面的问题,没有实际将到解决乱码的问题,昏 


 编译emacs23 cvs,支持xft字体
emacs是个相当不错的工具,出于对它复杂的配置,一直不敢学,最近打算学LINUX的基本功能,因为CVS版本新增加些新功能,所以我编译了CVS版本

1. 下载CVS版本代码

    sudo apt-get install ssh cvs
    export CVS_RSH="ssh"
    cvs -z3 -d:pserver:[email protected]:/cvsroot/ emacs co -r emacs -unicode-2 emacs

    cd emacs
    cvs up -Pd -r XFT_JHD_BRANCH


2. 安装编译环境 (如果不装这些库emacs有可能就直接在终端打开,没有边框,就象vi一样)

    sudo apt-get install build-essential
    sudo apt-get build-dep emacs21
    sudo apt-get install xserver-xorg-dev
    sudo apt-get install xorg-dev
    sudo apt-get install libncurses5
    sudo apt-get install libncurses5-dev

    sudo apt-get install libgtk2.0-dev

3. 编译emacs,让emacs支持xft字体,要指定gtk环境
   
    ./configure --prefix=/usr /
                     --enable-font-backend --with-xft /

                     --with-freetype /
                     --with-gtk /
                     --with-x-toolkit=gtk

    make bootstrap

    --prefix=/usr 指定了emacs安装在/usr目录里面
    --enable-font-backend 让emacs支持雅黑字体
    --with-freetype 支持freetype字体
    --with-gtk
    --with-x-toolkit=gtk 指定环境为gtk


4. 安装emacs
   
    sudo make install

5. 这里有不错的配置文章 http://forum.ubuntu.org.cn/viewtopic.php?t=18274

Emacs21的字体设置

     Emacs是gtk1.x程序,字体管理选择的是X11核心字体系统。因此前面所说的X11
核心字体的设置已经比较详细了,这里再加一条,xlsfonts列出的字体如下所示:
     -misc-simsun-medium-r-normal--0-0-0-0-c-0-gbk-0
     里面的“c”有如下选择:p: 可变长度, c 是正方形, m是固定宽度。下面进入具体
设置:如果我们不指定 fontset, 那么 emacs 会使用默认的 fontset-default来显示
字体;如果你觉得这种字体不好看,就需要自己定义 fontset。定义fontset有两种方式,
一种是在~/.emacs 中使用 create-fontset-from-fontset-spec 函数,另一种是在
~/.Xdefaults 中定义资源。我们分别介绍这两种方法。---- 第二种方法是比较好的选
择。不过安装emacs21时还要把那个mule-euc中文编码支持包安装好,在~/.emacs中
写好中文环境,eg:
(set-language-environment 'Chinese-GB)
(set-keyboard-coding-system 'euc-cn)
(set-clipboard-coding-system 'euc-cn)
(set-terminal-coding-system 'euc-cn)
(set-buffer-file-coding-system 'euc-cn)
(set-selection-coding-system 'euc-cn)
(set-default-coding-systems 'euc-cn)
(setq locale-coding-system 'euc-cn)
(modify-coding-system-alist 'process "*" 'euc-cn)
(setq default-process-coding-system '(euc-cn . euc-cn))
(setq-default pathname-coding-system 'euc-cn)

(1)使用 create-fontset-from-fontset-spec
     X11核心字体的每个 fontset 都有一个很长的正规名称,例如:
        -adobe-courier-medium-r-normal--14-*-*-*-*-*-fontset-courier
为了方便起见也可以使用短名称,就是最后两段:fontset-courier, 那么这个名称是怎
么生成的呢?首先我们用xlsfonts命令找到自己满意的字体,eg:
        -adobe-courier-medium-r-normal--14-100-100-100-m-90-iso8859-1
然后把最后两段去掉,也就是把 iso8859-1 去掉,换上自己起的字体集名称,比如
fontset-courier,最后把我们不关心的部分用 '*' 号取代就可以了。用xlsfonts列出来
的字体名称中,有些字段为 0,这些是可缩放的矢量字体,这些 0 不能保留,必须用数
字或 `*' 号取代,例如,
        -adobe-courier-medium-r-normal--0-0-0-0-p-0-iso8859-1
要改为:
        -adobe-courier-medium-r-normal--14-*-*-*-p-*-fontset-courier
还有一点需要注意,尽量不要选用可缩放的矢量字体,因为 emacs 不支持 xft,因此无
法打开抗锯齿,这些字体会显得很毛糙,不好看。选定了字体就可以用
create-fontset-from-fontset-spec 函数定义 fontset 了,这个函数很简单,它的参
数是个字符串:
(create-fontset-from-fontset-spec
 (concat
  "-*-courier-medium-r-normal-*-14-*-*-*-*-*-fontset-courier,"
  "chinese-gb2312:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gb2312*-*,"
  "mule-unicode-0100-24ff:-*-simsun-medium-r-*-*-14-*-*-*-c-*-iso10646*-*,"
  "korean-ksc5601:-*-*-medium-r-*-*-14-*-*-*-*-*-ksc5601*-*,"
  "chinese-cns11643-5:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,"
  "chinese-cns11643-6:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,"
  "chinese-cns11643-7:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,"
  "sjis:-*-medium-r-normal--14-*-jisx0208*-*"))
 
这个字符串的第一段是 fontset 的名称,实际上也指定了英文(ascii字符集)字体,后面的
各段格式都是“字符集:字体”,分别为不同的字符集指定字体,例如上面的定义中,ascii
采用courier字体,chinese-gb2312采用simsun字体,以此类推。定义好fontset以后,
我们就可以让 emacs 使用这个fontset了:
(set-default-font "fontset-courier")
另外,为了让 emacs 创建新的 frame 时(C-x 5 系列命令)采用我们指定的fontset,
还要进行下面的设置:
(setq default-frame-alist
      (append
       '((font . "fontset-courier")) default-frame-alist))
 
(2)第二种定义fontset的方法是在 ~/.Xdefualts 中定义资源字符串, 例如在里面写入:
Emacs.Fontset-0:-adobe-courier-medium-r-normal-*-14-*-*-*-*-*-fontset-courier,/
chinese-gb2312:-*-simsun-medium-r-*-*-14-*-*-*-c-0-gb2312*-0,/
mule-unicode-0100-24ff:-*-simsun-medium-r-*-*-14-*-*-*-c-*-iso10646*-*,/
korean-ksc5601:-*-*-medium-r-*-*-14-*-*-*-*-*-ksc5601*-*,/
chinese-cns11643-5:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,/
chinese-cns11643-6:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,/
chinese-cns11643-7:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,/
sjis:-*-medium-r-normal--14-*-jisx0208*-*
 
Emacs.font:fontset-courier
 
更改了 ~/.Xdefaults 的内容以后要执行:xrdb -merge .Xdefaults  或者重启X,这样
更改才能起作用。

     上述两种方法都可以实现同样的效果。但是有一点细微的差别,采用第一种方法时,
fontset 的定义是写在 ~/.emacs 中的,而emacs 启动过程中,是先建立了第一个窗口,
然后才读取~/.emacs 的,建立第一个窗口时,因为还没有读到我们定义的fontset, 因此
它会采用 fontset-default 创建第一个窗口,当读到我们定义的 fontset 时,再进行调
整,如果我们定义的fontset 与默认的fontset-default 字体差别比较大,就会看到emacs
进行了一个调整窗口大小的动作,这个动作延缓了 emacs 的启动过程。而采用第二种方法
则不会出现这个问题,因此推荐使用第二种方法。
 
** 另附设置字体的技巧:
 
(1)在*scratch* buffer中输入
(frame-parameter nil 'font)
光标放在行末按C-x C-e就可以看到当前字体;
(2)Shift + MouseLeftClick可以出来字体选择对话框;
(3)M-x describe-font可以查看当前字体描述
(4)M-x set-default-font <RET><TAB>可以看到可以选择的字体
爽,妈的一下子就搞定了,但是也用了俺一天的时间,用第二种方法,记得要在重启X-WINDOW就什么都搞定了,原来linux管理操作弄清楚了也不是那么难的,关键是要把来龙去脉搞清楚

你可能感兴趣的:(emacs乱码问题)