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 aplica shaping a um trecho UTF-16 usando o contexto envolvente completo dele e a ordem visual previamente resolvida, com o runtime HarfBuzz e FriBidi e os bytes de tipos de letra fornecidos
FirstUnit é um offset UTF-16 com base zero e UnitCount seleciona o trecho pedido; quem chama tem de fornecer dados de ordem compatíveis e um orçamento positivo de MaximumGlyphs
CharacterAdvance e WordAdvance usam avanços normalizados de 1000 unidades de tipo de letra, e não pontos PDF; converta o espaçamento em pontos com pontos * 1000 / fontSize antes de chamar
Avanços em bruto têm de ser finitos e ter valores absolutos no máximo 1000000000000000, permitindo o orçamento nativo de pontos no tamanho positivo mínimo suportado de tipo de letra; os construtores de aparências impõem os limites separados deles de pontos escritos e calculados
CSSLetterSpacing ativa o tracking em unidades tipográficas e o tratamento de ligaduras opcionais; CSSWordSpacing ativa meio espaçamento em torno de clusters SPACE e NBSP, incluindo marcas separadoras, seguindo o perfil delimitado de espaçamento
Os avanços e offsets de glyphs devolvidos incluem o espaçamento pedido; SpacingAdvance regista a contribuição dele, enquanto TypographicUnit, CursiveUnit e WordSeparator fornecem metadados de fronteiras para o compositor rich de linhas físicas
O cancelamento é verificado 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 um PDF nem é dona dos bytes de tipos de letra ou do token de quem chama
Os pontos de entrada existentes de shaping mantêm a semântica anterior deles; reconstrua os consumidores Pascal e C++Builder usando o registo público de glyphs correspondente e os cabeçalhos gerados