From 018bb8eb1825a422da9f9380053bf46f15edb2ec Mon Sep 17 00:00:00 2001 From: bakkeby Date: Fri, 17 May 2024 09:33:13 +0200 Subject: [PATCH 1/2] pango: upgrade to 0230520-e81f17d This upgrades the pango patch to: https://dwm.suckless.org/patches/pango/dwm-pango-20230520-e81f17d.diff The changes are fixes for some vertical alignment issues that were obvious only for CJK fonts. The implementation in dwm-flexipatch is still simplified compared to the original patch, e.g. avoiding changes like drw->fonts to drw->font and many similar function signatures. --- drw.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drw.c b/drw.c index 8f81439..311986f 100644 --- a/drw.c +++ b/drw.c @@ -436,10 +436,10 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp { #if BAR_PANGO_PATCH char buf[1024]; - int ty; - unsigned int ew; + int i, ty, th; + unsigned int ew, eh; XftDraw *d = NULL; - size_t i, len; + size_t len; int render = x || y || w || h; if (!drw || (render && !drw->scheme) || !text || !drw->fonts) @@ -464,10 +464,14 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp len = strlen(text); if (len) { - drw_font_getexts(drw->fonts, text, len, &ew, NULL, markup); + drw_font_getexts(drw->fonts, text, len, &ew, &eh, markup); + th = eh; /* shorten text if necessary */ - for (len = MIN(len, sizeof(buf) - 1); len && ew > w; len--) - drw_font_getexts(drw->fonts, text, len, &ew, NULL, markup); + for (len = MIN(len, sizeof(buf) - 1); len && ew > w; len--) { + drw_font_getexts(drw->fonts, text, len, &ew, &eh, markup); + if (eh > th) + th = eh; + } if (len) { memcpy(buf, text, len); @@ -477,7 +481,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp ; /* NOP */ if (render) { - ty = y + (h - drw->fonts->h) / 2; + ty = y + (h - th) / 2; if (markup) pango_layout_set_markup(drw->fonts->layout, buf, len); else From 66770cfbccceb562279ad7f8c700622b42776281 Mon Sep 17 00:00:00 2001 From: bakkeby Date: Fri, 17 May 2024 11:06:30 +0200 Subject: [PATCH 2/2] pango: upgrade to 0230520-e81f17d Missed this line from drw_font_getexts. --- drw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drw.c b/drw.c index 311986f..cbd41ae 100644 --- a/drw.c +++ b/drw.c @@ -713,7 +713,7 @@ drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, if (w) *w = r.width / PANGO_SCALE; if (h) - *h = font->h; + *h = r.height / PANGO_SCALE; } #else void