Positions[0]은 두 번째 문자 위치를, Positions[1]은 세 번째 위치를, 이런 식으로 이어집니다. 값은 point 단위이며 텍스트 object의 원점을 기준으로 합니다procedure SetTextPositions(ObjectIndex: Integer; const Positions: TPdfSingleArray);
| ObjectIndex | 정수. 문자 위치를 설정할 text object의 0부터 시작하는 인덱스입니다(0부터 ObjectCount - 1까지) |
| Positions | TPdfSingleArray. text object 원점에 대한 point 단위의 문자별 오프셋 배열입니다. Positions[0]은 두 번째 문자의 위치를, Positions[1]은 세 번째 문자의 위치를 설정하며, 이런 식으로 이어집니다. 첫 번째 문자는 항상 위치 0입니다 |
SetTextPositions는 각 문자에 명시적인 가로 오프셋을 제공하여 text object의 기본 문자 간격을 덮어씁니다. 이를 통해 세밀한 kerning 제어, 정렬된 text layout, 또는 기존 PDF에서 보이는 정확한 문자 배치를 재현할 수 있습니다
Positions 배열은 첫 번째 문자와 두 번째 문자 사이의 간격부터 시작하는 문자 사이 간격마다 하나의 항목을 담습니다. 구체적으로 Positions[0]은 두 번째 문자의 위치이고, Positions[1]은 세 번째 문자의 위치이며, 이런 식으로 이어집니다 — 모두 text object 원점에서 text baseline을 따라 point 단위로 측정됩니다. 첫 번째 문자는 항상 오프셋 0에 배치됩니다. 배열 길이는 text object의 문자 수보다 하나 적어야 하며, 초과 항목은 무시되고 부족한 항목은 해당 문자를 기본 위치에 둡니다
이 메서드는 원래 문자 간격을 정확히 보존해야 하는 text object를 재구성하거나 편집할 때 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;