Positions[0] ikinci karakter konumunu, Positions[1] üçüncü karakter konumunu ve devamını ayarlar. Değerler points cinsindendir ve text object origin'e göredirprocedure SetTextPositions(ObjectIndex: Integer; const Positions: TPdfSingleArray);
| ObjectIndex | Tamsayı. Konumları ayarlanacak text object'in 0 tabanlı dizini (0 ile ObjectCount - 1 arası) |
| Positions | TPdfSingleArray. Text object origin'e göre points cinsinden karakter başına ofset dizisi. Positions[0] ikinci karakterin konumunu, Positions[1] üçüncü karakterin konumunu ve devamını ayarlar. İlk karakter her zaman 0 konumundadır |
SetTextPositions, her karakter için açık bir yatay ofset vererek text object'in varsayılan karakter aralığını aşar. Bu, ayrıntılı kerning denetimi, hizalanmış metin yerleşimi ya da mevcut bir PDF'de bulunan tam karakter yerleşimini yeniden üretme olanağı sağlar
Positions dizisi, ilk ve ikinci karakter arasındaki boşluktan başlayarak karakterler arası her boşluk için bir giriş içerir. Daha açık söylemek gerekirse Positions[0] ikinci karakterin, Positions[1] üçüncü karakterin konumudur ve devam eder; hepsi text object's origin'inden text baseline boyunca points cinsinden ölçülür. İlk karakter her zaman 0 ofsetinde yer alır. Dizi uzunluğu, text object'teki karakter sayısından bir eksik olmalıdır; fazla girişler yok sayılır, eksik girişler ise karşılık gelen karakterleri varsayılan konumlarında bırakır
Bu yöntem genellikle SetText ile birlikte, özgün karakter aralığı tam olarak korunması gereken text object'leri yeniden oluştururken ya da düzenlerken kullanılır
// 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;