| st: Fix off-by-one error when calculating character width. - st - simple termin… | |
| git clone git://git.suckless.org/st | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 39964614b742c4ec98a326762d98470cb987a45b | |
| parent 0e48a1995eee1c2babc58523ef0be296e4b1c3e8 | |
| Author: Tor Andersson <[email protected]> | |
| 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 <[email protected]> | |
| 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; | |
| } |