I am required to produce charts in PDFs in CMYK colorspace. However, when I do that, my shiny green color looks very unshiny in the CMYK PDF:
pdf(file = paste0("tmp-shiny-green-cmyk.pdf"), width = 4, height = 4, colormodel = "cmyk")
plot(1, 1, pch = 16, cex = 5, col = "#00ff66")
dev.off()
Below is the screenshot of how does the PDF display in Adobe Acrobat Reader. The color is much less shiny ("#00A88E"):

The ?pdf help page says:
"cmyk" outputs in CMYK colorspace. The simplest possible conversion from sRGB to CMYK is used (https://en.wikipedia.org/wiki/CMYK_color_model#Mapping_RGB_to_CMYK).
But it doesn't seem to be the case.
I thought that perhaps because the RGB colorspace is larger than CMYK, my shiny color was out of the range. But, when I try to convert my RGB to CMY, it seems in range:
require(colorscience)
RGB2CMY(t(col2rgb("#00ff66")))
# C M Y
# red 1 0 0.6
So, where is the problem? Is it a bug of the pdf() device in R? Or is there any other gotcha with the color systems? Could this be some chaos stemming from the difference between Adobe RGB and sRGB? (Although I don't know why this should apply with colormodel = "cmyk").
PS: this guy seem to have similar experience, no answer there.
TERMS
RGB is an additive color model, used on displays and mobile devices.
CMYK (print), YCM or CMY (film) are subtractive color models.
A colorspace is a subset of a color model, a colorspace gives specific specifications for the "primaries" and transfer curves or gamma, etc.
sRGB and Adobe RGB and Display P3 are examples of three different RGB colorspaces.
Gamut is the size (volume) of a given colorspace.
Primaries refer to the specific colors used in a colorspace. There is no set of three or four real colors that can be mixed to create a gamut that encompasses all of human vision. A colorspace that covers the entire human gamut requires the use of imaginary colors that can not be created, and only exist as a math construct.
Shiny usually refers to something with specular highlights. In the present question, what is being asked seems to be more the perceptual quality of "brightness" or of "lightness/darkness".
ANSWER
The gamut of a CMYK model colorspace is not only a different size, it is a different shape relative to an RGB model colorspace.
Colorspaces such as sRGB or Adobe RGB are larger than most CMYK spaces in the RGB primaries of red, green, and blue. But as you can see in the chromacity diagram below, the GRACoL CMYK space is larger than sRGB in the cyans.
So now ask yourself, what happens when full sRGB green is converted to a generic CMYK space? And then, what happens when that CMYK is transformed back to sRGB for viewing on a display?
Since a full
#00ff66green does not exist in the example CMYK space, it needs to either be clipped, or mapped from sRGB to a green in CMYK. There are many different methods of mapping between color models and colorspaces, each with different uses and compromises.Once converted to CMYK, with whatever mapping used, when displaying on sRGB it will need to be converted/mapped again. It should be easy to see how such conversions can have cumulative errors and unexpected results.
Mapping
With the above background then, I noticed the following line in the docs references in the question:
Well, that's ominous. That seems to imply that there is no real mapping going on, colors may simply be clipped, or perhaps there is some mapping, but it would not seem to be particularly perceptual.
The choice of colorspace in the PDF document is also important, as CMYK colorspaces vary greatly from each other, as they are most often LUTs for each profiled output device.
While R does have some colorspace utilities, skimming over the docs I don't see any sort of color management engine that is dedicated to mapping between spaces or using ICC profiles. But that's essentially what is needed — if the PDF() function does not have some perceptual or colorimetric mapping available, then the next choice would be to first convert to CMYK using some mapping utility, then sending it to the PDF as CMYK.