Advances de fontes padrão
Texto PDF simples carregado sem /Widths usa os advances horizontais das core fonts da Adobe para caracteres suportados, prevenindo drift cumulativo de posições quando um substituto instalado tem métricas diferentes
Contrato suportado
| Família | Nomes exatos aceitos |
|---|---|
| Helvetica | Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique |
| Times | Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic |
| Courier | Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique |
Cada face tem 230 entradas Unicode decodificadas: ASCII imprimível, Latin-1 e caracteres imprimíveis definidos do Windows-1252, mais dotless i, Lslash, lslash, caron, breve, dotaccent, ring, ogonek, hungarumlaut, fraction, fi e fl
U+00A0 usa o advance de espaço e U+00AD usa o advance de hífen; U+00B5 é o micro sign do Latin-1, enquanto o U+03BC grego está fora da tabela
O byte 39 raw de StandardEncoding decodifica para U+2019 quoteright; o byte 39 de WinAnsi decodifica para U+0027 quotesingle, que tem um advance Helvetica diferente
Nomes com prefixos de subset, aliases como Arial ou Courier New, capitalização diferente, Symbol, ZapfDingbats, caracteres de controle, letras gregas e outro Unicode não suportado retêm o comportamento existente de fallback
/Widths explícitos do PDF são preservados, incluindo advances deliberadamente customizados; programas de fontes e mapas de encoding permanecem separados destas tabelas, e um fixture TrueType embutido com widths explícitos é coberto pelos testes de aceitação
Estes são apenas advances horizontais; eles não fornecem contornos de glyphs, bounding boxes, métricas verticais, shaping de ligaduras nem kerning, e um renderer ainda pode pintar com um substituto instalado enquanto posiciona o texto a partir dos advances padrão
Medição e estado de texto
HPDFGetStandardFontWidth faz um lookup imutável em tabela; HPDFMeasureBaseFontWidths combina esses resultados com o backend de plataforma existente quando um lote contém caracteres de fallback
O interpretador de conteúdo continua aplicando tamanho da fonte, Tc, Tw, Tz, ajustes TJ, text matrices e a transformação de gráficos depois de resolver o advance; as tabelas não adicionam kerning automático ao texto PDF
Validação e fronteiras de readers independentes
A aceitação focada constrói 15 páginas PDF reais cobrindo todas as 12 faces, aspas e ligaduras de StandardEncoding, pontuação e texto acentuado de WinAnsi, widths explícitos, um programa TrueType embutido e texto TJ transformado; as origens nativas dos glyphs são comparadas com um reader independente MuPDF
A sonda de advances Unicode checa todas as 2.760 entradas da tabela; 2.756 concordam com o MuPDF, enquanto as quatro entradas de fraction U+2044 da família Helvetica retêm o Adobe AFM WX 167 e são reportadas explicitamente porque o MuPDF retorna o advance 278 tipo barra para aquele caractere
A comparação compartilhada de geometria PDF usa caracteres em que o reader independente concorda; a diferença da fraction não é reportada como uma equivalência aprovada entre readers
A aceitação do Windows usa Tests/Delphi/Run-StandardFontMetricsAcceptance.ps1 e também reproduz as suítes existentes de extração de texto e widths; a aceitação nativa do Linux usa Tests/Linux/Run-StandardFontMetricsAcceptance.sh com overrides FPC_EXE, PYTHON_EXE e HPDF_LINUX_OUTPUT
Todas as execuções suprimem a chamada de readers externos e emitem logs nativos, tabelas de advances, coordenadas de glyphs, um preview renderizado e um relatório independent-proof.json
Base métrica
Os advances são os fatos AFM WX das core fonts da Adobe em 1/1000 em; a convenção de coordenadas e métricas está documentada na especificação Adobe Font Metrics