martes, 18 de octubre de 2011

Obtener colores CMYK desde Inkscape para imprimir con Scribus

Hasta ahora vengo usando la versión estable de Scribus (la 1.3.3.x).
Uno de los principales inconvenientes que se me presentan con ella es el ya conocido hecho de que cuando importo un archivo SVG (creado en Inkscape), trae sus colores en el modelo RGB y los tengo que convertir en Scribus, uno por uno, a CMYK.
Al parecer, encontré una solución que, aunque transitoria, es mucho más eficiente y es el asunto de esta entrada. Y que, además, seguramente haga que me decida, por fin, a empezar a usar ScribusNG, o sea, la versión 1.4.0rc.
Pero antes, si el tema de los perfiles de color le es ajeno, quizás como introducción, le convenga leer otro artículo (de cofreedb) sobre perfiles de color y como instalarlos en un sistema Ubuntu o similar.
Luego de eso, sí, este artículo, que fue escrito en inglés por Alexandre Prokoudine y publicado originalmente el 23 de setiembre en Libre Graphics World (http://libregraphicsworld.org/blog/entry/getting-cmyk-colors-from-inkscape-to-scribus). Aquí les dejo una traducción libre del mismo, hecha por mí:



Muy seguido me preguntan sobre la cuestión de las salidas PDF en CMYK desde Inkscape. Hablemos, entonces, sobre obtener colores CMYK desde Inkscape hacia Scribus para impresión.
En el caso de Inkscape 0.48 veo que mucha gente queda confundida al leer las notas oficiales de lanzamiento, porque encuentran menciones refiriendo al CMYK y no llegan a entender exactamente que es lo que quieren decir. Por eso este artículo.
Primero que nada, permítanme explicar por qué aún no hay separación de colores en Inkscape.
Inkscape utiliza Cairo para el renderizado. Cairo es una gran biblioteca de gráficos vectoriales 2D que le simplifica muchas cosas a los desarrolladores y ofrece alguna aceleración para el renderizado, así como modernos gráficos con antialiasing. El problema con Cairo es que aún no soporta el modelo CMYK, o, para ponerlo en un lenguaje más técnico, aún no soporta gestión del color, separación de colores y tintas directas. Esto no es porque la gente de Cairo no esté interesada en el tema, sino porque no tienen un desarrollador dedicado a eso, considerando el muchísimo trabajo que implica.

Buscándole la vuelta

Entonces ¿se le puede encontrar la vuelta? Me animo a decir que sí. Al tiempo que Inkscape no hace separación de colores (o cualquiera de esos ingeniosos trucos, como el reventado), lo que sí puede hacer es guardar los colores en un perfil de color ICC,  y usted puede definirle qué perfil usar. Luego, se puede importar ese documento SVG desde Scribus, y leerá correctamente sus valores CMYK, si se usó un perfil CMYK.

El único cambio en la versión 0.48 referido a los perfiles de color y, por ende, al modelo CMYK, es que antes de la versión 0.48, sólo los colores uniformes podían usar el espacio de color de un perfil de color ICC. Ahora, con la versión 0.48, las paradas de color de los rellenos degradados también pueden manejarlo.
Aquí está cómo se hace.

Primero 1, asegúrese que sus perfiles están en el directorio ~/.local/share/color/icc 2 .
A continuación, abra Inkscape y vaya a Archivo / Propiedades del documento... (o Mayús+Ctrl+D), allí diríjase a la solapa Gestión de color y de la lista desplegable Perfiles de color disponibles, seleccione uno 3. Luego, pinche en el botón Asociar perfil.



Ahora, dibuje un objeto con relleno, abra el cuadro de diálogo Relleno y borde  (Mayús+Ctrl+F) y vaya a la solapa CMS. En el menú desplegable elija el perfil vinculado previamente en Propiedades del documento... y ¡listo!

 

Lo que pasa aquí es que Inkscape lee el espacio de color desde el perfil de color y utiliza los colores disponibles, creando  auto-mágicamente deslizadores para los canales de color de ese espacio.
Si mira dentro del archivo SVG, verá exactamente esto (vea la porción seleccionada):



Lo que falta ahora es importar el archivo desde Scribus 4 (Archivo > Importar > Get vector file...) y asegúrese que funcionó:


Así que veamos:

Inkscape Scribus
C 0,33000001 32,94 %
M 0,25 25,10 %
Y 0,60000002 60,00 %
K 0,01 0,78 %

¿Por qué esta pequeña diferencia? Tengamos un poquito más de jerga técnica. Inkscape almacena los valores como coma flotante, mientras que Scribus utiliza enteros. Dicho más simple, esas son formas diferentes de almacenar valores, y cuando se pasa de una a otra, se produce algún redondeo en los datos.
Ahora, veamos que sucede si hacemos algo similar, pero sin perfil ICC 5. Primero, los colores estarán en el espacio de color RGB:

 
Lo siguiente que ocurre es que cuando se convierte el color de RGB a CMYK en Scribus los porcentajes que se generan son diferentes a los vistos en el primer caso:



Una cosa más debe ser mencionada aquí. A diferencia de Adobe Illustrator, Inkscape no le hace decidir si va a utilizar RGB o CMYK antes de empezar a trabajar. Como consecuencia, en AI, si se elije CMYK, algunos filtros no se pueden usar. Esto no es un problema en Inkscape, donde, si realmente lo necesita, puede perfectamente mezclar ambos modelos en un mismo documento.

Versiones y limitaciones

Es necesario utilizar, como mínimo, la versión 1.3.5 de Scribus, para que reconozca el perfil de color ICC incluido en un archivo SVG. Es asunto suyo si quiere usar la rama 1.5 (la más inestable de Scribus), pero la actual versión candidata a defnitiva (RC), la 1.4.0rc, ya es lo suficientemente segura.
El soporte para perfiles de color ICC, por el momento, es apenas algo más que un parche burdo, que sólo funciona cuando se usan perfiles de color CMYK en Inkscape. No funcionará con perfiles de color RGB ni LAB. Los desarrolladores de Scribus crearon esta solución temporal específicamente para solucionar el tema de obtener colores CMYK desde un documento SVG y para convertir a los usuarios de Inkscape en personas más felices.
Una cosa más debe ser mencionada en esta sección y es que Scribus no reconoce todas las posibles características de un archivo SVG.

Las dos características principales que no funcionan como se esperaría que lo hicieran son los filtros SVG y el texto.
Como ya se explicó en detalle en un artículo anterior 6, los filtros SVG son efectos pixelares aplicados a información vectorial rasterizada. En Inkscape, se guardan como información textual y se recalculan cada vez que se abre el documento SVG.
Para poder soportar esta característica, Scribus tendría que poder proceder de alguna de las siguientes maneras:
  • renderizar esas descripciones textuales a mapas de bits, guardarlas en algún lugar y vincularse a esos archivos cuando se importara el SVG.
  • tener soporte nativo para filtros SVG. Lo que significaría extender su propio formato de archivo y proveer una interfaz de usuario para editarlos.
Por ahora, la mejor solución para este problema en Inkscape es utilizar el comando Edición / Crear copia en mapa de bits... para todos los objetos que tengan filtros SVG aplicados (la resolución predefinida se puede establecer en el apartado Mapa de bits, del cuadro de diálogo Archivo / Preferencias de Inkscape. Eso incrustará una copia pixelar dentro del documento SVG, que Scribus cargará correctamente. Sólo hay que tener presente que esas imágenes pixelares estarán siempre en sRGB.

El otro tema es el texto. De hecho, son dos temas. Primero, todo el texto será convertido a curvas Bézier, perdiendo toda la información de espaciado entre letras y palabras. Segundo, no importará texto fluido de ninguna forma (esto no debería sorprender dado que no es una característica estándar, pero eso es otra historia). Así que la solución provisoria aquí, otra vez, es convertir en Inkscape todo a trayectos (Trayecto / Objeto a trayecto) para asegurarse de no perder nada.

Simplificando: la importación de archivos SVG funciona mejor con ilustraciones que sólo utilicen rellenos uniformes o degradados, trayectos y mapas de bits incrustados.

Tintas planas o colores directos

Otra consulta que aparece en un porcentaje alto es ¿qué hace Inkscape con respecto a los colores directos?
Los colores directos son, básicamente, nombre fijos de tintas, con una composición fija, de un fabricante fijo. Hay más de 300 fabricantes de catálogos de tintas directas alrededor del globo, siendo Pantone (actualemtne parte de X-Rite) el líder de la industria.
Al tiempo que Inkscape no trae la paleta de colores Pantone, que al parecer mucha gente quisiera que trajera (no lo puede hacer debido a los requisitos de las licencias definidas por Pantone), sí trae un detalle esencial: colores con nombre o "muestras".
Lo que  Inkscape hace es comparar los valores del relleno y el borde del objeto seleccionado con una lista restringida de nombres de colores definidos en la especificación HTML4 referenciados desde la especificación CSS2.
Si esos valores encajan, el nombre del color es usado en la definición del estilo. Esta característica es opcional y viene, en principio, deshabilitada. Para habilitarla, hay que ir a la sección  "Salida SVG" del cuadro de diálogo Preferencias de Inkscape.
Esto realmente no soluciona el tema, especialmente porque los colores directos, de todos modos, tienen que ser enviados al PDF, lo que Cairo aún no puede hacer, pero podría ser un primer paso en dirección a algo mejor de lo que tenemos.

Y es así que llegamos a...

Una posible solución temporal para los colores directos

Se me ocurre una forma de automatizar el uso de colores directos a través de una solución alternativa con Scribus. Lo que se necesita hacer es usar colores con nombre en Inkscape, en lugar del truco de los colores ICC o los valores RGB planos.
Este sería el flujo de trabajo propuesto:
  1. Descargue las paletas Pantone desde el sitio web de Pantone, o simplemente use SwatchBooker.
  2. Guarde la paleta obtenida en el formato GPL (paleta de GIMP) utilizando SwatchBooker.
  3. Utilice los colores con nombre de esta paleta en vez de valores RGB o colores-icc en las definiciones de color de los objetos de su ilustración.
  4. En Scribus cargue la paleta Pantone , de esta manera7 o de esta otra8.
  5. Ejecute un script para importar un documento SVG y coincidir sus colores con nombre con los colores del catálogo Pantone.
  6. Exporte su PDF con colores directos.
Suena un poco horrible, pero debería funcionar correctamente. Lo que se necesita hacer es:
  1. Emparchar Inkscape para que use colores con nombre más allá de los 16 básicos.
  2. Emparchar Inkscape para que permita el uso de colores con nombre al tiempo que se seleccionan de una paleta de muestras.
  3. Crear un script de Scribus para mapear los colores con nombre a los colores Pantone (simple coincidencia de nombres).

Unas pocas cosas más deberían ser mencionadas.
Primero, Tav menciona en su manual que usar colores con nombre puede causar la falla de algunas extensiones. Esto debería ser tomado en consideración.
Otro potencial problema es la compatibilidad. Cualquier lector de archivos SVG que ande en la vuelta no tendría por qué tener pistas de cómo interpretar los nombres de colores arbitrarios de un catálogo Pantone. Sin embargo, esa característica debería estar disponible sólo para gente que realmente sepa lo que está haciendo (si es que existe).
Finalmente, existe un lento pero permanente trabajo de  Jon Cruz en el proyecto Open Swatch Book. Ya hay en Inkscape alguna infraestructura para alcanzar las necesidades de ese proyecto (la paleta de color Auto y el botón  Muestra para agregar colores a ella desde el cuadro de diálogo Relleno y borde), pero va a llevar un tiempo antes que esté pronto.
Entonces, mientras la solución real, por ejemplo salida CMYK nativa y soporte para colores directos, aún no llegue, ¿a alguien le interesa mejorar la compatibilidad entre Inkscape y Scribus teniendo en cuenta los colores directos que, de todos modos, necesitamos?

Muchas gracias a ~suv (de inkscapeforum.com) por sus comentarios específicos sobre la existencia de la implementación de colores con nombre en Inkscape, y a Guillermo Espertino (Gez, de OHWEB) por insistir en ser más específico en relación al trabajo de Jon sobre las muestras.


Notas personales agregadas a la traducción

  1. Antes de esto, creo que debería asegurarse de activar la gestión de color en Inkscape.
  2. Mi instalación de los icc-profiles en Kubuntu estaba en usr/share/color/icc, así que hice una copia de ellos en el camino indicado por este artículo.
  3. En primera instancia seleccioné el perfil ISO-coated, pero luego, en la solapa CMS de la ventana de Relleno y borde, no aparecían las opciones de perfil de color (mostraba <ninguno>). Así que suponiendo que esto se debía a este bug, es que probé con Fotogra27L-CMYK-Coated-Press, y entonces, sí funcionó.
  4. La captura corresponde a Scribus 1.4.0 rc2
  5. En este caso, utilicé Scribus 1.3.3.13svn, que no reconoce perfiles ICC en los SVG.
  6. Se trata de otro artículo de Alexandre Prokoudine, publicado en LGW el 18 de mayo de 2010. La traducción del título del artículo sería Creando efectos de capa en Inkscape.
  7. Se trata de una página en la wiki de Scribus en inglés, cuyo título, traducido al español, sería "Cómo obtener legalmente paletas de colores directos para usar en Scribus 1.3.3.x y posteriores".
  8. Adjunta un script con el que se pueden instalar colores Pantone en Scribus. Funciona con Scribus 1.5.

4 comentarios:

  1. Gran artículo. ¡Muchas gracias por la traducción!

    ResponderEliminar
  2. Gracias por tu ayuda. Estoy consultando por primera vez y me va ser muy útil para imprimir.

    ResponderEliminar
  3. Muchas gracias por la info. De todas maneras no logré hacerlo porque no me muestra esa opción de perfil de color. Tenés idea de por qué sucede? Gracias!

    ResponderEliminar
  4. Hola "Anónimo".
    No queda muy claro cuándo y dónde es que no le "muestra esa opción de perfil de color". Pero, para empezar, ¿activó la gestión de color (http://graphicsuitelibreandalusi.wordpress.com/2011/08/27/activar-la-gestion-de-color-en-inkscape/)? y ¿tiene instalado los perfiles de color?

    ResponderEliminar

Lo que escriba a continuación será revisado antes de publicarse.
Gracias por tus comentarios.