2015-12-02 31 views
2

這個問題可能涉及到這樣一個問題: Where does QT go to look for fonts?如何查找和使用的字體在Qt嵌入式Linux呢?

即時通訊與Ubuntu 14.04和Qt工作嵌入式4.8,並希望在全球範圍內改變我的應用程序的字體,但我只能用一個很小的子集,從我安裝的字體。

我的應用程序的風格是從那裏我寫一個CSS文件加載:

QWidget { 
    font-family: "DejaVu Sans"; /*or any other font*/ 
} 

的問題是,Qt的似乎沒有能夠找到我安裝的字體。根據文檔Deploying Qt for Embedded Linux Applications Qt應用程序尋找在的lib /字體/目錄,並專門爲所謂的FONTDIR文件字體。我不知道這個文件是關於什麼的,我也找不到它。我的字體(對於調試版本)的完整路徑是:/usr/local/Trolltech/QtEmbedded-4.8.6-x86-dbg/lib/fonts

我用,可以發現in the Qt 4.8 docu到QFontDatabase打印我所有可用的字體。不幸的是輸出是:

DejaVu Sans: Normal (11) 
fixed: Normal (7 12) 
helvetica: Normal (8 10 12 14 18 24) Italic (8 10 12 14 18 24) Bold (8 10 12 14 18 24) Bold Italic (8 10 12 14 18 24) 
japanese: Normal (23) 
micro: Normal (4) 
unifont: Normal (16) 

但我有更多的方式安裝字體。該幻覺記憶三世,例如存在於大膽和其他類型太多,但只有「正常」的一個發現。這裏是位於我的Fonts文件夾中(那些位於進行發佈和調試Qt的文件夾以及)只有一小部分:

couri.pfa 
cour.pfa 
cursor.pfa 
dejavu_sans_11_50.qpf2 
DejaVuSans-BoldOblique.ttf 
DejaVuSans-Bold.ttf 
DejaVuSansMono-BoldOblique.ttf 
DejaVuSansMono-Bold.ttf 
DejaVuSansMono-Oblique.ttf 
DejaVuSansMono.ttf 
DejaVuSans-Oblique.ttf 
DejaVuSans.ttf 
DejaVuSerif-BoldOblique.ttf 
VeraMono.ttf 
VeraSeBd.ttf 
VeraSe.ttf 
Vera.ttf 
  1. 什麼是FONTDIR文件,是吧需要它,我如何創建它?

  2. 我有什麼做的,這樣的Qt發現我的所有已安裝的字體?

  3. 有沒有辦法簡單地使用我感興趣的字體的副本,並將其放入我的應用程序的子目錄中,將其視爲一個圖標,以便我不必亂用所有系統地點?

編輯:根據這一thread我認爲我也有對TTF字體不支持。我有一個看着我的字體,看來,所有的* .qpf和* .qpf2字體被發現。所以我會嘗試將我的TTF轉換爲QPF。

回答

1

什麼是fontdir文件,我需要它,我該如何創建它?

只有當QPF字體應該使用Qt特定的「輕量級」格式時才需要該文件。 Qt工具makeqpf使用該文件(據我所知)。

我該怎麼做才能讓Qt找到我安裝的所有字體?

如果Qt的與-no-freetype的然後可以使用沒有TTF字體,因此不通過QFontDatabase發現編譯。要啓用TTF支持,必須編譯Qt,而不使用此編譯配置標誌。我已經重新編譯了它,並找到了/usr/local/Trolltech/QtEmbedded-4.8.6-x86-dbg/lib/fonts中的所有字體。

有這麼 ,我不必更動的方式來簡單地用我的興趣字體的副本,並把它 到我的應用程序的一個子目錄把它當作一個圖標所有的系統位置?

是。人們可以簡單地使用QFontDatabase :: addApplicationFont這應該不會失敗支持的字體格式。

請注意,我決定重新編譯Qt,因爲我不想惹Qt中的makeqpf工具,它可以用來將TTF字體轉換爲QPF格式。

相關問題