I'm not sure, as I've never used them. But I imagine this is a lot more straightforward.
The problem with bidirectional text is that it's bi-directional. Parts of it are RTL and parts are LTR. The main problem is how to order the characters visually, assuming that they are stored in memory in the order in which they are intended to be read.
For text that goes in only one direction this is trivial. LTR: characters are arranged from left to right. RTL: characters are arranged from right to left. Easy peasy!
The problem, as I've said, is when you have a sentence or paragraph with both LTR and RTL text inside it. Then the algorithm is needed.
To my knowledge, there is no bottom-to-top language, and certainly not one that would be mixed in within top-to-bottom text or vice versa. So an algorithm isn't necessary: if TTB (top-to-bottom) is used, characters simply need to be arranged top to bottom.
To add on to this, I believe TTB text is only used explicitly. By default, all text is rendered horizontally (usually LTR) unless you explicitly set the software to render it top-to-bottom. So if you just have plain text in Japanese or whatever language with no additional markup, it will be rendered horizontally and subject to the UBA.


I'm most cases, a consecutive run of RTL or neutral characters would be rendered RTL, while the rest would be rendered LTR. However, if it's within a RTL paragraph, this would be reversed.
For example, the following two paragraphs have the same path, but the surrounding text is translated:
Depending on your client, these should be rendered differently. If they don't, click here to see it: https://jsfiddle.net/jex3yfrw/
Edit: looks like Voyager needs a bug report! The web Lemmy seems to render it RTL (correctly) but still left-aligned which is not ideal.