Linux下的中文美化問題

2021-08-29 08:55:06 字數 3703 閱讀 5328

本文則是參考如何使用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裡的截圖吧:

其中仿宋體的字型名是fangsong_gb2312,黑體是simhei,楷體是kaiti_gb2312,宋體是simsun,字型名暫時都不是中文的。

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

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

<?xml version=」1.0″?> 宣告這個檔案是乙個xml文件

xml文件的格式宣告(dtd = document type define)

xml檔案需要的根節點

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

/usr/share/fonts

/usr/x11r6/lib/x11/fonts/type1

/usr/local/share/fonts

~/.fonts

所有字型檔案存放的位置,其中第乙個就是我們剛才放字型檔案的目錄/usr/share/fonts。

mono

monospace

將本檔案中的別名mono替換成全稱monospace,這是xml的乙個自動替換宣告,使用別名的目的應該是為了簡化書寫或者維持對舊版本的相容。後面還有幾個替換就不再一一介紹了。

bitstream vera serif

vera sans yuanti

times

times new roman

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

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

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

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

gulimche

false

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

修正bitstream vera字型在小於8點的時候的顯示問題,保持不變即可。

local.conf

–>

載入配置檔案local.conf,下面的~/.fonts.conf也是一樣。

serif

bitstream vera serif

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

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

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

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

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

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

vera sans yuanti

false

這就是指明在對vera sans yuanti字型的處理中,globaladvance引數設定為false,其他的設定也多是這種語法,具體的含義和效果我就不知道了:)。

四、中文字型顯示優化

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

simsun

bold

simhei

simsun

false

宋體

simsun

新宋體simsun

仿宋_gb2312

fangsong_gb2312

楷體_gb2312

kaiti_gb2312

黑體simhei

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

小結

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

Linux 下 美化字型

一學即懂!linux下主要有兩套字型系統,x11核心字型系統和xft字型系統。其中,應用越來越廣泛的是xft字型系統。gtk2 qt等都採用xft方式進行 字型渲染。xft本身並沒有配置的功能,需要借助另外乙個庫fontconfig來對xft進行配置。這篇文章簡單介紹了使用fontconfig進行字...

linux下mysql支援中文的問題

由於我的mysql安裝好了以後,在 etc下只有乙個my.cnf檔案,沒有my.conf 和my.ini檔案。後來才知道這是標準版,才是這樣的。為了使mysql支援中文,我做了以下操作。一 find grep my large.cnf 找到大概是share資料夾下和doc 資料夾下有這個檔案。拷到 ...

linux下中文傳參的問題

前一階段給公司開發乙個報工系統,開發是在windows環境下,部署在linux下執行。windows環境下執行一切正常,本以為到此可以大功告成了,不想第二天部署到linux上之後,頁面資料儲存之後查不出來。立即意識到可能是中文引數的問題,由於是get方式傳參,windows環境下,前台頁面對中文引數...