wez / wezterm

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
https://wezfurlong.org/wezterm/
Other
17.28k stars 781 forks source link

Some ligatures do not display correctly in the shell prompt #2331

Closed pgosar closed 2 years ago

pgosar commented 2 years ago

What Operating System(s) are you seeing this problem on?

Linux X11

Which Wayland compositor or X11 Window manager(s) are you using?

Whatever is default with Gnome 42

WezTerm version

20220729-180003-ae2e78d8

Did you try the latest nightly build to see if the issue is better (or worse!) than your current version?

Yes, and I updated the version box above to show the version of the nightly that I tried

Describe the bug

Some ligatures do not display correctly on the shell prompt, for example >=, <=. However, they do work inside another program like vim, or when you are providing input to a command (for example if you run cat without any args). Other ones like != and === display correctly.

I have tested this with the default fonts and with Fira Code, same result

To Reproduce

Start wezterm in ZSH use the plugin https://github.com/zsh-users/zsh-syntax-highlighting

I was able to isolate the issue to this plugin so let me know if this is not an issue coming from wezterm, but I think it is since this works fine on kitty terminal

Configuration

Issue happens with 0 configurations as well.

Expected Behavior

Ligatures such as <= and >= display correctly.

Logs

No response

Anything else?

No response

wez commented 2 years ago

Ligatures in wezterm are only expanded for text that has clusters/runs of the same attributes. Most likely your zsh plugin is changing the attributes (color, style and so on) between the codepoints that comprise the ligature, which prevents the ligature from being shaped and rendered by the rules defined in the font.

pgosar commented 2 years ago

I see. The way that plugin works is it changes the color of the text you input to red or green based on whether its a valid command. Its interesting then that some ligatures dont have their color changed at all while some do. Anyways, it does sound like this behavior is just a side effect of the way ligatures are implemented, not a bug, and since its not really a big deal anyways we can close this.

Thanks for your prompt reply.

github-actions[bot] commented 1 year ago

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues. If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.