萬盛學電腦網

 萬盛學電腦網 >> FreeBSD介紹 >> 在X11中使用字體

在X11中使用字體

Type1字體
X11 使用的默認字體不是很理想。 大型的字體顯得參差不齊,看起來很不專業, 並且, 在 Netscape® 中,中的小字體簡直難以看懂。 有好幾種免費、 高質量的字體可以很方便地用在 X11 中。例如,URW字體集合 (x11-fonts/urwfonts) 就包括了高質量的 標准 type1 字體 (Times Roman®, Helvetica®, Palatino® 和其他一些).在 Freefont 集合中 (x11-fonts/freefonts) 也包括更多的字體,但它們中的絕大部分使用在圖形軟件中,如 Gimp,在屏幕字體中使用並不完美。另外, 只要花很少的功夫,可以將 XFree86™ 配置成能使用 TrueType® 字體。要安裝上面的Type1字體,您只需要運行下面的命令:

# cd /usr/ports/x11-fonts/urwfonts
# make install clean
freefont 或其他的字庫和上面所說的大體類似。 為了讓 X 服務器能夠檢測到這些字體, 需要在 X 服務器的配置文件 /etc/X11/ (Xorg 是 xorg.conf 而 XFree86 則是 XF86Config) 中增加下面的配置: FontPath "/usr/X11R6/lib/X11/fonts/URW/" 或者,也可以在命令行運行:
% xset fp+ /usr/X11R6/lib/X11/fonts/URW
% xset fp rehash
這樣會起作用,但是當 X 會話結束後就會丟失, 除非它被添加到啟動文件 (~/.xinitrc 中, 針對一個尋常的 startx 會話,或者當您通過一個類似 XDM 的圖形登陸管理器登陸時添加到 ~/.xsession 中)。 第三種方法是使用新的 /usr/X11R6/etc/fonts/local.conf 文件。
TrueType® 字體
XFree86 4.X 和 Xorg 都已經內建了對 TrueType 字體的支持。有兩個不同的模塊能夠啟用這個功能。 在這個例子中使用 freetype 這個模塊,因為它與其他的字體描繪後端 是兼容的。要啟用 freetype 模塊,只需要將下面這行添加到 /etc/X11/XF86Config 文件的 "Module" 部分。 Load "freetype" 對於 XFree86 3.3.X,需要額外的 TrueType 字體服務器。 Xfstt 通常被用於這個目的。 要安裝 Xfstt, 只要簡單的安裝 port x11-servers/Xfstt. 現在,為 TrueType 字體創建一個目錄 (比如, /usr/X11R6/lib/X11/fonts/TrueType) 然後把所有的 TrueType 字體拷貝到這個目錄。記住您不能直接從 Macintosh® 計算機中提取 TrueType 字體; 能被 X11 使用的必須是 UNIX®/MS-DOS®/Windows® 格式的。 一旦您已經拷貝了這些文件到這個目錄,使用 ttmkfdir 來創建一個 fonts.dir 文件,以便讓X字體引擎知道 您已經安裝了這些新文件。 ttmkfdir 可以在 FreeBSD Ports Collection x11-fonts/ttmkfdir 中找到。
# cd /usr/X11R6/lib/X11/fonts/TrueType
# ttmkfdir > fonts.dir

現在把 TrueType 字體目錄添加到字體路徑中。 
這和上面 Type1 字體的步驟是一樣的, 那就是,使用

% xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
% xset fp rehash

或者把 FontPath 這行加到 xorg.conf (或 XF86Config) 文件中。 就是這樣。現在 Netscape, Gimp, StarOffice™ 和其他所有的 X 應用程序 應該可以認出安裝的 TrueType 字體。一些很小的字體(如在 Web 頁面上高分辨率顯示的文本) 和一些很大的字體(在 StarOffice 下) 現在看起來已經很好了。
Anti-Aliased字體
X11 從 XFree86 4.0.2 開始支持字體的反走樣。 但是, 字體配置在 XFree86 4.3.0 之前是非常繁瑣的。 從 XFree86 4.3.0 開始, 對於所有支持 Xft 的應用程序, 所有放到 X11 /usr/X11R6/lib/X11/fonts/ 和 ~/.fonts/ 中的字體都自動地被加入反走樣支持。並不是所有的應用程序都支持 Xft, 但已經有相當多的程序提供 Xft 支持了。 支持 Xft 的應用程序包括 Qt 2.3 以及更高版本 (用以開發 KDE 桌面的工具包)、 GTK+ 2.0 和更高版本 (用於開發 GNOME 桌面的工具包), 以及 Mozilla 1.2 和更高版本。 要控制哪些字體是 anti-aliased,或者配置 anti-aliased 特性,創建(或者編輯,如果文件已經存在的話)文件 /usr/X11R6/etc/fonts/local.conf。Xft 字體系統的幾個高級特性都可以使用這個文件來調節;這一部分只描述幾種最簡單的情況。要了解更多的細節,請查看 fonts-conf(5). 這個文件一定是 XML 格式的。注意確保所有的標簽都完全的關閉掉。 這個文件以一個很普通的 XML 頭開始, 後跟一個 DOCTYPE 定義, 接下來是 標簽:

<?xml version="1.0"?>
      <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
      <fontconfig>

像前面所做的那樣,在 /usr/X11R6/lib/X11/fonts/~/.fonts/ 目錄下的所有字體已經可以被支持 Xft 的應用程序使用了。如果您想添加這兩個目錄以外的其他路徑, 簡單的添加下面這行到 /usr/X11R6/etc/fonts/local.conf文件中:

<dir>/path/to/my/fonts</dir>

添加了新的字體,尤其是添加了新的字體目錄後, 您應該運行下面的命令重建字體緩存:

# fc-cache -f

Anti-aliasing 會讓字體邊緣有些模糊,這樣增加了非常小的文本的可讀性,並從大文本字體中刪除 “鋸齒”。 但如果使用普通的文本, 則可能引起眼疲勞。 要禁止 14磅以下字體的反走樣, 需要增加如下配置:

        <match target="font">
            <test name="size" compare="less">
                <double>14</double>
            </test>
            <edit name="antialias" mode="assign">
                <bool>false</bool>
            </edit>
        </match>
        <match target="font">
            <test name="pixelsize" compare="less" qual="any">
                <double>14</double>
            </test>
            <edit mode="assign" name="antialias">
                <bool>false</bool>
            </edit>
        </match>

用 anti-aliasing 來間隔一些等寬字體也是不適當的。 這似乎是 KDE 的一個問題。要修復這個問題需要確保每個字體之間的間距保持在100。 加入下面這些行:

       <match target="pattern" name="family">
           <test qual="any" name="family">
               <string>fixed</string>
           </test>
           <edit name="family" mode="assign">
               <string>mono</string>
           </edit>
        </match>
        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>console</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>

(這裡把其他普通的修復的字體作為 "mono"),然後加入:

         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>mono</string>
             </test>
             <edit name="spacing" mode="assign">
                 <int>100</int>
             </edit>
         </match>     

某些字體,比如 Helvetica,當 anti-aliased 的時候可能存在問題。通常的表現為字體本身似乎被垂直的切成兩半。 糟糕的時候,還可能導致應用程序比如 Mozilla 崩潰。 為了避免這樣的現象,考慮添加下面幾行到 local.conf文件裡面:

         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>Helvetica</string>
             </test>
             <edit name="family" mode="assign">
                 <string>sans-serif</string>
             </edit>
         </match>       

一旦您完成對 local.conf 文件的編輯,確保您使用了 </fontconfig> 標簽來結束文件。不這樣做將會導致您的更改被忽略。

X11 默認的字庫當使用反走樣時會比較難看。 更好的字庫可以在 x11-fonts/bitstream-vera port 中找到。 這個 port 會創建一個 /usr/X11R6/etc/fonts/local.conf 文件, 如果這個文件不存在的話。反之, port 將創建 /usr/X11R6/etc/fonts/local.conf-vera 文件。將其內容合並到 /usr/X11R6/etc/fonts/local.conf 中, 則 Bitstream 字體將自動地代替默認的 X11 Serif, Sans Serif, 以及單倍距字體。 最後,用戶可以通過他們個人的 .fonts.conf 文件來添加自己的設定。 要完成此項工作, 用戶只需簡單地創建 ~/.fonts.conf 並添加相關配置。 此文件也必須是 XML 格式的。 最後:對於LCD屏幕, 可能希
copyright © 萬盛學電腦網 all rights reserved