如何使用 VIPS 减少文本行之间的 space?

How to reduce space between lines in text using VIPS?

使用VIPS,如何减少文本中行与行之间的space? vips.Image.text() 有一个名为 spacing 的可选参数,用于确定行之间的 space。但是,我可以使间距更大但不能更小。例如,在下面的代码中(使用 Lua 绑定 VIPS,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")

产生以下输出:

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

(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 尚不支持的功能。

看来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

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