vips - 如何创建对齐文本?

vips - How to create justified text?

我正在使用 vips 库来处理一些图像,特别是它的 Lua 绑定,lua-vips,我正在尝试创建合理的文本图像。我想在vips中没有可用的功能可以直接执行此操作,所以我想知道如何为此提出一个算法。

我的第一个想法是使用 known algorithm for justification 来解析要对齐的文本,但使用每个单独单词的图像宽度而不是字符数来衡量空 space。然后,对于每一行,将每个单词的文本图像并排放置,并在它们之间添加必要的 space 作为黑色像素。

但是我不知道如何检查行高,因为它不一定等于文本图像的高度,所以我不确定我使用的是好的方法。

git master libvips supports justification now,此功能应该在即将推出的 libvips 8.8 中(将于 spring 2019 年发布)。

这样使用:

$ vips text x.png "hello world sdkj hsdfkj herqkjh wehf" --width 100 --justify

制作:

或来自Lua:

x = vips.Image.text("hello world sdkj hsdfkj herqkjh wehf", {width = 100, justify = true})