microsoft / microsoft/terminal

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

Open
#18,167 1 comment 0 reactions 1 assignee Claimed by @lhecker View on GitHub
Area-AtlasEngine Area-Rendering Issue-Bug Priority-3 Product-Terminal
Dominant language
C++
Stars
105k
Forks
9.6k
Avg merge
3d 17h
Merged PRs (30d)
29

Description

### 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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.