property CharacterIsHyphen[Index: Integer]: Boolean; // read only
| Index | Индекс символа на текущей странице с нуля, в диапазоне от 0 до CharacterCount - 1 |
CharacterIsHyphen возвращает True, когда PDFium классифицирует символ в Index как мягкий (переносной) дефис, а не обычный дефис из состава сложного слова. Классификация эвристическая: смотрятся Unicode code point символа, позиция конца строки и близость следующего текстового прогона, чтобы решить, сохранять ли дефис при склейке строк
Мягкие переносы вставляют вёрстальные движки (LaTeX, Word, InDesign), чтобы разбивать длинные слова по строкам. При копировании текста из PDF-ридера мягкий дефис обычно отбрасывается, и "high-
way" вставляется как highway, а не как high-way. Это свойство позволяет вашему коду извлечения воспроизвести то же поведение
Свойство не различает Unicode-мягкий перенос (U+00AD) и обычный hyphen-minus (U+002D), оказавшийся в конце строки, — в таких ситуациях оба дадут True. Если нужен только случай U+00AD, сравнивайте Character[Index] напрямую
False, тот же дефис в конце строки — True
// Reconstruct words across line wraps, dropping soft hyphens
var
I: Integer;
S: WString;
begin
S := '';
for I := 0 to Pdf.CharacterCount - 1 do
if not Pdf.CharacterIsHyphen[I] then
S := S + Pdf.Character[I];
Memo1.Text := S;
end;