Discussion:
[blfs-support] *rxvt xft letter spacing PATCHED
Paul Rogers
2018-07-22 16:39:48 UTC
Permalink
Thanks, I _am_ making some progress, but have more to try to compile
urxvt before reporting. These devs don't seem to have grasped the "Unix
Principle"!
I was very unhappy with all the "bells and whistles" this package has--"More bells and whistles than a steam calliope." Something is "prima facie" wrong with a package that has --enable-everything & --enable-frills! I wanted to go the opposite way, but then lost letterSpace:

patch -Np1 -i ../patches/urxvt-9.22-letterSpacing.patch &&
(./configure --target="$CTARGET" --disable-everything --with-x \
--with-res-name=urxvt --with-res-class=URxvt --without-codesets \
--enable-fallback=Rxvt --enable-xft --enable-resources \
--enable-rxvt-scroll --enable-font-styles --enable-mousewheel \
--enable-smart-resize --enable-utmp -enable-startup-notification \
--enable-keepscrolling 2>&1 | tee log.conf && exit $PIPESTATUS) &&

I decided I had to make this work! So I looked into the code and fortunately it is easily enough patched, note above, to permanently enable letterSpace that even I could do it--just move a few definitions outside ifdef blocks. So I offer this patch in case anyone prefers my approach:


--- a/src/init.C 2016-01-18 11:35:08.000000000 -0800
+++ b/src/init.C 2018-07-21 23:49:33.709075794 -0700
@@ -655,10 +655,10 @@

if (rs[Rs_lineSpace] && (i = atoi (rs[Rs_lineSpace])) >= 0)
lineSpace = min (i, std::numeric_limits<int16_t>::max ());
+#endif

if (rs[Rs_letterSpace])
letterSpace = atoi (rs[Rs_letterSpace]);
-#endif

#ifdef POINTER_BLANK
if (rs[Rs_pointerBlankDelay] && (i = atoi (rs[Rs_pointerBlankDelay])) >= 0)
diff -Naur a/src/rsinc.h b/src/rsinc.h
--- a/src/rsinc.h 2015-06-17 04:57:42.000000000 -0700
+++ b/src/rsinc.h 2018-07-21 23:40:42.186037777 -0700
@@ -78,10 +78,10 @@
def (int_bwidth)
def (borderLess)
def (lineSpace)
- def (letterSpace)
def (cursorUnderline)
def (urgentOnBell)
#endif
+ def (letterSpace)
#if BUILTIN_GLYPHS
def (skipBuiltinGlyphs)
#endif
diff -Naur a/src/xdefaults.C b/src/xdefaults.C
--- a/src/xdefaults.C 2016-01-23 10:38:47.000000000 -0800
+++ b/src/xdefaults.C 2018-07-21 23:55:05.091099495 -0700
@@ -244,8 +244,8 @@
STRG (Rs_int_bwidth, "internalBorder", "b", "number", "internal border in pixels"),
BOOL (Rs_borderLess, "borderLess", "bl", Opt_borderLess, 0, "borderless window"),
STRG (Rs_lineSpace, "lineSpace", "lsp", "number", "number of extra pixels between rows"),
- STRG (Rs_letterSpace, "letterSpace", "letsp", "number", "letter spacing adjustment"),
#endif
+ STRG (Rs_letterSpace, "letterSpace", "letsp", "number", "letter spacing adjustment"),
#ifdef BUILTIN_GLYPHS
BOOL (Rs_skipBuiltinGlyphs, "skipBuiltinGlyphs", "sbg", Opt_skipBuiltinGlyphs, 0, "do not use internal glyphs"),
#endif

In case line wrapping messes that up so's it can't be (ahem) patched back together, I'll make it an attachment too.
9x15. And there I also see "URxvt.letterSpace: -1" to reduce the
spacing (not necessary in my experience with xft fonts, but maybe
what you are looking for).
I find with xft:Monospace-9 I want letterSpace: 2.

URxvt.font: xft:Monospace-9
URxvt.letterSpace: -2

In my playing around I discovered xft tries to apply letterSpace to all the fonts it has, whether in .Xresources or not. If a large number may be required for a widely spaced font in use, it may cause some "error" messages on one's console when narrower spaced fonts cause letter overlaps.
--
Paul Rogers
***@fastmail.fm
Rogers' Second Law: "Everything you do communicates."
(I do not personally endorse any additions after this line. TANSTAAFL :-)
Loading...