Aparências de default-instance OpenType CFF2
Os builders nativos de aparências plain, rich, shaped e de famílias aceitam uma fonte OpenType OTTO completa contendo contornos CFF2 nas coordenadas default de variação dela
A fonte original permanece sendo a origem do mapeamento de caracteres Unicode, índices de glyphs, advances horizontais e shaping; o HarfBuzz resolve os contornos da default-instance dela, incluindo contornos selecionados através de múltiplos dicionários de fontes
O builder converte cada glyph num programa estático CFF 1 indexado por CID e embute como FontFile3 com Subtype CIDFontType0C, uma coleção Adobe Identity, e CIDs iguais aos índices originais dos glyphs
O encoding gerado, os widths e o mapeamento ToUnicode retêm a identidade original dos glyphs e as sequências lógicas Unicode, incluindo caracteres suplementares, ligaduras e combining marks
Isso produz um programa de fontes PDF 1.7 usando as estruturas CFF 1 descritas pela ISO 32000-1:2008 9.7 e 9.9; não embute CFF2 diretamente num stream de fontes PDF
Uma biblioteca HarfBuzz da arquitetura correspondente expondo hb_font_draw_glyph e callbacks de desenho imutáveis é exigida, inclusive para texto sem shaping; essas APIs estão disponíveis desde o HarfBuzz 7, e HOTPDF_HARFBUZZ_LIBRARY seleciona uma biblioteca explícita
O shaping complexo também usa a dependência FriBidi existente e o contrato existente de advances inteiros na escala 1000; advances ideais não quantizados no unitsPerEm original são uma limitação separada de precisão
Aparências editáveis exigem permissão de embutimento installable ou editable; a geração de aparências read-only permite permissão preview-and-print, enquanto permissões restritas e somente bitmap permanecem rejeitadas
No-subsetting retém cada glyph original no programa convertido, incluindo glyphs não usados; a conversão muda o formato do programa de fontes e não promete retenção byte a byte do container OpenType original
O programa convertido usa um nome primário distinto e retém os avisos legíveis de copyright e licença mais os bytes originais da name table
Os bounds de fonte de origem, buffer de trabalho, layout da fonte completa, tamanho de objetos, agregado de fontes rich, cancelamento e rendering nativo são checados antes da publicação; programas de missing glyphs malformados permanecem erros, enquanto glyphs vazios válidos são retidos
A saída Type 2 tem precisão de coordenadas 16.16 e deltas de operands delimitados, no máximo 65.535 glyphs, e no máximo 65.535 bytes por programa de glyph
Tabelas raw CFF2 independentes, streams diretos de fontes CFF2 em recursos existentes de default-appearance de PDFs, seleção de eixos de variação não default e layout de texto complexo mais amplo ficam fora deste backend
Entrada existente de OpenType CFF 1 continua usando o backend de aparências compactas, enquanto recursos de anotações embutidos Type1, Type1C e CIDFontType0C usam o fallback original de fontes raw
TryGetCFF2FontTable é uma consulta delimitada de capability de formato, e não validação completa de contornos ou permissões