Aparências de anotações e campos OpenType CFF
Os builders nativos de aparências aceitam fontes OpenType OTTO com contornos CFF 1, além da entrada TrueType existente
Aparências de texto plain, rich, shaped e de famílias embutem o arquivo OpenType original completo através de FontFile3 com Subtype OpenType e um descendente CIDFontType0
CFF indexado por nomes usa índices de glyphs como CIDs, enquanto CFF indexado por CID retém seu Registry, Ordering, Supplement e mapeamento de charset reais de índices de glyphs para CIDs
O CMap de Encoding gerado mapeia os códigos de caracteres do texto para os CIDs reais; widths usam esses CIDs, ToUnicode retém o texto lógico, e CIDFontType0 não recebe CIDToGIDMap
Posições e extensões de glyphs usam as métricas OpenType do HarfBuzz, incluindo fragmentos rich e limites de combining marks; fragmentos rich compartilham readers imutáveis de fontes por estilo e um recurso embutido de fonte
Métricas CFF exigem uma biblioteca HarfBuzz da arquitetura correspondente mesmo quando ShapeComplexText é False; HOTPDF_HARFBUZZ_LIBRARY seleciona um caminho explícito, e o shaping complexo usa adicionalmente a dependência FriBidi existente
Uma anotação FreeText visível sem aparência normal pode usar um recurso válido de default-appearance contendo uma fonte OpenType CFF completa; a precedência existente de recursos, o clipping, as cores e a política read-only de embutimento se aplicam
A geração de campos editáveis ainda exige permissão installable ou editable; o fallback read-only permite permissão preview-and-print, enquanto contornos restritos ou somente bitmap permanecem rejeitados, e no-subsetting retém cada byte original da fonte
Os orçamentos de bytes de fontes, glyphs, tamanho de objetos, fontes rich agregadas, cancelamento e render nativo permanecem aplicados; offsets de INDEX CFF malformados, dicionários, faixas de charsets, CIDs duplicados e strings de coleções ausentes são rejeitados antes da publicação
O mapeamento de formato segue a ISO 32000-1:2008 9.7.4.2 e 9.9, incluindo o mapeamento explícito de charsets OpenType indexados por CID
Rendering nativo, MuPDF e Ghostscript passam pelos fixtures OpenType de CID esparso; os backends Poppler testados têm uma incompatibilidade separada de mapeamento OpenType de CID esparso, enquanto OpenType identity-CID no Poppler e controles raw esparso CIDFontType0C renderizam corretamente
Readers independentes podem sintetizar a aparência ausente de uma anotação de forma diferente; as aparências geradas explícitas são checadas separadamente do comportamento de fallback de cada reader
Aparências ausentes de anotações também podem reter recursos originais Type1 puro, Type1C e CIDFontType0C pelo caminho original de anotações com fontes raw; entrada OpenType CFF2 usa o backend separado de aparências de default-instance estático com conversão explícita de formato, em vez de embutir CFF2 diretamente num stream de fontes PDF 1.7
Veja HPDFBuildHeadlessTextAppearance e TryGetCompactFontTable