I think the issue here is the use of the word/term semantics.
Within the context of HTML/css, it is a term to describe the meaning of the html element. As a class does not add/alter the existing semantics it cannot add even a "pseudo" semantic value.
With that aside, of course intelligently named classes help developers identify/distinguish elements as part of managing the html document and improvising readability in the css too. I am challenging lending this credibility by calling it "pseudo semantics" as using the term implies there is a connection between classing elements and the best practise of coding semantically. When - if I understand what you are saying - we would probably agree there is none.
It also ignores that code is for computers to carry content to the users . Code is not for developers. Connecting classes and semantic/pseudo semantic value opens the door (IMO) to (the worse-case / extreme scenario) of using nothing but identified (as in cass/id) generic elements on the basis that as the resulting document has "pseudo semantic value" for the developer, it also has semantic value as an HTML document. Or doing so because that is a lot easier than the developer learning the default presentational behaviour of more semanticaly appropriate HTML elements.
Hence my approach to
<span class="terrain">plain</span> would be to ask why the content has been written so that a non-visual user cannot understand the intended meaning without an additional cue. Aim for better copy than "That makes plain the plain is in plain view"
If this is solely presentational, then my question is why the content and document framework have been constructed so that individual words must be presented differently. Sounds like too much visual clutter, poorly constructed copy / containing elements .. or something else that could be improved.
And if that enquiry shows the word really does need to be distinguished, I wonder why you would choose class rather than, for example:
- For the first instance:
<dfn title="technical geographical definition">plain</dfn>
- followed by
<span title="technical_geographical_definition">plain</span>
- styled by
span[title=technical_geographical_definition] {... styles...}
If my question sounds snippy, it's not meant that way - am trying to understand why a class would be preferred over the above when:
- [delete=makes no sense]it has semantic meaning[/delete] is semantically correct
- adds additional meaning for the user in a way that is consistent with the reason the individual word might need to be distinguished from the surrounding text
- allows the element to be styled
- allows it to be accessed for other purposes
- creates a framework that can support extremely fine-grained control:
[title~=technical_geographical_definition] {color:red}
[title~=one] {font-size:150%}
[title~=two] {font-size:200%}
<dfn title="technical_geographical_definition">plain</dfn>
<span title="Type one technical_geographical_definition">plain</span>
<span title="Type two technical_geographical_definition">plain</span>
- is just as human readable as a class