- rewrote the low-level xft drawing function ("xft backend" for the
hipper parts of the world) to hopefully cope better with proportional
chars mixed with fixed-width ones.
+ - rxvt is now much more careful (read: slower) with potentially
+ overlapping xft characters. It usually overshoots and redraws
+ more than required, but that's better than undershooting and
+ cutting pieces off of characters.
+ - rxvt is now more restrictive in what font heights it accepts for
+ fonts that will likely overshoot or underhsoot lines.
5.5 Sat Apr 23 22:31:36 CEST 2005
- re-enabled modifer state matching as in 5.3, but implement
<dt><strong><a name="item__2dst_7c_2bst"><strong>-st</strong>|<strong>+st</strong></a></strong><br />
</dt>
<dd>
-Display normal (non XTerm/NeXT) scrollbar without/with a trough;
+Display rxvt (non XTerm/NeXT) scrollbar without/with a trough;
resource <strong>scrollBar_floating</strong>.
</dd>
<p></p>
</dt>
<dd>
Use the specified colour for the scrollbar's trough area [default
-#969696]. Only relevant for normal (non XTerm/NeXT) scrollbar.
+#969696]. Only relevant for rxvt (non XTerm/NeXT) scrollbar.
</dd>
<p></p>
<dt><strong><a name="item_bordercolor_3a_colour"><strong>borderColor:</strong> <em>colour</em></a></strong><br />
</dt>
<dd>
Set scrollbar style to <strong>rxvt</strong>, <strong>plain</strong>, <strong>next</strong> or <strong>xterm</strong>. <strong>plain</strong> is
-the author's favourite..
+the author's favourite.
</dd>
<p></p>
<dt><strong><a name="item_title_3a_string"><strong>title:</strong> <em>string</em></a></strong><br />
.\" ========================================================================
.\"
.IX Title "rxvt 1"
-.TH rxvt 1 "2005-04-22" "5.5" "RXVT-UNICODE"
+.TH rxvt 1 "2005-06-18" "5.5" "RXVT-UNICODE"
.SH "NAME"
rxvt\-unicode (ouR XVT, unicode) \- (a VT102 emulator for the X window system)
.SH "SYNOPSIS"
Put scrollbar on right/left; resource \fBscrollBar_right\fR.
.IP "\fB\-st\fR|\fB+st\fR" 4
.IX Item "-st|+st"
-Display normal (non XTerm/NeXT) scrollbar without/with a trough;
+Display rxvt (non XTerm/NeXT) scrollbar without/with a trough;
resource \fBscrollBar_floating\fR.
.IP "\fB\-ptab\fR|\fB+ptab\fR" 4
.IX Item "-ptab|+ptab"
.IP "\fBtroughColor:\fR \fIcolour\fR" 4
.IX Item "troughColor: colour"
Use the specified colour for the scrollbar's trough area [default
-#969696]. Only relevant for normal (non XTerm/NeXT) scrollbar.
+#969696]. Only relevant for rxvt (non XTerm/NeXT) scrollbar.
.IP "\fBborderColor:\fR \fIcolour\fR" 4
.IX Item "borderColor: colour"
The colour of the border around the text area and between the scrollbar
.IP "\fBscrollstyle:\fR \fImode\fR" 4
.IX Item "scrollstyle: mode"
Set scrollbar style to \fBrxvt\fR, \fBplain\fR, \fBnext\fR or \fBxterm\fR. \fBplain\fR is
-the author's favourite..
+the author's favourite.
.IP "\fBtitle:\fR \fIstring\fR" 4
.IX Item "title: string"
Set window title string, the default title is the command-line
Put scrollbar on right/left; resource scrollBar_right.
-st|+st
- Display normal (non XTerm/NeXT) scrollbar without/with a trough;
+ Display rxvt (non XTerm/NeXT) scrollbar without/with a trough;
resource scrollBar_floating.
-ptab|+ptab
troughColor: *colour*
Use the specified colour for the scrollbar's trough area [default
- #969696]. Only relevant for normal (non XTerm/NeXT) scrollbar.
+ #969696]. Only relevant for rxvt (non XTerm/NeXT) scrollbar.
borderColor: *colour*
The colour of the border around the text area and between the
scrollstyle: *mode*
Set scrollbar style to rxvt, plain, next or xterm. plain is the
- author's favourite..
+ author's favourite.
title: *string*
Set window title string, the default title is the command-line
int dir_ret, asc_ret, des_ret;
XTextExtents16 (f, &ch, 1, &dir_ret, &asc_ret, &des_ret, &g);
- int wcw = wcwidth (*t); if (wcw > 0) g.width = g.width / wcw;
+ int wcw = wcwidth (*t); if (wcw > 0) g.width = (g.width + wcw - 1) / wcw;
if (width < g.width) width = g.width;
}
// check character against base font bounding box
int w = xcs->width;
int wcw = wcwidth (unicode);
- if (wcw > 0) w /= wcw;
+ if (wcw > 0) w = (w + wcw - 1) / wcw;
careful = w > prop->width;
if (careful && w > prop->width * MAX_OVERLAP >> 2)
XftUnlockFace (f);
+ int glheight = height;
+
for (uint16_t *t = extent_test_chars + NUM_EXTENT_TEST_CHARS; t-- > extent_test_chars; )
{
FcChar16 ch = *t;
XGlyphInfo g;
XftTextExtents16 (disp, f, &ch, 1, &g);
+ g.width -= g.x;
+
int wcw = wcwidth (ch);
- if (wcw > 0) g.width = g.width / wcw;
+ if (wcw > 0) g.width = (g.width + wcw - 1) / wcw;
- if (width < g.width) width = g.width;
- if (height < g.height) height = g.height;
+ 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;
}
if (prop.height == rxvt_fontprop::unset
- || height <= prop.height
+ || (height <= prop.height && glheight <= prop.height)
|| height <= 2
|| !scalable)
break;
XGlyphInfo g;
XftTextExtents32 (DISPLAY, f, &ch, 1, &g);
- int w = g.width;
+ int w = g.width - g.x;
int wcw = wcwidth (unicode);
- if (wcw > 0) w /= wcw;
+ if (wcw > 0) w = (w + wcw - 1) / wcw;
careful = w > prop->width;
if (careful && w > prop->width * MAX_OVERLAP >> 2)
// VERSION _must_ be \d.\d+
-#define VERSION "5.5"
+#define VERSION "5.6"
#define DATE "2005-04-23"