Advances de fuentes estándar

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

Contrato soportado

FamiliaNombres exactamente 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, Latin-1 y los caracteres 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 está 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 de 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 retienen el comportamiento existente de fallback

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

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

Medición y estado de texto

HPDFGetStandardFontWidth realiza un lookup inmutable en la tabla; HPDFMeasureBaseFontWidths combina esos resultados con el backend existente de la plataforma 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 después de resolver el advance; las tablas no agregan kerning automático al texto PDF

Validación y límites de 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, los widths explícitos, un programa TrueType embebido y texto TJ transformado; los orígenes nativos de glifos se comparan con un lector independiente MuPDF

La sonda de advances Unicode verifica las 2,760 entradas de la tabla; 2,756 coinciden con MuPDF, mientras que las cuatro entradas fraction U+2044 de la familia Helvetica retienen el WX 167 del AFM de Adobe y se reportan explícitamente porque MuPDF devuelve el advance 278 similar a slash 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 reporta como una equivalencia cruzada entre lectores que pasa

La aceptación en Windows usa Tests/Delphi/Run-StandardFontMetricsAcceptance.ps1 y además replays de las suites existentes de extracción de texto y widths; la aceptación en 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 reporte independent-proof.json

Base métrica

Los advances son los hechos WX del AFM de 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