Avanços canónicos de tipos de letra standard

Texto PDF simples carregado sem /Widths usa avanços horizontais de core fonts Adobe para carateres suportados, evitando desvio cumulativo de posições quando um substituto instalado tem métricas diferentes

Contrato suportado

FamíliaNomes exatos aceites
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 descodificadas: ASCII imprimível, Latin-1 e carateres imprimíveis definidos de Windows-1252, mais i sem ponto, Lslash, lslash, caron, breve, dotaccent, ring, ogonek, hungarumlaut, fraction, fi e fl

U+00A0 usa o avanço de espaço e U+00AD usa o avanço de hífen; U+00B5 é o micro sign do Latin-1, enquanto o Grego U+03BC está fora da tabela

O byte 39 bruto de StandardEncoding descodifica para U+2019 quoteright; o byte 39 de WinAnsi descodifica para U+0027 quotesingle, que tem um avanço de Helvetica diferente

Nomes com prefixos de subsets, aliases como Arial ou Courier New, capitalização diferente, Symbol, ZapfDingbats, carateres de controlo, letras Gregas e outro Unicode não suportado mantêm o comportamento existente de fallback

/Widths PDF explícitas são preservadas, incluindo avanços deliberadamente personalizados; programas de tipos de letra e mapas de encodings permanecem separados destas tabelas, e uma fixture TrueType incorporada com larguras explícitas é coberta pelos testes de aceitação

Estes são apenas avanços 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 de avanços standard

Medição e estado de texto

HPDFGetStandardFontWidth realiza uma consulta imutável a tabelas; HPDFMeasureBaseFontWidths combina esses resultados com o backend existente de plataformas quando um lote contém carateres de fallback

O intérprete de conteúdo continua a aplicar tamanho de tipo de letra, Tc, Tw, Tz, ajustes TJ, matrizes de texto e a transformação de gráficos depois de resolver o avanço; as tabelas não acrescentam kerning automático a texto PDF

Validação e fronteiras de leitores 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, larguras explícitas, um programa TrueType incorporado e texto TJ transformado; as origens nativas de glyphs são comparadas com um leitor independente MuPDF

A sonda de avanços Unicode verifica 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 mantêm o WX 167 do AFM Adobe e são reportadas explicitamente porque o MuPDF devolve o avanço de barra 278 para esse caráter

A comparação partilhada de geometria PDF usa carateres em que o leitor independente concorda; a diferença de fractions não é reportada como uma equivalência transleitora bem-sucedida

A aceitação de Windows usa Tests/Delphi/Run-StandardFontMetricsAcceptance.ps1 e também reproduz as suítes existentes de extração de texto e de larguras; a aceitação nativa de Linux usa Tests/Linux/Run-StandardFontMetricsAcceptance.sh com overrides de FPC_EXE, PYTHON_EXE e HPDF_LINUX_OUTPUT

Todas as execuções suprimem o lançamento de leitores externos e emitem registos nativos, tabelas de avanços, coordenadas de glyphs, uma pré-visualização renderizada e um relatório independent-proof.json

Base métrica

Os avanços são os factos WX do AFM de core fonts Adobe em 1/1000 em; a convenção de coordenadas e de métricas está documentada na especificação Adobe Font Metrics