Font Fallback and Vertical Text

O HotPDF pode selecionar faces de reserva por script Unicode, relatar pontos de código que permanecem não resolvidos e escrever texto CJK por meio de um modo real de escrita CID vertical

Cadeias de fallback no nível do documento

THotPDF.SetFontFallbackChain armazena uma lista ordenada de faces para uma categoria THPDFFontScript

THPDFPage.TextOutWithFallback resolve cada escalar Unicode contra a face selecionada, a cadeia de script dela e a cadeia comum, e emite escalares adjacentes com a mesma face como um único run de texto

Diagnósticos acionáveis

AnalyzeUnresolvedGlyphs faz uma auditoria de cobertura somente leitura, enquanto TextOutWithFallback registra escalares não resolvidos encontrados durante a saída

Cada THPDFUnresolvedGlyphInfo inclui o code point do escalar, a face primária, o script classificado e uma lista de sugestões de fallback separada por ponto e vírgula

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

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

Caixas de texto, texto embutido em SVG e appearances de texto carregadas retêm famílias de fontes com estilo ao longo do layout de fallback, em vez de tratar nomes de fontes internas do PDF como famílias do sistema ou trocar cada run para uma face regular

Escrita CJK vertical

THPDFPage.TextOutVertical seleciona a variante vertical da face atual e emite um único run de texto Identity-V, em vez de posicionar cada caractere 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