【问题标题】:Golang vips: How to render text with custom truetype font?Golang vips:如何使用自定义 truetype 字体呈现文本?
【发布时间】:2016-07-07 20:06:03
【问题描述】:

当我们想要将文本呈现为 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 是一个字体配置字符串名称,并假定系统已安装此字体。

如何让程序使用自定义的 truetype 字体文件,例如 Roboto.ttf

尝试

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

可能不会工作。

我们可以把Roboto.ttf文件放在系统目录下,比如在Ubuntu下你把文件放在/usr/share/fonts/truetype,但是代码假设这个字体存在,这不是写机器的办法-独立程序。所以我想知道是否有更好的方法来做到这一点,以便我们可以将可执行文件与字体文件一起发送。

【问题讨论】:

    标签: go fonts vips


    【解决方案1】:

    vips 使用标准 fontconfig 字体名称,因此您需要设置 fontconfig 以将自定义字体添加到其搜索路径。

    From the manual 看起来您可以将环境变量 XDG_CONFIG_HOME 设置为指向您的新字体,然后从 go 将该字体称为 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
    

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

    【讨论】:

    • 感谢您指出 env 变量。我找到了这个链接:superuser.com/questions/365847/…。所以默认的XDG_CONFIG_HOME 值是$HOME/.config,这就是我应该放 ttf 文件的地方。
    猜你喜欢
    • 1970-01-01
    • 2013-12-17
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 2014-04-24
    • 2021-10-07
    相关资源
    最近更新 更多