int x_underline_at_descent_line;
+/* Require underline to be at least this many screen pixels below baseline
+ This to avoid underline "merging" with the base of letters at small
+ font sizes, particularly when x_use_underline_position_properties is on. */
+
+int x_underline_minimum_display_offset;
+
/* This is a chain of structures for all the X displays currently in
use. */
else if (s->font)
position = (s->font->descent + 1) / 2;
}
+ if (x_underline_minimum_display_offset)
+ position = max (position, eabs (x_underline_minimum_display_offset));
}
/* Check the sanity of thickness and position. We should
avoid drawing underline out of the current line area. */
doc: /* *Non-nil means make use of UNDERLINE_POSITION font properties.
A value of nil means ignore them. If you encounter fonts with bogus
UNDERLINE_POSITION font properties, for example 7x13 on XFree prior
-to 4.1, set this to nil. */);
+to 4.1, set this to nil. Variable `x-underline-minimum-display-offset' may
+be used to override the font's UNDERLINE_POSITION for small font display
+sizes. */);
x_use_underline_position_properties = 1;
DEFVAR_BOOL ("x-underline-at-descent-line",
baseline level. The default value is nil. */);
x_underline_at_descent_line = 0;
+ DEFVAR_INT ("x-underline-minimum-display-offset",
+ &x_underline_minimum_display_offset,
+ doc: /* *When > 0, underline is drawn at least that many screen pixels below baseline.
+This can improve legibility of underlined text at small font sizes,
+particularly when using variable `x-use-underline-position-properties'
+with fonts that specify an UNDERLINE_POSITION relatively close to the
+baseline. The default value is 0. */);
+ x_underline_minimum_display_offset = 0;
+
+
DEFVAR_BOOL ("x-mouse-click-focus-ignore-position",
&x_mouse_click_focus_ignore_position,
doc: /* Non-nil means that a mouse click to focus a frame does not move point.