The goal is that you can turn on VoiceOver on this page and arrow-key to the header and have it only read the header out loud, nothing else.
<h2><span aria-hidden="true" class="icon">A</span> ... </h2>
<h2><span aria-hidden="true" class="icon"></span> ... </h2>
Notes: Semantically bogus, but perfect with VoiceOver.
<h2 data-icon="A"> ... </h2>
<h2 data-icon=""> ... </h2>
Notes: Semantically perfect, but bogus with VoiceOver. WTF thing with WebKit -- need to force redraw to get them to show up in Chrome 21 or Safari 6.
<h2><span aria-hidden="true" class="icon-spades"></span> ... </h2>
<h2><span aria-hidden="true" class="icon-clubs"></span> ... </h2>
Notes: Slightly better semantically (no actual content), perfect with VoiceOver.