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 /pkgs/applications/misc/rxvt_unicode | |
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.
Diffstat (limited to 'pkgs/applications/misc/rxvt_unicode')
-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 |