1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-26 01:32:25 +00:00

Make the shadow bold offset configurable, after discovering that

7x13 goes the other way to all other X fonts I've ever seen. (Arrgh.)

[originally from svn r2095]
This commit is contained in:
Simon Tatham 2002-10-17 16:51:01 +00:00
parent 34bdd30857
commit 7d7b523977
4 changed files with 13 additions and 8 deletions

View File

@ -374,6 +374,7 @@ struct config_tag {
int login_shell; int login_shell;
int scrollbar_on_left; int scrollbar_on_left;
char boldfont[64]; char boldfont[64];
int shadowboldoffset;
}; };
/* /*

View File

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

View File

@ -270,6 +270,15 @@ This resource is the same as the \fI-fb\fP command-line option: it
controls the font used to display bold text when \fIBoldAsColour\fP controls the font used to display bold text when \fIBoldAsColour\fP
is turned off. The default is unset (the font will be bolded by is turned off. The default is unset (the font will be bolded by
printing it twice at a one-pixel offset). 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
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.
.IP "\fBpterm.BoldAsColour\fP" .IP "\fBpterm.BoldAsColour\fP"
This option should be set to either 0 or 1; the default is 1. It 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 specifies the default state of auto wrap mode. When set to 1, bold

View File

@ -1296,16 +1296,9 @@ void do_text_internal(Context ctx, int x, int y, char *text, int len,
y*inst->font_height+cfg.window_border+inst->fonts[0]->ascent, y*inst->font_height+cfg.window_border+inst->fonts[0]->ascent,
text, len); text, len);
/*
* X fonts seem to be pretty consistent about leaving the
* _left_ pixel of the cell blank rather than the right. Hence
* I'm going to hard-code shadow bolding as displaying one
* pixel to the left rather than try to work out whether it
* should be left or right.
*/
if (shadow) { if (shadow) {
gdk_draw_text(inst->pixmap, inst->fonts[fontid], gc, gdk_draw_text(inst->pixmap, inst->fonts[fontid], gc,
x*inst->font_width+cfg.window_border - 1, x*inst->font_width+cfg.window_border + cfg.shadowboldoffset,
y*inst->font_height+cfg.window_border+inst->fonts[0]->ascent, y*inst->font_height+cfg.window_border+inst->fonts[0]->ascent,
text, len); text, len);
} }