dompdf no muestra algunos de los caracteres latinos

Estoy usando la última versión estable de 0.6 dompdf pero no puedo mostrar algunos caracteres latinos, veo que la documentación es por ahora de ingresos.

Hasta ahora estoy tratando de usar la fuente Open Sans, incluso la he convertido a formato afm, pero aún se muestran algunas pantallas con? en lugar de nuestros caracteres latinos ‘č, ć, đ, ž’.

La fuente se descarga como ttf y la definición de fuente se agrega al archivo dompdf_font_family_cache.dist.php de la siguiente manera:

'open sans' => array ( 'normal' => $rootDir . '/lib/fonts/OpenSans', ), 

La salida de contenido html al navegador hace que estos caracteres estén bien. ¿Hay alguna solución oficial, porque load_font.php falta o debería actualizarse a 0.7-beta y usar @ font-face en su lugar?

Codificación de caracteres

La encoding predeterminada de un documento PDF es Windows ANSI (1) . Esta encoding proporciona compatibilidad limitada de juegos de caracteres que no incluye los caracteres especificados en la pregunta (č, ć, đ, ž). Entonces, aunque el texto es técnicamente codificado en latín, la encoding específica que admite esos caracteres ( ISO-8859-5 ) no es la misma que la proporcionada por defecto en documentos PDF ( Windows-1252 , también conocido como Windows ANSI, que es prácticamente ISO -8859-1 ).

Métricas de fuente

Teniendo en cuenta el problema de la encoding de caracteres, tomó el enfoque correcto para agregar soporte para sus personajes al cargar una fuente . Sin embargo, los medios por los cuales lo ha hecho no le darán los resultados esperados. Dompdf (cuando se utiliza el backend CPDF) utiliza métricas de fonts para determinar cómo diseñar el texto de un documento. Las métricas de fonts vienen en dos formas, AFM (Adobe Font Metrics) y UFM (Unicode Font Metrics). Estas dos formas corresponden a las dos codificaciones posibles admitidas por dompdf, Windows ANSI y Unicode. El hecho de que las métricas de su fuente estén en formato AFM indica a dompdf que la fuente está codificada como ANSI de Windows.

Cargando fonts

Si bien puede modificar el archivo dompdf_font_family_cache.dist.php, no se recomienda. Como ese archivo se incluye como parte de la distribución, cualquier actualización que realice podría sobrescribir el archivo. Al utilizar cualquiera de los métodos admitidos de carga de fonts, dompdf creará un archivo llamado dompdf_font_family_cache.php para almacenar la información del nombre / ubicación de sus fonts personalizadas. Si desea ajustar su información de fuente personalizada lo haría en este archivo. Este archivo normalmente se almacena junto con los archivos TTF y AFM asociados con las fonts personalizadas (no necesariamente en el directorio dompdf / lib / fonts … dependiendo de su configuración).

Recomendaría no editar manualmente dompdf_font_family_cache.php. Más bien usaría las reglas CSS @font-face para definir y cargar fonts si no fuera por ninguna otra razón de facilidad de uso. Si te inclinas a utilizar una herramienta de línea de comandos para precargar tus fonts, el script load_font.php aún se incluye en las versiones 0.6.x de dompdf (no estoy seguro de por qué piensas lo contrario). Si desea pasar a 0.7.0, puede encontrar una versión actualizada del script load_font.php en el proyecto dompdf-utils .

Por último, si continúa teniendo problemas, siempre puede intentar usar una de las fonts DejaVu incluidas (disponible comenzando con dompdf 0.6.0).


(1) OK, sí, hay algunas codificaciones posibles. Pero en su mayor parte puede considerar Windows ANSI como el predeterminado.