Fallback de tipos de letra rich fornecidos

Defina THPDFHeadlessTextAppearanceOptions.FallbackFontFamilies como True para resolver glyphs de rich text em falta a partir das famílias fornecidas a HPDFBuildHeadlessRichTextFamilyAppearance ou SetRichTextFieldValueWithFamilies

O default é False, preservando a seleção estrita de cada família e estilo escritos; o construtor de texto de tipo de letra único não procura outras famílias

Options:= THPDFHeadlessTextAppearanceOptions.Default;
Options.FallbackFontFamilies:= True;
Document.SetRichTextFieldValueWithFamilies(FieldIndex, Runs, Families, Options);

Seleção e shaping

O resolver usa fronteiras completas de graphemes estendidos do Unicode 17 através de runs de estilos escritos adjacentes e costuras de runs vazios dentro de cada parágrafo; uma decisão de famílias nunca divide um surrogate pair, uma sequência de combinação, uma sequência de variação nem um cluster de joiners

Quando o primeiro run afetado fornece FontFamilyCandidates, a ordem declarada dele tem precedência e cada candidato configurado tem de cobrir todas as partes com estilo do grapheme completo; se nenhum se qualificar, aplicam-se as regras abaixo existentes de fallback de famílias selecionadas e de arrays fornecidos

Se os programas selecionados cobrirem o grapheme completo, as famílias escritas deles permanecem em uso; caso contrário o resolver tenta primeiro a família do primeiro run afetado, seguida das famílias fornecidas pela ordem do array, selecionando uma família que cubra todas as partes com estilo do grapheme completo com o programa real correspondente de regular, bold, italic ou bold-italic

Programas de estilos em falta são ignorados como candidatos, enquanto um programa malformado que tenha de ser inspecionado produz um erro tipado de tipo de letra inválido; os controlos de layout e de shaping não exigem glyphs de cmap visíveis; um grapheme que nenhuma família fornecida cubra produz haMissingGlyph

O shaping contextual, a ordenação bidirecional, o posicionamento de marcas entre estilos, o wrap, as quebras explícitas de parágrafos e a rotação de widgets existentes aplicam-se aos runs resolvidos de aparências

Valores e transações

Runs de fallback existem apenas durante a preparação de aparências; os runs de quem chama permanecem inalterados e o documento guarda o valor plain original e a marcação rich escrita em V e RV

Tamanhos tipados em pontos e componentes RGB passam diretamente ao layout de aparências sem serem reconstruídos a partir do valor rich serializado, cuja representação canónica de texto tem a precisão própria dela

Importações FDF e XFDF conscientes de famílias aceitam a mesma opção e mantêm os contratos existentes delas de fontes imutáveis, assinaturas, segurança, no-ops semânticos e publicação

Limites e dependências

O limite agregado de MaxFontBytes conta cada programa de família/estilo inspecionado durante o fallback, incluindo candidatos válidos que acabem por não ser incorporados; a aparência incorpora apenas os estilos selecionados

Os orçamentos existentes de entrada UTF-16, glyphs, objetos e bytes permanecem em vigor, e a resolução pode produzir no máximo 4096 runs com estilo; o cancelamento é verificado durante a seleção de tipos de letra e a cobertura de scalars, bem como durante o layout e a publicação

O shaping complexo mantém as dependências existentes de HarfBuzz e FriBidi; o fallback usa apenas bytes fornecidos de tipos de letra, sem descoberta implícita de tipos de letra do sistema, aliases genéricos, tipos de letra descarregados nem folhas de estilo descarregadas; as listas explícitas ordered de candidatos de tipos de letra mantêm a ordem suportada de famílias CSS inline

As APIs nativas de famílias expõem esta opção; o JSON de Linux de famílias nomeadas aceita a mesma flag opt-in e prepara programas reais de candidatos; o carregamento de fallback por callbacks de Windows permanece trabalho separado

Aceitação

Seis alvos nativos de compiladores passam cada um 199 verificações sobre 30 PDFs guardados e 1098 verificações independentes de valores, tipos de letra incorporados, glyphs, shaping, precisão, linhas e píxeis visíveis; programas reais de tipos de letra parciais e completos cobrem todos os quatro estilos, marcas de combinação entre estilos, ligação árabe, hebraico, joiners suplementares, candidatos ordered de famílias, AES R5/R6, FDF/XFDF, orçamentos tipados e oito checkpoints selecionados de cancelamento incluindo o checkpoint final

Interfaces frescas de C++Builder compilam ambas as arquiteturas; a evidência genuína publicada de glyphs em falta e a prova real bem-sucedida de glyphs de widgets primary/fallback/primary são preservadas separadamente

Famílias nomeadas · Opções de aparências