Esta es otra solución limpia:
sub, sup {vertical-align: baseline; position: relative; font-size: 70%;} /* 70% size of its parent element font-size which is good. */
sub {bottom: -0.6em;} /* use em becasue they adapt to parent font-size */
sup {top: -0.6em;} /* use em becasue they adapt to parent font-size */
De esta manera, todavía puede usar etiquetas sup / sub, pero corrigió su comportamiento idílico para arruinar siempre la altura de la línea de párrafo .
Entonces ahora puedes hacer:
<p>This is a line of text.</p>
<p>This is a line of text, <sub>with sub text.</sub></p>
<p>This is a line of text, <sup>with sup text.</sup></p>
<p>This is a line of text.</p>
Y la altura de la línea del párrafo no se debe arruinar.
Probado en IE7, IE8, FF3.6, SAFARI4, CHROME5, OPERA9
Probé usando un p {line-height: 1.3;}
(que es una buena altura de línea a menos que desee que sus líneas se peguen demasiado cerca) y todavía funciona, porque "-0.6em" es una cantidad tan pequeña que también con esa altura de línea se ajustará el texto sub / sub y no se repasen
Olvidé un detalle que podría ser relevante. Siempre uso DOCTYPE en la primera línea de mi página (específicamente uso HTML 4.01 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
). Entonces, no sé si esta solución funciona bien cuando el navegador está en modo peculiar (o no en modo estándar) debido a la falta de DOCTYPE o a un DOCTYPE que no activa el modo Estándar / Casi Estándar.