Advances de fuentes estándar

El texto PDF simple cargado sin /Widths usa los advances horizontales de las core fonts de Adobe para los caracteres soportados, evitando el desfase acumulativo de posiciones cuando un sustituto instalado tiene métricas distintas

Contrato soportado

FamiliaNombres exactos aceptados
HelveticaHelvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique
TimesTimes-Roman, Times-Bold, Times-Italic, Times-BoldItalic
CourierCourier, Courier-Bold, Courier-Oblique, Courier-BoldOblique

Cada face tiene 230 entradas Unicode decodificadas: ASCII imprimible, caracteres Latin-1 e imprimibles definidos de Windows-1252, más la i sin punto, Lslash, lslash, caron, breve, dotaccent, ring, ogonek, hungarumlaut, fraction, fi y fl

U+00A0 usa el advance del espacio y U+00AD usa el advance del guion; U+00B5 es el micro sign de Latin-1, mientras que la letra griega U+03BC queda fuera de la tabla

El byte 39 crudo de StandardEncoding decodifica a U+2019 quoteright; el byte 39 de WinAnsi decodifica a U+0027 quotesingle, que tiene un advance Helvetica distinto

Los nombres con prefijos de subset, los aliases como Arial o Courier New, las capitalizaciones distintas, Symbol, ZapfDingbats, los caracteres de control, las letras griegas y el resto de Unicode no soportado conservan el comportamiento de fallback existente

Los /Widths explícitos del PDF se preservan, incluidos los advances deliberadamente personalizados; los programas de fuentes y los mapas de encoding permanecen separados de estas tablas, y un fixture TrueType embebido con anchuras explícitas está cubierto por los tests de aceptación

Estos son solo advances horizontales; no suministran contornos de glifos, bounding boxes, métricas verticales, shaping de ligaduras ni kerning, y un renderer puede seguir pintando con un sustituto instalado mientras posiciona el texto a partir de los advances estándar

Medición y estado de texto

HPDFGetStandardFontWidth realiza una búsqueda inmutable en la tabla; HPDFMeasureBaseFontWidths combina esos resultados con el backend de plataforma existente cuando un lote contiene caracteres de fallback

El intérprete de contenido sigue aplicando el tamaño de fuente, Tc, Tw, Tz, los ajustes TJ, las matrices de texto y la transformación de gráficos tras resolver el advance; las tablas no añaden kerning automático al texto PDF

Validación y límites con lectores independientes

La aceptación enfocada construye 15 páginas PDF reales que cubren las 12 faces, las comillas y ligaduras de StandardEncoding, la puntuación y el texto acentuado de WinAnsi, anchuras explícitas, un programa TrueType embebido y texto TJ transformado; los orígenes de glifos nativos se comparan con un lector MuPDF independiente

La sonda de advances Unicode comprueba las 2.760 entradas de la tabla; 2.756 coinciden con MuPDF, mientras que las cuatro entradas U+2044 fraction de la familia Helvetica conservan el AFM WX 167 de Adobe y se informan explícitamente porque MuPDF devuelve el advance 278, similar a la barra, para ese carácter

La comparación compartida de geometría PDF usa caracteres en los que el lector independiente coincide; la diferencia de fraction no se informa como una equivalencia cruzada de lectores superada

La aceptación de Windows usa Tests/Delphi/Run-StandardFontMetricsAcceptance.ps1 y además reproduce las suites existentes de extracción de texto y anchuras; la aceptación de Linux nativo usa Tests/Linux/Run-StandardFontMetricsAcceptance.sh con overrides FPC_EXE, PYTHON_EXE y HPDF_LINUX_OUTPUT

Todas las ejecuciones suprimen el lanzamiento de lectores externos y emiten logs nativos, tablas de advances, coordenadas de glifos, una vista previa renderizada y un informe independent-proof.json

Base métrica

Los advances son los hechos AFM WX de las core fonts de Adobe en 1/1000 em; la convención de coordenadas y métricas está documentada en la especificación Adobe Font Metrics