主頁 > 知識庫 > 什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是lo

什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是lo

熱門標簽:咸寧智能營銷電話機器人怎么樣 高德地圖標注樓房入駐 江蘇保險智能外呼系統(tǒng)產(chǎn)品介紹 南昌四川外呼系統(tǒng) 西寧人工外呼系統(tǒng)線路商 北京外呼防封系統(tǒng)是什么 諾基亞地圖標注app 個人電銷機器人 成都哪里有地圖標注公司
什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是locale?
說說EasyWine的亂碼問題
EW是個好東西,有了它,wine一下子就從雞肋變成雞大腿了,好多軟件都可以順利安裝,而不需要去研究wine的配置了。當然,暫時還是雞大腿,希望以后能吃出雞翅的味道:-)
不過呢,好多朋友下載了EW之后,確實乘興而來,敗興而歸,為啥?看不懂,中文全都是亂碼。若說是老外寫的程序,不支持中文,亂碼也還情有可原,可是EW分明是咱們的民族軟件,為啥會亂碼呢?而且,這個亂碼還特別的難纏,任你費九牛二虎之力,它還是我行我素。怎么辦呢?
先來說說亂碼產(chǎn)生的原因。要說亂碼,這個話就長了,咱們先看看linux下面的字體解決方案。
            EasyWine          LumaQQ               
            Xdialog           firefox-1.0                                 kde
            xmms              zenity              firefox-1.5             qterm
             |                  |                      |                   |     
             |                  |                      |                   |
             |                  |                      |                   |
            gtk+-1.0         gtk+-2.0               gtk+-2.8               qt
             |                  |                      |                   |
             |                  |                      |                   |
             |                  |                      |                   |
             |                pango                   cario                |
             |                  |                      |                   |
             |                  |                      |                   |            
             |                  |                      |                   |
             |                freetype               freetype            freetype
            Xlib              fontconfig             fontconfig          libXft
            freetype          libXft                   |                   |
             |                  |                      |                   |            
             |                  |                      |                   |           
             |__________________|______________________|___________________|
                                           |
                                           |
                                         glibc
上面這個圖簡單的說明了一下Xwindow下面最常見的幾種自己解決方案。
最早最原始的方法就是調(diào)用Xlib里面的字體函數(shù)顯示文字,很多早期的應用程序都使用這種方式,比如xterm什么的,當然也是最難用的,效果不佳,效率也差。gtk+ 1.0版本就是用xlib來顯示文字,所以所有基于gtk+1.0的程序也就跟著使用x核心字體了。X核心字體,顧名思義,就是x內(nèi)建的文字顯示功能。Xwindow啟動的時候,從配置文件得到字體所在路徑,從字體目錄里面的fonts.dir fonts.scale encodings.dir等文件得到具體的字體信息,通過freetype type1等字體模塊來讀取字體文件。這種方式使用起來不是很靈活,而且字體顯示效率也不高,已經(jīng)逐漸被淘汰了。
現(xiàn)在最常見字體系統(tǒng)就是libxft2+fontconfig+freetype的組合了,libxft2是字體繪制引擎,負責文字顯示;fontconfig負責字體的選擇控制;freetype用來讀取字體文件。cario是gtk+2.8最新引進來的圖形引擎,有自己的文字繪制引擎。這里面,對于配置系統(tǒng)字體最重要的就是fontconfig了,fontconfig負責管理系統(tǒng)內(nèi)所有的字體文件,給他們建立fonts.cache,并根據(jù)fonts.conf的配置選取合適的字體進行顯示。
最后還有glibc,glibc是什么?即使c的運行庫,這個是出了內(nèi)核意外所有程序都要用到的。glibc跟字體有什么關系?沒關系!不過跟locale有關系。什么是locale? 我也不知道,方正就是一大堆的東西,告訴你文字用什么編碼啊,時間用什么格式等等,基本上就相當于一個語言環(huán)境。在程序里面,一段文字,可能是用unicode存儲的,但是我們的運行環(huán)境是gb2312,怎么把unicode的文字變成gb2312編碼的文字,這個就要靠glibc了。所以想要正常使用中文,還要保證glibc也支持中文。
好了,關于字體系統(tǒng)就說這么多了。fontconfig是很先進的解決方案,非常靈活,配置也很方便,網(wǎng)上資料也比較多。通常大家的中文解決方案,都是基于fontconfig的,這對于絕大多數(shù)應用來說,都足夠了,可以獲得非常完美中文顯示效果。事情壞就壞在還有很多老的程序不支持fontconfig,尤其是很多gtk+1.0的應用,比如xmms這種常用的程序。
長話短說了,上面廢話太多,還是說說具體怎么配置吧。
首先,glibc。運行l(wèi)ocale -a,看看你的系統(tǒng)支持zh_CN gb2312 utf-8什么的不。支持 ---> ok。 不支持 ---》 想辦法吧(呵呵,比較罕見的)。
然后就要看看我們的字體文件都在哪里了。通常,字體文件會放在/usr/share/fonts或者/usr/X11R6/lib/fonts里面。里面還有很多目錄,存放了各種字體文件。假設我們從windows下面考了個simsun.ttc放在/usr/share/fonts/local里面。
   vim /etc/X11/xorg.conf
看看FontPath對不對,記住把/usr/share/fonts/local加進去,還有module里面不要忘記加載freetype模塊。
Ok, 各位看官注意了,下面一步很關鍵,而且很少有人注意到,很多亂碼無法解決都是它引起的。
   cd /usr/share/fonts/encodings
   mkfontscale -e . -e large
   mkfontdir -e . -e large
   cd ..
   ln -snf /encodings
干什么?生成encodings.dir這個字體編碼文件。xlib需要根據(jù)這個文件里面的配置來正確解讀不同的文字編碼。如果這個xlib找不到這個配置,就會無法正確顯示中文了,比如亂碼,部分亂碼什么的。
好了,現(xiàn)在重新啟動X ---為了使這個encodings.dir生效,很重要的。
   cd /usr/share/fonts/local
   mkfontscale
   mkfontdir
再次重啟X, 這樣simsun就可以正常使用了。運行xfontsel,因該可以看到simsun了。
現(xiàn)在配置gtkrc來控制gtk+按照我們的意愿選擇字體,比如英文用verdana, 中文用simsun。(verdana哪里來?windows下面找去)
/etc/gtk/這個目錄里面有很多gtkrc.xxx,分別控制不同locale時的字體方案。我們主要關心gtkrc.zh_CN和gtkrc.utf-8這兩個文件,分別對應zh_CN和UTF-8這兩個locale。比如zh_CN.GB2312就使用gtkrc.zh_CN,en_US.UTF-8就使用gtkrc.utf-8。How about zh_CN.UTF-8?呵呵,這個用的是gtkrc.utf-8。
/etc/gtk/gtkrc.zh_CN
style "gtk-default-zh_CN" {
       fontset = "-*-verdana-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
                  -*-simsun-medium-r-normal--12-*-*-*-*-*-iso10646-1,\
                  *-r-*"
}
class "GtkWidget" style "gtk-default-zh_CN"
意思就是當系統(tǒng)語言是中文,顯示文字時,首先找verdana這個字體,如果能顯示,ok;如果不能,繼續(xù),看看simsun行不,行,ok;還不行,隨便找啦,找到能用就ok啦。
可以把/etc/gtk/gtkrc.utf-8做成gtkrc.zh_CN的一個鏈接。
    ln -snf /etc/gtk/gtkrc.zh_CN /etc/gtk/gtkrc.utf-8
Ok. Now, type
    EasyWine
看看還是不是亂碼了?還亂碼?跟我說,呵呵,咱們繼續(xù)研究。
怎么看當前的locale?
         locale
就可以了。
怎么設置locale?修改~/.profile,里面加上
  export LANG=zh_CN.UTF-8
  export LC_ALL=zh_CN.UTF-8
夜深了,明早還要上班,不說了,以后有空再說吧。
BTW: Deman還是趁早換到zenity吧,不要用Xdialog了,這樣就沒這么多亂碼問題了。呵呵,不過俺這篇文章也沒價值了
--------------------------------------------------------------------------------
作者: deman    時間: 2006-1-3 10:40
好文章,不過zenity在kde下很有問題啊.我在kde下都編譯不成功啊.n次都失敗.
--------------------------------------------------------------------------------
作者: peaker    時間: 2006-1-21 22:32
樓主的方法對于2.65版可能行不通了:
我原來用2.6 beta版的時候,用這種方法在debian中,UTF8下可以很好地顯示窗口中的文字,可是桌面菜單和程序菜單中全是亂碼,沒辦法只好自己改。
可是升級到2.65版后,原來的方法都不行了,用這些方法都是亂碼。于是我把\usr\bin下的easywine(可執(zhí)行文件)用kwrite打開,另存為gbk編碼的,覆蓋原文件。 然后運行easywine。窗口可以正常顯示漢字了(暈,utf8下必須使用非utf8的編碼才可以正常顯示?), 但是桌面菜單和程序菜單還是亂碼。
easywine改成了gbk編碼是不是影響了桌面菜單和程序菜單的編碼???
--------------------------------------------------------------------------------
作者: deman    時間: 2006-1-21 22:42
http://www.easywine.org/bbs/view ... extra=page%3D1
這里答了你問題,另外問問題的話,最好新開一貼
--------------------------------------------------------------------------------
作者: pinuocao    時間: 2006-4-28 16:06
我運行了vim /etc/X11/xorg.conf
卻沒有FontPath顯示
--------------------------------------------------------------------------------
作者: deman    時間: 2006-4-28 17:11
你的是什么系統(tǒng)?
--------------------------------------------------------------------------------
作者: pinuocao    時間: 2006-4-28 17:51
我裝的是 red hat linux9.0的
--------------------------------------------------------------------------------
作者: deman    時間: 2006-4-28 17:57
LOCALE 是什么?
--------------------------------------------------------------------------------
作者: pinuocao    時間: 2006-4-28 18:19
GB18030
--------------------------------------------------------------------------------
作者: pinuocao    時間: 2006-4-28 18:34
utf8
--------------------------------------------------------------------------------
作者: deman    時間: 2006-4-28 18:53
那嘗試使用非utf8

標簽:長春 綏化 濮陽 長春 電信 清遠 金華 中衛(wèi)

巨人網(wǎng)絡通訊聲明:本文標題《什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是lo》,本文關鍵詞  什么,是,glibc,是什么,freetype,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是lo》相關的同類信息!
  • 本頁收集關于什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是lo的相關信息資訊供網(wǎng)民參考!
  • 推薦文章