14 | | Many years ago, many people thought the RTL issue could be settled by simply mirroring the order of characters in a line. Have the last character became the 1^st^ character, the 2^nd^ to last character became the 2^nd^ character, and so on. Problem solved. It turned out this is far more complex than that. Possibly, but perhaps not limited to, due to having a mixture of LTR and RTL writing in the same line. Which is why they created quite a complex algorithm. As can be seen at [https://en.wikipedia.org/wiki/Bidirectional_text Bidirectional text], there are strong characters. Weak characters. Neutral characters. Strong direction of the line. Weak direction for only some parts of the line. Artificial characters for directional enforcement. And some more definitions that are used to state, and implement, the bidi algorithm. My main point here is that it could be that the algorithm can not handle everything by itself. It must interact with the user. Sometimes it should be hinted by the user. I think in our case, that user are the MC programmers. I think the MC program must control what libfribidi does. ~~I assume, and hope, the libfribidi, and the terminal, have appropriate hooks, or API.~~ It could be that controlling the bidi mechanism is done only by injecting control characters into ots input stream. An example for the need for such control might be a human user writing a bidi document at some word processing software, for example LibreOffice Writer. Even people who are doing only moderate volume of work on such bidi documents might recognize that sometimes the LibreOffice Writer software does not put the characters in the right place. They have to intervene. Here is a picture of LibreOffice 7.2.2.2 Writer intervene menu: \\[[Image(LibreOfficeWriterFormattingMenu.jpg)]] \\. I obtained it by {{{Insert ⇒ Formatting Mark menu}}}. This exact menu probably can not be seen in LibreOffice installations of Latin only languages speaking users. One has to {{{Tools ⇒ Options… ⇒ Language Settings ⇒ Languages ⇒ Have a tick for Complex text layout, and select an RTL language}}}. (It could be any language in the drop down languages menu there will do.) Possibly coupled by {{{Tools ⇒ Options… ⇒ Language Settings ⇒ Complex Text Layout ⇒ Cursor Control Movement: Logical}}}. This is the libreOffice Writer way to let user intervene. I do not know how many entries in the picture are bidi related. But even if only 3 entries are bidi related, I think it is still should not be taken lightly. Not only that. Users who tried to use those entries might be aware that it is not always that easy as picking the right entry from the list and inserting it into their document. Sometimes they have to use trial and error. The reason for their need for trial and error is not because the algorithm is poor. Rather, it is because they only superficially understand the algorithm. Which is why they sometimes don’t know which entry they have to pick, and what is the exact point in the line they should insert it in. |
| 14 | Many years ago, many people thought the RTL issue could be settled by simply mirroring the order of characters in a line. Have the last character became the 1^st^ character, the 2^nd^ to last character became the 2^nd^ character, and so on. Problem solved. It turned out this is far more complex than that. Possibly, but perhaps not limited to, due to having a mixture of LTR and RTL writing in the same line. Which is why they created quite a complex algorithm. As can be seen at [https://en.wikipedia.org/wiki/Bidirectional_text Bidirectional text], there are strong characters. Weak characters. Neutral characters. Strong direction of the line. Weak direction for only some parts of the line. Artificial characters for directional enforcement. And some more definitions that are used to state, and implement, the bidi algorithm. My main point here is that it could be that the algorithm can not handle everything by itself. It must interact with the user. Sometimes it should be hinted by the user. I think in our case, that user are the MC programmers. I think the MC program must control what libfribidi does. ~~I assume, and hope, the libfribidi, and the terminal, have appropriate hooks, or API.~~ It could be that controlling the bidi mechanism is done only by injecting control characters into its input stream. An example for the need for such control might be a human user writing a bidi document at some word processing software, for example LibreOffice Writer. Even people who are doing only moderate volume of work on such bidi documents might recognize that sometimes the LibreOffice Writer software does not put the characters in the right place. They have to intervene. Here is a picture of LibreOffice 7.2.2.2 Writer intervene menu: \\[[Image(LibreOfficeWriterFormattingMenu.jpg)]] \\. I obtained it by {{{Insert ⇒ Formatting Mark menu}}}. This exact menu probably can not be seen in LibreOffice installations of Latin only languages speaking users. One has to {{{Tools ⇒ Options… ⇒ Language Settings ⇒ Languages ⇒ Have a tick for Complex text layout, and select an RTL language}}}. (It could be any language in the drop down languages menu there will do.) Possibly coupled by {{{Tools ⇒ Options… ⇒ Language Settings ⇒ Complex Text Layout ⇒ Cursor Control Movement: Logical}}}. This is the libreOffice Writer way to let user intervene. I do not know how many entries in the picture are bidi related. But even if only 3 entries are bidi related, I think it is still should not be taken lightly. Not only that. Users who tried to use those entries might be aware that it is not always that easy as picking the right entry from the list and inserting it into their document. Sometimes they have to use trial and error. The reason for their need for trial and error is not because the algorithm is poor. Rather, it is because they only superficially understand the algorithm. Which is why they sometimes don’t know which entry they have to pick, and what is the exact point in the line they should insert it in. |