tst: Fix off-by-one error when calculating character width. - st - [fork] custo… | |
git clone git://src.adamsgaard.dk/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 | |
tterminator. The original code would include the .notdef glyph (since it'll | |
ttry 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 | |
t@@ -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); | |
t@@ -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; | |
} |