procedure SetTextPositions(ObjectIndex: Integer; const Positions: TPdfSingleArray);
| ObjectIndex | Integer. 문자 위치를 설정할 텍스트 객체의 0 기반 인덱스입니다(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;