Как уменьшить расстояние между строками в тексте с помощью VIPS?

Как с помощью VIPS уменьшить расстояние между строками в тексте? Существует необязательный параметр для vips.Image.text(), называемый spacing, который определяет это пространство между строками. Однако я могу сделать интервал больше, но не меньше. Например, в приведенном ниже коде (с использованием привязки Lua для VIPS, lua-vips) передается 0 в качестве аргумента для _4 _...

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

производит следующий вывод:

Тест с 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.


person PiFace    schedule 05.01.2020    source источник


Ответы (1)


Похоже, панго не поддерживает интервал ‹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.

Так что я думаю, тебе не повезло. Полагаю, вы могли бы визуализировать линии по отдельности, а затем расположить их самостоятельно.

person jcupitt    schedule 05.01.2020
comment
О, это прискорбно. Этот обходной путь был бы хорош, но я хотел бы уменьшить интервал в строках текста, созданный также ограничением ширины, не обязательно символами новой строки. Так что мне интересно, возможен ли этот подход? - person PiFace; 05.01.2020
comment
Я думаю, вам тоже придется делать перенос строки, извините. Выполняйте рендеринг слова за раз и собирайте куски с помощью libvips insert. Или, может быть, патч панго? Я бы не подумал, что это будет слишком сложно. - person jcupitt; 05.01.2020
comment
Извините, если подумать вслух, вы также можете изменить существующий шрифт и уменьшить вертикальные метрики. Это могло быть проще. - person jcupitt; 05.01.2020
comment
Да, верно, редактирование шрифта сделает всю работу за вас! Поскольку это небольшая деталь для моего приложения, я думаю, это должно сработать. - person PiFace; 05.01.2020