If I create a document with a checkbox annotation with a custom set of appearance streams the appearance streams are not honored until the annotation is "active" (by tabbing to it, for example). An example document is here, created with my own tools. The annotation dictionary has an /AP dictionary with both /N and /D entries. When clicked, these appearances are used. When the annotation is no longer active (clicking off it or tabbing away), Acrobat again substitutes an incorrect appearance. To the best of my knowledge, my tools are generating spec-compliant PDF. Is this a rendering bug in Acrobat X?
This also appears to be the case in Acrobat 9.
This is also the case with radio buttons.
In a nice bit of "damned-if-don't", if I don't supply an appearance stream, Acrobat doesn't synthesize one.
I don't see much difference between this an Acrobat generated annots other than Acrobat supplies a MK dictionary, but the elements seem inconsequential for the appearance (only /BC and /BG are supplied an an acrobat checkbox).
Yup, that was it.
This is a result of the Forms preference "Show border hover color for fields".
The actual feature works like this: if the feature is set, all form fields when inactive will be displayed using Acrobat's default rendering of that field type on top of either the fields highlight color or the required fields highlight color. When the field becomes active, it will be rendered with the appearance stream in the widget annotation dictionary.
Talk about a total misfeature! It violates the principal of least astonishment - if I specify an appearance stream, Acrobat should use it to render the annotation. Acrobat should be able to figure out how to highlight it in an appropriate manner instead of substituting a different appearance stream which will likely look totally different from mine.