about summary refs log tree commit diff
path: root/pkgs/applications/misc/rxvt_unicode
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@gmail.com>2014-02-03 07:30:29 -0600
committerRok Garbas <rok@garbas.si>2014-02-05 21:19:57 +0000
commit4424edccf402537aa6789eb27244e61aea8d13bb (patch)
tree64e23571c1d6800f159a52127cdd64fbfdc7b362 /pkgs/applications/misc/rxvt_unicode
parentedb9e50ef9ee4f671a65b515abe3c899a20c39ae (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.nix2
-rw-r--r--pkgs/applications/misc/rxvt_unicode/rxvt-unicode-9.06-font-width.patch21
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