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;