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 appearance normal fornecida tem precedência sobre a geração a partir da default appearance de FreeText e do rich text
Operadores de default appearance
| Operadores | Comportamento de fallback |
|---|---|
Tf | Seleciona o recurso de fonte original e o tamanho de texto; tamanho zero pede fitting automático delimitado |
g rg k | Inicializa a cor de preenchimento de texto em gray, RGB ou CMYK |
Tc Tw Tz | Aplica character spacing, word spacing e escala horizontal de texto à pintura e às medições de layout |
Ts TL | Aplica text rise e separação explícita de baseline, incluindo leading zero ou negativo |
Tm | Aceita no máximo uma matriz; sua parte linear transforma o texto gerado, enquanto o layout da anotação determina o posicionamento |
Tr | Seleciona modos de pintura de glifos e clipping de texto de zero a sete |
G RG K w J j M d | Inicializa 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 da 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 precisam estar na faixa de zero a um, valores de cap e join precisam ser inteiros de zero a dois, a largura precisa ser não negativa e o limite de miter precisa ser pelo menos um
Um dash array pode conter no máximo 256 valores finitos não negativos e um array não vazio precisa conter um valor positivo; um array vazio seleciona strokes sólidos, um array ímpar se repete e a phase precisa ser não negativa
Layout, wrapping e posicionamento
Alinhamento de FreeText usa advances visíveis para posicionamento à esquerda, centro ou direita; espaços finais codificados e seus mapeamentos de origem permanecem presentes quando o stream gerado retém esses fragmentos
Wrapping por fronteira de palavra e quebras duras de parágrafo têm tratamento separado; um espaço não separável não vira um separador soft ASCII comum
O caminho original de raw fonts retém suas regras delimitadas de wrapping de espaço e hífen; esse conjunto de aceitação não estabelece todo caso 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 interno permanecem fixos; bounds temporários de Forms filhos contabilizam a cadeia completa de ancestrais e posicionamento
Pintura de glifos e clipping de texto
Tr | Pintura de glifos | Contribuição de clip |
|---|---|---|
| 0 | Fill | Nenhuma |
| 1 | Stroke | Nenhuma |
| 2 | Fill e stroke | Nenhuma |
| 3 | Sem pintura de glifos | Nenhuma |
| 4 | Fill | Contornos de glifos |
| 5 | Stroke | Contornos de glifos |
| 6 | Fill e stroke | Contornos de glifos |
| 7 | Sem pintura de glifos | Contornos de glifos |
Modos de quatro a sete acumulam contornos de glifos entre runs gerados em um objeto de texto; o clip de texto acumulado se aplica após esse 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 escopo de graphics state envolvente limita o tempo de vida do clip
O estado inicial de stroke do DA é aplicado no escopo raiz de decorações e também em escopos de texto; overrides por run e save/restore de graphics state retêm 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 appearance explícita para testar clipping de texto do backend; a testemunha não afirma que a geração de appearance faltante emite o preenchimento do retângulo
Validação independente de readers 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 somente-clip usa Scale4 para selecionar células de pixel completas de pontos testemunha não alterados no espaço da página; ela 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 flusha 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 fixado independentemente aceitaram essas aparências inalteradas; versões de readers e controles finitos positivos permanecem distintos de uma garantia para todo pipeline de rendering
Fitting automático
Um tamanho de fonte DA zero inicia uma busca 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 quadrático tracejado e joins em miter
A busca retém a quantização de paths estabelecida de Cairo e FreeType; ela não promete o maior tamanho ideal de fonte matematicamente nem hinting idêntico entre readers
Se nenhum trial cabe antes de a busca delimitada alcançar 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
Fontes originais e limites de recursos
Fallback original Type1C, CIDFontType0C embutido e Type1 puro já é suportado; paths completos de appearance de default instance OpenType CFF e CFF2 retêm suas regras documentadas de mapeamento e embedding
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 decodificados e saída se aplicam a parsing, recursos temporários, fitting e publicação; o cancelamento é pollado durante trabalho delimitado
A falha preserva o grafo da origem e permite recuperação no mesmo documento; alcançar um limite não transforma uma appearance parcialmente gerada em um resultado bem-sucedido
Aceitação reproduzível e fronteiras restantes
A suíte pública é Tests/Linux/AnnotationDefaultAppearance/RunAnnotationDefaultAppearance.py, distribuída com seus assets e um manifesto completo de arquivo
O modo normal dela roda 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 readers original-AP e observações conhecidas de células verticais de pixel são registrados separadamente da geometria contínua; nem 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 checa seis controles affine e dash retidos de appearance explícita; ele não substitui aceitação normal, checks de candidates gerados nem testes de limites
As 45 appearances geradas retidas passaram geometria contínua independente com epsilon 1e-6; suas 90 imagens de readers MuPDF e Poppler fixadas também passaram um modelo independente de imagem completa sobre todas as 3.168.000 células de pixel com diferença máxima de canal zero, nenhuma imagem pulada 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 fontes, usando o kernel FreeType fixado de cada reader; ele não aprende pixels esperados das imagens observadas
A diferença máxima de canal original continua dois e o limiar de tinta continua 245; essas passagens cobrem o corpus retido e pipelines fixados, não fontes arbitrárias, 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 reader 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