| 132 |
132 |
|
die("no font specified."); |
| 133 |
133 |
|
} |
| 134 |
134 |
|
|
|
135 |
+ |
/* Do not allow using color fonts. This is a workaround for a BadLength |
|
136 |
+ |
* error from Xft with color glyphs. Modelled on the Xterm workaround. See |
|
137 |
+ |
* https://bugzilla.redhat.com/show_bug.cgi?id=1498269 |
|
138 |
+ |
* https://lists.suckless.org/dev/1701/30932.html |
|
139 |
+ |
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916349 |
|
140 |
+ |
* and lots more all over the internet. |
|
141 |
+ |
*/ |
|
142 |
+ |
FcBool iscol; |
|
143 |
+ |
if(FcPatternGetBool(xfont->pattern, FC_COLOR, 0, &iscol) == FcResultMatch && iscol) { |
|
144 |
+ |
XftFontClose(drw->dpy, xfont); |
|
145 |
+ |
return NULL; |
|
146 |
+ |
} |
|
147 |
+ |
|
| 135 |
148 |
|
font = ecalloc(1, sizeof(Fnt)); |
| 136 |
149 |
|
font->xfont = xfont; |
| 137 |
150 |
|
font->pattern = pattern; |
|
| 200 |
213 |
|
Clr *ret; |
| 201 |
214 |
|
|
| 202 |
215 |
|
/* need at least two colors for a scheme */ |
| 203 |
|
- |
if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(Clr)))) |
|
216 |
+ |
if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) |
| 204 |
217 |
|
return NULL; |
| 205 |
218 |
|
|
| 206 |
219 |
|
for (i = 0; i < clrcount; i++) |
|
| 337 |
350 |
|
fcpattern = FcPatternDuplicate(drw->fonts->pattern); |
| 338 |
351 |
|
FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset); |
| 339 |
352 |
|
FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue); |
|
353 |
+ |
FcPatternAddBool(fcpattern, FC_COLOR, FcFalse); |
| 340 |
354 |
|
|
| 341 |
355 |
|
FcConfigSubstitute(NULL, fcpattern, FcMatchPattern); |
| 342 |
356 |
|
FcDefaultSubstitute(fcpattern); |