2016-07-07 134 views
0

當我們想呈現的文本圖像的貴賓,你做這樣的事情與vips_textGolang vips:如何使用自定義truetype字體呈現文本?

import "C" 
    var textImage *C.VipsImage 
    cText := C.CString("Some text") 
    cFont := C.CString("Arial 12px") 
    C.cgo_vips_text(&textImage, cText, cFont) 

但在這裏,Arial 12px是fontconfig的字符串名稱,並假定該系統具有此字體安裝。

如何讓程序使用自定義truetype字體文件,例如Roboto.ttf

試圖

cFont := C.CString("Roboto.ttf") 

可能不會工作。

我們可以把Roboto.ttf文件放在系統目錄下,例如在Ubuntu中你把這個文件放在/usr/share/fonts/truetype,但是代碼假設這個字體存在,這不是寫出與機器無關的程序的解決方案。所以我想知道是否有更好的方法來做到這一點,以便我們可以將可執行文件與字體文件一起發送。

回答

1

vips使用標準fontconfig字體名稱,所以您需要設置fontconfig以將自定義字體添加到其搜索路徑。

From the manual它看起來像你可以設置環境變量XDG_CONFIG_HOME指向你的新字體,然後從去參考該字體爲Roboto 48pt(例如)。

很容易從命令行進行測試。嘗試:

$ fc-match "Roboto" 
Roboto-Regular.ttf: "Roboto" "Regular" 
$ vips text x2.png "hello" --font "Roboto 48px" 
$ vips text x.png "hello" --font "Arial 48px" 
$ eog x.png x2.png 

並確保您看到兩個不同的圖像。

+0

感謝您指出env變量。我發現這個鏈接:http://superuser.com/questions/365847/where-should-the-xdg-config-home-variable-be-defined。所以默認的'XDG_CONFIG_HOME'值是'$ HOME/.config',這就是我應該放置ttf文件的地方。 –

相關問題