wez / wezterm

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

Box drawings arcs look weird #1753

Closed samoylovfp closed 1 year ago

samoylovfp commented 2 years ago

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

Linux X11

WezTerm version

20220322-095052-5c8ff787

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

Arcs do not look the constant width, they "thin out" in the middle image

They do look better with extreme zoom image

This is how gnome-terminal renders those on the default zoom level image

and zoomed out image

To Reproduce

printf "\u256D\n"

Configuration

no config

Expected Behavior

I expect the width of the arc be constant

Logs

09:35:14.138 INFO wezterm_mux_server_impl::local > setting up /run/user/1000/wezterm/gui-sock-138002 09:35:14.310 INFO wezterm_gui::termwindow > OpenGL initialized! Mesa Intel(R) UHD Graphics 620 (KBL GT2) 4.6 (Compatibility Profile) Mesa 21.2.6 is_context_loss_possible=false wezterm version: 20220319-142410-0fcdea07 09:36:32.178 INFO wezterm_gui::termwindow > Ding! (this is the bell) in pane 0

Anything else?

Thanks for the awesome tool!

samoylovfp commented 2 years ago

I'll try to take a look an see if this is an easy fix

samoylovfp commented 2 years ago

Disabling aliasing in wezterm-gui/src/customglyph.rs#L3662 seems to be fixing the drawing issue image, which probably means that there is an issue in the tiny-skia antialiasing, will try to reproduce

samoylovfp commented 2 years ago

I've repeated the sequence of calls in tiny-skia and got this image which looks like it has more consistent width than what wezterm renders.

I am not sure now if the problem is in what skia returns or somewhere between the skia result and the screen

wez commented 2 years ago

I haven't had a chance to dig into this, but I wonder if the issue here is something like the coordinates being a fraction of a pixel and the AA has a hard time rendering a decent stroke--instead of a single solid white pixel it might produce a pair of dim grey pixels.

This class of problem is addressed in font rendering through "hinting" which is a fancy way of saying that coordinates get artificially shifted to integer pixel boundaries.

wez commented 2 years ago

I just added the ability to anti_alias_custom_block_glyphs = false to main. I don't consider this a great solution, it's just an option for now.

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.