1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-05-28 23:34:49 -05:00

Improve shadow bold mode: set the default shadow bold offset to +1

not -1 (it turns out _most_ X fonts prefer the former, though
irritatingly my favourite real X font used to prefer the latter
which was why I made the X version of my Font Of Choice do so too),
and also clip to the boundaries of the rectangle we should be
drawing text in. This still doesn't completely prevent display
corruption in the case where text drawn in one sweep is partially
overwritten in a future one, but gnome-terminal has this problem
too, and now we've got the right default SB offset _and_ offer the
opportunity to reconfigure it I think this is pretty good for now.

[originally from svn r2184]
This commit is contained in:
Simon Tatham 2002-11-02 16:16:35 +00:00
parent d6739ada35
commit 82e447c1d0
3 changed files with 21 additions and 8 deletions

View File

@ -626,7 +626,7 @@ void load_settings(char *section, int do_host, Config * cfg)
gppi(sesskey, "LoginShell", 1, &cfg->login_shell);
gppi(sesskey, "ScrollbarOnLeft", 0, &cfg->scrollbar_on_left);
gpps(sesskey, "BoldFont", "", cfg->boldfont, sizeof(cfg->boldfont));
gppi(sesskey, "ShadowBoldOffset", -1, &cfg->shadowboldoffset);
gppi(sesskey, "ShadowBoldOffset", 1, &cfg->shadowboldoffset);
close_settings_r(sesskey);
}

View File

@ -295,12 +295,13 @@ printing it twice at a one-pixel offset).
.IP "\fBpterm.ShadowBoldOffset\fP"
This resource can be set to an integer; the default is -1. It
specifies the offset at which text is overprinted when using "shadow
bold" mode. The default (-1) means that the text will be printed in
the normal place, and also one character to the left; this seems to
bold" mode. The default (1) means that the text will be printed in
the normal place, and also one character to the right; this seems to
work well for most X bitmap fonts, which have a blank line of pixels
down the left-hand side. For some fonts, you may need to set this to
+1, so that the text is overprinted one pixel to the right; for
really large fonts, you may want to set it even higher.
down the right-hand side. For some fonts, you may need to set this to
-1, so that the text is overprinted one pixel to the left; for
really large fonts, you may want to set it higher than 1 (in one
direction or the other).
.IP "\fBpterm.BoldAsColour\fP"
This option should be set to either 0 or 1; the default is 1. It
specifies the default state of auto wrap mode. When set to 1, bold

View File

@ -1398,7 +1398,7 @@ void do_text_internal(Context ctx, int x, int y, char *text, int len,
struct gui_data *inst = dctx->inst;
GdkGC *gc = dctx->gc;
int nfg, nbg, t, fontid, shadow;
int nfg, nbg, t, fontid, shadow, rlen;
/*
* NYI:
@ -1435,13 +1435,25 @@ void do_text_internal(Context ctx, int x, int y, char *text, int len,
return;
if (x + len*2 > inst->term->cols)
len = (inst->term->cols-x)/2; /* trim to LH half */
rlen = len * 2;
} else
rlen = len;
{
GdkRectangle r;
r.x = x*inst->font_width+cfg.window_border;
r.y = y*inst->font_height+cfg.window_border;
r.width = rlen*inst->font_width;
r.height = inst->font_height;
gdk_gc_set_clip_rectangle(gc, &r);
}
gdk_gc_set_foreground(gc, &inst->cols[nbg]);
gdk_draw_rectangle(inst->pixmap, gc, 1,
x*inst->font_width+cfg.window_border,
y*inst->font_height+cfg.window_border,
len*inst->font_width, inst->font_height);
rlen*inst->font_width, inst->font_height);
gdk_gc_set_foreground(gc, &inst->cols[nfg]);
gdk_draw_text(inst->pixmap, inst->fonts[fontid], gc,