Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1367414
  • 博文数量: 828
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5030
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-29 13:29
文章分类

全部博文(828)

文章存档

2011年(1)

2008年(827)

我的朋友

分类: LINUX

2008-08-29 13:46:00

 
 由于Emacs是个支持多语言的程序,它支持很多种字符集,而一种字体一般只覆盖一个或几个字符集,因此只用一种字体是无法显示emacs支持的所有文字的。

  在emacs中需要设置fontset,也就是多种字体的集合,或者叫做字体集。Eachfontsethasaname,likeafont.TheavailableXfontsaredefinedbytheXserver.Fontset有一个名字,用来标识这个fontset的名字,后边是“字符集:字体”的形式给出一个链表。

  Emacs本身自带着两个fontset,分别是default和standard,当然你还是可以自己定义自己的fontset,elisp函数是create-fontset-from-fontset-spec.

  所有的fontset合成为fontsets。fontsets,however,aredefinedwithinEmacsitself.Onceyouhavedefinedafontset,youcanuseitwithinEmacsbyspecifyingitsname,anywherethatyoucoulduseasinglefont.Ofcourse,EmacsfontsetscanuseonlythefontsthattheXserversupports;ifcertaincharactersappearonthescreenashollowboxes,thismeansthatthefontsetinuseforthemhasnofontforthosecharacters.()

  另外在Emacs下查看fontset的函数是describe-fontset。Emacs默认使用default的,可以看到chinese-gb2312使用的字体是-gb2312-结尾的一个字体。然后使用xlsfonts这个工具查看所有系统可用的字体,并没有发现这种字体存在,所以emacs只能使用aemptybox来代替。

  checkemacsinternationalizationHELLOfile

  C-hh

  EmacsWiki有一节叫做displaynonAsciicharacters,它的指导:

  Whenthedisplayforsomecharactersdoesnotwork,youwillseelittleemptyboxesinsteadof

  theglyphsyouwouldliketosee.

  Onewaytodebugthisistocheckwhetheryouhavethefontsnecessaryforthischaracterset.If

  youdo,thenyouwillhavetocheckwetheryourfontsethasthecorrectmappingfromcharsetto

  font(seeFontSets).

  checkcharacterset的方法:

  把光标放在emptybox上,然后按C-uC-x=,弹出的窗口详细叙述了这个字符的CharaterSet信息。我确认我的字符是chinese-gb2312.

  在font一栏中为--none--,说明虽然emacs能够识别这是个中国汉字(Han),但是无法找到对应的显示他的字体(font)。

  其实我一直都使用的XShell来登陆SuSE,因为我的机器很慢,KDE对我来说已经相当昂贵了,我用这非常的卡。习惯于在shell下工作,因此我这能陪只好终端(Terminal),然后远程登录来工作。

  折腾了很久,一直都以为我的SuSE不具备gb2312的字体.但是绝望的我使用Vmware进入SuSE的kde的时候,惊奇的发现情况不一样了。emacs可以显示中文啊.在使用xlsfonts|grep2312来查看,有很多gb2312的字体可以使用.原来不能显示字体的问题,都不是SuSE带来的,而是XShell带来的。

  不过一下午的google,也没有白费.至少我明白了Emacs和X11显示字体的基本工作原理.

  X11fonts有两种来源,一个是X11corefont,这个是比较老的字体系统,现在存在就是为了兼容非常老的程序,Emacs就这种程序之一。另外一个新系统就是fontserver,就是说使用一个服务器来提供字体服务,需要的时候,程序能够访问到这些字体。这个服务在linux下叫做xfs。linux的X11的xfs的配置文件应该就是/etc/X11/xorg.conf,我一下午在这个文件上作文章。但是我通过Xshell检测效果,而不是跑到SuSE里去,缘木求鱼。

  好了,linux下有X,当你启动KDE的时候就启动了这个linux下的X.但是X可不是linux下才有。windows下也有一个。就是和Xshell一起配合的Xmanager。如果你不用Xshell,可以使用putty,但是只要你启动了Xmanager,并且putty配置了X11forwarding,那么照样可以启动Emacs,firefox,display这样的X程序。而这个Xmanager就是一个windows下的X实现。linux下的那个叫XFree86。大概就是这个情况吧。具体到X,我也懂得不多了。

  既然发现是Xmanager的缺少中文支持,那么就找它来解决问题吧。在windows右下角的XManager图标点击右键,然后选择properties->font,发现确实缺少Chinese字体的支持,只有Korean.我试图把windows下的Fonts文件夹加到这个目录下,结果不能成功。翻阅Xmanager的帮助,managingfonts->Toinstalladditionalfontpackage指导你到NetSarang的公司主页去下载补充的字体。下了个Chinese.exe的文件回来,安装了之后,再在XShell输入:xlsfonts|grep2312就能够发现很多gb2312的字体出现了。这样子的话Emacs只要设置好了LanguageEnvironment,就可以正常的现实中文了。

  今天只是初步解决了Emacs显示中文,但是C \也可以输入中文了。看来这都是languageenvironment的一揽子问题。未完成的问题就是gbk和unicode的支持了。另外是如何外挂输入法。

SuSE10 Emacs显示中文SuSE10 Emacs显示中文SuSE10 Emacs显示中文SuSE10 Emacs显示中文SuSE10 Emacs显示中文SuSE10 Emacs显示中文SuSE10 Emacs显示中文SuSE10 Emacs显示中文SuSE10 Emacs显示中文SuSE10 Emacs显示中文
阅读(1109) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~