ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          我們要理解X的字體引擎. X中支持Truetype字體(一種可放縮字體) 的主要有四種引擎. freetype, xtt, xfs和Xft.

          首先, 我們要理解X的字體引擎. X中支持Truetype字體(一種可放縮字體) 的主要有四種引擎. freetype, xtt, xfs和Xft.

          其中freetype 和 xtt 是 X 的內部模塊. 使用的都是freetype1渲染引擎.

          Xfs 和xft 是外部服務程序. xfs 是系統級的字體服務程序, 也可以作為X的內部模塊, 使用的是X 內部的freetype2. Xft 和其他類庫一樣, 只有被調用的時候才被加載. 其中只有xft才有antialias 支持.

          這 里有必要講講freetype. Freetype 是開源字體渲染引擎, 并不只為X設計. 它的功能就是讀取Truetype字體信息, 如大小, 分辨率, 編碼等, 然后渲染成所需的位圖數據輸出. Freetype 現在的版本是 2.x, 與1.0 相比, 最大的差別就是加入了抗鋸齒功能.

          有這么多引擎,到底要用哪個好? 其實我們目前為止, 支持中文最好的還是xtt. 因為小字體的時候, 用函數描述法算出來的中文字體效果不能讓人滿意, 所以很多中文字體公司就在Truetype字體里嵌入了位圖字體. 這些位圖字體需要用特殊的方式讀出來, 所有的引擎中就只有xtt能做到這一點.

          我們下一步就是將字體添加到X中, 使xtt可以正確讀取, 這樣就可以了.

          首先, 由于要配置Linux系統文件, 我們需要用root帳號進入, 相當于windows下的administrator.

          X的配置文件是/etc/XF86Config-4 (比較新的顯卡) 或者是 XF86Config (比較老的顯卡). 用你喜歡的文本編輯器打開, 如 kedit或gedit.

          打開后我們發現配置文件分成很多個Section, 我們首先要配置的就是 Section "Files" , 這個部分描述了X所要調用的文件信息.

          要加入一個字體目錄, 只需在里面插入一行 FontPath "目錄名" 就可以了, 如:

          Section "Files"
          # Multiple FontPath entries are allowed (they are concatenated together)
          # By default, Mandrake 6.0 and later now use a font server independent of
          # the X server to render fonts.
          FontPath "unix/:-1"
          FontPath "/truetype" # 插入一個字體目錄
          EndSection

          然后, 我們讓X加載xtt字體引擎:

          找到Section "Module", 像這樣修改:

          Section "Module"
          # Load "dbe" # Double-Buffering Extension
          # Load "v4l" # Video for Linux
          Load "extmod"
          Load "glx
          # Load "type1" # type1 模組是渲染type1字體的, 和xtt沖突, 必需屏蔽
          # Load "freetype" # freetype 模組是渲染Truetype字體的, 和xtt沖突, 必需屏蔽
          Load "xtt" # 加入xtt模組引擎
          EndSection

          好了, 現在xtt會自動去 /truetype 里找字體.

          現在開始拷貝字體到 /truetype里去, 先要在根目錄建一個truetype目錄, 打

          mkdir /truetype

          就可以了.

          從windows分區拷貝要先mount, 就是作一個聯接, 將Linux目錄連到windows分區. 在根目錄下建一個"c"目錄.

          mkdir /c

          然后

          mount /dev/hda1 /c

          這樣就將windows下的C盤 聯接到我們Linux下的/c目錄了, 進入/c, 應該可以看到你C盤的文件.

          然后, 進入/c 中的字體文件目錄, 一般在window下面的Fonts里, 注意目錄名大小寫在Linux下面是有區別的.

          拷貝字體文件到 /truetype里, 打

          cp simsun.ttc /truetype/simsun.ttf
          cp tahoma* /truetype/

          這樣就將我們所需要的字體文件拷貝到truetype 里了.

          下一步我們要設置字體文件, Linux中X的字體設置很煩鎖, 不像windows一拷貝就完事, 初級階段嘛, 大家還是忍忍吧, 呵呵.

          1. 建立字體信息文件fonts.dir

          如下

          24
          simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
          ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal--0-0-0-0-c-0-gb2312.1980-0
          ds=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-c-0-gb2312.1980-0
          ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-c-0-gb2312.1980-0
          tahoma.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1
          ai=0.3:tahoma.ttf -misc-SimSun-medium-i-normal--0-0-0-0-p-0-iso8859-1
          tahomabd.ttf -misc-SimSun-bold-r-normal--0-0-0-0-p-0-iso8859-1
          ai=0.3:tahomabd.ttf -misc-SimSun-bold-i-normal--0-0-0-0-p-0-iso8859-1
          simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gbk-0
          ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal--0-0-0-0-p-0-gbk-0
          ds=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-p-0-gbk-0
          ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-p-0-gbk-0
          simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-fcd8859-15
          ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal--0-0-0-0-p-0-fcd8859-15
          ds=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-p-0-fcd8859-15
          ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-p-0-fcd8859-15
          simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-15
          ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal--0-0-0-0-p-0-iso8859-15
          ds=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-p-0-iso8859-15
          ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-p-0-iso8859-15
          simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-iso10646-1
          ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal--0-0-0-0-c-0-iso10646-1
          ds=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-c-0-iso10646-1
          ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-c-0-iso10646-1

          第一行的24表示下面一共有24行設置 (好像有點傻) , 其他的格式都差不多:

          ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-p-0-gbk-0

          說明:

          simsun.ttf: 字體文件名

          ds=[yn]: ds是xtt的功能, 設成"y" 表示粗體, "n" 表示正常.

          ai=Real_number: 表示傾斜度. 不設表示自動.

          misc : 表示字體的類別

          SimSun : 是字體的名稱

          bold : bold 表示粗體, 其他如medium表示正常,

          i : 表示斜體, r 是正常

          p: 可變長度, c 是正方形, m是固定寬度

          gbk: 字體編碼

          這里大家發現我們還使用了tahoma英文字體, 這樣替換, 系統讀取Simsun英文字體的時候, 就會用pp的tahoma替代.

          好了, 現在存盤. 然后拷貝一個到fonts.scale

          cp fonts.dir fonts.scale

          然后拷貝編碼文件 encodings.dir 到目錄里來.

          cp /usr/X11R6/lib/X11/fonts/encodings/encodings.dir /truetype

          好, 重起, 把KDE, mozilla, galeon 等等所有默認字體都改成simsun, 哈哈, 是不是比從前漂亮了很多?

          大家還是把這幾個配置文件備份起來, 以后安裝的時候就不用再設置了.

          這里順帶說一下其他幾個字體引擎的配置:

          xfs : 配置文件是 /etc/X11/fs/config
          xft : 配置文件是 /etc/X11/Xftconfig

          xft 的配置相對來說比較容易, 只要將字體拷到配置文件中dir 指定的任何一個目錄就可以了. 如果要小字體不顯示AA, 可以在末尾加入:

          match
          any size > 8
          any size < 17
          edit
          antialias = false;
          match
          any pixelsize > 8
          any pixelsize < 17
          edit
          antialias = false;

          這樣 8~17號的字體就不會用抗鋸齒功能了.
          posted on 2005-10-24 14:07 ivaneeo 閱讀(487) 評論(0)  編輯  收藏 所屬分類: GNU牛力
          主站蜘蛛池模板: 克什克腾旗| 桂平市| 阿瓦提县| 越西县| 盐亭县| 东阿县| 元朗区| 龙井市| 舞阳县| 子长县| 梅河口市| 徐闻县| 腾冲县| 宾川县| 湟中县| 双鸭山市| 台州市| 赣州市| 兴化市| 金秀| 金川县| 德兴市| 武清区| 彭州市| 韶山市| 多伦县| 中宁县| 宁都县| 昌平区| 北海市| 旅游| 资溪县| 衡南县| 英山县| 西安市| 塔城市| 鸡东县| 龙里县| 贵南县| 蓝田县| 南皮县|