From 05bb4e16b49e52ab3c1e196597f910ddfd9f25be Mon Sep 17 00:00:00 2001 From: Stefan Seyfried Date: Sun, 28 Jan 2018 20:34:24 +0100 Subject: [PATCH] fontrenderer: adjust width clipping instead of not even trying to draw glyphs that *might* extend past the allocated space, actually draw as much as fits in the box Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/736964034c03d2e1ee0a545c8c7044ffe56b182e Author: Stefan Seyfried Date: 2018-01-28 (Sun, 28 Jan 2018) ------------------ This commit was generated by Migit --- src/driver/fontrenderer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/driver/fontrenderer.cpp b/src/driver/fontrenderer.cpp index 47465e649..21b967efc 100644 --- a/src/driver/fontrenderer.cpp +++ b/src/driver/fontrenderer.cpp @@ -644,10 +644,11 @@ void Font::RenderString(int x, int y, const int width, const char *text, const f x += (kerning.x) >> 6; // kerning! } +#if 0 // width clip if (x + glyph->xadvance + spread_by > left + width) break; - +#endif int ap=(x + glyph->left) * sizeof(fb_pixel_t) + stride * (y - glyph->top); uint8_t * d = ((uint8_t *)buff) + ap; uint8_t * s = glyph->buffer; @@ -659,6 +660,9 @@ void Font::RenderString(int x, int y, const int width, const char *text, const f fb_pixel_t * td = (fb_pixel_t *)d; int ax; for (ax = 0; ax < w + spread_by; ax++) { + /* width clip */ + if (x + ax > left + width) + break; if (stylemodifier != Font::Embolden) { /* do not paint the backgroundcolor (*s = 0) */ if (*s != 0)