HPDFShapeHeadlessTextStyledSpan

function HPDFShapeHeadlessTextStyledSpan(const Context: UnicodeString;
  FirstUnit, UnitCount: Integer; const Order: THPDFHeadlessTextOrder;
  const FontBytes: SysUtils.TBytes; MaximumGlyphs: Integer;
  CancellationToken: THPDFCancellationToken;
  CharacterAdvance, WordAdvance: Double;
  CSSLetterSpacing, CSSWordSpacing: Boolean): THPDFHeadlessShapedGlyphs;

Declarada em HPDFHeadlessShaping, esta função faz o shaping de um span UTF-16 usando seu contexto ao redor completo e a ordem visual previamente resolvida, com o runtime HarfBuzz e FriBidi fornecido e os bytes da fonte

FirstUnit é um offset UTF-16 com base zero e UnitCount seleciona o span solicitado; os chamadores precisam fornecer dados de order compatíveis e um orçamento positivo de MaximumGlyphs

CharacterAdvance e WordAdvance usam advances normalizados de 1000 font units, e não pontos PDF; converta o spacing em pontos com pontos * 1000 / fontSize antes de chamar

Advances raw precisam ser finitos e ter valores absolutos de no máximo 1000000000000000, permitindo o orçamento nativo de pontos no menor tamanho positivo de fonte suportado; os appearance builders aplicam seus limites separados de pontos autorados e computados

CSSLetterSpacing habilita tracking em unidades tipográficas e tratamento de ligaduras opcionais; CSSWordSpacing habilita meio spacing ao redor de clusters SPACE e NBSP, incluindo separator marks, seguindo o perfil de spacing delimitado

Os advances e offsets dos glyphs retornados incluem o spacing solicitado; SpacingAdvance registra sua contribuição, enquanto TypographicUnit, CursiveUnit e WordSeparator fornecem metadados de fronteira para o compositor rich de linhas físicas

O cancelamento é checado durante a classificação e o shaping, e falhas de orçamento de glyphs ou de entrada malformada usam o contrato existente de exceções de shaping; esta função não publica PDF nem é dona dos bytes da fonte ou do token do chamador

Os entry points existentes de shaping preservam sua semântica anterior; rebuild de consumers Pascal e C++Builder exige os records públicos de glyphs e headers gerados correspondentes