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
- As cadeias de fallback são definições do documento e permanecem disponíveis entre páginas
- Os nomes de tipo de letra duplicados e vazios são removidos enquanto a ordem do chamador é preservada
- A sondagem de tipos de letra instalados rejeita a substituição GDI silenciosa antes de aceitar a cobertura
- Os escalares de plano suplementar são descodificados a partir de pares substitutos UTF-16 antes da classificação
- Cada execução de fallback utiliza o tipo de letra Type0 incorporado existente, o subsetting, o
ToUnicodee o caminho de tipo de letra partilhado entre páginas - O layout de fallback verifica famílias de tipos de letra instaladas com a face bold e italic pedida, preserva todas as definições de estilo, charset, tamanho e direção de escrita entre execuções, e restaura o tipo de letra do chamador no fim
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
- O tipo de letra CID descendente contém predefinições
/DW2e entradas/W2específicas de glifo - As tabelas OpenType
vheaevmtxfornecem avanços verticais e side bearings superiores; as origens TrueType derivam da bounding box de cadaglyf, enquanto aVORGfornece as predefinições de origem CFF autoritativas e as exceções - Fontes sem tabelas verticais usam predefinições configuráveis de avanço de 1000 unidades e de origem de 880 unidades
- As funcionalidades
vert,vrt2e GPOS vertical existentes permanecem disponíveis através deShapingFeatures GetVerticalTextAdvancedevolve o avanço no espaço de utilizador necessário para posicionar a próxima execução vertical- Vertical
vkrnevpalAs características GPOS continuam disponíveis através deShapingFeatures GetVerticalTextAdvancedevolve o avanço no espaço do utilizador necessário para posicionar o próximo run vertical
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;