天天看點

linux字型技術原理

這個檔案裡可以看到你的字型路徑:/etc/fonts/fonts.conf

 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/X11/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号的字型就不會用抗鋸齒功能了.

繼續閱讀