歡迎您光臨本站 註冊首頁

SuSE10使用手記Emacs顯示中文

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

  由於 Emacs 是個支持多語言的程序,它支持很多種字符集,而一種字體一般只覆蓋一個或幾個字符集,因此只用一種字體是無法顯示 emacs 支持的所有文字的。

  在emacs中需要設置 fontset,也就是多種字體的集合,或者叫做字體集。Each fontset has a name, like a font. The available X fonts are defined by the X server. Fontset有一個名字,用來標識這個fontset的名字,後邊是「字符集:字體」的形式給出一個鏈表。

  Emacs本身自帶著兩個fontset,分別是default和standard,當然你還是可以自己定義自己的fontset,elisp函數是create-fontset-from-fontset-spec.

  所有的fontset合成為fontsets。fontsets, however, are defined within Emacs itself. Once you have defined a fontset, you can use it within Emacs by specifying its name, anywhere that you could use a single font. Of course, Emacs fontsets can use only the fonts that the X server supports; if certain characters appear on the screen as hollow boxes, this means that the fontset in use for them has no font for those characters.(http://linux.about.com/od/emacs_doc/a/emacsdoc173.htm)

  另外在Emacs下查看fontset的函數是describe-fontset。Emacs默認使用default的,可以看到chinese-gb2312使用的字體是-gb2312-結尾的一個字體。然後使用xlsfonts這個工具查看所有系統可用的字體,並沒有發現這種字體存在,所以emacs只能使用a empty box來代替。

  check emacs internationalization HELLO file

  C-h h

  Emacs Wiki有一節叫做display non Ascii characters,它的指導:

  When the display for some characters does not work, you will see little empty boxes instead of

  the glyphs you would like to see.

  One way to debug this is to check whether you have the fonts necessary for this character set. If

  you do, then you will have to check wether your fontset has the correct mapping from charset to

  font (see FontSets).

  check character set的方法:

  把游標放在empty box上,然後按C-u C-x =,彈出的窗口詳細敘述了這個字元的Charater Set信息。我確認我的字元是chinese-gb2312.

  在font一欄中為-- none --,說明雖然emacs能夠識別這是個中國漢字(Han),但是無法找到對應的顯示他的字體(font)。

  其實我一直都使用的XShell來登陸SuSE,因為我的機器很慢,KDE對我來說已經相當昂貴了,我用這非常的卡。習慣於在shell下工作,因此我這能陪只好終端(Terminal),然後遠程登錄來工作。

  折騰了很久,一直都以為我的SuSE不具備gb2312的字體.但是絕望的我使用Vmware進入SuSE的kde的時候,驚奇的發現情況不一樣了。emacs可以顯示中文啊. 在使用xlsfonts | grep 2312來查看,有很多gb2312的字體可以使用.原來不能顯示字體的問題,都不是SuSE帶來的,而是XShell帶來的。

  不過一下午的google,也沒有白費.至少我明白了Emacs和X11顯示字體的基本工作原理.

  X11 fonts有兩種來源,一個是X11 core font,這個是比較老的字體系統,現在存在就是為了兼容非常老的程序,Emacs就這種程序之一。另外一個新系統就是font server,就是說使用一個伺服器來提供字體服務,需要的時候,程序能夠訪問到這些字體。這個服務在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配置了X11 forwarding,那麼照樣可以啟動Emacs, firefox, display這樣的X程序。而這個Xmanager就是一個windows下的X實現。linux下的那個叫XFree86。大概就是這個情況吧。具體到X,我也懂得不多了。

  既然發現是Xmanager的缺少中文支持,那麼就找它來解決問題吧。在windows右下角的XManager圖標點擊右鍵,然後選擇properties->font,發現確實缺少Chinese字體的支持,只有Korean.我試圖把windows下的Fonts 文件夾加到這個目錄下,結果不能成功。翻閱Xmanager的幫助,managing fonts -> To install additional font package指導你到NetSarang的公司主頁去下載補充的字體。下了個Chinese.exe的文件回來,安裝了之後,再在XShell輸入:xlsfonts | grep 2312就能夠發現很多gb2312的字體出現了。這樣子的話Emacs只要設置好了Language Environment,就可以正常的現實中文了。

  今天只是初步解決了Emacs顯示中文,但是C+\也可以輸入中文了。看來這都是language environment的一攬子問題。未完成的問題就是gbk和unicode的支持了。另外是如何外掛輸入法。

[火星人 ] SuSE10使用手記Emacs顯示中文已經有546次圍觀

http://coctec.com/docs/linux/show-post-193221.html