PDFium Delphi Component Docs

FPdfTextShaping модуль

Unit: FPdfTextShaping
Формує двонаправлений текст Unicode у візуальні гліф-фрагменти (runs) для TPdf.AddShapedText, з обмеженими розмірами входу й виходу та розширюваним базовим класом шейпера

Workflow

APIPurpose
ShapePdfText(Text, FontName, FontSize, Direction, out Shaped)Формує текст вбудованою реалізацією Windows Uniscribe з типовими лімітами ресурсів
TPdfTextShaper.ShapeАбстрактний контракт формування для власних рушіїв, які повертають ідентифікатори гліфів, кластери, візуальні фрагменти, ширини (advances) та дані обраного шрифту
TPdfUniscribeTextShaper.ShapeВикористовує usp10.dll, щоб розбивати на елементи, формувати, розміщувати та візуально впорядковувати фрагменти тексту
TPdfTextShapingOptions.DefaultПовертає автоматичний напрямок із лімітами 1,000,000 символів, 2,000,000 гліфів і 100,000 фрагментів
ConfigureTextShaper(Shaper)Встановлює бекенд формування, який використовує модуль, замінюючи вбудований до кінця процесу; модуль бере володіння екземпляром
ClearTextShaperПрибирає встановлений бекенд і повертається до платформного типового
ActiveTextShaperБекенд, що використовується зараз, або nil, коли на цій платформі немає шейпера
ActiveTextShaperNameІм'я, яке звітує активний бекенд, для логування та розрізнення розгортань

Public types

TypeDescription
EPdfTextShapingErrorВиняток для некоректних входів, порушень лімітів ресурсів, збоїв даних шрифту чи помилок рушія формування
TPdfTextDirectionptdAuto, ptdLeftToRight або ptdRightToLeft
TPdfShapedGlyphОдин гліф з GlyphID, Advance, OffsetX, OffsetY, ClusterStart і ClusterLength
TPdfShapedGlyphsДинамічний масив записів TPdfShapedGlyph
TPdfShapedRunОдин візуальний фрагмент з TextStart, TextLength, VisualX, Width, BidiLevel, IsRightToLeft і Glyphs
TPdfShapedRunsДинамічний масив записів TPdfShapedRun у візуальному порядку
TPdfShapedTextВихідний Text, обраний FontName, FontSize, вбудовані FontData, сформовані Runs, сумарна Width, GlyphCount і LogicalCharacterCount
TPdfTextShapingOptionsЛіміти ресурсів Direction, MaxCharacters, MaxGlyphs і MaxRuns
TPdfTextShaperАбстрактний базовий клас для наданої викликачем реалізації формування
TPdfUniscribeTextShaperВбудована реалізація TPdfTextShaper для Windows

Remarks

Example

var
  Shaped: TPdfShapedText;
  MeasuredWidth: Single;
begin
  if ShapePdfText(Text, 'Segoe UI', 12, ptdAuto, Shaped) then
    MeasuredWidth := Shaped.Width;
end;

See Also

TPdf.AddShapedText