由于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显示中文
阅读(1134) | 评论(0) | 转发(0) |