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

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

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

1、準備字體文件chrome

我一直認爲,若是我擁有了一套windows xp的使用權(經過oem方式),那麼我就同時擁有了對這份windows產品的只用於我我的的任意使用權,這裏麪包括了對其中的字體的使用權。因此,本 文中將winxp的字體拷貝到linux下使用的作法,應該是沒有侵權的。ubuntu

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

 

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目錄下。緩存

2、將字體加入到linux的可以使用字體中bash

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

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

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

$ fc-cache

如今,應該說linux就可使用這些新裝上的中文字體了,看一下openoffic裏的截圖吧:post

linux中OpenOffice下的幾種winxp字體

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

3、修改/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,其餘的設置也可能是這種語法,具體的含義和效果我就不知道了:)。

4、中文字體顯示優化

按照上面的方法配置好之後,宋體可以顯示了,可是字體有些發虛,那麼一種簡單的方法就是在 系統->首選項->字體(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),分析得比我深刻多了。

相關文章
相關標籤/搜索