(已解决)求助,emacs中defface使用自定义fontset的问题

Vim、Emacs配置和使用
回复
duyanning
帖子: 82
注册时间: 2007-06-23 17:27
系统: Linux Mint 13
送出感谢: 1 次
接收感谢: 0

(已解决)求助,emacs中defface使用自定义fontset的问题

#1

帖子 duyanning » 2011-04-17 21:37

解决办法:http://marxistprogrammer.blog.163.com/b ... 112353323/
======================================
我的系统是win7,emacs版本23.3.1。

先定义一个名为dyna的face

代码: 全选

(defface dyna
    '((t :family "楷体"))
    "face defined by dyn."
    :group 'basic-faces)
在buffer中选中中国的“中”字,然后选择菜单项:
Edit -> Text Properties -> Face -> Other
此时minibuffer中提示如下
Use face:
输入dyna

“中”字变成了楷体。
然后执行M-x describe-char,会显示相关信息如下:
character: 中 (20013, #o47055, #x4e2d)
preferred charset: chinese-gbk (GBK Chinese simplified.)
code point: 0xD6D0
syntax: w which means: word
category:
.:Base, C:2-byte han, c:Chinese, h:Korean, j:Japanese, |:line breakable
buffer code: #xE4 #xB8 #xAD
file code: #xD6 #xD0 (encoded by coding system chinese-gbk-dos)
display: by this font (glyph code)
uniscribe:-outline-楷体-normal-normal-normal-mono-13-*-*-*-c-*-gb2312.1980-0 (#x463)

Character code properties: customize what to show
name: CJK IDEOGRAPH-4E2D
general-category: Lo (Letter, Other)

There are text properties here:
face dyna

再定义一个名为dynb的face,不过这次我想让它使用一个自定义的fontset
我先创建这个fontset如下:

代码: 全选

(create-fontset-from-fontset-spec
   "-outline-Arial-normal-normal-normal-sans-13-*-*-*-p-*-fontset-gbk")
然后再设置一下,指定对于chinese-gbk这个字符集使用楷体

代码: 全选

(set-fontset-font
   "fontset-gbk" 'chinese-gbk
   "-outline-楷体-normal-normal-normal-mono-27-*-*-*-c-*-gb2312.1980-0")
然后新建一个名为dynb的face,并在其中使用这个自定义的fontset

代码: 全选

(defface dynb
    '((t :family "chinese-gbk"))
    "face defined by dyn."
    :group 'basic-faces)
然后,同上边一样,在buffer中选中中国的“中”字,然后选择菜单项:
Edit -> Text Properties -> Face -> Other
提示Use face:时输入dynb

但这次“中”字并没有变成楷体。

执行M-x describe-char
显示如下信息:
character: 中 (20013, #o47055, #x4e2d)
preferred charset: chinese-gbk (GBK Chinese simplified.)
code point: 0xD6D0
syntax: w which means: word
category: .:Base, C:2-byte han, c:Chinese, h:Korean, j:Japanese, |:line breakable
buffer code: #xE4 #xB8 #xAD
file code: #xD6 #xD0 (encoded by coding system chinese-gbk-dos)
display: by this font (glyph code)
uniscribe:-outline-Batang-normal-normal-normal-serif-13-*-*-*-p-*-gb2312.1980-0 (#x8966)

Character code properties: customize what to show
name: CJK IDEOGRAPH-4E2D
general-category: Lo (Letter, Other)

There are text properties here:
charset chinese-gbk
face dynb

跟上一次几乎完全相同,除了一行之外。
似乎dyna并没有使用楷体,而是用了一个名为Batang的字体。

我用M-x describe-fontset查看fontset-gbk的详细信息
发现似乎是“中”字没有用我设定的楷体,而是fallback to the default fontset之后,用了default fontset中的字体。

请问这是怎么回事?我是哪里出了错?如何才能让face使用自定义的fontset?
回复

回到 “Vim和Emacs”