que estoy tratando de hacer que el contenido del PDF a un contexto de dispositivo GDI (un mapa de bits de 24 bits para ser exactos). Analizar el flujo de PDF en objetos PDF y renderizar los comandos PDF del diccionario de contenido funciona bien, incluida la representación de fuentes.alterar una fuente TrueType incrustada por lo que será usado por Windows GDI
fuentes incrustadas se descomprimen sus corrientes fontfile y "cargado" usando AddFontMemResourceEx
. Ahora, algunas fuentes incrustadas eliminan algunas tablas TrueType que necesita GDI, como la tabla 'nombre'. Debido a esto, traté de modificar la fuente analizando la fuente del subconjunto TrueType en sus tablas y modificar aquellas tablas que tienen datos faltantes/las tablas que faltan se regeneran con la información más correcta posible.
use la herramienta de Microsoft Font Validator para ver cómo "corregir" la fuente generada es. Todavía obtengo algunos errores, como para la tabla maxp, los valores máximos suelen ser demasiado grandes (es un subconjunto) o el campo xAvgCharWidth
no es igual al valor calculado de la tabla 'OS/2' no es correcto, pero esto no detener el uso de otras fuentes incrustadas. Las fuentes incrustadas con PDFCreator son las que son problemáticas.
Preguntas:
- ¿Cómo puedo determinar lo que necesito cambio en el archivo de fuente con el fin de GDI para poder usarlo?
- ¿Hay otras herramientas de validación de fuentes que me puedan dar una idea de en lo que todavía está mal con el archivo de fuentes ?
Si es necesario: puedo hacer que un archivo de fuentes original y un archivo de fuentes modificado estén disponibles para su descarga en alguna parte.
¿Qué modificaciones se realizan hasta el momento:
- Asegúrese de que hay una 'cabeza', 'hhea', 'maxp' y la sección 'OS/2'.
- Si tenemos una fuente de símbolo, elimine los campos Panose y Unicode en la sección 'OS/2'
- Complete los valores correctos para WInAscent/Desc y TypoAsc/Desc si son cero.
- Complete los valores aceptables para las posiciones y tamaños super/subíndice/subrayado.
- Escanee todos los glifos que quedan para completar los valores X/Y min/max en la cabeza.
- Reconstruye la sección de nombre con información del archivo PDF de donde vino.
PDFCreator se basa en Ghostscript para producir el PDF. La entrada de PDFCreator es PostScript, que (en Windows) generalmente se origina como salida de un controlador de impresora PostScript (la mayoría de las veces, el controlador PS de Adobe). Entonces, la pregunta es: ¿tienes el control total de tu flujo de trabajo? ¿O tiene que procesar archivos PDF generados por un PDFCreator en algún lugar, en algún momento fuera de su control? Si tiene el control total, puede configurar su flujo de trabajo de PDFCreator para incrustar las fuentes TrueType originales utilizadas por el formato de documento original (no PostScript), en lugar de hacer que el flujo de trabajo convierta las fuentes a PS Type1. –
@pipitas: Los archivos PDF de origen se consideran "fuera de nuestro control". Actualmente tenemos una guía que dice: al usar PDFCreator, no use fuentes incrustadas. La razón principal por la que * realmente * quiero resolver este problema es la plena comprensión de los requisitos de carga de fuentes TrueType en Windows. Si puedo usar GDI para dibujar mi texto, puedo evitar depender de otros dlls, bibliotecas con sus licencias y problemas de patentes, etc. Pero al final me gusta mucho resolver este tema molesto aunque ahora está más abajo en la lista de prioridades debido a la directriz. –
Bueno, si su problema ocurre principalmente con la salida de PDFCreator, pero no se le permite "arreglar" la causa de ese problema en su raíz (mediante una estúpida pauta que dice "No haga para sus archivos PDF lo que todos los esfuerzos recientes de estandarización [ PDF/X, PDF/A] recomendado [a saber, incrustando fuentes]! ", Entonces estoy perplejo ... –