濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是lo

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

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

標(biāo)簽:長(zhǎng)春 綏化 濮陽(yáng) 長(zhǎng)春 電信 清遠(yuǎn) 金華 中衛(wèi)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是lo》,本文關(guān)鍵詞  什么,是,glibc,是什么,freetype,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是lo》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于什么是glibc?glibc是什么?什么是freetype?freetype是什么?什么是?Xlib是什么?什么是lo的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    闽清县| 常山县| 江西省| 商水县| 宁化县| 荆州市| 临朐县| 乌审旗| 扎兰屯市| 玉龙| 鄢陵县| 赤峰市| 新晃| 德州市| 灌南县| 兴业县| 陵川县| 富平县| 阳谷县| 太原市| 长宁区| 平利县| 惠州市| 徐闻县| 龙泉市| 永丰县| 海伦市| 诸城市| 广德县| 东山县| 尚义县| 特克斯县| 宁陕县| 盐津县| 万年县| 青田县| 伽师县| 安阳县| 奉节县| 普洱| 大丰市|