st
simple terminal
git clone https://9o.is/git/st.git
commit c594149ab15f803400ac0e11be80d3acba9de906 parent ca544967cfc7247133d311f65c6d811cb4a01627 Author: Tor Andersson <tor@ccxvii.net> Date: Wed, 9 Mar 2016 17:11:57 +0100 st: Fix off-by-one error when calculating character width. LEN(str) is one larger than strlen(str) because it also counts the zero terminator. The original code would include the .notdef glyph (since it'll try to encode character 0, which gets encoded to the .notdef glyph) when measuring the average dimensions of printable ascii characters. This causes problems with fonts like GNU Unifont where the .notdef glyph is not the same width as the usual half-width characters. Signed-off-by: Christoph Lohmann <20h@r-36.net> Diffstat:
| M | st.c | | | 4 | ++-- |
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/st.c b/st.c @@ -3291,7 +3291,7 @@ xloadfont(Font *f, FcPattern *pattern) XftTextExtentsUtf8(xw.dpy, f->match, (const FcChar8 *) ascii_printable, - LEN(ascii_printable), &extents); + strlen(ascii_printable), &extents); f->set = NULL; f->pattern = FcPatternDuplicate(pattern); @@ -3302,7 +3302,7 @@ xloadfont(Font *f, FcPattern *pattern) f->rbearing = f->match->max_advance_width; f->height = f->ascent + f->descent; - f->width = DIVCEIL(extents.xOff, LEN(ascii_printable)); + f->width = DIVCEIL(extents.xOff, strlen(ascii_printable)); return 0; }