2016-07-07 133 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文件的地方。 –

相关问题