<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    狼愛上貍

    我胡漢三又回來了

    [Ubuntu]明明白白安裝中文字體

    授權方式:署名,非商業用途,保持一致,轉載時請務必以超鏈接(http://www.fwolf.com/blog/post/170)的形式標明文章原始出處和作者信息及本聲明。

    Ubuntu 6.06 dapper對中文的支持應該說是一向不錯的,包括現在默認安裝就包含了scim輸入法。然而,一般安裝的ubuntu雖然能夠顯示、輸入中文了,但總覺 得所顯示的中文像歪瓜裂棗,很是別扭。這是很無奈的,也不是linux的錯,這是因為現在幾乎沒有免費的中文字體庫來給我們用,大家平時使用習慣了的 winxp里面的宋體、還有方正排版系統里面的仿宋體、公文中的方正小標宋等等,這些字體都是商業公司開發出來用在自己的產品中的,是有版權的,所以 linux不能拿過來就用。如果你還沒有聽說過字體有版權的話,上網搜索一下“胡萬進” 吧,這位老兄就是當年在微軟從事字體制作的一位員工,他所制作的字體的版權就是歸微軟公司所有。我們國家雖然對IT產業非常關注,但是更關注 windows,對開源社區和自由軟件的支持幾乎沒有,直到今天也沒有投資開發出一套免費的字體供大家使用。不過幸好有懷著共產主義信念的好同志,為我們 提供了免費的替代方案,現在我們可以使用圓體美化,還有開源的文泉驛域名2)可以用。

    本文則是參考如何使用xp帶的字體來進行中文美化?一文,實踐中文字體的安裝,并對ubuntu的字體體系更加深入的了解一下,這樣以后再安裝任何字體就都不怕了。

    一、準備字體文件

    我一直認為,如果我擁有了一套windows xp的使用權(通過oem方式),那么我就同時擁有了對這份windows產品的只用于我個人的任意使用權,這里面包括了對其中的字體的使用權。所以,本 文中將winxp的字體拷貝到linux下使用的做法,應該是沒有侵權的。

    windows的字體一般存放在c:\windows\fonts目錄下,我拷貝到linux下的字體有:

    simfang.ttf 仿宋體
    simhei.ttf 黑體
    simkai.ttf 楷體
    simsun.ttf 宋體和新宋體,原文件名simsun.ttc
    tahoma.ttf tahoma字體
    tahomabd.ttf tahoma字體的粗體形式
    verdana.ttf verdana字體
    verdanab.ttf verdana字體的粗體形式
    verdanai.ttf verdana字體的斜體形式
    verdanaz.ttf verdana字體的粗體+斜體形式

    拷貝過來的字體文件放在了/home/fwolf/tools/fonts目錄下。

    二、將字體加入到linux的可使用字體中

    首先把字體文件鏈接到存放字體的目錄中

    cd /usr/share/fonts
    ln -s /home/fwolf/tools/fonts xpfonts
    cd xpfonts
    mkfontscale
    mkfontdir

    這樣作和把字體拷貝到/usr/share/fonts的一個目錄下的效果是一樣的。后面的兩個mkfont命令是生成xpfonts目錄下所包含的字體的索引信息。然后運行fc-cache命令更新字體緩存:

    fc-cache

    現在,應該說linux就可以使用這些新裝上的中文字體了,看一下openoffic里的截圖吧:

    linux中OpenOffice下的幾種winxp字體

    其中仿宋體的字體名是FangSong_GB2312,黑體是SimHei,楷體是KaiTi_GB2312,宋體是SimSun,字體名暫時都不是中文的。

    三、修改/etc/fonts/fonts.conf的字體渲染順序

    讓我們一邊修改,一邊分析fonts.conf這個文件的內容吧,注意部分注釋(<–和–>之間的內容)和無關緊要或者重復的內容我將跳過不再解釋。

    <?xml version=”1.0″?> 聲明這個文件是一個xml文檔
    <!DOCTYPE fontconfig SYSTEM “fonts.dtd”> xml文檔的格式聲明(dtd = document type define)
    <!– /etc/fonts/fonts.conf file to configure system font access –>
    <fontconfig> xml文件需要的根節點
    <!–
    DO NOT EDIT THIS FILE.
    IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.
    LOCAL CHANGES BELONG IN ‘local.conf’.

    文檔中提示不要手工修改fonts.conf,個人的設定可以寫入local.conf文件,并且會自動被fonts.conf讀入,不過我現在還不知道怎么創建這個文件,等知道了再公布出來吧,現在先拿fonts.conf開刀,反正預先已經作了備份。

    <dir>/usr/share/fonts</dir>
    <dir>/usr/X11R6/lib/X11/fonts/Type1</dir> <dir>/usr/local/share/fonts</dir>
    <dir>~/.fonts</dir>

    所有字體文件存放的位置,其中第一個就是我們剛才放字體文件的目錄/usr/share/fonts。

    <!–
    Accept deprecated ‘mono’ alias, replacing it with ‘monospace’
    –>
    <match target=”pattern”>
    <test qual=”any” name=”family”>
    <string>mono</string>
    </test>
    <edit name=”family” mode=”assign”>
    <string>monospace</string>
    </edit>
    </match>

    將本文件中的別名mono替換成全稱monospace,這是xml的一個自動替換聲明,使用別名的目的應該是為了簡化書寫或者維持對舊版本的兼容。后面還有幾個替換就不再一一介紹了。

    <!–
    Serif faces
    –> <alias>
    <family>Bitstream Vera Serif</family>
    <family>Vera Sans YuanTi</family> <!– added by lifesinger–>
    <family>Times</family>
    <family>Times New Roman</family>

    Serif字型將要使用的字體順序。當要顯示Serif字型的內容時,就從下面這個列表中選擇字體,匹配順序是自上而下。可以看到已經安裝的圓體美 化再這里作了修改。如果我們想把宋體作為首選,就在Bitstream Vera Serif字體前面比葫蘆畫瓢加上一行就可以了。

    至于什么是Serif字型,以及Sans-serif字型,可以看一下細說字體 Sans Serif 與 Serifserif vs sans serif這兩篇文章,說明的很詳細。我覺得把他們叫做字型或者字族,相對于字體來說,更貼切一些。

    下面的Sans-serif faces、Monospace faces段中處理方式相同。

    <!–
    If the font still has no generic name, add sans-serif
    –>
    <match target=”pattern”>

    又是三個替換,大概意思是如果上面的字體匹配還不成功,就嘗試使用sans-serif、serif、monospace的默認字體來替換,最后如果還替換不成功,強制使用sans-serif字體。(不知道這么理解是否正確)

    <!–
    Some Asian fonts misadvertise themselves as monospaced when
    in fact they are dual-spaced (half and full). This makes
    FreeType very confused as it forces all widths to match.
    Undo this magic by disabling the width forcing code –>
    <match target=”font”>
    <test name=”family”><string>GulimChe</string></test>
    <edit name=”globaladvance”><bool>false</bool></edit>
    </match>

    一些亞洲字體實際使用了等寬字體,但是卻沒有明確的聲明,這段就是為了兼容這個進行的處理,保持不變即可。

    <!–
    The Bitstream Vera fonts have GASP entries suggesting that hinting be
    disabled below 8 ppem, but FreeType ignores those, preferring to use
    the data found in the instructed hints. The initial Vera release
    didn’t include the right instructions in the ‘prep’ table. Fix this
    by disabling hinting manually at smaller sizes (< 8ppem)
    –>

    修正Bitstream Vera字體在小于8點的時候的顯示問題,保持不變即可。

    <!–
    Load local system customization file

    <include ignore_missing=”yes”>local.conf</include>
    –>

    加載配置文件local.conf,下面的~/.fonts.conf也是一樣。

    <!–
    Provide required aliases for standard names
    –>
    <alias>
    <family>serif</family>
    <prefer>
    <family>Bitstream Vera Serif</family>

    又是三個系列字型的字體別名,不知道這個和前面的類似設置是怎么個關系,大概前面設置的是備選字體,這里是推薦字體?不過照例把我們的SimSun加進去。

    <!–
    Artificial oblique for fonts without an italic or oblique version
    –>

    對沒有斜體字的字體的處理方法,保持不變即可。

    <!–
    Synthetic emboldening for fonts that do not have bold face available
    –>

    沒有黑體字的字體的處理方法,保持不變即可。

    <!–
    These are the default Unicode chars that are expected to be blank
    in fonts. All other blank chars are assumed to be broken and
    won’t appear in the resulting charsets
    –>

    Unicode編碼中在所有字體中都應該顯示為空的編碼表,保持不變即可。

    <!– Rescan configuration every 30 seconds when FcFontSetList is called
    –>

    每隔30秒鐘就重新檢查一下本設置文件(看設置改變了沒有),保持不變即可。

    至此,標準的配置文件就結束了,我們需要作的主要修改也都完成了。重啟X應該就能看到宋體中文的界面了。不過在fonts.conf還可以作一些其他的字體處理設置,這個在圓體美化所帶的那個fonts.conf中有例子,比如:


    <!– Win XP 效果 –>
    <match target=”font”>
    <test name=”family”><string>Vera Sans YuanTi</string></test>
    <edit name=”globaladvance”><bool>false</bool></edit>
    </match>

    這就是指明在對Vera Sans YuanTi字體的處理中,globaladvance參數設置為false,其他的設置也多是這種語法,具體的含義和效果我就不知道了:)。

    四、中文字體顯示優化

    按照上面的方法配置好以后,宋體能夠顯示了,但是字體有些發虛,那么一種簡單的方法就是在 系統->首選項->字體(system->preference->font) 中選擇單色(Monochrome),但是這樣所有的字體包括英文字體都會有一點點的小鋸齒,那么替代的方法就是通過修改fonts.conf,去掉宋體 的反鋸齒,并且用黑體替代宋體的粗體。在fonts.conf中添加:

    <!– 用黑體替代宋體的粗體 –>
    <match target=”pattern”>
    <test name=”family”><string>SimSun</string></test>
    <test name=”weight” compare=”more_eq”><const>bold</const></test>
    <edit name=”family” mode=”assign”><string>SimHei</string></edit>
    </match>
    <!– 關閉宋體的AA –>
    <match target=”font”>
    <test qual=”any” name=”family”><string>SimSun</string></test>
    <edit name=”antialias” mode=”assign”><bool>false</bool></edit>
    </match>
    <!– 解決不能識別中文字體名稱的問題 –>
    <match target=”pattern”>
    <test name=”family”><string>宋體</string></test>
    <edit name=”family” mode=”assign”><string>SimSun</string></edit>
    </match>
    <match target=”pattern”>
    <test name=”family”><string>新宋體</string></test>
    <edit name=”family” mode=”assign”><string>SimSun</string></edit>
    </match>
    <match target=”pattern”>
    <test name=”family”><string>仿宋_GB2312</string></test>
    <edit name=”family” mode=”assign”><string>FangSong_GB2312</string></edit>
    </match>
    <match target=”pattern”>
    <test name=”family”><string>楷體_GB2312</string></test>
    <edit name=”family” mode=”assign”><string>KaiTi_GB2312</string></edit>
    </match>
    <match target=”pattern”>
    <test name=”family”><string>黑體</string></test>
    <edit name=”family” mode=”assign”><string>SimHei</string></edit>
    </match>

    為什么要用黑體替代宋體的粗體呢,因為宋體字體其實是不含粗體的,windows下也是,只是windows采用了更高級一些的方法來間接實現了宋體的粗體而已。

    小結

    以上就是簡單的中文字體設置方法,和我對fonts.conf的簡單理解,希望能對大家有用,也希望過路大俠指正錯誤和不足之處。另外還可以參考一下一個詳細的漢化美化方案(freetype/fontconfig/xft),分析得比我深入多了。



    trackback:http://www.fwolf.com/blog/post/170


    posted on 2007-07-19 18:12 狼愛上貍 閱讀(852) 評論(0)  編輯  收藏 所屬分類: LINUX

    主站蜘蛛池模板: 亚洲一区二区三区国产精华液| 亚洲精品123区在线观看| 亚洲综合激情九月婷婷| 亚洲人精品亚洲人成在线| 亚洲av永久无码精品秋霞电影秋 | 亚洲精品无码专区2| 亚洲欧洲精品无码AV| 亚洲精品视频在线免费| 亚洲精品无码av片| GOGOGO免费观看国语| 最近最新高清免费中文字幕| 久久久久国产精品免费免费搜索| 免费在线观看亚洲| 亚洲av无码成人黄网站在线观看| 亚洲人成片在线观看| 黄色免费在线观看网址| 亚洲a一级免费视频| 成人免费视频观看无遮挡| 亚洲人成影院在线观看 | 日韩亚洲人成在线综合日本| 亚洲毛片一级带毛片基地| 蜜臀亚洲AV无码精品国产午夜.| 你好老叔电影观看免费| 久久久久国色AV免费观看性色 | 国产亚洲美女精品久久久2020| 亚洲精品在线免费观看视频| 国产午夜亚洲精品不卡| 男人的天堂网免费网站| 日本特黄a级高清免费大片| 亚洲AV综合色区无码一区| 亚洲国产精品ⅴa在线观看| 女同免费毛片在线播放| 精品无码国产污污污免费| 亚洲国产精品SSS在线观看AV| 亚洲国产AV一区二区三区四区| 久久久久免费精品国产| 日本免费中文字幕在线看| 久久亚洲精品中文字幕| 窝窝影视午夜看片免费| 9久9久女女免费精品视频在线观看| 久久亚洲中文字幕精品一区|