rxvt-unicode: calculate font width correctly

It is (fairly) well known among rxvt-unicode users that its method of
calculating the width of Xft fonts is not correct. This is the Gentoo
version of the patch which corrects the problem.
This commit is contained in:
Thomas Tuegel 2014-02-03 07:30:29 -06:00 committed by Rok Garbas
parent edb9e50ef9
commit 4424edccf4
2 changed files with 23 additions and 0 deletions

View File

@ -24,6 +24,8 @@ stdenv.mkDerivation (rec {
outputs = [ "out" "terminfo" ];
patches = [ ./rxvt-unicode-9.06-font-width.patch ];
preConfigure =
''
mkdir -p $terminfo/share/terminfo

View File

@ -0,0 +1,21 @@
--- a/src/rxvtfont.C 2008-07-09 12:21:45.000000000 +0400
+++ b/src/rxvtfont.C 2009-10-30 14:32:53.000000000 +0300
@@ -1195,12 +1195,14 @@
XGlyphInfo g;
XftTextExtents16 (disp, f, &ch, 1, &g);
- g.width -= g.x;
-
+/*
+ * bukind: don't use g.width as a width of a character!
+ * instead use g.xOff, see e.g.: http://keithp.com/~keithp/render/Xft.tutorial
+ */
int wcw = WCWIDTH (ch);
- if (wcw > 0) g.width = (g.width + wcw - 1) / wcw;
+ if (wcw > 1) g.xOff = g.xOff / wcw;
+ if (width < g.xOff) width = g.xOff;
- if (width < g.width ) width = g.width;
if (height < g.height ) height = g.height;
if (glheight < g.height - g.y) glheight = g.height - g.y;
}