-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Subpixel fonts aren't rendered correctly #3756
Comments
I feel like this is an artifact from some old refactoring removing default sRGB in favor of RGB, I guess now I new why it was sRGB by default in the past, and I guess it's more correct to do. Especially knowing that some systems don't have RGB these days at all. But yeah, it doesn't solve the problem. I guess it could be temporary sRGB by default instead of RGB, since solution you're proposing could require some rework, and it was historically sRGB by default.
I guess that the thing which could work, though it'll require some testing first.
I guess, but I'm not sure whether it's true on Linux at all, since it seems like there's not difference whatsoever between those RGB/sRGB. Thanks for your detailed report. |
I believe font rendering is the most important thing that terminal emulator does. Any news here? |
For reference alacritty#4939 and alacritty#3756.
For reference alacritty#4939 and alacritty#3756.
This commit persists OpenGL context creation flags from previous window build attempts saving time in multiwindow context. It also creates window as srgb by default, since it's what Alacritty is rendering in. For reference [1] and [2]. Moreover the fallback for 10 bit colors is also added. [1] - alacritty#4939 and [2] - alacritty#3756. Fixes alacritty#4703.
This commit persists OpenGL context creation flags from previous window build attempts saving time in multiwindow context. It also creates window as srgb by default, since it's what Alacritty is rendering in. For reference [1] and [2]. Moreover the fallback for 10 bit colors is also added. [1] - alacritty#4939 and [2] - alacritty#3756. Fixes alacritty#4703.
This commit persists OpenGL context creation flags from previous window build attempts saving time in multiwindow context. It also creates window as srgb by default, since it's what Alacritty is rendering in. For reference [1] and [2]. Moreover the fallback for 10 bit colors is also added. [1] - #4939 and [2] - #3756. Fixes #4703.
commit ce29942 Merge: 7f4ceee d9c6c8d Author: ezhang7423 <[email protected]> Date: Tue Jun 14 12:59:09 2022 -0700 Merge branch 'master' of github.com:alacritty/alacritty commit d9c6c8d Author: Ally Tiritoglu <[email protected]> Date: Fri Jun 10 09:28:48 2022 -0700 Update SGR escape sequence support commit fdcf99b Author: jeremycostanzo <[email protected]> Date: Thu Jun 9 23:08:18 2022 +0200 Add vi action to center view around vi cursor commit 90552e3 Author: Kirill Chibisov <[email protected]> Date: Thu Jun 9 19:31:08 2022 +0300 Fix flickering during resize on Wayland This also fixes an issue of windows not being rendered while resizing. Fixes alacritty#6069. commit 6dc670c Author: Vasily Khoruzhick <[email protected]> Date: Wed Jun 8 02:02:57 2022 -0700 Support dual source blending in GLES2 renderer GLES2 has GL_EXT_blend_func_extended extension that enables dual-source blending, so essentially we can reuse fragment shader from GLSL3 renderer and do 1 rendering pass instead of 3 for the text. Co-authored-by: Kirill Chibisov <[email protected]> Co-authored-by: Christian Duerr <[email protected]> commit 29b1ff5 Author: Kirill Chibisov <[email protected]> Date: Tue Jun 7 11:09:03 2022 +0300 Fix old vi cursor not being properly damaged Co-authored-by: Christian Duerr <[email protected]> commit bb7b120 Author: Kirill Chibisov <[email protected]> Date: Mon Jun 6 11:00:39 2022 +0300 Fix crash when damaging off-screen hint Co-authored-by: Christian Duerr <[email protected]> commit 56a69c0 Author: Yuri Astrakhan <[email protected]> Date: Wed Jun 1 21:22:50 2022 -0400 Fix a few minor clippy lints commit e20541a Author: André Kugland <[email protected]> Date: Wed Jun 1 03:33:08 2022 +0000 Fix DEC Special Character Set (Line drawing) This patch resolves some mapping issues with the line drawing character set where characters like linefeed were incorrectly mapped to their proper character representation rather than the codepoint of their identification glpyh. Co-authored-by: Christian Duerr <[email protected]> commit 63ef6c9 Author: Kirill Chibisov <[email protected]> Date: Fri May 27 00:30:33 2022 +0300 Fix Vi cursor not being damaged on scroll There's no need to damage intermediate Vi mode cursor points, since it can't change the terminal content meaning that only the previous and current vi cursor's viewport points matter to damage it properly. commit 3bfc4c2 Author: Kirill Chibisov <[email protected]> Date: Mon May 23 03:35:09 2022 +0300 Don't inherit `--command` for `SpawnNewInstance` Fixes alacritty#6060. commit c10888b Author: a5ob7r <[email protected]> Date: Mon May 23 09:01:46 2022 +0900 Fix selection change after leaving vi-mode This patch fixes that the right point of the selection range moves to another point when leaves vi-mode with a selection by ToggleViMode. The cause is that always moves a vi-mode cursor to a search origin whether or not the current search is active. This problem is a regression which is introduced by alacritty#5945. commit 394b3ff Author: Andrés Mejía <[email protected]> Date: Sun May 22 07:12:57 2022 -0500 Fix inaccurate method documentation commit 9f8c5c4 Author: Kirill Chibisov <[email protected]> Date: Fri May 20 22:23:55 2022 +0300 Enable damage tracking only on Wayland Other platforms don't have such concepts in general or have them via different interfaces not related to EGL. This commit also resolves some minor clippy issues. Fixes alacritty#6051. Co-authored-by: Christian Duerr <[email protected]> commit e319ca9 Author: algon <[email protected]> Date: Fri May 20 19:08:25 2022 +0900 Fix builtin glyphs for U+2567 and U+2568 commit 5c51d52 Author: Kirill Chibisov <[email protected]> Date: Sun May 8 11:24:51 2022 +0300 Fix gap in builtin box drawing Builtin box drawing glyphs in range from '\u{2580}' to `\u{2587}` could have gap due to missing rounding. Previously height was rounded, however not the `y` offset. This commit fixes it. commit ad3ebba Author: a5ob7r <[email protected]> Date: Fri Apr 29 10:24:35 2022 +0900 Remove unnecessary commas in config keybindings commit 9bbb296 Author: mahkoh <[email protected]> Date: Sat Apr 16 20:39:26 2022 +0200 Fix selection copy without button release To prevent the current selection clipboard from being overwritten right before pasting, text is no longer copied solely because the user scrolled the scrollback buffer. The selection also isn't copied when a mouse button other than LMB/RMB are released, since these are the only ones capable of modifying the selection range. This should prevent issues where the selection of the user gets unexpectedly overwritten, especially in scenarios where the user is currently in the process of pasting something into Alacritty. Signed-off-by: Julian Orth <[email protected]> commit d5cad2a Author: kumattau <[email protected]> Date: Sat Apr 16 22:39:14 2022 +0900 Fix cell_height of impl From<SizeInfo<f32>> for WindowSize commit 6737104 Author: Kirill Chibisov <[email protected]> Date: Wed Apr 6 13:06:39 2022 +0300 Extract `SizeInfo` from alacritty_terminal The `SizeInfo` is a SizeInfo used for rendering, which contains information about padding, and such, however all the terminal need is number of visible lines and columns. commit 851dbc3 Author: Kirill Chibisov <[email protected]> Date: Sun Apr 3 23:08:44 2022 +0300 Disallow OSC 52 for unfocused window This leads to issues on macOS, since if we store clipboard at the same time it could error out. Also, on e.g. Wayland the clipboard store for unfocused window won't work anyway. commit 49d64fb Author: Christian Duerr <[email protected]> Date: Fri Apr 1 01:10:12 2022 +0200 Fix OSC 4 color response format The commit 60ef17e introduced support for the color query response escape for OSC 4, however it did omit the `4;` prefix and started the OSC with just the color index. This patch fixes this bug and correctly responds to queries with full OSC 4 format, including prefix plus color index. Fixes alacritty#5981. commit b16fe12 Author: Kirill Chibisov <[email protected]> Date: Fri Mar 25 15:02:44 2022 +0300 Reset blinking on search bindings in Vi mode The Vi cursor is used as the current match indicator, however when it's blinking during search jumps the current match is invisible. Fixes alacritty#5934. commit e7bb6c2 Author: Kirill Chibisov <[email protected]> Date: Thu Mar 24 12:13:30 2022 +0300 Persist OpenGL context creation flags This commit persists OpenGL context creation flags from previous window build attempts saving time in multiwindow context. It also creates window as srgb by default, since it's what Alacritty is rendering in. For reference [1] and [2]. Moreover the fallback for 10 bit colors is also added. [1] - alacritty#4939 and [2] - alacritty#3756. Fixes alacritty#4703. commit f4bdf5f Author: Kirill Chibisov <[email protected]> Date: Wed Mar 16 19:27:55 2022 +0300 Add colored underline support This commit adds support for colored underline and refines the dynamic extra storage. The extra storage now is using `Arc` making cloning it way faster compared to `Box` approach which scales really well when it comes to cloning in `Term::write_at_cursor`, since cloning `Arc` is constant time. Fixes alacritty#4142. commit 589c1e9 Author: Kirill Chibisov <[email protected]> Date: Mon Mar 14 08:52:53 2022 +0300 Use center of the pixel when aligning undercurl Since `x` position in rect shader represents left side of the pixel we should use the center of it when dealing with contiguous functions. commit 7312f33 Author: Kirill Chibisov <[email protected]> Date: Fri Mar 11 12:34:15 2022 +0300 Fix `font.glyph_offset` not live reloading Fixes alacritty#5944. commit 0965773 Author: Christian Duerr <[email protected]> Date: Thu Mar 10 20:45:20 2022 +0100 Fix crash when searching during reset This fixes a crash which occurs when the terminal is reset while searching, due to the vi mode cursor being outside of the visible area. This also fixes an issue where the search state reset would incorrectly clamp the vi mode cursor to the grid, rather than the absolute viewport position. While this fix does resolve all crashes when searching while running `cat /dev/urandom`, it does raise the question if manually clamping the vi mode cursor in every location where it is modified is the right choice. A follow-up to provide a safer API which guarantees correct modification of the vi mode cursor location is probably a good idea. Fixes alacritty#5942. commit a69c3c4 Author: Kirill Chibisov <[email protected]> Date: Thu Mar 10 15:25:01 2022 +0300 Fix line indicator damage computation The starting point of damage should be computed from the right side of the terminal, not from the starting point of line indicator. commit dbccd7e Author: Kirill Chibisov <[email protected]> Date: Sun Mar 6 19:34:12 2022 +0300 Use round instead of ceil for line position Ceiling line position results in strikeout line being lower than it should. commit d8113dc Author: Kirill Chibisov <[email protected]> Date: Wed Mar 2 22:35:19 2022 +0300 Fix gap calculation for dashed underline commit 1880522 Author: Kirill Chibisov <[email protected]> Date: Wed Mar 2 13:05:12 2022 +0300 Add fallback GLES2 renderer Currently Alacritty only works on hardware which supports OpenGL 3.3 or more, which can become problematic with older devices. This patch adds a new GLES2 renderer, since it is much more widely supported, especially on weaker hardware like phones or a Raspberry Pi. While the GLES2 renderer is slower than the OpenGL 3.3+ version, it is still significantly faster than software rendering. However because of this performance difference it is only used when necessary and there should be no difference for machines supporting OpenGL 3.3+. The two renderers are largely independent and separated in the `renderer/text/glsl3` and `renderer/text/gles2` modules. Separate shaders are also required for text rendering. The rectangle rendering for underlines and the visual bell works identically for both versions, but does have some version-specific shader code. Fixes #128. Co-authored-by: Christian Duerr <[email protected]> commit 00383ae Author: Chris Copeland <[email protected]> Date: Sun Feb 27 10:35:23 2022 -0800 Add `ToggleMaximized` key binding action commit 13b6248 Author: Christian Duerr <[email protected]> Date: Thu Feb 24 05:17:25 2022 +0100 Add version 0.10.1 to changelog commit 8ea6c3b Author: nibon7 <[email protected]> Date: Tue Feb 22 21:08:49 2022 +0800 Omit git version hash when git command fails commit 36e981a Author: Kirill Chibisov <[email protected]> Date: Tue Feb 22 13:57:04 2022 +0300 Don't use 'origin_upper_left' in rect shaders commit 4734b2b Author: Kirill Chibisov <[email protected]> Date: Fri Feb 18 01:27:10 2022 +0300 Don't load font twice during display creation This commit finishes the effort from a64553b to avoid reloading font twice during startup, since the original issue is with getting font metrics without building the glyph cache. commit aaab88c Author: mahkoh <[email protected]> Date: Wed Feb 16 22:15:50 2022 +0100 Account for absolute WAYLAND_DISPLAY paths If WAYLAND_DISPLAY contains a '/', we have to replace with with another character before using WAYLAND_DISPLAY as a path component. commit a64553b Author: Greg Depoire--Ferrer <[email protected]> Date: Wed Feb 16 20:57:46 2022 +0000 Reuse Rasterizer in Display::new Instead of creating a `Rasterizer` to guess the window dimensions, dropping it and then creating a new one for the glyph cache, reuse the same `Rasterizer`. This prevents the font from being loaded twice during startup. commit ed5dbc1 Author: Kirill Chibisov <[email protected]> Date: Mon Feb 14 19:10:13 2022 +0300 Add support for dashed and dotted underlines This finishes implementation of underline styles provided by `CSI 4 : [1-5] m` escape sequence. commit 774eb03 Author: Kirill Chibisov <[email protected]> Date: Fri Feb 11 02:04:50 2022 +0300 Clear damage rects right after drawing Since we could queue damage before we get into the actual rendering we should clear it after drawing not before. commit 933030e Author: Kirill Chibisov <[email protected]> Date: Thu Feb 10 23:42:33 2022 +0300 Fix terminal not being damage when only font size changed If font size changes however the cells stay the same the terminal won't be damaged, since it wasn't resized, however the visual change happened, thus the entire screen should be damaged. commit c35ccaf Author: Kirill Chibisov <[email protected]> Date: Thu Feb 10 15:29:03 2022 +0300 Make undercurls thickness close to underlines Fixes alacritty#5873. commit eefce4e Author: Christian Duerr <[email protected]> Date: Thu Feb 10 12:09:23 2022 +0100 Add note about publishing RCs to crates.io We've been testing out the pre-release feature of crates.io and there haven't been any major issues. So this updates the documentation to recommend publishing to crates.io even before the official release. commit d1608dd Author: Christian Duerr <[email protected]> Date: Wed Feb 9 21:41:54 2022 +0100 Add version to info log commit 8afeb2c Author: Kirill Chibisov <[email protected]> Date: Wed Feb 9 19:25:36 2022 +0300 Fix warnings when building only with Wayland feature This commit also makes our CI fail hard when warning encountered when building only for either Wayland or X11. commit 59f16f6 Author: Kirill Chibisov <[email protected]> Date: Wed Feb 9 17:41:57 2022 +0300 Fix alpha when using `colors.transparent_background_colors` The alpha is expected to be premultiplied from the text shader, so we should apply it to the background color. commit 73c3dd8 Author: Kirill Chibisov <[email protected]> Date: Tue Feb 8 20:47:31 2022 +0300 Add support for drawing undercurls Fixes alacritty#1628. commit 7263d22 Author: sckzor <[email protected]> Date: Tue Feb 8 06:43:27 2022 -0500 Add instructions for building without X11/Wayland commit c2959f4 Author: Kirill Chibisov <[email protected]> Date: Mon Feb 7 22:18:51 2022 +0300 Fix alacritty_terminal not emitting damage on color change commit 998250f Author: Thomas Churchman <[email protected]> Date: Thu Feb 3 13:04:46 2022 +0100 Fix renderable_cursor method documentation This method no longer returns an `Option` since alacritty#5773. Co-authored-by: Kirill Chibisov <[email protected]> commit d22cd74 Author: Kirill Chibisov <[email protected]> Date: Thu Feb 3 03:22:28 2022 +0300 Fix builtin font block elements going invisible commit 4bf8f37 Author: Christian Duerr <[email protected]> Date: Wed Feb 2 20:23:29 2022 +0100 Fix repeated permission requests on M1 macs This adds a codesign step to our makefile build which should automatically sign the application and resolve the issues on M1 macs where Alacritty constantly requests permissions. Since self-signing does still seem to fix this issue after sharing the resulting `Alacritty.app` with other M1 macs, the binary produced by our release build should also be fixed automatically. Fixes alacritty#5840. commit 40b5e17 Author: Kirill Chibisov <[email protected]> Date: Wed Feb 2 20:20:14 2022 +0300 Fix terminal damage after leaving Vi mode This fixes an issue when search results were not damaged when leaving Vi mode. commit 8f1abe1 Author: Kirill Chibisov <[email protected]> Date: Wed Feb 2 00:12:58 2022 +0300 Add damage tracking and reporting to compatible compositors This allows compositors to only process damaged (that is, updated) regions of our window buffer, which for larger window sizes (think 4k) should significantly reduce compositing workload under compositors that support/honor it, which is good for performance, battery life and lower latency over remote connections like VNC. On Wayland, clients are expected to always report correct damage, so this makes us a good citizen there. It can also aid remote desktop (waypipe, rdp, vnc, ...) and other types of screencopy by having damage bubble up correctly. Fixes alacritty#3186. commit d58dff1 Author: oxalica <[email protected]> Date: Mon Jan 31 04:57:25 2022 +0800 Clean up and abstract shader creation code Co-authored-by: Christian Duerr <[email protected]> commit 5459492 Author: Kirill Chibisov <[email protected]> Date: Sun Jan 30 15:46:02 2022 +0300 Use cell width to compute builtin font thickness While using underline thickness could sound logical to draw other lines most fonts don't make underlines thick compared to cell bounding box if you increase font size. So instead we're using cell width to scale builtin font nicely. This commit also adjusts arcs drawing and alignment. Fixes alacritty#5826. Fixes alacritty#5821. commit efae2cc Author: Kirill Chibisov <[email protected]> Date: Sun Jan 30 09:36:35 2022 +0300 Log used display server on Linux/BSD This also fixes a bug where the welcome log message wasn't logged. commit f6651a9 Author: Kirill Chibisov <[email protected]> Date: Sat Jan 29 23:06:44 2022 +0300 Account for font.offset and glyph.offset in built-in font This commit takes into account `font.offset` and `font.glyph_offset` when generating built-in font. commit 094c2c9 Author: zandr <[email protected]> Date: Sat Jan 29 14:50:44 2022 -0500 Add option to control built-in box drawing chars This commit adds the config `font.builtin_box_drawing` option to control built-in font, which is enabled by default. commit d1deff9 Author: Christian Duerr <[email protected]> Date: Sun Jan 23 15:22:23 2022 +0100 Remove outdated changelog URLs Alacritty's website (https://alacritty.org) is now advertised publicly on the GitHub page. Since that includes the old 0.3.0 and 0.5.0 changelogs, it's not necessary to point them out separately anymore. commit 9f6b49c Author: Christian Duerr <[email protected]> Date: Sat Jan 22 23:48:44 2022 +0100 Fix logfile overwriting existing files commit 4e91e99 Author: Ömer Sinan Ağacan <[email protected]> Date: Fri Jan 21 16:45:37 2022 +0300 Fix typo in SizeInfo padding_y rustdoc commit 14c22b1 Author: Kirill Chibisov <[email protected]> Date: Fri Jan 21 12:48:15 2022 +0300 Reset cursor blinking on ToggleViMode Fixes alacritty#4468. commit c4d610d Author: DaftMouse <[email protected]> Date: Thu Jan 20 20:57:58 2022 -0300 Fix OSC 104 with empty second parameter This fixes a bug where using OSC 104 without parameters but with a trailling semicolon (e.g. '\e]104;\e\\') would not be handled. Fixes alacritty#5542. commit 60ef17e Author: DaftMouse <[email protected]> Date: Sat Jan 15 00:35:05 2022 -0300 Add ´?´ support to OSC 4 commit e38f51c Author: Christian Duerr <[email protected]> Date: Thu Jan 13 06:36:22 2022 +0100 Remove time dependency In 7398e9f a regression was introduced which causes Alacritty to crash on startup since wayland has a keyboard repeat rate thread started before our logger is initialized. Since the latest version of time was rather inconvenient to use anyway and there is no nice solution for this issue other than downgrading the `time` version again, the time since startup is now logged instead of the local time. This should still provide all the relevant information, while getting rid of an unnecessary dependency. While it would be possible to also print the delta between log messages, this can be trivially computed so it has been omitted to skip adding another `Mutex` to the `Logger` struct. commit 7398e9f Author: Christian Duerr <[email protected]> Date: Thu Jan 13 03:23:37 2022 +0100 Fix macOS release CI Since the CI machine is amd64, it is not possible to just execute the aarch64 binary to test the application. So instead of running `cargo test`, we just use `cargo build` instead. Building on the non-release CI instead of just checking also allows us to make sure linking works properly before a release fails due to it. commit 1c9fa73 Author: James McCoy <[email protected]> Date: Wed Jan 12 20:53:03 2022 -0500 Update time crate to 0.3.5 Due to unsoundness issues (c.f., time-rs/time#380 and time-rs/time#293), determining the local timezone can only happen while single-threaded. Determine the timezone early in startup and apply the offset to the UTC timestamp before formatting. commit fd7573d Author: Kirill Chibisov <[email protected]> Date: Tue Jan 11 23:58:50 2022 +0300 Don't blink when cursor is hidden This prevents unnecessary redraws when the terminal is idle, cursor is hidden and blinking is enabled. commit 01c1cc1 Author: Kirill Chibisov <[email protected]> Date: Tue Jan 11 23:41:57 2022 +0300 Use `with_position` instead of `set_outer_position` This uses `with_position` method on a `WindowBuilder` instead of setting window position on the created window later on. commit a8c8c57 Author: Kirill Chibisov <[email protected]> Date: Tue Jan 11 16:22:30 2022 +0300 Fix use-after-free when formatting Wayland protocol error commit 5e39ea9 Author: Kirill Chibisov <[email protected]> Date: Tue Jan 11 00:56:49 2022 +0300 Fix block selection expansion with Ctrl + RMB When 'ExpandSelection' binding was added only default binding for RightClick was added, however to expand block selection holding control when doing a click is required, so this commit adds a binding for 'RMB + Control'. commit ed35d03 Author: Christian Duerr <[email protected]> Date: Sat Jan 8 21:24:42 2022 +0100 Fix fullwidth char regex search infinite loop This resolves an issue where the regex search could loop indefinitely when the end point was defined in a location containing a fullwidth character, thus skipping over the end before termination. Fixes alacritty#5753. commit 5aa8046 Author: a5ob7r <[email protected]> Date: Fri Jan 7 18:03:15 2022 +0900 Fix last column block selection This fixes a regression introduced in 8e58409, where block selections containing the last cell would have the trailing newline stripped and be joined into one long line on copy. commit 50c7c2b Author: David <[email protected]> Date: Thu Jan 6 11:31:45 2022 +0800 Fix macOS IME regression Fixes 5669. commit db83902 Author: Kirill Chibisov <[email protected]> Date: Thu Jan 6 02:13:55 2022 +0300 Fix title setting via IPC when dynamic_title is enabled commit f717710 Author: Kirill Chibisov <[email protected]> Date: Thu Jan 6 00:45:06 2022 +0300 Use builtin font for box drawing unicode characters This commit adds hand rolled drawing of unicode box drawing[1] and block elements[2] from ranges U+2500 up to U+259f. While using system font for such characters will look better most of the time, the characters tend to overlap or not align, so providing builtin font is the lesser evil here. [1] - https://www.unicode.org/charts/PDF/U2500.pdf [2] - https://www.unicode.org/charts/PDF/U2580.pdf Fixes alacritty#5485. commit 2057ac2 Author: a5ob7r <[email protected]> Date: Wed Jan 5 06:46:20 2022 +0900 Trim \n from hints/semantic-/simple selection Before this patch a hint regex ending in the last column would append a newline, despite this newline being "invisible" to the user. To match the expected behavior, newlines are trimmed from regex hint matches. To ensure consistency the simple and semantic selection also do not include a newline at the end of the copied text anymore. Fixes alacritty#5697. commit 437f42f Author: Christian Duerr <[email protected]> Date: Tue Jan 4 19:25:26 2022 +0100 Migrate from structopt to clap 3 commit 75c14b9 Author: Kirill Chibisov <[email protected]> Date: Tue Jan 4 01:20:56 2022 +0300 Update wayland-client to v0.29.3 This should bring support for latest wayland.xml. It also updates some other dependencies which are used by alacritty. Fixes alacritty#5743. commit ce59fa4 Author: Kirill Chibisov <[email protected]> Date: Mon Jan 3 21:55:22 2022 +0300 Add title/class CLI parameters to create-window This adds the ability to pass title and class over IPC via the create-window subcommand, so users can run only one instance for windows of different spurposes in the window managers of their choice. commit 7f4ceee Author: ezhang7423 <[email protected]> Date: Sat Jan 1 03:11:27 2022 -0800 rm println commit 182468c Author: ezhang7423 <[email protected]> Date: Sat Jan 1 03:10:31 2022 -0800 huh commit 45c9451 Author: ezhang7423 <[email protected]> Date: Sat Jan 1 03:01:20 2022 -0800 fin
System
OS: Windows
Version: alacritty 0.4.2 (f68de37)
Windows: ConPTY
Logs
Font/Terminal size: 9 with bitstream vera sans mono
Hello! Alacritty doesn't handle rendering subpixel fonts correctly. I thought I'd document the issue in depth:
This is what an example from alacritty looks like:
This is sample text rendered in a different application that is rendered incorrectly, similar settings:
This is sample text correctly rendered with sRGB correct blending:
I had a brief look through the rendering pipeline, as far as I can tell the issue is here:
Combined with this piece of code:
This looks like it tries to create a window with sRGB disabled, followed by making one with sRGB enabled if that fails. Currently alacritty only renders text correctly with sRGB enabled, but there's no reason why both can't work
textColor here looks like alpha for subpixel fonts, which is good, although strictly speaking it is alpha, not colour. The blend equation is
Using dual source blending, where src1_color = alphaMask, here the linear subpixels
This gives the final result: Foreground_colour * subpixel_alpha3 + destination_colour * (1-subpixel_alpha3). The problem is, foreground colour and destination colour are both in sRGB for the blend equation when sRGB framebuffers are disabled, which makes this blending incorrect. Its pretty straightforward to convert foreground colour to linear colour if the render window doesn't have srgb enabled (although if you use pow(colour, 2.2) i'll complain very loudly, see this), which makes destination colour the issue
One way to resolve this would be to render to an offscreen render target instead in linear colour, which is 4 component linear floats, then manually gamma correct afterwards when you blit back to the main render window. Or, you could create an offscreen sRGB enabled offscreen texture (which shouldn't run into to pixel format issues) and render to that before blitting. Or do both, conditionally depending on whether or not sRGB is available (unlikely to be an issue targeting desktop, but some linux drivers implement sRGB textures weirdly)
Decoupling the correctness of the text from the render window format is probably a good idea, given that it seems to have issues with getting the correct pixel formats from a look at the commit history. The issues here also apply to general colour rendering, and probably the emojis too, but I have skipped over all of that for simplicity
Thanks!
The text was updated successfully, but these errors were encountered: