title: Split text into pages and present separately (HTML5)
body: <p>Let's say we have a long text like Romeo &amp; Juliet and we want to present this in a simple ereader (no animations, only pages and custom font-size). What approaches exist to get this?</p>
  
  <p>What I have come up with so far:</p>
  
  <ul>
  <li>Using css3 columns it would be possible to load the entire text into memory styling it in such a way that a single column takes the size of an entire page. Doing this turned out to be extremely hard to control and requires the entire text to be loaded into memory. </li>
  <li>Using css3 regions (not supported in any major browser) would constitute the same basic concept as the previous solution, with the major difference that it wouldn't be as hard to control (as every 'column' is a self contained element).</li>
  <li>Drawing the text on a canvas would allow you to know exactly where the text ends and thus draw the next page based on that. One of the advantages is that you only need to load all the text up to the current page (still bad, but better). The disadvantage is that the text can't be interacted with (Like selecting the text).</li>
  <li>Place every single word inside an element and give every element a unique id (or keep a logical reference in javascript), next use <code>document.elementFromPoint</code> to find the element(word) which is the last on the page and show the next page onward from that word. Despite this being the only one which seems actually realistic to me, the overhead generated by this has to be immense.</li>
  </ul>
  
  <p>Yet none of those seems to be acceptable (first didn't give enough control to even get it to work, second isn't supported yet, third is hard and without text selection and fourth gives a ridiculous overhead), so any good approaches I haven't thought of yet, or ways to solve one or more disadvantages of the mentioned methods (yes, I am aware this is a fairly open question, but the more open it is, the higher the chance of producing any relevant answers)?</p>