[cairo] Subtractive API, part 0

ecir hana ecir.hana at gmail.com
Thu Jan 28 17:30:06 PST 2010

> ... what happens if you draw with a cmyk(0,0,1,1) brush with 50% opacity?

cmyk(0, 0, 0.5, 0.5), as you already found out.

> Definitely not. It's a yellow black...

You are right, cmyk(0, 0, 1, 1) != rgb(0, 0, 0). Sorry for the confusion.

> ignoring the color meaning of CMYK values is just not useful

I don't agree. In practise, sometimes it happens that you just know
nothing about the CMYK values, sometimes it happens that you know all
about the CMYK values. Sometimes, you get some design manual stating
just some values for a logotype and all you could possible do is to
type those values in. Or sometimes you get a picture not tagged with a
profile and all you can do is to let it print out. On the other hand,
sometimes, you know precisely well what you are about going to do, you
know the paper and you want rich black. 40% 30% 30% 100% rich black.

> I am hopeful that there will be a day when people understand that "half magenta" is not a color.

Interesting. Do you believe there is "full magenta"?

Perhaps the confusing part of this thread is CMYK. Because it might be
tempting to want to see it on the screen, therefore converting it to
other color space and even more tempting is to do it right, i.e. via
color management. But that was not my intention - the only thing this
proposal is about is the ability to define multiple spot colors in
Cairo. Therefore, if I may kindly ask you to stop thinking "CMYK" for
a while a to think "spot color" instead.

If you were reading the "DeviceN" part at the very top, did it make
sense to you? Do you think it is ok to define one empty DeviceN and to
subsequently add named colors to it, perhaps some with multiple
fallbacks? Do you think it covers the usual situations? What is
missing for your use case? If you were in need to define a spot color
standing for matte varnish would the above functions be convenient for
you to use? I still struggle with how to take the pixel values of
single-channel image and print a golden color as if they were its tint
values - perhaps there is a need for function which loads data stream
coupling it to a certain DeviceN? Something like:

cairo_image_surface_create_for_data_devicen(*data, format, devicen,
width, height, stride)

Finally, I certainly don't want to talk about CMS (at least not for
now) but if in the above was one additional function, say:

cairo_devicen_add_spot_color_srgb_icc(*devicen, *name, red, green,
blue, profile, table)

would you consider it useful? I mean, is the above extensible in your
opinion? What exactly would you need to put in "profile" and "table"?

More information about the cairo mailing list