I've been thinking about this some more, and in fact I think it's documented behavior. In the SDK Adobe says that a text field cannot have transparent text, and if you try to set it to transparent, it will be made black instead.
Now, CMYK 0,0,0,0 is, in fact, the same as 100% transparent, since it's just another way of saying "No Ink!".
So I guess Acrobat considers that (correctly) as an attempt to make the text transparent, and so sets it to black.
That's a good point. However, when you run this code it returns true:
color.equal(["CMYK", 0,0,0,0], color.white)
And this code returns false:
color.equal(["CMYK", 0,0,0,0], color.transparent)
So internally, CMKY 0,0,0,0 is considered identical to white, not to transparent, which is its own object.
I like your idea but I don't agree. In PDF there is a concept of "overprint". To oversimplify: when overprint is ON, a value of 0.0 does not mark a plate. So 0,0,0,0 is indeed transparent. When overprint is OFF, the unused plates are set to white - knocking out what was there before.
Overprint is off by default. Otherwise, a cyan object would be blue if it happened to overlap a magenta background.
I would hope overprint is off for annotations (unless there is a control)?
No I don't have a counter proposal, sadly.
But you can try values of 0.001 or 0.01 to see if it is different.
I tried that, and it indeed works. You get an almost-white color.
Even 0.0001 seems to work.
I'll settle for color.white or ["G", 1] which also does the trick.
I take the point about color.equals and also about the overprint.
Perhaps it is a bug, then, or maybe despite the valid point about
overprint, Acrobat still considers 0,0,0,0 transparent.