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íliaNomes exatos aceitos
HelveticaHelvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique
TimesTimes-Roman, Times-Bold, Times-Italic, Times-BoldItalic
CourierCourier, 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