|
|
@ -132,6 +132,19 @@ xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern)
|
|
|
|
die("no font specified.");
|
|
|
|
die("no font specified.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Do not allow using color fonts. This is a workaround for a BadLength
|
|
|
|
|
|
|
|
* error from Xft with color glyphs. Modelled on the Xterm workaround. See
|
|
|
|
|
|
|
|
* https://bugzilla.redhat.com/show_bug.cgi?id=1498269
|
|
|
|
|
|
|
|
* https://lists.suckless.org/dev/1701/30932.html
|
|
|
|
|
|
|
|
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916349
|
|
|
|
|
|
|
|
* and lots more all over the internet.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
FcBool iscol;
|
|
|
|
|
|
|
|
if(FcPatternGetBool(xfont->pattern, FC_COLOR, 0, &iscol) == FcResultMatch && iscol) {
|
|
|
|
|
|
|
|
XftFontClose(drw->dpy, xfont);
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
font = ecalloc(1, sizeof(Fnt));
|
|
|
|
font = ecalloc(1, sizeof(Fnt));
|
|
|
|
font->xfont = xfont;
|
|
|
|
font->xfont = xfont;
|
|
|
|
font->pattern = pattern;
|
|
|
|
font->pattern = pattern;
|
|
|
@ -200,7 +213,7 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
|
|
|
|
Clr *ret;
|
|
|
|
Clr *ret;
|
|
|
|
|
|
|
|
|
|
|
|
/* need at least two colors for a scheme */
|
|
|
|
/* need at least two colors for a scheme */
|
|
|
|
if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(Clr))))
|
|
|
|
if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor))))
|
|
|
|
return NULL;
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < clrcount; i++)
|
|
|
|
for (i = 0; i < clrcount; i++)
|
|
|
@ -337,6 +350,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
|
|
|
|
fcpattern = FcPatternDuplicate(drw->fonts->pattern);
|
|
|
|
fcpattern = FcPatternDuplicate(drw->fonts->pattern);
|
|
|
|
FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
|
|
|
|
FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
|
|
|
|
FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue);
|
|
|
|
FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue);
|
|
|
|
|
|
|
|
FcPatternAddBool(fcpattern, FC_COLOR, FcFalse);
|
|
|
|
|
|
|
|
|
|
|
|
FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
|
|
|
|
FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
|
|
|
|
FcDefaultSubstitute(fcpattern);
|
|
|
|
FcDefaultSubstitute(fcpattern);
|
|
|
|