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

使用 VIPS,如何减少文本行之间的距离?vips.Image.text() 有一个可选参数 spacing 可以确定行之间的间距。但是,我只能使间距变大而不能使间距变小。例如,使用以下代码(使用 VIPS 的 Lua 绑定,lua-vips),将 0 作为 spacing 的参数值:...

local vips = require 'vips'
local t = vips.Image.text("这是一\n个随机测试。", {
  spacing = 0
})
t:write_to_file("test.png")

将会产生以下输出:

测试,`spacing=0`

所以,使用较大的值会使行间距变大,因此使用负值可能会使行间距变小。然而,发生的情况是该库会给出警告:

(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 尚未支持的东西。

点赞
用户894763
用户894763

看起来Pango不支持负数的间距:
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-05 16:46:08