diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e14edf0..c27eb646 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,8 +75,10 @@ ### Deprecated + * **bell** option in `foot.ini`; set actions in **[bell]** section instead. + ### Removed * Buffer damage quirk for Plasma/KWin. @@ -93,6 +95,9 @@ (https://codeberg.org/dnkl/foot/issues/495). * Assertion when emitting a sixel occupying the entire scrollback history (https://codeberg.org/dnkl/foot/issues/494). +* Font underlines being positioned below the cell (and thus being + invisible) for certain combinations of fonts and font sizes + (https://codeberg.org/dnkl/foot/issues/503). ### Security diff --git a/render.c b/render.c index 1454c84a..8481d330 100644 --- a/render.c +++ b/render.c @@ -317,11 +317,14 @@ draw_underline(const struct terminal *term, pixman_image_t *pix, const struct fcft_font *font, const pixman_color_t *color, int x, int y, int cols) { + /* Make sure the line isn't positioned below the cell */ + int y_ofs = font_baseline(term) - font->underline.position; + y_ofs = min(y_ofs, term->cell_height - font->underline.thickness); + pixman_image_fill_rectangles( PIXMAN_OP_SRC, pix, color, 1, &(pixman_rectangle16_t){ - x, y + font_baseline(term) - font->underline.position, - cols * term->cell_width, font->underline.thickness}); + x, y + y_ofs, cols * term->cell_width, font->underline.thickness}); } static void