Report Manager
ENES

← Todos los articulos

¿Por qué el informe se descoloca cuando lo genera un servidor Linux?

· Toni Martir, arquitecto de software

Cada noche, un servidor genera en PDF el listado de facturas del mes y se lo envía a cada comercial. En el PC con Windows donde se diseñó, el informe sale perfecto: un cliente por línea, los importes alineados. Generado en un servidor Linux, sale con nombres cortados, importes partidos en dos líneas y una página de más. Nadie ha tocado el informe ni la base de datos.

Ha cambiado la fuente, el tipo de letra: el informe pide Arial o Calibri, el servidor no la tiene y escribe con otra que ocupa más. Se arregla sin rediseñar nada, aunque la solución obvia, copiar la fuente de Windows al servidor, está prohibida.

El servidor pone otra fuente sin avisar

Arial, Calibri y Times New Roman son fuentes de Microsoft. De Arial, su ficha dice que va «exclusivamente incluida» con productos y servicios de Microsoft. Un servidor Linux no la trae.

Cuando un programa pide en Linux una fuente que falta, quien elige la sustituta es fontconfig, la pieza de Linux que escoge las fuentes. Según su documentación, busca la más parecida entre las instaladas: «siempre devuelve una fuente», sin garantizar que «se parezca en nada» a la pedida. El PDF sale igual, sin error ni aviso.

Lo he probado dejando sólo la familia DejaVu, la que el paquete de fontconfig en Debian pide en primer lugar: Arial y Calibri se convierten en DejaVu Sans, y Times New Roman en DejaVu Serif.

Unos milímetros por línea

Un informe coloca cada dato en una casilla de medida fija, pensada para su fuente. A 9 puntos, «Suministros Industriales del Levante, S.A.» ocupa 59 milímetros en Arial y 66 en DejaVu Sans: en una columna de 60 ya no cabe. Según cómo esté hecha la casilla, el texto se corta, pisa la columna de al lado o salta de línea y empuja hacia abajo lo que sigue, hasta que el listado necesita otra página.

La fuente que pide el informe y la que pone el servidor

Arial Sin sustituta instalada, el servidor pone DejaVu Sans
DejaVu Sans: un 11–14 % más ancha Liberation Sans: mismo ancho
Calibri Sin sustituta instalada, el servidor pone DejaVu Sans
DejaVu Sans: un 23–26 % más ancha Carlito: mismo ancho
Times New Roman Sin sustituta instalada, el servidor pone DejaVu Serif
DejaVu Serif: un 25–27 % más ancha Liberation Serif: mismo ancho
Courier New Sin sustituta instalada, el servidor pone DejaVu Sans Mono
DejaVu Sans Mono: un 0,3 % más ancha Liberation Mono: mismo ancho

Medido en Ubuntu 26.04 con cinco textos de factura: dos nombres de cliente, un importe, un número de albarán y un rótulo. Las fuentes de Microsoft se midieron a través de su sustituta, que ocupa lo mismo. Courier New apenas cambia porque en las dos fuentes todas las letras tienen el mismo ancho.

Copiar la fuente de Windows está prohibido

Las preguntas frecuentes de Microsoft sobre sus fuentes son claras: salvo para incrustarlas en un documento, las fuentes de Windows no se pueden copiar «a otros ordenadores o servidores». El derecho a instalar la original en un servidor se compra aparte; para muchas, Microsoft remite a Monotype.

Lo práctico es una sustituta que ocupe lo mismo letra a letra. Las fuentes Liberation están hechas para medir lo mismo que Arial, Times New Roman y Courier New, y Carlito, lo mismo que Calibri. Cambia un poco el dibujo de las letras, pero no su ancho. Las dos familias usan la licencia SIL Open Font License, que permite usarlas, incrustarlas en un PDF y redistribuirlas sin pagar por ellas, con condiciones como no venderlas sueltas.

El informe se queda como está: fontconfig ya tiene apuntadas esas parejas en su tabla de familias equivalentes y, con la sustituta instalada, la elige sola. Si el programa que genera los PDF usa fontconfig, la orden fc-match Arial dice qué fuente pondrá el servidor. Si contesta DejaVu Sans, el informe saldrá descolocado.

Entonces, ¿por qué se descoloca?

Porque al servidor le falta la fuente con la que se diseñó el informe, y escribe sin avisar con otra que no mide lo mismo. Se arregla dándole una fuente con los mismos anchos: la original, comprando el derecho a instalarla en un servidor, o una sustituta libre como Liberation o Carlito.


Reportman Server, el servidor de Report Manager en Docker, ya trae sustitutas con las mismas medidas que Arial, Times New Roman, Courier New, Arial Narrow, Calibri y Cambria, admite tus fuentes en su carpeta fuentes/ y enseña cuáles ve el motor en Servidor → Diagnóstico → Fuentes. Con printreptopdf, el servidor web de informes o una aplicación propia hecha con el motor, las sustitutas se instalan en el servidor y el motor las elige con fontconfig (documentación en inglés).

Fuentes

Toni Martir, arquitecto de software · · fuentes comprobadas el