diff options
| author | Přemysl Eric Janouch <p@janouch.name> | 2022-09-20 11:11:49 +0200 | 
|---|---|---|
| committer | Přemysl Eric Janouch <p@janouch.name> | 2022-09-20 11:15:20 +0200 | 
| commit | e72ed71f53c3fbfe2bfe3aa1b591632ab24d0d34 (patch) | |
| tree | 689d7e24ef2bd410d8b23e462154cb138ef55eff | |
| parent | 28ed7a85a8cbf3173f17e8ca9f7c8a7d5a7c98ed (diff) | |
| download | nncmpp-e72ed71f53c3fbfe2bfe3aa1b591632ab24d0d34.tar.gz nncmpp-e72ed71f53c3fbfe2bfe3aa1b591632ab24d0d34.tar.xz nncmpp-e72ed71f53c3fbfe2bfe3aa1b591632ab24d0d34.zip | |
X11: support italic fonts as well
The bold + italic combination isn't supported thus far,
because it seems unnecessary.
| -rw-r--r-- | NEWS | 2 | ||||
| -rw-r--r-- | nncmpp.c | 22 | 
2 files changed, 21 insertions, 3 deletions
| @@ -3,6 +3,8 @@ Unreleased   * Added ability to look up song lyrics,     using a new scriptable extension interface for the Info tab + * Made the X11 interface support italic fonts +   * Added Readline-like M-u, M-l, M-c editor bindings @@ -1397,6 +1397,7 @@ static struct app_context  	XftDraw *xft_draw;                  ///< Xft rendering context  	XftFont *xft_regular;               ///< Regular font  	XftFont *xft_bold;                  ///< Bold font +	XftFont *xft_italic;                ///< Italic font  	char *x11_selection;                ///< CLIPBOARD selection  	XRenderColor x_fg[ATTRIBUTE_COUNT]; ///< Foreground per attribute @@ -5865,7 +5866,11 @@ static XErrorHandler x11_default_error_handler;  static XftFont *  x11_font (struct widget *self)  { -	return (self->attrs & A_BOLD) ? g.xft_bold : g.xft_regular; +	if (self->attrs & A_BOLD) +		return g.xft_bold; +	if (self->attrs & A_ITALIC) +		return g.xft_italic; +	return g.xft_regular;  }  static XRenderColor * @@ -6346,6 +6351,7 @@ x11_destroy (void)  	XftDrawDestroy (g.xft_draw);  	XftFontClose (g.dpy, g.xft_regular);  	XftFontClose (g.dpy, g.xft_bold); +	XftFontClose (g.dpy, g.xft_italic);  	cstr_set (&g.x11_selection, NULL);  	poller_fd_reset (&g.x11_event); @@ -6847,8 +6853,11 @@ x11_init_fonts (void)  	FcPattern *query_regular = FcNameParse ((const FcChar8 *) name);  	FcPattern *query_bold = FcPatternDuplicate (query_regular); -	FcPatternAdd (query_bold, FC_STYLE, -		(FcValue) { .type = FcTypeString, .u.s = (FcChar8 *) "Bold" }, FcFalse); +	FcPatternAdd (query_bold, FC_STYLE, (FcValue) { +		.type = FcTypeString, .u.s = (FcChar8 *) "Bold" }, FcFalse); +	FcPattern *query_italic = FcPatternDuplicate (query_regular); +	FcPatternAdd (query_italic, FC_STYLE, (FcValue) { +		.type = FcTypeString, .u.s = (FcChar8 *) "Italic" }, FcFalse);  	FcPattern *regular = XftFontMatch (g.dpy, screen, query_regular, &result);  	FcPatternDestroy (query_regular); @@ -6866,6 +6875,13 @@ x11_init_fonts (void)  		FcPatternDestroy (bold);  	if (!g.xft_bold)  		g.xft_bold = XftFontCopy (g.dpy, g.xft_regular); + +	FcPattern *italic = XftFontMatch (g.dpy, screen, query_italic, &result); +	FcPatternDestroy (query_italic); +	if (italic && !(g.xft_italic = XftFontOpenPattern (g.dpy, italic))) +		FcPatternDestroy (italic); +	if (!g.xft_italic) +		g.xft_italic = XftFontCopy (g.dpy, g.xft_regular);  }  static void | 
