<script>
if (window.internals)
    internals.settings.setSimpleLineLayoutEnabled(false);
</script>

<div style="float:left; border:1px solid blue; width:50px; height:50px"></div>
<p style="border:1px solid red; width:55px">O tempora</p>

<div style="float:left; border:1px solid blue; width:50px; height:50px"></div>
<p style="border:1px solid red; width:80px">O tempora</p>

<div style="float:left; border:1px solid blue; width:50px; height:200px"></div>
<p>Quo usque tandem abutere, Catilina, patientia nostra?  quam diu etiam
    furor iste tuus nos eludet?  quem ad finem sese effrenata iactabit
    audacia?  Nihilne te nocturnum praesidium Palati, nihil urbis vigiliae,
    nihil timor populi, nihil concursus bonorum omnium, nihil hic munitissimus
    habendi senatus locus, nihil horum ora voltusque moverunt?  Patere tua
    consilia non sentis, constrictam iam horum omnium scientia teneri
    coniurationem tuam non vides?  Quid proxima, quid superiore nocte egeris,
    ubi fueris, quos convocaveris, quid consilii ceperis, quem nostrum
    ignorare arbitraris?  O tempora, o mores!
</p>

<div style="float:right; border:1px solid blue; width:50px; height:200px"></div>
<p>Quo usque tandem abutere, Catilina, patientia nostra?  quam diu etiam
    furor iste tuus nos eludet?  quem ad finem sese effrenata iactabit
    audacia?  Nihilne te nocturnum praesidium Palati, nihil urbis vigiliae,
    nihil timor populi, nihil concursus bonorum omnium, nihil hic munitissimus
    habendi senatus locus, nihil horum ora voltusque moverunt?  Patere tua
    consilia non sentis, constrictam iam horum omnium scientia teneri
    coniurationem tuam non vides?  Quid proxima, quid superiore nocte egeris,
    ubi fueris, quos convocaveris, quid consilii ceperis, quem nostrum
    ignorare arbitraris?  O tempora, o mores!
</div>

<div style="float:left; border:1px solid blue; width:50px; height:200px"></div>
<div style="float:right; border:1px solid blue; width:50px; height:200px"></div>
<p>Quo usque tandem abutere, Catilina, patientia nostra?  quam diu etiam
    furor iste tuus nos eludet?  quem ad finem sese effrenata iactabit
    audacia?  Nihilne te nocturnum praesidium Palati, nihil urbis vigiliae,
    nihil timor populi, nihil concursus bonorum omnium, nihil hic munitissimus
    habendi senatus locus, nihil horum ora voltusque moverunt?  Patere tua
    consilia non sentis, constrictam iam horum omnium scientia teneri
    coniurationem tuam non vides?  Quid proxima, quid superiore nocte egeris,
    ubi fueris, quos convocaveris, quid consilii ceperis, quem nostrum
    ignorare arbitraris?  O tempora, o mores!
</p>
