This report is due to the discussion from a bug scrub meeting about 688068. This issue is being separated from that bug report since it is only a side issue to that report. Bug 688068 was caused by changes made by Stefan to get ROPs working for GhostPCL. However the change is not compatible with the requirements for proper operation of overprinting. Current versions of Ghostscript use the encode_color and decode_color device procedures for converting between color values and the device's pixel encoding (gx_color_index values). These procedures were added with version 8.0. This version brought in support for more than Gray, RGB, and CMYK process color model. This version also brought in support for overprinting. Prior to 8.0, pixel encoding was done via either the map_rgb_color/map_color_rgb or map_cmyk_color/map_color_cmyk device procedure pairs. To maintain compatiblity with older devices which do not have the the encode_color/decode_color device procedures, the older procedures may be used instead. ROPs require that all calculations be done in an RGB color space. Stefan's changes made the 'decode_color' routine return RGB for the bitcmyk device. This works for ROPs but not for overprinting. Previous disccussions have suggested that the way to procede on this issue is to make the old map_color_rgb procedure always be logically present. This procedure is not currently prsent for most CMYK devices. Thus a new default procedure needs to be created that will work for these devices. The biggest part of this task is testing devices.
This problem should be fixed by implementing the rop compositor. A partial implementation was removed in rev 8447. If this were done it would not be necessary to support the old color mapping functions as suggested in the description above.
Bug still reproducible in Ghostscript 9.03
Into "Laterland"