2014-09-22 38 views
0

在Linux上使用並使用Qt框架。 所有.ttf字體位於/ usr/lib/fonts /中。 如果我在這個文件夾中同時保存日文和中文,日文將使用中文字體;如果中文字體被刪除,日文字體可以正常顯示,所以我認爲這是一個優先問題。.ttf Qt中的字體優先級

而且我還注意到有一篇文章在網上討論如何使用fontconfig來解決這個問題。 然而,有沒有在應用程序/ fontconfig的-2.8.0/src目錄/ conf.d font.conf,而是有很多的.conf喜歡的:

10-autohint.conf 
10-no-sub-pixel.conf 
10-sub-pixel-bgr.conf 
10-sub-pixel-rgb.conf 
10-sub-pixel-vbgr.conf 
10-sub-pixel-vrgb.conf 
10-unhinted.conf 
20-fix-globaladvance.conf 
20-unhint-small-vera.conf 
25-unhint-nonlatin.conf 
30-metric-aliases.conf 
30-urw-aliases.conf 
40-nonlatin.conf 
45-latin.conf 
49-sansserif.conf 
50-user.conf 
51-local.conf 
60-latin.conf 
65-fonts-persian.conf 
65-khmer.conf 
65-nonlatin.conf 
69-unifont.conf 
70-no-bitmaps.conf 
70-yes-bitmaps.conf 
80-delicious.conf 
90-synthetic.conf 

那麼,哪一個我應該使用?

順便說一句,fc-list總是對我沒有任何幫助。

任何幫助和提示將不勝感激。

回答

0

沒有特定的文件可以使用,它們按照命名順序進行評估,因此10-foo.conf中的指令將在90-bar.conf中的指令之前讀取。然而,配置語言允許覆蓋,所以以前並不總是更強。在現代fontconfig安裝中,您經常會發現諸如「如果區域設置是日文比較喜歡日文字體」的規則,並且只有在最後評估時才能使用。

通常,當您的應用/環境未向字體系統提供目標語言環境時,您會遇到問題。由於unicode統一,字體系統無法推斷出是否需要日語中的中國式字形來自代碼點,因此需要明確告知。因此,如果您正在強制執行en_US語言環境而不是使用中文或日語語言環境,則至少有50%的機會會導致系統錯誤。

然後,即使您確實聲明瞭正確的語言環境,所有應用程序也不會將其正確傳播到字體堆棧,這就是所有要填充的錯誤。

沒有簡單或簡單的解決方案:確保你沒有在系統中說謊,你的語言環境是固定的,如果你無法忍受,填寫仍然不適用的應用程序的錯誤。

另一種方法是通過卸載或隱藏其中一種字體集來強制執行單一樣式的呈現,但如果您需要顯示該語言,也會中斷該語言的呈現。