Font Fallback e Texto Vertical

O HotPDF consegue selecionar tipos de letra de fallback por script Unicode, reportar pontos de código que permanecem não resolvidos e escrever texto CJK através de um verdadeiro modo de escrita CID vertical

Cadeias de fallback ao nível do documento

THotPDF.SetFontFallbackChain armazena uma lista ordenada de tipos de letra para uma categoria THPDFFontScript

THPDFPage.TextOutWithFallback resolve cada escalar Unicode face ao tipo de letra selecionado, à sua cadeia de script e à cadeia comum, e depois emite escalares adjacentes com o mesmo tipo de letra como uma única execução de texto

Diagnósticos acionáveis

AnalyzeUnresolvedGlyphs efetua uma auditoria de cobertura só de leitura, enquanto TextOutWithFallback regista os escalares não resolvidos encontrados durante a saída

Cada THPDFUnresolvedGlyphInfo inclui o ponto de código escalar, o tipo de letra primário, o script classificado e uma lista de sugestões de fallback separada por pontos e vírgulas

GetUnresolvedGlyphs devolve o relatório atual do documento e ClearUnresolvedGlyphs inicia um novo intervalo de relato

As sobrecargas com estilo explícito de THotPDF.ResolveFontForCodePoint e THotPDF.AnalyzeUnresolvedGlyphs aceitam TFontStyles, de modo que o preflight possa inspecionar a mesma face usada na saída; as sobrecargas originais continuam a inspecionar faces regulares

Caixas de texto, texto SVG incorporado e aparências de texto carregadas retêm famílias de tipos de letra com estilo ao longo do layout de fallback, em vez de tratarem nomes internos de fontes PDF como famílias de sistema ou de comutarem todas as execuções para uma face regular

Escrita CJK vertical

THPDFPage.TextOutVertical seleciona a variante vertical do tipo de letra atual e emite uma execução de texto Identity-V em vez de posicionar todos os caracteres manualmente

Exemplo

PDF.SetFontFallbackChain(hfsCJK,
  ['Microsoft YaHei UI', 'Yu Gothic UI', 'Malgun Gothic']);
PDF.SetFontFallbackChain(hfsEmoji, ['Segoe UI Emoji']);

PDF.CurrentPage.SetFont('Arial', [], 12);
PDF.CurrentPage.TextOutWithFallback(72, 72, 0, Text);

PDF.CurrentPage.SetFont('Yu Gothic UI', [], 14);
PDF.CurrentPage.TextOutVertical(420, 72, VerticalText);

Missing := PDF.GetUnresolvedGlyphs;

APIs relacionadas