Bidirectional and RTL Text Issue in Windows Terminal #23228

Closed
opened 2026-01-31 08:35:58 +00:00 by claunia · 6 comments
Owner

Originally created by @nochlab1 on GitHub (May 4, 2025).

Windows Terminal version

1.21.2911.0

Windows build number

10.0.26100.3915

Other Software

No response

Steps to reproduce

Hi starting in v1.19 a new text engine was added called AtlasEngine, when this is turned on Hebrew is now being rendered correctly its being shown the wrong way (its being show left to right instead of right to left) if i turn off AtlasEngine it works correctly

i see there are other issues about it but none of them explained the actual issue
so if possible to fix it, or at least give the option to disable AtlasEngine

I confirmed this is the issue as in v 1.20.11381.0 there is a option to turn off AtlasEngine and when i do that it renderers correctly

Thank You

Expected Behavior

when typing hebrew text it should be rendered Right To left

Actual Behavior

Hebrew Text is being rendered Left to Right

Originally created by @nochlab1 on GitHub (May 4, 2025). ### Windows Terminal version 1.21.2911.0 ### Windows build number 10.0.26100.3915 ### Other Software _No response_ ### Steps to reproduce Hi starting in v1.19 a new text engine was added called AtlasEngine, when this is turned on Hebrew is now being rendered correctly its being shown the wrong way (its being show left to right instead of right to left) if i turn off AtlasEngine it works correctly i see there are other issues about it but none of them explained the actual issue so if possible to fix it, or at least give the option to disable AtlasEngine I confirmed this is the issue as in v 1.20.11381.0 there is a option to turn off AtlasEngine and when i do that it renderers correctly Thank You ### Expected Behavior when typing hebrew text it should be rendered Right To left ### Actual Behavior Hebrew Text is being rendered Left to Right
claunia added the Needs-TriageIssue-Bug labels 2026-01-31 08:35:58 +00:00
Author
Owner

@similar-issues-ai[bot] commented on GitHub (May 4, 2025):

We've found some similar issues:

  • #18659 , similarity score: 81%

If any of the above are duplicates, please consider closing this issue out and adding additional context in the original issue.

Note: You can give me feedback by 👍 or 👎 this comment.

@similar-issues-ai[bot] commented on GitHub (May 4, 2025): We've found some similar issues: - #18659 , similarity score: 81% If any of the above are duplicates, please consider closing this issue out and adding additional context in the original issue. > Note: You can give me feedback by 👍 or 👎 this comment.
Author
Owner

@nochlab1 commented on GitHub (May 4, 2025):

i copied the title as that issue explains it but i think the reason given is incorrect as it has to do with the text engine and on regular ubuntu console (in ubuntu not in wsl) it shows correctly

@nochlab1 commented on GitHub (May 4, 2025): i copied the title as that issue explains it but i think the reason given is incorrect as it has to do with the text engine and on regular ubuntu console (in ubuntu not in wsl) it shows correctly
Author
Owner

@DHowett commented on GitHub (May 7, 2025):

Thanks for filing! We have a wealth of discussion over in #538 that goes into detail about how and why this is a problem, and how we hope for applications (and terminal emulators) to fix it. It culminates in https://github.com/microsoft/terminal/issues/538#issuecomment-1533053699.

With graphical applications, it’s the responsibility of one single application to do BiDi rendering, i.e. to convert the external data it handles (e.g. document, web page) along with its own UI to the pixel-by-pixel user-visible representation. In case of the terminal emulator, it’s the joint responsibility of two components: the emulator, and the application inside. The exact responsibility of each party and the interface between them needs to be well thought out.

To an extent, RTL has always been broken in the console (and the terminal). By fixing our rendering engine for the dominant use case (application writes text in the logical order), we necessarily broke it for applications that write in physical order.

Unfortunately, we don't have any other text rendering engines. If you need "passable" rendering that's compatible with older applications, you can always launch the original console host. 🙂

We are planning to improve this in the future.

/dup #538

@DHowett commented on GitHub (May 7, 2025): Thanks for filing! We have a wealth of discussion over in #538 that goes into detail about how and why this is a problem, and how we hope for applications (and terminal emulators) to fix it. It culminates in https://github.com/microsoft/terminal/issues/538#issuecomment-1533053699. > > With graphical applications, it’s the responsibility of one single application to do BiDi rendering, i.e. to convert the external data it handles (e.g. document, web page) along with its own UI to the pixel-by-pixel user-visible representation. In case of the terminal emulator, it’s the joint responsibility of two components: the emulator, and the application inside. The exact responsibility of each party and the interface between them needs to be well thought out. To an extent, RTL has always been broken in the console (and the terminal). By fixing our rendering engine for the dominant use case (application writes text in the logical order), we necessarily broke it for applications that write in physical order. Unfortunately, we don't have any other text rendering engines. If you need "passable" rendering that's compatible with older applications, you can always launch the original console host. 🙂 We are planning to improve this in the future. /dup #538
Author
Owner

@nochlab1 commented on GitHub (May 7, 2025):

Thanks for filing! We have a wealth of discussion over in #538 that goes into detail about how and why this is a problem, and how we hope for applications (and terminal emulators) to fix it. It culminates in #538 (comment).

With graphical applications, it’s the responsibility of one single application to do BiDi rendering, i.e. to convert the external data it handles (e.g. document, web page) along with its own UI to the pixel-by-pixel user-visible representation. In case of the terminal emulator, it’s the joint responsibility of two components: the emulator, and the application inside. The exact responsibility of each party and the interface between them needs to be well thought out.

To an extent, RTL has always been broken in the console (and the terminal). By fixing our rendering engine for the dominant use case (application writes text in the logical order), we necessarily broke it for applications that write in physical order.

Unfortunately, we don't have any other text rendering engines. If you need "passable" rendering that's compatible with older applications, you can always launch the original console host. 🙂

We are planning to improve this in the future.

/dup #538

its just that the issue wasnt touched in 2 years so i thought i would chime in

side note do you know if its possible to set default tetrminal on windows to a exe?
as i will stay on v 1.20.11381.0 but i cant figure out how to stop windows store from auto updating it and the portable exe windows is not giving me the option to set as default terminal

Thanks!

@nochlab1 commented on GitHub (May 7, 2025): > Thanks for filing! We have a wealth of discussion over in [#538](https://github.com/microsoft/terminal/issues/538) that goes into detail about how and why this is a problem, and how we hope for applications (and terminal emulators) to fix it. It culminates in [#538 (comment)](https://github.com/microsoft/terminal/issues/538#issuecomment-1533053699). > > > > With graphical applications, it’s the responsibility of one single application to do BiDi rendering, i.e. to convert the external data it handles (e.g. document, web page) along with its own UI to the pixel-by-pixel user-visible representation. In case of the terminal emulator, it’s the joint responsibility of two components: the emulator, and the application inside. The exact responsibility of each party and the interface between them needs to be well thought out. > > To an extent, RTL has always been broken in the console (and the terminal). By fixing our rendering engine for the dominant use case (application writes text in the logical order), we necessarily broke it for applications that write in physical order. > > Unfortunately, we don't have any other text rendering engines. If you need "passable" rendering that's compatible with older applications, you can always launch the original console host. 🙂 > > We are planning to improve this in the future. > > /dup [#538](https://github.com/microsoft/terminal/issues/538) its just that the issue wasnt touched in 2 years so i thought i would chime in side note do you know if its possible to set default tetrminal on windows to a exe? as i will stay on v 1.20.11381.0 but i cant figure out how to stop windows store from auto updating it and the portable exe windows is not giving me the option to set as default terminal Thanks!
Author
Owner

@DHowett commented on GitHub (May 7, 2025):

side note do you know if its possible to set default terminal on windows to a exe?

There's been some discussion about this over at https://github.com/microsoft/terminal/discussions/18575 :)

@DHowett commented on GitHub (May 7, 2025): > side note do you know if its possible to set default terminal on windows to a exe? There's been some discussion about this over at https://github.com/microsoft/terminal/discussions/18575 :)
Author
Owner

@nochlab1 commented on GitHub (May 8, 2025):

Thanks!!

side note do you know if its possible to set default terminal on windows to a exe?

There's been some discussion about this over at #18575 :)

@nochlab1 commented on GitHub (May 8, 2025): Thanks!! > > side note do you know if its possible to set default terminal on windows to a exe? > > There's been some discussion about this over at [#18575](https://github.com/microsoft/terminal/discussions/18575) :)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#23228