A (not so elegant) alternate solution is to use <dl> definition list. I have seen this layout used for screenplays, but it sets the "term" (name) on a separate line from the "definition" (main text). However, you don't have to worry so much about column widths and line breaks.
You can format amount of indent / offset, font-size and style (bold, italic), text alignment /justification, and a few other attributes.
html looks something like this:
Code:
<dl>
<dt>FIRST SPEAKER:</dt>
<dd>I say to you, my fellow citizens...</dd>
</dl>
The displayed layout looks something like:
FIRST SPEAKER:
I say to you, my fellow citizens...