Great feedback, guys. As smashingred implied, this isn’t a matter worth getting migraines over, and everyone should follow what they think is best considering the less-than-perfect state of the art we have to work with.
How to convey semantics in the best way under the given circumstances is an interesting subject. Dan Cederholm’s
SimpleQuiz makes for nice, educational bed-time reading
.
Specific to this topic see the
Empholdics episode and its
conclusion.
Let me summarize my personal logic in the form of a pseudo-theorem (with humble apologies to you maths gurus out there):
1. <em> and <strong> indicate
"emphasis" and "stronger emphasis"
2. There are cases where the established typographic convention is to use italics, but emphasis is not appropriate (names of ships, referenced works, foreign phrases etc.)
3. These cases should ideally be marked up to convey the meaning that they are "special".
4. We shouldn’t use <em> (see point 2.)
5. We could avoid using <i> by using e.g.
<span class="unique-name">Queen Mary</span> and
.unique-name {font-style: italic;}
6. That would take care of the visual treatment on graphical user agents.
7. But the "naked" (unstyled) document won’t reveal the "specialness" of the text, though (when CSS is not applied, screen readers etc.), using this approach.
8. <i> is likely to be revealed in some way on most user agents
9. Since we don’t have elements like <uniquename type="ship"> or whatever, and the <span> solution is lost in the unstyled document, <i> seems to me to be a viable solution.
Q.E.D., sort of (add ten pinches of salt)
So while <i> does not convey any special meaning
per se, for now it
could be seen as a placeholder/alternative for all these cases where italics are usually used, but which do not indicate emphasis. Bravado aptly used "discouraged" to describe the use of debateably presentational elements, that’s the word I was missing before. I understand where that comes from but the reality is we have to deal with these constraints for now. In a perfect world we wouldn’t need backwards-compatibility for the sake of millions of existing sites and we’d have
one markup language that’s supported by all UAs and that’s flexible enough to include all these cases while being spot-on semantically. Unfortunately that will probably not happen before my (as yet non-existant) grandkids get into web dev