> Date: Fri, 12 Feb 2010 13:03:52 +0200 > From: Eli Zaretskii <[email protected]> > Cc: [email protected], [email protected] > > > So if only the line breaking points were static, you'd have no > > performance problem! > > If the line breaking points were at known buffer positions, yes.
Actually, that's not true, in general. Embeddings break that. Here's an example. Imagine the following text in logical order: he said "I HEARD HIM SAYING ['car is CAR in arabic'] AND FAINTED" The [...] part is an embedding: it is there to have this text display as he said "DETNIAF DNA 'car is RAC in arabic' GNIYAS MIH DRAEH I" rather than as he said "GNIYAS MIH DRAEH I 'car is RAC in arabic' DETNIAF DNA" The latter display does not express what the writer of the text wanted to say. (Please don't nit-pick wrt the known issues with reordering quotes and apostrophes: they are here just to make the text more readable, and can be easily removed without affecting the fundamental problem I'm talking about.) UAX#9 allows up to 60 levels of such embeddings, btw. The characters [ and ] represent special Unicode code points known as LRE and PDF, respectively. There are also LRO, RLE, and RLO, for similar jobs but with the other direction. Now, suppose the window is only wide enough to display this: he said "'car is GNIYAS MIH DRAEH I" The continuation line should then display the rest of the text: "DETNIAF DNA RAC in arabic' (again, disregard the placement of quotes). Right? Or does this look incorrect? If so, what is the correct display in this case? Anyway, if we stop the bidi reordering after "car is", and restart it at "CAR", the information about the unfinished embedding is lost, and the continuation line will be displayed differently. Which means breaking the line in the middle of an embedding is tricky at best. It also means that putting a newline on some whitespace character, like fill-paragraph does, will have the same problem of generating incorrect (or at least unexpected) display of the second part of the broken line. Conclusion: to apply such smart line continuation, we need first to establish where are the points at which we are allowed to break the line. _______________________________________________ emacs-bidi mailing list [email protected] http://lists.gnu.org/mailman/listinfo/emacs-bidi
