AtlasEngine: Incorrectly broken up MapCharacters runs should be joined before text shaping #22519

Open
opened 2026-01-31 08:15:39 +00:00 by claunia · 1 comment
Owner

Originally created by @lhecker on GitHub (Nov 7, 2024).

Originally assigned to: @lhecker on GitHub.

Windows Terminal version

1.21.2911.0

Windows build number

10.0.19045.0

Other Software

No response

Steps to reproduce

Print https://unicode.org/Public/emoji/latest/emoji-test.txt under Windows 10.

Expected Behavior

All of the emojis work.

Actual Behavior

All emojis with a U+200D joiner are broken. This is because DirectWrite's MapCharacters() is kinda bad and breaks them up. We then pass the broken runs to text shaping which are unable to see that the emoji consists of multiple parts joined together. This causes them to look incorrectly. We need to join the broken runs first and then pass the result to text shaping.

Originally created by @lhecker on GitHub (Nov 7, 2024). Originally assigned to: @lhecker on GitHub. ### Windows Terminal version 1.21.2911.0 ### Windows build number 10.0.19045.0 ### Other Software _No response_ ### Steps to reproduce Print https://unicode.org/Public/emoji/latest/emoji-test.txt under Windows 10. ### Expected Behavior All of the emojis work. ### Actual Behavior All emojis with a U+200D joiner are broken. This is because DirectWrite's `MapCharacters()` is kinda bad and breaks them up. We then pass the broken runs to text shaping which are unable to see that the emoji consists of multiple parts joined together. This causes them to look incorrectly. We need to join the broken runs first and then pass the result to text shaping.
Author
Owner

@o-sdn-o commented on GitHub (Nov 7, 2024):

FYI. On Windows 10, not all emoji clusters are displayed correctly even in the browsers (I tested it only in FireFox and Edge). E.g. 🧔‍♂.

I suspect that this is due to a lack of fonts supplied with the OS.

@o-sdn-o commented on GitHub (Nov 7, 2024): FYI. On Windows 10, not all emoji clusters are displayed correctly even in the browsers (I tested it only in FireFox and Edge). E.g. `🧔‍♂`. I suspect that this is due to a lack of fonts supplied with the OS.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#22519