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
| Familia | Nombres exactamente aceptados |
|---|---|
| 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 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