¿Por qué el PDF del informe cambia de letra en otro ordenador?
· Toni Martir, arquitecto de software
Un PDF puede llevar dentro las fuentes con las que se escribió o limitarse a nombrarlas. Si sólo las nombra y el ordenador que lo abre no las tiene, pone otras, y el extracto de facturas que en la empresa se veía impecable le llega al cliente con otra letra.
En Report Manager la solución es generar el informe en PDF/A-3: lleva dentro todas sus fuentes y se ve igual en cualquier ordenador. El PDF 1.4 de siempre sólo viaja igual de bien si se escribe con las fuentes estándar del PDF, que tienen únicamente caracteres latinos; su ventaja es el tamaño, que puede quedar por debajo de 10 KB.
La misma factura, en PDF 1.4 y en PDF/A-3
Medido con la factura de ejemplo de Report Manager, cuatro páginas, generada con printreptopdf 4.0.16 en Linux. En PDF/A-3 llevó dentro DejaVu Sans normal y negrita, que ocupan 760 y 709 KB en el disco: sólo viajaron las letras de las facturas.
Si la fuente no va dentro, se sustituye
La norma del PDF, la ISO 32000-1, permite guardar la fuente en el archivo. Si no va, el PDF guarda sus medidas para que el programa que lo abre pueda «sintetizar una fuente sustituta o elegir una parecida». Según Adobe, la sustituta se estira o se encoge para que líneas y páginas se corten en el mismo sitio, pero la forma de las letras no siempre se parece, y el texto de algunos idiomas sale como una fila de puntos.
PDF 1.4: diminuto, con las fuentes estándar
La norma define 14 fuentes estándar, variantes de Helvetica, Times y Courier más dos de símbolos, que todo programa que lea PDF tiene que tener, o tener sus medidas y unas sustitutas adecuadas. No hace falta incrustarlas, y por eso el archivo ocupa tan poco: la factura de ejemplo, cuatro páginas, se queda en 9 KB. Es la opción cuando importa el tamaño.
El límite son los caracteres. Helvetica, Times y Courier tienen el juego latino estándar de Adobe, que la norma enumera en su anexo D: cabe el español entero, con tildes, eñe y euro, pero no el cirílico, el árabe o el chino. En PDF 1.4, cualquier otra fuente o se incrusta texto a texto o sólo se enlaza, y entonces el ordenador que no la tenga pone otra.
PDF/A-3: todas las fuentes dentro
El PDF/A-3 es la parte 3 de la norma ISO 19005. Su cláusula 6.2.11.4.1, tal como la cita el validador de PDF/A veraPDF, exige incrustar todas las fuentes con las que se dibuja el texto. Y una fuente incrustada no se sustituye: quien abre el PDF ve el texto «en su fuente original», dice Adobe.
Report Manager genera PDF/A-3 desde la versión 3.7.5, de diciembre de 2024: en la configuración de página del informe, opción «PDF A/3». El motor incrusta entonces todas las fuentes, también las que el informe tenía como estándar, y de cada fuente corriente sólo las letras que usa, en Windows y en Linux. La misma factura ocupa 71 KB. La opción se guarda en el informe, así que el PDF sale igual desde el diseñador, desde printreptopdf o desde el servidor web de informes.
Las fuentes de Windows se pueden incrustar en un documento: las preguntas frecuentes de Microsoft lo permiten como «un caso especial», si el programa sigue las reglas de los formatos de fuente. Lo prohibido es copiarlas a un servidor, como conté al hablar del informe que se descoloca en un servidor Linux.
Entonces, ¿por qué cambia de letra?
Porque el PDF sólo nombra la fuente y el ordenador que lo abre no la tiene. Con PDF/A-3, Report Manager incrusta todas las fuentes y el informe se ve igual en cualquier ordenador; el PDF 1.4 con fuentes estándar queda para cuando importa más el tamaño que los caracteres.
Fuentes
- ISO 32000-1:2008, la norma del PDF, en la copia que publica Adobe: apartado 9.8.1, «These font metrics provide information that enables a conforming reader to synthesize a substitute font or select a similar font when the font program is unavailable.»; apartado 9.6.2.2, «The PostScript names of 14 Type 1 fonts, known as the standard 14 fonts, are as follows: Times-Roman, Helvetica, Courier, Symbol, Times-Bold, Helvetica-Bold, Courier-Bold, ZapfDingbats, Times-Italic, Helvetica-Oblique, Courier-Oblique, Times-BoldItalic, Helvetica-BoldOblique, Courier-BoldOblique» y «These fonts, or their font metrics and suitable substitution fonts, shall be available to the conforming reader.»; anexo D.1, «D.2, "Latin Character Set and Encodings", describes the entire character set for the Adobe standard Latin-text fonts. This character set shall be supported by the Times, Helvetica, and Courier font families»; la tabla D.2 incluye Ñ, ñ, las vocales con tilde, ¿, ¡ y el signo del euro.
- Adobe, Font embedding and substitution in PDFs with Distiller: «When you embed fonts, you prevent font substitution, ensuring readers see the text in its original font.»; «The substitution fonts can stretch or condense to fit, maintaining line and page breaks from the original document.»; «The substitution cannot always match the shape of the original characters, especially with unconventional typefaces like scripts.»; «Fonts from some languages or with unknown encodings cannot be substituted. In such cases, the text appears as bullets in the file.»
- veraPDF, reglas de PDF/A-2 y PDF/A-3, regla 6.2.11.4.1-1, especificaciones ISO 19005-2:2011 e ISO 19005-3:2012: «The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9.»
- Microsoft, Font redistribution FAQ, apartado «Document embedding»: «Although the redistribution of fonts supplied with Windows is generally not allowed, “document font embedding” is a special case which is allowed in some circumstances.», «If an application follows the rules and restrictions defined in the OpenType or TrueType specification, you can use it to embed Windows supplied fonts in any document file it creates.» y «You may not copy them to other computers or servers».
- Report Manager: novedades de la versión 3.7.5, «Version 3.7.5 include this new features December 2024 PDF/A3 conformance at page setup»; salida a PDF, «The engine is faster and the file is smaller if you use standard Type 1 fonts (Courier/Times/Helvetica)» y «You can use TrueType font linking if you know the destination computers have the font installed.»; instalación en Linux, «libharfbuzz-subset0 (the PDF embeds only the characters used from each font)».
- Medición propia, 1 de noviembre de 2026: la factura de ejemplo de Report Manager
(
samples/invoices.rep, cuatro facturas de una página) generada con printreptopdf 4.0.16 en Linux ocupa 9.386 bytes en PDF 1.4, sin ninguna fuente incrustada, y 70.864 bytes con la opción PDF A/3, con DejaVu Sans y DejaVu Sans Bold incrustadas como subconjunto.
Toni Martir, arquitecto de software · · fuentes comprobadas el