procedure SetTextPositions(ObjectIndex: Integer; const Positions: TPdfSingleArray);
| ObjectIndex | Integer. Индекс текстового объекта с отсчётом от нуля, для которого задаются позиции символов (от 0 до ObjectCount - 1) |
| Positions | TPdfSingleArray. Массив смещений по символам в пунктах относительно начала текстового объекта. Positions[0] задаёт позицию второго символа, Positions[1] — третьего и так далее. Первый символ всегда находится в позиции 0 |
SetTextPositions переопределяет стандартный межсимвольный интервал текстового объекта, задавая явное горизонтальное смещение для каждого символа. Это обеспечивает тонкое управление кернингом, выключку текста по формату или точное воспроизведение расположения символов из существующего PDF
Массив Positions содержит по одному элементу на каждый промежуток между символами, начиная с промежутка между первым и вторым символами. Точнее, Positions[0] — позиция второго символа, Positions[1] — позиция третьего и так далее; все значения измеряются в пунктах от начала текстового объекта вдоль базовой линии текста. Первый символ всегда размещается со смещением 0. Длина массива должна быть на единицу меньше количества символов в текстовом объекте; лишние элементы игнорируются, а отсутствующие оставляют соответствующие символы в их стандартных позициях
Этот метод обычно применяется вместе с SetText при восстановлении или редактировании текстовых объектов, для которых необходимо точно сохранить исходный межсимвольный интервал
// Add text, then apply custom per-character positions
Pdf1.NewPage(595, 842);
Pdf1.AddText('HELLO', 'Arial', 24, 72, 700);
var
Idx: Integer;
Pos: TPdfSingleArray;
begin
Idx := Pdf1.ObjectCount - 1;
// 'H' at 0 (implicit), 'E' at 20, 'L' at 38, 'L' at 56, 'O' at 74
SetLength(Pos, 4);
Pos[0] := 20; Pos[1] := 38; Pos[2] := 56; Pos[3] := 74;
Pdf1.SetTextPositions(Idx, Pos);
end;