Skip to content

The text variation selector breaks display #8731

Description

@00-kat

Describe the bug

Here's an emoji with a text variation selector (VS-15, U+FE0E): 👍︎. When printed on its own line, it looks just fine. However, when other characters are before it, it and a lot of the characters before it are not displayed. Everything works fine if other characters are after it.

For emojis which default to the text variation (such as ❤︎), this doesn't seem to reproduce.

To Reproduce

Steps to reproduce the behavior:

  1. Download the following files: only.txt after.txt before.txt multiline.txt heart-only.txt heart-multiline.txt.
  2. Run kitty --config NONE sh -c "cat $(realpath FILE); printf '\n\nxxd:\n'; xxd $(realpath FILE); read _", replacing both occurrences of FILE with every single one of the files above, in order. The xxd part can be removed if it's not installed, but that does mean no hex dump would be shown.
  3. Notice that the following happen:
    • only.txt and after.txt work fine.
    • There's a few empty cells in the middle of before.txt, and all characters after the variation selector render fine.
    • The same issue as with before.txt occurs with the second line of multiline.txt, and the first and third lines are fine.
    • heart-only.txt and heart-multiline.txt render fine.

Screenshots

only.txt:

It renders fine.

after.txt:

It renders fine.

before.txt:

There is a random bit of blank space in the middle of the line.

multiline.txt:

The first and third lines render fine.  There is a random bit of blank space in the middle of the second line.

heart-only.txt:

It renders fine.

heart-multiline.txt:

It renders fine.

Environment details

Click or tap to expand.
kitty 0.42.1 created by Kovid Goyal
Linux sycorax 6.14.9-hardened1-1-hardened #1 SMP PREEMPT_DYNAMIC Mon, 02 Jun 2025 20:56:08 +0000 x86_64
S{PRETTY_NAME} 6.14.9-hardened1-1-hardened (/dev/tty)

Running under: Wayland (hyprland v0.49.0,) missing: blur icon
OpenGL: '4.6 (Core Profile) Mesa 25.1.3-arch1.3' Detected version: 4.6
Frozen: False
Fonts:
  medium: JetBrainsMono-Regular: /usr/share/fonts/TTF/JetBrainsMono-Regular.ttf:0
          Features: ('zero', 'cv06', 'cv07', 'cv11', 'cv12', 'cv16')
    bold: JetBrainsMono-SemiBold: /usr/share/fonts/TTF/JetBrainsMono-SemiBold.ttf:0
          Features: ('zero', 'cv06', 'cv07', 'cv11', 'cv12', 'cv16')
  italic: JetBrainsMono-Italic: /usr/share/fonts/TTF/JetBrainsMono-Italic.ttf:0
          Features: ('zero', 'cv06', 'cv07', 'cv11', 'cv12', 'cv16')
      bi: JetBrainsMono-SemiBoldItalic: /usr/share/fonts/TTF/JetBrainsMono-SemiBoldItalic.ttf:0
          Features: ('zero', 'cv06', 'cv07', 'cv11', 'cv12', 'cv16')
Paths:
  kitty: /usr/bin/kitty
  base dir: /usr/lib/kitty
  extensions dir: /usr/lib/kitty/kitty
  system shell: /usr/bin/fish
System color scheme: no_preference. Applied color theme type: none

Config options different from defaults:

Important environment variables seen by the kitty process:
	PATH                                /home/kat/Scripts:/home/kat/.local/bin:/usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/rocm/bin:/usr/lib/plan9/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/rocm/bin:/usr/lib/plan9/bin:/opt/rocm/bin:/usr/lib/plan9/bin
	LANG                                en_AU.UTF-8
	VISUAL                              nvim
	EDITOR                              nvim
	SHELL                               /usr/bin/fish
	DISPLAY                             :0
	WAYLAND_DISPLAY                     wayland-1
	USER                                kat
	XCURSOR_SIZE                        28
	XDG_SEAT                            seat0
	XDG_RUNTIME_DIR                     /run/user/1000
	XDG_SESSION_ID                      1
	XDG_CONFIG_HOME                     /home/kat/.config
	XDG_CURRENT_DESKTOP                 Hyprland
	XDG_STATE_HOME                      /home/kat/.local/state
	XDG_DATA_HOME                       /home/kat/.local/share
	XDG_SESSION_TYPE                    wayland
	XDG_CACHE_HOME                      /home/kat/.cache
	XDG_BACKEND                         wayland
	LC_TIME                             en_AU.UTF-8@isodate
	XDG_SESSION_CLASS                   user
	XDG_VTNR                            2

Additional context

I'm not sure if it's relevant, but my emoji font is set to Twemoji, and I installed it using ttf-twemoji from the AUR. It also adds this Fontconfig configuration, which may also impact something.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions