Skip to content

ZWJ emoji sequences render as two separate glyphs (affects gitmoji πŸ§‘β€πŸ’»)Β #8739

@cruzdanilo

Description

@cruzdanilo

Pre-submit Checks

Describe the bug

the gitmoji πŸ§‘β€πŸ’» (technologist, U+1F9D1 U+200D U+1F4BB) renders as two separate emoji, πŸ§‘ followed by πŸ’», instead of a single combined glyph. the U+200D ZWJ (zero width joiner) codepoint between them is silently discarded instead of fusing the sequence.

this is distinct from the emoji presentation selector (U+FE0F) work done in #2304. ZWJ sequences are a separate unicode mechanism defined in the emoji ZWJ sequence catalog. this is also not a font issue. both component glyphs render fine individually; the problem is that warp does not recognize U+200D as a joiner that merges adjacent emoji into a single grapheme cluster.

πŸ§‘β€πŸ’» is used by the gitmoji convention for "improve developer experience" commits, so it shows up constantly in git log output for projects that follow this convention.

To reproduce

echo 'πŸ§‘β€πŸ’»'
git log --oneline  # in any repo using gitmoji

Expected behavior

πŸ§‘β€πŸ’» should display as a single glyph, as it does in iTerm2, kitty, Terminal.app, and every modern browser.

Operating system

macOS

Operating system and version

macOS 15.7.4

Shell Version

zsh 5.9

Current Warp version

v0.2026.02.11.08.23.02

Regression

No, this bug or issue has existed throughout my experience using Warp

Additional context

related issues: #1995 (multi-character emoji in output), #4191 (grapheme clusters in input). this issue is scoped specifically to ZWJ sequence joining, which is the root cause for a large class of composite emoji not rendering as single glyphs.

Does this block you from using Warp daily?

No

Is this an issue only in Warp?

Yes, I confirmed that this only happens in Warp, not other terminals.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions