X11: support italic fonts as well
The bold + italic combination isn't supported thus far, because it seems unnecessary.
This commit is contained in:
parent
28ed7a85a8
commit
e72ed71f53
2
NEWS
2
NEWS
|
@ -3,6 +3,8 @@ Unreleased
|
||||||
* Added ability to look up song lyrics,
|
* Added ability to look up song lyrics,
|
||||||
using a new scriptable extension interface for the Info tab
|
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
|
* Added Readline-like M-u, M-l, M-c editor bindings
|
||||||
|
|
||||||
|
|
||||||
|
|
22
nncmpp.c
22
nncmpp.c
|
@ -1397,6 +1397,7 @@ static struct app_context
|
||||||
XftDraw *xft_draw; ///< Xft rendering context
|
XftDraw *xft_draw; ///< Xft rendering context
|
||||||
XftFont *xft_regular; ///< Regular font
|
XftFont *xft_regular; ///< Regular font
|
||||||
XftFont *xft_bold; ///< Bold font
|
XftFont *xft_bold; ///< Bold font
|
||||||
|
XftFont *xft_italic; ///< Italic font
|
||||||
char *x11_selection; ///< CLIPBOARD selection
|
char *x11_selection; ///< CLIPBOARD selection
|
||||||
|
|
||||||
XRenderColor x_fg[ATTRIBUTE_COUNT]; ///< Foreground per attribute
|
XRenderColor x_fg[ATTRIBUTE_COUNT]; ///< Foreground per attribute
|
||||||
|
@ -5865,7 +5866,11 @@ static XErrorHandler x11_default_error_handler;
|
||||||
static XftFont *
|
static XftFont *
|
||||||
x11_font (struct widget *self)
|
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 *
|
static XRenderColor *
|
||||||
|
@ -6346,6 +6351,7 @@ x11_destroy (void)
|
||||||
XftDrawDestroy (g.xft_draw);
|
XftDrawDestroy (g.xft_draw);
|
||||||
XftFontClose (g.dpy, g.xft_regular);
|
XftFontClose (g.dpy, g.xft_regular);
|
||||||
XftFontClose (g.dpy, g.xft_bold);
|
XftFontClose (g.dpy, g.xft_bold);
|
||||||
|
XftFontClose (g.dpy, g.xft_italic);
|
||||||
cstr_set (&g.x11_selection, NULL);
|
cstr_set (&g.x11_selection, NULL);
|
||||||
|
|
||||||
poller_fd_reset (&g.x11_event);
|
poller_fd_reset (&g.x11_event);
|
||||||
|
@ -6847,8 +6853,11 @@ x11_init_fonts (void)
|
||||||
|
|
||||||
FcPattern *query_regular = FcNameParse ((const FcChar8 *) name);
|
FcPattern *query_regular = FcNameParse ((const FcChar8 *) name);
|
||||||
FcPattern *query_bold = FcPatternDuplicate (query_regular);
|
FcPattern *query_bold = FcPatternDuplicate (query_regular);
|
||||||
FcPatternAdd (query_bold, FC_STYLE,
|
FcPatternAdd (query_bold, FC_STYLE, (FcValue) {
|
||||||
(FcValue) { .type = FcTypeString, .u.s = (FcChar8 *) "Bold" }, FcFalse);
|
.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);
|
FcPattern *regular = XftFontMatch (g.dpy, screen, query_regular, &result);
|
||||||
FcPatternDestroy (query_regular);
|
FcPatternDestroy (query_regular);
|
||||||
|
@ -6866,6 +6875,13 @@ x11_init_fonts (void)
|
||||||
FcPatternDestroy (bold);
|
FcPatternDestroy (bold);
|
||||||
if (!g.xft_bold)
|
if (!g.xft_bold)
|
||||||
g.xft_bold = XftFontCopy (g.dpy, g.xft_regular);
|
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
|
static void
|
||||||
|
|
Loading…
Reference in New Issue