Emacs字体调整

目前我习惯的Emacs字体配置是12倍的Fixedsys显示英文和数字,16倍的微软雅黑显示中日韩即CJK文字. 在Surface Pro上面非常完美,但是并不是每个环境都能很好的支持这个配置.

elisp代码如下

 
(defun font-set-sp ()
  (set-default-font "Fixedsys Excelsior 3.01 12")
  (dolist 
    (charset '(kana han symbol cjk-misc bopomofo))
    (set-fontset-font (frame-parameter nil 'font)
      charset
      (font-spec :family "Microsoft Yahei" :size 16)))
)
 

最近在另一台PC上面试图建立Emacs环境,系统跑的是WIN7,虽然仍然是使用"Fixedsys Excelsior 3.01"这个第三方字体,但是每次试图设置默认字体的时候,实际显示效果会显得肥了一圈,无论怎么都调整不好.

试了其他几种字体,最后选择Consolas作为英文和数字字体,CJK仍然用雅黑,但是又出现另一个问题,即我需要一个CJK文字占据2个英文字符的宽度,这个对Emacs table非常重要.但是不同字体之间对字符宽度的定义不一样,如果用Consolas 12号字体显示英文,那么雅黑就不能用16号. 经过多次测试,最后确定的配置如下

 
(defun font-set-pc ()
  (set-default-font "Consolas 12")
  (dolist 
    (charset '(kana han symbol cjk-misc bopomofo))
    (set-fontset-font (frame-parameter nil 'font)
      charset
      (font-spec :family "Microsoft Yahei UI" :size 22)))
)
 

最后将原来的font-set函数改为:

 
(defun font-set ()
  (font-set-sp)
  ;(font-set-pc)
)
 

在不同的环境注释掉相应的行即可.