Fallback de fontes rich fornecidas

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

O default é False, preservando a seleção estrita de cada família e estilo autorados; o builder de texto de fonte única não busca 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 extended graphemes do Unicode 17 através de runs autorados adjacentes de estilos e costuras de runs vazios dentro de cada parágrafo; uma decisão de família nunca divide um surrogate pair, sequência combinante, sequência de variação nem cluster de joiners

Quando o primeiro run afetado fornece FontFamilyCandidates, a ordem declarada dele tem precedência e cada candidato configurado precisa cobrir cada parte estilizada do grapheme completo; se nenhum se qualifica, as regras existentes de fallback de família selecionada e array fornecido abaixo se aplicam

Se os programas selecionados cobrem o grapheme inteiro, suas famílias autoradas permanecem em uso; caso contrário, o resolver primeiro tenta a família do primeiro run afetado, seguida das famílias fornecidas na ordem do array, selecionando uma família que cubra cada parte estilizada do grapheme completo com o programa real correspondente regular, bold, italic ou bold-italic

Programas de estilos ausentes são ignorados como candidatos, enquanto um programa malformado que precise ser inspecionado produz um erro tipado de fonte inválida; controles de layout e shaping não exigem glyphs de cmap visíveis; um grapheme que nenhuma família fornecida cobre produz haMissingGlyph

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

Valores e transações

Runs de fallback existem apenas durante a preparação de aparências; os runs do chamador permanecem inalterados, e o documento armazena o valor simples original e a markup rich autorada em V e RV

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

Imports FDF e XFDF cientes de famílias aceitam a mesma opção e retêm seus contratos existentes de origem imutável, assinaturas, segurança, semantic no-op e publicação

Limites e dependências

O limite agregado de MaxFontBytes conta cada programa família/estilo inspecionado durante o fallback, incluindo candidatos válidos que acabam não sendo embutidos; a aparência embute 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 estilizados; o cancelamento é checado durante a seleção de fontes e a cobertura de scalars, além de durante o layout e a publicação

O shaping complexo retém as dependências existentes de HarfBuzz e FriBidi; o fallback usa apenas bytes de fontes fornecidas, sem descoberta implícita de fontes do sistema, aliases genéricos, fontes baixadas nem style sheets baixados; as listas explícitas ordered de candidatos de fontes retêm a ordem suportada de famílias inline CSS

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

Aceitação

Seis alvos nativos de compiladores passam cada um por 199 checagens sobre 30 PDFs salvos e 1098 checagens independentes de valores, fontes embutidas, glyphs, shaping, precisão, linhas e pixels visíveis; programas reais subset e de fontes completas cobrem todos os quatro estilos, combining marks entre estilos, junçã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 C++Builder frescas compilam nas duas arquiteturas; evidências genuínas publicadas de missing-glyph e a prova real bem-sucedida de glyphs de widget primary/fallback/primary são preservadas separadamente

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