Aparências default nativas de FreeText

O fallback nativo de FreeText aplica o estado delimitado de default appearance ao texto gerado, layout, fitting automático e decorações

Uma aparência normal fornecida tem precedência sobre a geração a partir da default appearance de FreeText e do rich text

Operadores de default appearance

OperadoresComportamento de fallback
TfSeleciona o recurso de tipo de letra original e o tamanho de texto; tamanho zero pede fitting automático delimitado
g rg kInicializa a cor de preenchimento de texto em gray, RGB ou CMYK
Tc Tw TzAplica character spacing, word spacing e escala horizontal de texto à pintura e às medições de layout
Ts TLAplica text rise e separação explícita de baseline, incluindo leading zero ou negativo
TmAceita no máximo uma matriz; a sua parte linear transforma o texto gerado, enquanto o layout da anotação determina o posicionamento
TrSeleciona modos de pintura de glifos e de clipping de texto de zero a sete
G RG K w J j M dInicializa cor de stroke, largura, cap, join, miter e estado de dash para texto e decorações geradas

Os operandos de translação da matriz são validados mas não substituem o posicionamento de FreeText dentro do retângulo da anotação

A escala horizontal pode ser zero ou negativa; rise, spacing e a matriz linear participam na geometria transformada de glifos, advances e decorações

Este é um perfil delimitado de default appearance, não um interpretador geral de content streams de PDF; operadores não suportados, contagens de operandos inválidas, valores malformados e matrizes de texto repetidas produzem um erro de rendering

Componentes de cor de stroke têm de estar na gama de zero a um, valores de cap e join têm de ser inteiros de zero a dois, a largura tem de ser não negativa e o limite de miter tem de ser pelo menos um

Um dash array pode conter no máximo 256 valores finitos não negativos e um array não vazio tem de conter um valor positivo; um array vazio seleciona strokes sólidos, um array ímpar repete-se e a phase tem de ser não negativa

Layout, wrapping e posicionamento

O alinhamento de FreeText usa advances visíveis para posicionamento à esquerda, centro ou direita; espaços finais codificados e os seus mapeamentos de origem permanecem presentes quando o stream gerado retém esses fragmentos

Wrapping por fronteira de palavras e quebras duras de parágrafos têm tratamento separado; um espaço não separável não se torna um separador soft ASCII comum

O caminho original de raw fonts retém as suas regras delimitadas de wrapping de espaços e hífenes; este conjunto de aceitação não estabelece todos os casos de quebra de linha Unicode, bidirecional ou shaping complexo

O retângulo físico da anotação, os bounds do Form raiz e o clip interior permanecem fixos; bounds temporários de Forms filhos contabilizam a cadeia completa de antecessores e posicionamento

Pintura de glifos e clipping de texto

TrPintura de glifosContribuição de clip
0FillNenhuma
1StrokeNenhuma
2Fill e strokeNenhuma
3Sem pintura de glifosNenhuma
4FillContornos de glifos
5StrokeContornos de glifos
6Fill e strokeContornos de glifos
7Sem pintura de glifosContornos de glifos

Os modos de quatro a sete acumulam contornos de glifos entre runs gerados num objeto de texto; o clip de texto acumulado aplica-se depois desse objeto de texto a decorações sublinhadas e tachadas geradas subsequentes

O clip usa contornos de glifos em vez da silhueta expandida do stroke; o estado de pintura permanece específico de cada run e o âmbito de graphics state envolvente limita o tempo de vida do clip

O estado inicial de stroke do DA é aplicado no âmbito raiz de decorações e também em âmbitos de texto; overrides por run e save/restore de graphics state retêm o seu significado

Os quatro casos positivos de clipping são um gate de aceitação separado com aparências two-run escritas à mão, decorações clipadas positivas e amostras brancas fora da união de glifos

Esse gate também usa uma testemunha de preenchimento de retângulo de aparência explícita para testar clipping de texto no backend; a testemunha não afirma que a geração de aparência em falta emite o preenchimento do retângulo

A validação independente de leitores para Tr4 a Tr7 positivos passou os quatro casos finitos two-run com MuPDF 1.28.5 oficial e Poppler, incluindo interiores de ambos os glifos, decorações clipadas e amostras brancas fora da união de glifos

A revisão de testes separada só de clip usa Scale4 para selecionar células de píxeis completas de pontos testemunha inalterados no espaço da página; retém os limiares de cor originais e deixa a renderização normal45 no Scale1

MuPDF 1.28.2 tem um problema de compatibilidade de clipping bounds quando uma mudança de cor faz flush de um run antes de um run posterior no mesmo objeto de texto; o run anterior pode ser excluído dos clipping bounds acumulados

O CLI oficial do MuPDF 1.28.5 e o Poppler afixado independentemente aceitaram estas aparências inalteradas; versões de leitores e controlos finitos positivos permanecem distintos de uma garantia para todo o pipeline de rendering

Fitting automático

Um tamanho de tipo de letra DA zero inicia uma pesquisa delimitada de encolhimento e refinamento a partir do layout gerado inicial, usando paths de glifos transformados, advances e decorações em vez de apenas uma altura de linha não transformada

A expansão de stroke inclui o suporte transformado conservador de cantos com cap quadrado tracejado e joins em miter

A pesquisa retém a quantização de paths estabelecida de Cairo e FreeType; não promete o maior tamanho ideal de tipo de letra matematicamente nem hinting idêntico entre leitores

Se nenhum trial cabe antes de a pesquisa delimitada alcançar o seu trial mínimo, o clip físico ainda limita a publicação; conteúdo muito longo não tem garantia de permanecer totalmente visível

Tipos de letra originais e limites de recursos

Fallback original Type1C, CIDFontType0C incorporado e Type1 puro já é suportado; paths completos de aparências de default instance OpenType CFF e CFF2 retêm as suas regras documentadas de mapeamento e incorporação

Streams CFF2 raw standalone e seleção de coordenadas de variação não default permanecem fora do path CFF2 lançado

Limites de tokens, objetos, memória de trabalho, operação, dados descodificados e saída aplicam-se a parsing, recursos temporários, fitting e publicação; o cancelamento é consultado durante trabalho delimitado

A falha preserva o grafo da fonte e permite recuperação no mesmo documento; alcançar um limite não transforma uma aparência parcialmente gerada num resultado bem-sucedido

Aceitação reproduzível e fronteiras restantes

A suíte pública é Tests/Linux/AnnotationDefaultAppearance/RunAnnotationDefaultAppearance.py, distribuída com os seus assets e um manifesto completo de arquivo

O modo normal dela corre 45 pares candidate/handwritten-AP com diferença máxima de canal dois, sete grupos originais de limites e geometria contínua original-AP independente com epsilon 1e-6

Renders positivos de leitores original-AP e observações conhecidas de células verticais de píxeis são registados separadamente da geometria contínua; nem a igualdade de pares nem essas observações finitas provam geometria arbitrária de candidates gerados ou envelopes de raster transformados arbitrários

O modo finite-AP verifica seis controlos affine e dash retidos de aparência explícita; não substitui a aceitação normal, verificações de candidates gerados nem testes de limites

As 45 aparências geradas retidas passaram geometria contínua independente com epsilon 1e-6; as suas 90 imagens de leitores MuPDF e Poppler afixadas também passaram um modelo independente de imagem completa sobre todas as 3.168.000 células de píxeis com diferença máxima de canal zero, nenhuma imagem ignorada e nenhuma célula excluída

Esse modelo finito deriva glifos, transformações, clipping, strokes e composição esperados das aparências originais escritas à mão e dos contornos de tipos de letra, usando o kernel FreeType afixado de cada leitor; não aprende píxeis esperados das imagens observadas

A diferença máxima de canal original continua dois e o limiar de tinta continua 245; estas passagens cobrem o corpus retido e pipelines afixados, não tipos de letra arbitrários, todos os builds de renderers nem uma prova do maior tamanho ajustado matematicamente

Targets FPC de Linux e Windows exigem FPC 3.3.1 ou mais recente; Windows FPC usa um build privado de dependências NoGUI verificado separadamente e nenhum launch de leitor de desktop

Tópicos relacionados: fallback de anotações, decorações de anotações, run spacing de rich text, aparências originais de raw fonts e aparências de default instance OpenType CFF2