I'm trying to unpick the chain of operations which result in output from the printer, specifically to understand colour management.
My creation tool of choice is CorelDraw. It offers ample colour control, with the ability to specify colours in RGB, CMYK, HSL, etc etc. An output document file can be RGB or CMYK (I'm not sure about others), or separations. However, sending output to a printer (in my case a SOHO Epson colour inkjet) is another matter entirely.
From an examination of the Epson programming manual, and a cursory glance at the data sent to the printer, there is nothing more sophisticated at that end than instructions to print a micro-fine raster of dots in CMYK, purely binary (either a dot in a particular ink or combination of inks, or no dot - nothing in between). Ignoring K (see footnote), that's just 8 possible combinations (colours), so all the subtlety must result from combining the effect of groups of dots.
So, what does the blending? Is this a function of the driver, or of CorelDraw? It makes sense for it to be the driver, but that raises the question what data CorelDraw is sending to the driver.
Does anybody know how that part works, or tell me how to intercept it, or find information about it?
Footnote: RGB, CMYK, etc
RGB (red, green, blue) are the additive primaries as used by TV displays etc. Ink on a page is subtractive - the light reflected has colours absorbed (subtracted) from it by the ink, and the primaries used in process printing are CMY (cyan, magenta, yellow). When there is no ink on the page you get white, while C M and Y together (theoretically) absorb the whole spectrum and should therefore appear black.
This isn't perfect though, and as quite a lot of printing is black (which would use up a lot of C M and Y ink), a fourth ink K ("key", or black) is added to the mix. Colours which would need a mix of C M and Y together, instead eliminate whichever is the weakest of C M or Y and replace that with K, including a corresponding reduction in the remaining two inks.
When specifying a colour by CMYK, the four values are in the range 0-100 (representing an integer percentage). As discussed, only a maximum of three of those four channels isn't zero, so the maximum number of colours representable in the CMYK palette is 101x101x101 = 1,030,301 (minus a few because if K = 100 the other channels are irrelevant... does that make it 1,020,100? - not sure).
That's a factor of 16 fewer than the number of possible colours in 8-bit RGB: 256x256x256 = 16,777,216
My ultimate aim is to produce a colour chart of every distinct colour the printer is capable of producing, and I could "just" create a series of test pages in CorelDraw with a square of every colour code in the CMYK (or RGB) gamut, but
- It's prohibitive to do that manually, I'm looking for a way to specify colour by script;
- There's every chance the printer can't reproduce the full spectrum, and a chance the output process doesn't even send the whole spectrum;
- Even if I had 16x32 (512) colour patches on a page, the CMYK gamut would require 2040 pages to print!
It makes sense to restrict the gamut to (say) 4096, and knowledge of the limitations inherent in the output process will help define what those 4096 colours should be.