LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1274|回复: 9

Emacs 字体的问题

[复制链接]
发表于 2005-8-12 14:11:42 | 显示全部楼层 |阅读模式
我最近刚刚开始使用 GNU Emacs,关于字体遇到了一个奇怪的问题。在下面的描述中,我会使用 SimSun 这个字体,请大家不要在这个字体上争论。

首先,我使用 xfontsel 来查找可用的字体,我选择了 SimSun。字体名称是:
  1. -simsun-simsun-medium-r-normal--12-120-*-*-p-0-gb2312.1980-0
复制代码

然后,我在打开 xfontsel 并选择了这个字体的情况下执行
  1. $ emacs -fn "-simsun-simsun-medium-r-normal--12-120-*-*-p-0-gb2312.1980-0"
复制代码

这时我看到 Emacs 使用了 SimSun 作为显示字体。当我关闭 xfontsel 之后,再次执行命令
  1. $ emacs -fn "-simsun-simsun-medium-r-normal--12-120-*-*-p-0-gb2312.1980-0"
复制代码

时,Emacs 却不能使用 SimSun 显示了,显示的是一堆乱码。于是我再次打开 xfontsel 但没有选择 SimSun 这个字体,仍然是乱码;只要我打开了 xfontsel 并选择了 SimSun 字体,Emacs 就可以正常显示。

下面的三张图分别显示了 xfontsel 选择的 SimSun 字体、异常显示的 Emacs 和正常显示的 Emacs。

请问这是为什么?谢谢。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2005-8-12 18:32:20 | 显示全部楼层
不知道为什么会跟xfonsel有关,但是你应该看一下man 1 emacs:

...

       -font font, -fn font
               Set the Emacs window's font to that specified by font.  You will find the various X fonts in the /usr/lib/X11/fonts directory. Note  that Emacs will only accept fixed width fonts. Under the X11 Release 4 font-naming conventions, any font with the value "m" or "c" in the eleventh field of the font name is a fixed width font.  Furthermore,  fonts  whose  name  are  of  the  form widthxheight are generally fixed width, as is the font fixed.  See xlsfonts(1) for more information.

               When you specify a font, be sure to put a space between the switch and the font name.

...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-12 21:03:15 | 显示全部楼层
似乎是编码的问题。无论是否打开了 xfontsel,下面这个命令都是可以的:
  1. $ emacs -fn "-simsun-simsun-medium-r-normal--12-120-*-*-p-0-iso8859-1"
复制代码

我发现这个字体的第 11 个域并不是 c 或 m,但这样确实也是可以的。顺便说一下,我把下面的内容写到 ~/.Xresources 中:
  1. Emacs.Fontset-0: -*-courier-medium-r-normal-*-18-*-*-*-*-*-xgp-18, \
  2. chinese-gb2312:-simsun-simsun-medium-r-normal--18-*-*-*-p-0-gb2312*-0
复制代码

然后在 Emacs 里同时按住 Shift 键和鼠标左键,就可以选择合适的 Fontset 来显示文本了。如图所示。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2005-8-12 22:01:38 | 显示全部楼层
请先用 xlsfonts | grep  simsun 看看



xlsfont 是一个可用 X 字体查看工具
回复 支持 反对

使用道具 举报

发表于 2005-8-12 22:03:36 | 显示全部楼层
herberteuler:
ustu 里的 emacs22-gtk 似乎就是使用 fontconfig 的
不需要 x 字体
Gtk2 里有的字体就可以用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-12 22:22:49 | 显示全部楼层
在我看来,xlsfonts 和 xfontsel 的区别大致是一个是字符界面的而另一个是图形界面的吧。这意味着一个程序并不比另一个显示出更多的字体。只是,xlsfonts 的结果更容易取到,而 xfontsel 则可以比较方便地预览一个字体。

无论是否是编码的问题,至少第 3 贴里的方法已经可以用了。在我这里,默认的中文字体太小而且不清晰。我自己的 Fontset 倒是好一些,不过总是要用鼠标去点那么一下。然而,我仔细查找了 Emacs 的 Info 页,没有找到如何修改默认 Fontset 的方法。或许是我的注意力不够吧。

我尝试过在 ~/.emacs 里使用 setq 修改 standard-fontset-spec 的方法:
  1. (setq standard-fontset-spec "-*-courier-medium-r-normal-*-18-*-*-*-*-*-xgp-18, \
  2. chinese-gb2312:-simsun-simsun-medium-r-normal--18-*-*-*-p-0-gb2312*-0")
复制代码

不过仍然没有效果。

我相信这是可以做到的,但正确的方法是什么呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-13 11:22:17 | 显示全部楼层
暂时找到一个解决方法:
  1. (set-frame-font "-*-courier-medium-r-normal-*-18-*-*-*-*-*-xgp-18")
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-8-15 11:27:58 | 显示全部楼层
Post by jhuangjiahua
herberteuler:
ustu 里的 emacs22-gtk 似乎就是使用 fontconfig 的
不需要 x 字体
Gtk2 里有的字体就可以用


华华确定是fontconfig字体么?我自己编译emacs23的时候,只看到gtk的选项,没有xft什么的。编好了之后也没发现如何制定字体引擎的地方。看起来似乎还是X字体
回复 支持 反对

使用道具 举报

发表于 2005-8-15 13:51:57 | 显示全部楼层
这样可以解决字体不清楚的问题

emacs -fn "-simsun-simsun-medium-r-normal--12-120-*-*-p-0-iso10646-1"

不过可能需要用emacs23,不知道emacs22是否支持
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-15 13:55:42 | 显示全部楼层
Emacs 21 里就可以了。不过,西方文字还是使用西方文字专有的字体来得比较好看。所以,最好使用 Fontset 来使中文字体只用于中文。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表