1

使用 VIPS,如何减少文本中的行间距?有一个可选参数来确定行之间vips.Image.text()spacing这个空间。但是,我可以使间距更大但不能更小。例如,在下面的代码中(使用 VIPS 的 Lua 绑定,lua-vips),0作为参数传递spacing...

local vips = require 'vips'
local t = vips.Image.text("This is a\nrandom test.", {
  spacing = 0
})
t:write_to_file("test.png")

产生以下输出:

以 0 间距测试

正如预期的那样,使用更大的值会使间距更大,因此使用负值可能会使间距更小。但是,发生的情况是 lib 给了我一个警告:

(lua-vips:17404): GLib-GObject-WARNING **: value "-1" of type 'gint' is invalid or out of range for property 'spacing' of type 'gint'

我知道 VIPS 使用 Pango 处理文本,所以我不确定这可能是 VIPS 尚不支持的东西,还是 Pango 尚不支持的东西。

4

1 回答 1

2

看起来 pango 不支持间距 < 0:

https://developer.gnome.org/pango/stable/pango-Layout-Objects.html#pango-layout-set-line-spacing

https://developer.gnome.org/pango/stable/pango-Layout-Objects.html#pango-layout-set-spacing

所以我认为你可能不走运。我想你可以单独渲染线条,然后自己定位它们。

于 2020-01-05T16:46:08.800 回答