warpdotdev / Warp

Warp is a modern, Rust-based terminal with AI built in so you and your team can build great software, faster.
https://warp.dev
Other
20.26k stars 337 forks source link

Support mode 2027/grapheme cluster handling #4190

Open paperdave opened 4 months ago

paperdave commented 4 months ago

Discord username (optional)

paperdave.net

Describe the solution you'd like?

Certain graphemes such as क्षि, 👩‍🌾, 🏳️‍⚧️, 각, and many more are made up of multiple unicode code points. These currently render as individual code points.

image

A good read on what is going on here is a blog post by Mitchell Hashimoto: Grapheme Clusters and Terminal Emulators. He's done alot of work to make this fast and reliable in Ghostty.

I am specifically requesting Warp to implement Mode 2027, a proposal for proper grapheme cluster support.

The specification for grapheme clustering describes exactly where graphemes break. Likely should find a library in the programming language Warp is built in, as the rules are very complicated and easy to get wrong.

Is your feature request related to a problem? Please describe.

No response

Additional context

I'm writing a terminal text input library and it would be great if Warp supported this, though I think for warp specifically I'm going to see if I

How important is this feature to you?

1 (Not too important)

Warp Internal (ignore) - linear-label:39cc6478-1249-4ee7-950b-c428edfeecd1

None

dannyneira commented 4 months ago

Thanks for this feature request @paperdave

To anyone else interested in this feature, please add a 👍 to the original post at the top to signal that you want this feature, and subscribe if you'd like to be notified.

christianparpart commented 3 months ago

@dannyneira not sure "Thumps up" is the correct metric here. Users will only start to notice and complain when there's something broken-looking, and not request it to look good without having noticed the difference. DEC mode 2027 is something purely technical that is hard to evaluate from a pure user's point of view. :)