Skip to content
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

Open
20k opened this issue May 21, 2020 · 2 comments
Open

Subpixel fonts aren't rendered correctly #3756

20k opened this issue May 21, 2020 · 2 comments

Comments

@20k
Copy link

20k commented May 21, 2020

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:

8293632 539999992_alacritty

This is sample text rendered in a different application that is rendered incorrectly, similar settings:

bad1

This is sample text correctly rendered with sRGB correct blending:

good1

I had a brief look through the rendering pipeline, as far as I can tell the issue is here:

// Regular text glyphs.
            vec3 textColor = texture(mask, TexCoords).rgb;
            alphaMask = vec4(textColor, textColor.r);
            color = vec4(fg, 1.0);

Combined with this piece of code:

let windowed_context =
            create_gl_window(window_builder.clone(), &event_loop, false, vsync, size)
                .or_else(|_| create_gl_window(window_builder, &event_loop, true, vsync, size))?;

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

gl::BlendFunc(gl::SRC1_COLOR, gl::ONE_MINUS_SRC1_COLOR);

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!

@kchibisov
Copy link
Member

kchibisov commented May 21, 2020

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

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.

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.

I guess that the thing which could work, though it'll require some testing first.

The issues here also apply to general colour rendering, and probably the emojis too, but I have skipped over all of that for simplicity

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.

@ivan-volnov
Copy link

I believe font rendering is the most important thing that terminal emulator does.
It must be perfect.

Any news here?

kchibisov added a commit to kchibisov/alacritty that referenced this issue Mar 4, 2022
kchibisov added a commit to kchibisov/alacritty that referenced this issue Mar 4, 2022
kchibisov added a commit to kchibisov/alacritty that referenced this issue Mar 24, 2022
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.
kchibisov added a commit to kchibisov/alacritty that referenced this issue Mar 24, 2022
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.
kchibisov added a commit that referenced this issue Mar 24, 2022
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.
ezhang7423 pushed a commit to ezhang7423/alacritty that referenced this issue Jun 14, 2022
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

4 participants
@20k @kchibisov @ivan-volnov and others