Hi Adam, > Even a line is way too big a piece to be safely reordered by the terminal. > What you propose will break every full-screen program that uses line-drawing > characters:
Certain terminal emulators already perform BiDi on their lines. They already break every full-screen program with line-drawing and such, as you pointed out. What my proposal adds, amongst plenty of other things, is a means to automatically disable the terminal's BiDi, rather than having to go to its settings. This way you can automate the fix of the apps that aren't explicitly fixed, e.g. via wrapper scripts, or terminfo entries with special ti/te definitions. > I'm afraid there's no good way to do BiDi without support from individual > programs. Depends on the use case. For complex apps, like text editors, you are right, the terminal emulator must stay out of the game. For simple utilities, like "cat" and friends, there's no way you can implement BiDi support in "cat" itself. Here the terminal needs to do it. Your use case with tables is perhaps somewhat in the middle. One possible approach for the emitting utility is to disable BiDi in the terminal (switch to "explicit" mode) for the scope of this output. Another possible approach is to leave the terminal doing BiDi, but embed all the text fragments in FSI...PDI blocks. (This latter is subject to a bit of further research, to be exactly specified in a forthcoming version of the specs.) What is extremely tough here is realizing that there are multiple conflicting requirements (including the example you gave), and coming up with a soluiton that satisfies the needs of all. This is what my work aims to do. cheers, egmont