Inkscape Brasil

Siga-nos no Twitter Siga-nos no Identi.ca
Versão Estável 0.91 Baixe Agora!

Tópicos Pais: Artigos

Especificação para Desenvolvimento do Suporte a CMYK

Essa especificação usa como base o que já foi feito no Desenvolvimento TEIA.

Inkscape CMYK

Situação atual

O Inkscape desde suas primeiras versões torna possível ao desenhista escolher as cores numa escala de CMYK, mas no arquivo é registrado apenas o valor RGB. Na figura abaixo temos um desenho simples que usa valores de cor puros e combinados.


O problema

Na tela, vemos cores diferentes das cores que são impressas no papel. Note no desenho anterior que embora a pétala em ciano, por exemplo, estivesse em 100% de tinta, o tom de azul que aparece na tela não condiz com o que apareceria no papel (não é igual à tinta "ciano"). Note abaixo essa diferença entre o que é visto na tela e o que é impresso no papel. A figura é exatamente a mesma e as cores (os valores de tinta) são exatamente as mesmas.

Isso se torna mais evidente quando tentamos importar um arquivo que suporta CMYK (como por exemplo, os arquivos de CorelDRAW, em PDF e em PS). Todas as cores são interpretadas apenas como RGB. Assim podemos perceber que o Inkscape ignora o CMYK, a base de seu sistema de cores é baseado em RGB. Na realidade, isso não é um "defeito", afinal o Inkscape é um editor de arquivos SVG, especificado originalmente para a web. A especificação de representação de cores do SVG já suporta CMYK e outros modelos de representação. Como o Inkscape está sendo usado por um número cada vez maior de profissionais gráficos (que trabalham com impressão), necessita-se que o Inkscape possa guardar e exportar cores em CMYK.

Como é de se esperar, como os dados de cores CMYK internamente não são considerados, nenhuma saída de arquivo (SVG, PNG, PDF) possui valores em CMYK. Isso não é regra, pois mesmo um valor RGB pode ser convertido em CMYK. O Inkscape poderia entender, por exemplo, que 00ff00ff é o mesmo que C=100%, M=0%, Y=100%, K=0%.

Em uma imagem CMYK cada pixel contem 4 componentes, cada componente é uma quantidade (em % de tinta) de Cyan, Magenta, Amarelo e Preto.


O Que Queremos?

Essa especificação pretende definir como deve funcionar o suporte a CMYK no Inkscape para uso profissional, na perspectiva do designer e da gráfica. (Bug base: InkBug:170366 - Bug Relacionado: InkBug:178232)


Do Que o Artista Precisa?

Visualização baseada no perfil usado

Visualizar as cores dentro dos limites de representação do perfil de cor usado, desta forma na exportação não haveria dúvidas do modo de saída do arquivo.

Deve possuir opção para selecionar o modo de cor do documento em que estamos trabalhando. Isso pode ser feito estendendo o dialogo de gerenciamento de cores. Mocaps de exemplo:

     
Deve ser simples, pois vamos dar sáida para gráfica ou monitor, então CMYK e RGB são suficientes.
-- Cezar Farias

Sistemas de Gerenciamento de Cor (CMS)

Atualmente o inkscape usa LCMS como gerenciador, mas existem outros:

Um perfil de cor para a visualização de CMYK genérico

Quando CMYK genérico for selecionado no gerenciamento de cores, um perfil CMYK genérico deve ser usado para mascarar (e converter) as cores presentes na ilustração.

Solução Proposta

Criar um arquivo ICC para este fim. Podemos estudar o padrão dos perfis CMYK e descrever uma definição que aparente ser a representação ideal.

Opções de visualização da separação de cores para impressão (Parcialmente implementado)

Dúvida: o que significa a opção "Sobrepor o preto" ? --Juca

Resposta: Sobrepor o preto significa que a tinta preta vai cair em cima de qualquer coisa em que ele esteja em cima. Significa que os elementos em que o preto cai em cima não vão vazar numa separação, mas serão impressos como se não existisse o preto. No exemplo da flor, como você pode notar quando "Sobrepor o preto" estiver selecionado, o "miolo" das pétalas, que é preto, não vai ser considerado nas outras separações. Essa é uma estratégia de impressão (usada em especial em serigrafia) para não haver problema de encaixe caso uma arte estiver algumas frações de milímetro fora do enquadramento padrão. Novamente citando o exemplo da flor, se o preto não estiver sobreposto e se alguma pétala 'sair do lugar' na hora de imprimir, haverá uma área branca em que nem o preto nem a cor da pétala vai cair. Última observação: o preto cai em cima de qualquer outra cor, se sobressai acima de qualquer outra cor. --Jonatã

Hoje (11 dez 2009) eu implementei um novo modo de visualização que faz essa previsão das separações de cores. Ele ainda não está terminado. Na versão de hoje (bzr 8882) dá pra fazer a separação de cores para preenchimento e traço de curvas de cores sólidas, texto e blur. Ainda não funciona com filtros, gradientes e imagens importadas. --Juca

Ao usar o diálogo CMYK, a cor CMYK deve ser aplicada como CMYK genérico (IMPLEMENTADO)

Toda vez que uma cor for definida usando-se o diálogo de cores CMYK, a cor deve ser registrada com CMYK não calibrado (CMYK genérico), independente do profile ou modo de cor selecionado. Ou seja, assim como o RGB sempre é registrado, o CMYK também deve ser caso o usuário demonstre esse interesse usando o diálogo apropriado.

Solução Proposta

CMYK não calibrado é definido com device-cmyk, veja a especificação (InkBug:444021). Basta registrar esse atributo sempre que o diálogo de CMYK for usado. Exemplo:
  <circle fill="#CD853F device-cmyk(0.11, 0.48, 0.83, 0.00)"/>

Comecei a implementar isso hoje. Um suporte inicial está na revisão 8873 do bzr. A partir de hoje, o Inkscape já é capaz de ler e salvar as coordenadas device-gray, device-rgb, device-cmyk e device-nchannel em arquivos SVG, mas isso ainda não está mapeado nos color-pickers da janela "Preenchimento e Traço". Este é o próximo passo... big grin --Juca

Pronto! Tá lá na revisão 8875 do bzr. Se vc usar a aba CMYK, as informações de cor CMYK serão guardadas no SVG usando a notação device-cmyk e estas proporções de tinta serão carregadas corretamente no color picker cmyk ao abrir o arquivo. --Juca 07Dez2009

Dúvida: podemos ter mais de um device-color no mesmo objeto? O que acontece se eu ajustar a cor na aba cmyk, e depois reajustar na aba rgb? O que fica salvo no arquivo? --Juca

Resposta: Em múlti-modo o valor anterior com device-* e tudo deve ser perdido para manter a consistência, mas se seguirmos a proposta de Leon que eu temperei smile não teremos essa preocupação para documentos onde um modo foi selecionado. -- Aurium

Indicação de que a cor selecionada está fora do gamut (IMPLEMENTADO)

Um ícone na interface de seleção de cor indicando cor fora do gamut.

Implementei isso na versão de desenvolvimento. Para testar, experimentem a versão compilada a partir da revisão 8869 (ou posterior) do repositório bzr. --Juca

Ícone de Status "Há Algo Fora do Gamut"

Um ícone na barra de status pode notificar que algum elemento tem cor fora do gamut. Útil para quando mudamos o perfil com o trabalho feito ou quando importamos ilustrações. Ao clicar neste ícone os elementos com cor fora do gamut são selecionados para que o usuário decida o que fazer.

Selecionar Modo de Rendering Intent na Escolha do Perfil

Quando uma cor sai do gamut é preciso escolher uma estratégia de representação da mesma. Os dois caminhos são:

O LCMS, que já faz parte do Inkscape, é capaz de fazer esse trabalho, mas o usuário deve escolher a estratégia. Essa escolha deve estar junto a escolha do perfil do documento.

Modo de Visualização Rendering Intent

O usuário pode habilitar ou desabilitar a visualização com Rendering Intent para ver o resultado final do seu trabalho.

Indicação de que a cor selecionada está sobrecarregada (IMPLEMENTADO)

Um ícone na interface de seleção de cor indicando mistura está sobrecarregada. Em certas misturas uma quantidade grande de tinta pode ser usada para atingir uma certa cor e isso pode encharcar o papel, deixa-lo ondulado e pior, desalinhar a impressão. Alguns textos indicam que a soma limite das porcentagens das cores não deve ultrapassar o valor 320.

Exemplo: C:100% + M:100% + Y:100% + K:50% = 350 = sobrecarga.

Dúvida: 320% é o valor limite apenas para CMYK? Ou essa regra vale para outros sistemas de cor também?

Implementei isso na versão de desenvolvimento. Para testar, experimentem a versão compilada a partir da revisão 8870 (ou posterior) do repositório bzr. --Juca

Resposta: O valor limite de 320% vale apenas para CMYK, por causa do próprio método de impressão offset: o papel passa por quatro rolos de impressão, e a cada passada, é acrescentada uma camada de tinta. Se todas as cores forem carregadas a 100%, as camadas ficam muito grossas, e a impressão acaba saindo borrada ao final do processo. 320% é um valor de segurança. Um exemplo de aplicação deste limite é o chamado "preto calçado", usado em grandes áreas chapadas de preto: ele é composto apenas de 100%K e 30 a 40%C. Apenas 100%K gera um preto lavado; o acréscimo de uma porcentagem de ciano faz com que o preto seja percebido como mais escuro. Não se calça preto com magenta ou amarelo porque tons frios tendem a parecer mais escuros - aí, a cor fria usada no calço é o ciano.

Outros sistemas de cor não necessitam destas limitações, pois eles não serão representados por pigmentos, apenas por luz (como no monitor do computador). Toda vez que a cor tiver que ser representada em impressão offset a quatro cores (a mais comum), ela vai ser representada pela escala CMYK.

Mais informação sobre a impressão offset -- Main.SilMarques - 06 Dec 2009

Paletas CMYK

Precisamos de paletas em CMYK (InkBug:171262) e que apliquem seu valor em device-cmyk. Sabemos que o Scribus tem paletas em CMYK.

Solução Proposta

Aparentemente a paleta GPL (herdada do GIMP) pode suportar CMYK modificando-se o parametro Columns no cabeçalho.

Exportação de Bitmap em CMYK

O formato TIFF (InkBug:492402) dá o mesmo suporte que aproveitamos no PNG (canal alfa) e suporta CMYK. TIFF pode ser compactado com algorítimos não destrutivos como o PNG ou com destrutivos como o JPG. (Especificação, Referência simplificada)

JPG também possui suporte a CMYK, então a adição desse formato pode ser considerada.

(Desconsidere a idéia de usar GIF)

Soluções Propostas

Usar LCMS para aplicar ICC. Isso pode ser usado para exportar em:

Usar CMYKTool, que converte RGB > CMYK, ICC > ICC, e faz analise da imagem.

Usar ImageMagick, que suporta CMYKA (CMYK + Alfa) e pode auxiliar o processo. Exemplo de conversão pela linha de comando:

convert teste-rgba.tiff -colorspace CMYK teste-cmyka.tiff
A conversão foi feita com sucesso usando ImageMagick 6.5.1 e confirmada com o Krita.


Suporte a TIFF CMYKA na ilustração

É preciso permitir que o usuário insira imagens CMYK (e preferencialmente com canal alfa) editadas externamente, ou seja é preciso ter suporte a incorporação de TIFF CMYKA no Inkscape.

Imagem TIFF para exemplo (criada com ImageMagick): cores-cmyka.tiff


Do Que a Gráfica Precisa?

Perfil de cor e representação CMYK no PS, EPS e PDF

(InkBug:171214 e InkBug:171630)

PS e EPS suportam perfil de cores? Se não: CMYK não calibrado

Soluções Propostas

  1. Implementar suporte CMYK no Cairo e usar o método já existente no Inkscape.
    • Qual a viabilidade desse caminho? O que o projeto Cairo já fez nesse sentido?
       
  2. Usar ReportLab e ImageMagick para desenvolver uma extensão para exportar PDF em CMYK.
    • Aparentemente já podemos fazer o PDF em CMYK hoje (incluindo a conversão de imagens embutidas), mas isso significa escrever um tradutor completo de SVG para PDF e a grande dificuldade está na quantidade de atributos possíveis.
       
  3. Usar o UniConvertor para gerar o PDF. Certamente ele precisa entender device-cmyk e ICC.
    • Consideração importante: Os elementos com filtros não representáveis no PDF devem ser pré rasterizados antes de enviar ao UniConvertor.
  4. Usar Ghostscript para gerar os arquivos PDF em CMYK.

As marcas de impressão geradas automaticamente devem estar em CMYK

Essa é uma correção necessária para a extensão printing-marks.

Solução Proposta

Basta definir as cores com device-cmyk.


Referências

Perfis de Cor

Soluções


Como Você Pode Ajudar

Você pode ajudar a definir o que deve ser feito ou detalhar o que já foi escrito. Para editar esta página você deve se cadastrar neste wiki.

Seria muito bom para acompanhar o desenvolvimento e ajudar na listagem das melhorias no Inkscape se cada ponto nesta especificação fosse vinculada a um bug no traker do Inkscape. Então reporte esses pontos e coloque o link para o bug report ao lado do mesmo nesta página.

Duvidas? Pergunte na lista de discussão.



CMYK1Add my vote for this tag cor1Add my vote for this tag ICC1Add my vote for this tag create new tag

ArtigoForm edit

Título Especificação para Desenvolvimento do Suporte a CMYK
Autor Comunidade Inkscape Brasil
Data 03/12/2009
rev 47 em 22 Oct 2010 por AurelioAHeckert
Editar Anexar Versões Mais...

Todo material do sítio Inkscape Brasil é propriedade do grupo Inkscape Brasil e pode ser reproduzido livremente, desde que permaneça livre e a fonte seja citada, seguindo os termos da licença Creative Commons (by-sa).

Inkscape é um Software Livre, distribuido sobre Termos GNU-GPL.

eXTReMe Tracker
Inkscape - Open Source vector graphics editor SVG - Scalable Vector Graphics TableLess - Coerência, Simplicidade e Acessibilidade no código HTML Esse documento é XHTML 1.0 Valido! Esse documento contém CSS-2 Valido! Debian - GNU/Linux TWiki - Ambiente Web Colaborativo Colivre - Cooperativa de Tecnologias Livres