From 28b2983e684dbbfd5fa3636997fa671acb3703eb Mon Sep 17 00:00:00 2001 From: "Thomas E. Dickey" Date: Sun, 27 Nov 2022 17:26:51 -0500 Subject: issue 17: libxft-2.3.7: Bold fonts in urxvt missing leftmost pixels Update for issue 16 replaced maximum advance with truncated offsets. However, in some cases (e.g., server providing a fake bold version of a font), the result may extend outside the bounding box for the glyph. To work around this, use the minimum of old/new values. Signed-off-by: Thomas E. Dickey --- src/xftglyphs.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/xftglyphs.c b/src/xftglyphs.c index bb9057e..e6f569f 100644 --- a/src/xftglyphs.c +++ b/src/xftglyphs.c @@ -844,14 +844,18 @@ XftFontLoadGlyphs (Display *dpy, } else { + short maximum_x = (short)(font->public.max_advance_width); + short maximum_y = (short)(-font->public.max_advance_width); + short trimmed_x = (short)(TRUNC(ROUND(glyphslot->advance.x))); + short trimmed_y = (short)(-TRUNC(ROUND(glyphslot->advance.y))); if (font->info.load_flags & FT_LOAD_VERTICAL_LAYOUT) { xftg->metrics.xOff = 0; - xftg->metrics.yOff = (short)(-TRUNC(ROUND(glyphslot->advance.y))); + xftg->metrics.yOff = min(maximum_y,trimmed_y); } else { - xftg->metrics.xOff = (short)(TRUNC(ROUND(glyphslot->advance.x))); + xftg->metrics.xOff = min(maximum_x,trimmed_x); xftg->metrics.yOff = 0; } } -- cgit v1.2.1