wez / wezterm

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

Text is brighter than the previous release #1025

Closed sclu1034 closed 2 years ago

sclu1034 commented 3 years ago

Describe the bug

After getting a "new release" notification today, I switched from a version from June (wezterm-git (wezterm.ssh.0.1.1.120.g20c4dcdc-1)) to a nightly build (wezterm-nightly-bin (20210815.182117.ab21910d-1)). I immediately noticed multiple changes to how the content is rendered, compared to instances of the previous version I still have running.

Environment:

Configuration

Font settings:

font = wezterm.font("Hack Nerd Font"),
font_size = 14,

Colour Scheme:

# Gruvbox Light Soft
[colors]
background = "#f2e5bc"
foreground = "#3c3836"
cursor_bg = "#3c3836"
cursor_border = "#f2e5bc"
cursor_fg = "#f2e5bc"

# black, red, green, yellow, blue, purple, teal, white
ansi = ["#282828","#cc241d","#98971a","#d79921","#458588","#b16286","#689d6a","#928374"]
brights = ["#7c6f64","#9d0006","#79740a","#b57614","#076678","#8f3f71","#427b58","#7c6f64"]

Screenshots

Fuzzy cursor: image

Bold text, different colours: Old version is top. image

Active vs Dimmed: Active is top. image

bew commented 3 years ago
  • Contrary to the text getting bolder, the character used to render the separator between panes is now thinner. It's also used in Kakoune, where the change is the same.

This is because most box drawing glyphs are now rendered by wezterm by default, and not looked up from the current font. See https://wezfurlong.org/wezterm/config/lua/config/custom_block_glyphs.html for more info. Set custom_block_glyphs = false to disable this.

@wez ~note that the Since column in that doc still mentions Nightly builds only~ (fixed)

wez commented 3 years ago

I pushed a fix for the background color not respecting the dimming.

For the text boldness, a number of adjustments have been made around font matching and also font weight synthesis since the last release. Of note from the changelog:

You can run wezterm ls-fonts to have wezterm explain what fonts are being used and whether styling is being synthesized.

sclu1034 commented 3 years ago

I pushed a fix for the background color not respecting the dimming.

Works.


Set custom_block_glyphs = false to disable this.

Works for the characters in Kakoune, but is there a way to change it for the pane separators as well? They're still really thin.


For the text boldness, a number of adjustments have been made around font matching and also font weight synthesis since the last release. Of note from the changelog:

I did see that entry, which is why I consider this a regression/bug.

wezterm ls-fonts does mention a few -- Will synthesize dim, but detects the same bold and italic variants as the previous versions. Rendering actual bold text with \033[1m works fine and looks visibly different to normal text with both versions.

But with the current version from master, it looks like all text got a +x; x > 0 to its font weight, and ended up somewhere between the regular and bold variants, looking blurry/fuzzy.

wez commented 3 years ago

Would you mind sharing the wezterm ls-fonts output? It's difficult to make progress without that information!

sclu1034 commented 3 years ago
wezterm 20210515-083229-db452387 ``` Primary font: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack-Regular-Nerd-Font-Complete.ttf, FontConfig "Hack Nerd Font", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Half Italic=true: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack-Italic-Nerd-Font-Complete.ttf, FontConfig {family="Hack Nerd Font", italic=true}, -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Half Italic=false: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack-Regular-Nerd-Font-Complete.ttf, FontConfig "Hack Nerd Font", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Bold Italic=false: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack Bold Nerd Font Complete.ttf, FontConfig {family="Hack Nerd Font", weight="Bold"}, -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Bold Italic=true: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack Bold Italic Nerd Font Complete.ttf, FontConfig {family="Hack Nerd Font", weight="Bold", italic=true}, -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Normal Italic=true: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack-Italic-Nerd-Font-Complete.ttf, FontConfig {family="Hack Nerd Font", italic=true}, -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) ```
wezterm 20210816-094033-7dd77a03 ``` Primary font: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack-Regular-Nerd-Font-Complete.ttf, FontConfig "Hack Nerd Font", -- , BuiltIn "JetBrains Mono", -- , BuiltIn -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Half Italic=true: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack-Italic-Nerd-Font-Complete.ttf, FontConfig -- Will synthesize dim {family="Hack Nerd Font", italic=true}, -- , BuiltIn "JetBrains Mono", -- , BuiltIn -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Half Italic=false: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack-Regular-Nerd-Font-Complete.ttf, FontConfig -- Will synthesize dim "Hack Nerd Font", -- , BuiltIn "JetBrains Mono", -- , BuiltIn -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Bold Italic=false: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack Bold Nerd Font Complete.ttf, FontConfig {family="Hack Nerd Font", weight="Bold"}, -- , BuiltIn "JetBrains Mono", -- , BuiltIn -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Bold Italic=true: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack Bold Italic Nerd Font Complete.ttf, FontConfig {family="Hack Nerd Font", weight="Bold", italic=true}, -- , BuiltIn "JetBrains Mono", -- , BuiltIn -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Normal Italic=true: wezterm.font_with_fallback({ -- /usr/share/fonts/TTF/Hack-Italic-Nerd-Font-Complete.ttf, FontConfig {family="Hack Nerd Font", italic=true}, -- , BuiltIn "JetBrains Mono", -- , BuiltIn -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "Last Resort High-Efficiency", }) ```
kotatsuyaki commented 3 years ago

I'm seeing similar fuzzy text regression with wezterm installed from nixpkgs. At first I suspected it to be a font hinting issue, but changing hinting configurations doesn't seem to resolve it.

Screenshot 20210502-154244-3f7122cb (before) ![Screenshot_20210824_115315](https://user-images.githubusercontent.com/17219127/130553273-cca367f4-d959-4cce-a978-81ec50d6da4d.png)
Screenshot 20210814-124438-54e29167 (after) ![Screenshot_20210824_115031](https://user-images.githubusercontent.com/17219127/130553252-561e7ae5-de95-4acd-805b-9d75143a778b.png)
ls-fonts 20210502-154244-3f7122cb (before) ``` Primary font: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf index=0 variation=2, FontConfig "Fira Code", -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Half Italic=true: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf, FontConfig {family="Fira Code", weight="Light"}, -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Half Italic=false: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf, FontConfig {family="Fira Code", weight="Light"}, -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Bold Italic=false: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf index=0 variation=5, FontConfig {family="Fira Code", weight="DemiBold"}, -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Bold Italic=true: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf index=0 variation=5, FontConfig {family="Fira Code", weight="DemiBold"}, -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Normal Italic=true: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf index=0 variation=2, FontConfig "Fira Code", -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) ```
ls-fonts 20210814-124438-54e29167 (after) ``` Primary font: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf index=0 variation=2, FontConfig "Fira Code", -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Half Italic=true: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf, FontConfig -- Will synthesize italics {family="Fira Code", weight="Light"}, -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Half Italic=false: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf, FontConfig {family="Fira Code", weight="Light"}, -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Bold Italic=false: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf index=0 variation=5, FontConfig {family="Fira Code", weight="DemiBold"}, -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Bold Italic=true: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf index=0 variation=5, FontConfig -- Will synthesize italics {family="Fira Code", weight="DemiBold"}, -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) When Intensity=Normal Italic=true: wezterm.font_with_fallback({ -- /nix/store/41qphrp1ksc1fqm01i7khs30n1zjl56r-fira-code-5.2/share/fonts/truetype/FiraCode-VF.ttf index=0 variation=2, FontConfig -- Will synthesize italics "Fira Code", -- /nix/store/mj729gcva78r5h696yldhq4xmnkmwbj2-noto-fonts-emoji-2020-09-16-unicode13.1/share/fonts/noto/NotoColorEmoji.ttf, FontConfig -- Assumed to have Emoji Presentation "Noto Color Emoji", -- , BuiltIn "JetBrains Mono", -- , BuiltIn "Last Resort High-Efficiency", }) ```
shaddu38 commented 3 years ago

I also see that text is now bolder. Also there is new bug: when wezterm launched "Minimize/maximize all windows"-function (Windows10) doesn't work.

wez commented 3 years ago

I'm going to relabel this to track the bold effect only, as big issues with multiple things are difficult to manage. @shaddu38 please file a separate issue for the maximize issue.

wez commented 3 years ago

With this config:

return {
  colors = {
    background = "#f2e5bc",
    foreground = "#3c3836",
    cursor_bg = "#3c3836",
    cursor_border = "#f2e5bc",
    cursor_fg = "#f2e5bc",
    ansi = {"#282828","#cc241d","#98971a","#d79921","#458588","#b16286","#689d6a","#928374"},
    brights = {"#7c6f64","#9d0006","#79740a","#b57614","#076678","#8f3f71","#427b58","#7c6f64"},
  },
  font_size = 14,
  initial_rows = 5,
  initial_cols = 30,
}

This is how current main renders on my M1 mac.

image

which doesn't appear to be overly bold or fuzzy, so I wonder if I fixed this (not sure that I really made significant changes that might have done that!), or whether the rendering differences are OS dependent?

If you're still seeing overly bold/fuzzy rendering with the current main (which should show up in the nightly downloads within 30 minutes of when this comment was posted), please let me know which OS you're running on, and please also include the OpenGL info from wezterm's logs. You can find this by pressing CTRL-SHIFT-L to get the debug overlay, then copy and paste it here. (Press ESC to dismiss the debug overlay).

This is what my mac shows:

2021-09-05T01:52:18.775Z INFO  wezterm_gui::termwindow        > OpenGL initialized! Apple M1 4.1 Metal - 71.7.1 is_context_loss_possible=false wezterm version: 20210904-173533-311bd789
lovegandhi commented 3 years ago

I am running your config posted above. OpenGL output differs between the last known good version and 20210814 or nightly. Nightly seems to have gone the other way now to a thinner/lighter weight

Version 20210502 `2021-09-05T03:03:45.756Z INFO wezterm_gui::termwindow > OpenGL initialized! AMD Radeon R9 200 Series (TONGA, DRM 3.40.0, 5.11.0-7614-generic, LLVM 11.0.0) OpenGL ES 3.2 Mesa 21.0.0 is_context_loss_possible=false wezterm version: 20210502-154244-3f7122cb`
Version 20210814 `2021-09-05T03:05:47.765Z INFO wezterm_gui::termwindow > OpenGL initialized! AMD Radeon R9 200 Series (TONGA, DRM 3.40.0, 5.11.0-7614-generic, LLVM 11.0.0) 4.6 (Compatibility Profile) Mesa 21.0.0 is_context_loss_possible=false wezterm version: 20210814-124438-54e29167`
Version 20210904 `2021-09-05T03:07:27.923Z INFO wezterm_gui::termwindow > OpenGL initialized! AMD Radeon R9 200 Series (TONGA, DRM 3.40.0, 5.11.0-7614-generic, LLVM 11.0.0) 4.6 (Compatibility Profile) Mesa 21.0.0 is_context_loss_possible=false wezterm version: 20210904-185432-18ddf381`
shaddu38 commented 3 years ago

It's not OS dependent, I'm on Windows and result the same as lovegandhi have. With your config text even too thin, but without config it still bolder than it should be.

wez commented 3 years ago

I've been poking around at this today, and I'm not 100% sure what's at the heart of this, but it appears to be gamma related.

The work associated with https://github.com/wez/wezterm/issues/544 made changes to ensure that the color values seen in the shader are linearized from SRGB so that the overall compositing is correct. The linear/non-linearizing operation is generally referred to as gamma correction and impacts the perceived brightness of the text, which in turn can be perceived as boldness.

If I introduce an over-gamma-correction in the rasterizer, then the dark-text-on-light background looks more similar to the prior levels of boldness, but the white-text-on-dark-background is even more bold, so that's definitely not the fix.

Looking closely at the render without that over-correction, comparing 20210502-154244-3f7122cb (left) with current main (right):

Screenshot from 2021-09-05 11-21-53

you can see that the glyph is rendered the same, but that the right hand side has brighter pixels.

With the dark-on-light config loaded, you can see that the pixels are also brighter on the right hand side:

Screenshot from 2021-09-05 11-26-30

Another recent change is https://github.com/wez/wezterm/issues/932 which removed a destination-color aware blend function in favor of an opengl blending feature that produces better results for subpixel-aa with a transparent background. In theory this is fine, but the math for the blend in main no longer has a hint about the destination background color, which may be contributing to this.

I don't have any conclusions to this yet; need to keep investigating.

dmfay commented 3 years ago

I bisected and the exact commit that caused this issue is ee71d478c4e7fef78cf2d2f9fb342ea6d93c4386:

1634835705 1634835850

printf 'regular %b\n' "\033[1m"bold"\033[0m"

dead10ck commented 2 years ago

Sorry, I don't mean to be a bother, but has any progress been made on this? I'd like to use wezterm, but this is the biggest thing stopping me.

wez commented 2 years ago

It's tricky to correctly resolve because it's not simply a matter of reverting the dual source blending commit; that is present to make text look better with transparent windows, and it also gamma corrects a number of operations that were previously incorrect as well.

wezterm runs on a variety of systems with varying levels of support for different parts of OpenGL. To fully resolve, this needs to be fixed in such a way that all combinations of hardware and software rendering work on all platforms. Some platforms have multiple modes to test, so the matrix of different combinations is quite large, and I simply don't have time to spend on this at the moment: I've recently moved into a new home and there is a lot of stuff to wrangle in setting it up.

I would be happy to accept some help in working through and resolving this, but in the absence of that, we all have to wait until I have enough time and energy.

It's not high on my priority list because it is honestly a relatively minor cosmetic impact vs. the amount of effort to required to make it 100% correct on all combinations of systems.

dead10ck commented 2 years ago

It's tricky to correctly resolve because it's not simply a matter of reverting the dual source blending commit; that is present to make text look better with transparent windows, and it also gamma corrects a number of operations that were previously incorrect as well.

It's worth considering that in exchange for looking better on transparent windows, it looks worse on non-transparent windows. I'm not going to make any guesses about which has the largest user base, but you presumably had a user base in the latter group that now have a worse experience. Would it not make sense to revert until the change you made can be done in such a way as to not break another group's experience?

wezterm runs on a variety of systems with varying levels of support for different parts of OpenGL. To fully resolve, this needs to be fixed in such a way that all combinations of hardware and software rendering work on all platforms. Some platforms have multiple modes to test, so the matrix of different combinations is quite large, and I simply don't have time to spend on this at the moment: I've recently moved into a new home and there is a lot of stuff to wrangle in setting it up.

I would be happy to accept some help in working through and resolving this, but in the absence of that, we all have to wait until I have enough time and energy.

It's not high on my priority list because it is honestly a relatively minor cosmetic impact vs. the amount of effort to required to make it 100% correct on all combinations of systems.

It might be worth considering that for a pure volunteer project that doesn't make any money, aiming to have the broad support of a AAA product on all platforms is a bit too ambitious for the amount of resources you have at your disposal.

Come to think of it, I think most terminal emulators are not supported on all platforms. They're all platform specific. And probably for the exact reasons you're talking about.

wez commented 2 years ago

Again, it's not simply a matter of reverting. There were a series of fixes to produce the correct gamma and alpha values. Those removed some incorrect math that resulted in the prior dimmer text. The code is more correct than it was previously. Reverting this will impact something else. There isn't a simple quick fix; the right path forward is to fix it correctly, and that will take time.

It might be worth considering that for a pure volunteer project that doesn't make any money, aiming to have the broad support of a AAA product on all platforms is a bit too ambitious for the amount of resources you have at your disposal.

I'm not sure how to interpret this insulting comment other than by rolling my eyes. This is an open source project that I do for fun in my free time and you can take it or leave it. If you want to see this issue make progress then the best thing you can do, short of stepping up to help out, is to keep this sort of comment to yourself so that I and the other contributors can feel energized about making something nice rather than resentful of the community.

dead10ck commented 2 years ago

I'm not sure how to interpret this insulting comment other than by rolling my eyes. This is an open source project that I do for fun in my free time and you can take it or leave it. If you want to see this issue make progress then the best thing you can do, short of stepping up to help out, is to keep this sort of comment to yourself so that I and the other contributors can feel energized about making something nice rather than resentful of the community.

???? Whoa. I'm sorry, I meant no insult. I was not making a statement about you, your ability, or the quality of your project. I haven't really used it at all, but it's clearly very successful. I just know what it's like to manage a full time job, a family, and then personal projects on top of that. For the long term health of the project, it's important to keep scope manageable. Otherwise, you risk burning out and the eventual death of the project.

Supporting a product on all major platforms is difficult for teams of full time engineers in large companies. Judging by your comment above, clearly it's difficult for you too. Committing to that as a small volunteer free time project is taking on a lot. This isn't a personal statement about you, it's simply an objective reality about software.

dmfay commented 2 years ago

I just know what it's like to manage a full time job, a family, and then personal projects on top of that. For the long term health of the project, it's important to keep scope manageable. Otherwise, you risk burning out and the eventual death of the project.

The next thing to know is that someone who's kept a project of this scale going for multiple years probably already understands this very, very well :) This isn't the first platform- or configuration-dependent issue to pop up and it won't be the last; as always, there's no warranty, express or implied.

If you want to try switching, I can vouch that 1d94fe5fda8bbbc6411a69d44234988fb6c974b9 is quite stable and usable -- clone the repo and build it from source!

dead10ck commented 2 years ago

The next thing to know is that someone who's kept a project of this scale going for multiple years probably already understands this very, very well :)

You know what, you are right; reading back on my comments, I can see how I'm coming off as a bit condescending. @wez you're clearly an experienced and accomplished engineer, and you don't need me lecturing you about how you run your project, or what to prioritize. I sincerely apologize for my comments.

wez commented 2 years ago

@dmfay I think I may have cracked it with the latest commit; I'd appreciate your careful eye looking over the rendering when you next have a few minutes to try it out!

dmfay commented 2 years ago

Good news and bad news:

Here's a three-way comparison; I zoomed in to the point you'll need to click for full-size images (which also makes the weights more distinct, so ignore that bit). In each, I've noted the color of the right-side shadow pixels on the "l" in "regular" text.

known good: #cac4cb 1640228990

latest: #c6bfc7 1640229098

HEAD~1: #d9d3d7 1640228901

The color distortion in the latest version is not constant: the background color gets +2/+3/+2 applied, while cyan is -1/-1/-1. The l-shadow pixel is modified -4/-4/-4. The HEAD~1 shadow pixel color is way off, though, so I think once the gamma is color-corrected that may be the end of it!

wez commented 2 years ago

Thanks! I've pushed another take on the gamma correction function; seems to behave better!

dmfay commented 2 years ago

That looks good! The shadow pixel color winds up the same slightly darker color (#c6bfc7) than the last known good version I'd been running, but I think we can chalk that up to the vagaries of font rendering -- it's undetectable at normal resolutions. Other colors are correct.

dead10ck commented 2 years ago

Thanks @wez ! I can confirm the boldness is gone on Fedora 35, and also as a nice bonus looks noticeably sharper than kitty. I appreciate your work!

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.