procedure SetTextPositions(ObjectIndex: Integer; const Positions: TPdfSingleArray);
| ObjectIndex | Integer. Índice baseado em 0 do objeto de texto cujas posições de caractere serão definidas (0 a ObjectCount - 1) |
| Positions | TPdfSingleArray. Array de deslocamentos por caractere em pontos, relativos à origem do objeto de texto. Positions[0] define a posição do segundo caractere, Positions[1] a do terceiro e assim por diante. O primeiro caractere está sempre na posição 0 |
SetTextPositions sobrescreve o espaçamento padrão de caracteres de um objeto de texto fornecendo um deslocamento horizontal explícito para cada caractere. Isso permite controle fino de kerning, layout de texto justificado ou a reprodução do posicionamento exato de caracteres encontrado em um PDF existente
O array Positions contém uma entrada por intervalo entre caracteres, começando pelo intervalo entre o primeiro e o segundo caracteres. Especificamente, Positions[0] é a posição do segundo caractere, Positions[1] é a posição do terceiro e assim por diante — todos medidos em pontos a partir da origem do objeto de texto ao longo da linha de base. O primeiro caractere é sempre colocado no deslocamento 0. O comprimento do array deve ser uma unidade menor que o número de caracteres do objeto de texto; entradas excedentes são ignoradas e entradas ausentes deixam os caracteres correspondentes em suas posições padrão
Este método é tipicamente usado junto com SetText ao reconstruir ou editar objetos de texto cujo espaçamento original de caracteres deve ser preservado exatamente
// 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;