Describe the bug
Emoji joined via a ZWJ display properly, but the cursor is moved too far. An example:
[schwarzgerat](0) $ printf '\e[6n\U0001f9d1\u200d\U0001f33e\e[6n'
π§βπΎ [schwarzgerat](0) $ 1R5R
as you can see, the cursor report indicates that we have moved four -- which is accurate, as we have indeed moved four cursor positions forward. we only ought have moved two.
FWIW, it's nice that kitty actually implements this; it's ahead of most terminals in this regard.
To Reproduce
Steps to reproduce the behavior:
- Get a cursor report
- Print an emoji created via ZWJ (there might be some that work; the example above does not)
- Get a cursor report
- Look and see that spaces have been printed where no spaces were desired
Screenshots

Environment details
kitty 0.21.2 (e07ba2c53d) created by Kovid Goyal
Linux schwarzgerat 5.12.14nlb #1 SMP Sun Jul 4 17:05:42 EDT 2021 x86_64
Debian GNU/Linux 11 \n \l
Running under:X11
Loaded config files:
/etc/xdg/kitty/kitty.conf
/home/dank/.config/kitty/kitty.conf
Config options different from defaults:
background_opacity 0.7
enable_audio_bell False
font_family Hack
initial_window_height (72, 'cells')
initial_window_width (132, 'cells')
scrollback_lines 20000
update_check_interval 0.0
This debug output has been copied to the clipboard
Additional context
Happens the same way.
Describe the bug
Emoji joined via a ZWJ display properly, but the cursor is moved too far. An example:
as you can see, the cursor report indicates that we have moved four -- which is accurate, as we have indeed moved four cursor positions forward. we only ought have moved two.
FWIW, it's nice that kitty actually implements this; it's ahead of most terminals in this regard.
To Reproduce
Steps to reproduce the behavior:
Screenshots

Environment details
Additional context
Happens the same way.