I was researching the options for easy conversion of Matplotlib graphics to print-ready formats (i.e. vector files in cmyk color mode) and found this old thread, but no notice of any later developments.
Now when looking at the files the pdf and svg backends output (using Matplotlib 2.1.2), I noticed that the pdf backend actually does convert gray and black to grayscale colors, which means that Matplotlib pdf:s safely can be used for print output. I was not able to find any documentation about this!
Acrobat preview of Matplotlib pdf where a line specified as
grey is interpreted as 45% process black, texts are 100% proces black:
The svg backend on the other hand outputs the same graphic with text and grey lines as rgb colors.
While this feature of the pdf backend fixes the critical issue of texts printing poorly, it would still be very useful to be able to specify cmyk colors directly as values (even for just vector graphic elements). It is not for instance possible to choose a rgb value that would convert to 100 % cyan.
This might be possible to implement without creating full internal support for cmyk colors, which understandably is complex and in many cases unnecessary. Perhaps something like a separate cmyk color object where the percentages would be applied on export in the backend?
As an aside, R has cmyk output but leaves raster graphics as rgb; also as it is done as a conversion from sRGB it is not possible to define specific cmyk color percentages. https://www.rdocumentation.org/packages/grDevices/versions/3.6.1/topics/postscript