Golang vips : How to render text with custom truetype font?

标签 go fonts vips

当我们想要将文本呈现为 vips 图像时,您可以使用 vips_text 执行类似的操作:

    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中,但是该代码假设此字体存在,这不是编写与机器无关的程序的解决方案。所以我想知道是否有更好的方法来执行此操作,以便我们可以将可执行文件与字体文件一起发送。

最佳答案

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

并确保您看到两个不同的图像。

关于Golang vips : How to render text with custom truetype font?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38254364/

相关文章:

go - 从命名管道连续读取

go - 谁写入 http.ResponseWriter?

arrays - Golang : get the type of slice

css - 任何 iOS 网络浏览器是否通过 CSS 支持 OpenType 字体功能?

Css 字体在 IE 中不起作用

ruby - 使用 vips (ruby-vips8) 合并多个图像

regex - 前瞻正则表达式 - 识别重复的连续字母

android - 如何在 Android Studio 的编辑器中添加字体

opencv - 使用VIP实现透视变换

c - 如何使用 VIPS 添加文本中字符之间的间距?