diff options
author | Thomas Tuegel <ttuegel@gmail.com> | 2014-02-03 07:30:29 -0600 |
---|---|---|
committer | Rok Garbas <rok@garbas.si> | 2014-02-05 21:19:57 +0000 |
commit | 4424edccf402537aa6789eb27244e61aea8d13bb (patch) | |
tree | 64e23571c1d6800f159a52127cdd64fbfdc7b362 | |
parent | edb9e50ef9ee4f671a65b515abe3c899a20c39ae (diff) |
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.
-rw-r--r-- | pkgs/applications/misc/rxvt_unicode/default.nix | 2 | ||||
-rw-r--r-- | pkgs/applications/misc/rxvt_unicode/rxvt-unicode-9.06-font-width.patch | 21 |
2 files changed, 23 insertions, 0 deletions
diff --git a/pkgs/applications/misc/rxvt_unicode/default.nix b/pkgs/applications/misc/rxvt_unicode/default.nix index e5d0ae95f996e..2e3ef9f0d10ec 100644 --- a/pkgs/applications/misc/rxvt_unicode/default.nix +++ b/pkgs/applications/misc/rxvt_unicode/default.nix @@ -24,6 +24,8 @@ stdenv.mkDerivation (rec { outputs = [ "out" "terminfo" ]; + patches = [ ./rxvt-unicode-9.06-font-width.patch ]; + preConfigure = '' mkdir -p $terminfo/share/terminfo diff --git a/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-9.06-font-width.patch b/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-9.06-font-width.patch new file mode 100644 index 0000000000000..636083218fa56 --- /dev/null +++ b/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-9.06-font-width.patch @@ -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; + } \ No newline at end of file |