【问题标题】:How to reduce space between lines in text using VIPS?如何使用 VIPS 减少文本中的行间距?
【发布时间】:2020-01-05 16:31:06
【问题描述】:

使用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")

产生以下输出:

正如预期的那样,使用较大的值会使间距变大,因此使用负值可能会使间距变小。但是,会发生什么是 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 尚不支持的内容。

【问题讨论】:

    标签: c lua vips


    【解决方案1】:

    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

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

    【讨论】:

    • 哦,真不幸。这种解决方法会很好,但我也想减少由宽度限制生成的文本行间距,不一定是换行符。所以我想知道这种方法是否仍然可行
    • 我想你也必须换行,抱歉。一次渲染一个单词并使用 libvips insert 组装块。或者也许补丁pango?我认为这不会太难。
    • 抱歉,大声思考,您也可以修改现有字体并缩小垂直指标。这可能更简单。
    • 哦,没错,编辑字体本身就可以完成所有工作!由于这是我的应用程序的一个小细节,我想应该这样做。
    猜你喜欢
    • 2023-03-14
    • 2012-02-24
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多