From 44eec08b248cf0c936679dc509c83588577142c7 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 29 Jan 2025 17:48:04 +0530 Subject: [PATCH] Fix buffer not being cleared before re-use --- kitty/fonts/render.py | 10 ++++++---- kitty/freetype.c | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/kitty/fonts/render.py b/kitty/fonts/render.py index 5cd0dc6a5..1a20e6cb4 100644 --- a/kitty/fonts/render.py +++ b/kitty/fonts/render.py @@ -365,9 +365,11 @@ def create_face(path: str) -> 'Union[CTFace, Face]': return Face(path=path) -def test_render_codepoint(char: str = '😺', path: str = '/t/Noto-COLRv1.ttf', font_size: float = 160.0) -> None: +def test_render_codepoint(chars: str = '😺', path: str = '/t/Noto-COLRv1.ttf', font_size: float = 160.0) -> None: f = create_face(path=path) f.set_size(font_size, 96, 96) - bitmap, w, h = f.render_codepoint(ord(char)) - display_bitmap(bitmap, w, h) - print('\n') + for char in chars: + bitmap, w, h = f.render_codepoint(ord(char)) + print('Rendered:', char) + display_bitmap(bitmap, w, h) + print('\n') diff --git a/kitty/freetype.c b/kitty/freetype.c index 1a97c05e7..dbd29359d 100644 --- a/kitty/freetype.c +++ b/kitty/freetype.c @@ -763,7 +763,7 @@ render_glyph_with_cairo(Face *self, int glyph_id, ProcessedBitmap *ans, unsigned } sf = fit_cairo_glyph(self, &g, &bb, sf, width, height); g.y = baseline; - cairo_set_source_rgba(self->cairo.cr, 0, 0, 0, 0); cairo_paint(self->cairo.cr); // clear to blank + memset(self->cairo.buf, 0, self->cairo.stride * self->cairo.height); cairo_set_source_rgba(self->cairo.cr, fg.r / 255., fg.g / 255., fg.b / 255., fg.a / 255.); cairo_show_glyphs(self->cairo.cr, &g, 1); cairo_surface_flush(self->cairo.surface);