aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dmenu-allow-color-font-5.0.diff32
-rw-r--r--drw.c4
2 files changed, 35 insertions, 1 deletions
diff --git a/dmenu-allow-color-font-5.0.diff b/dmenu-allow-color-font-5.0.diff
new file mode 100644
index 0000000..767b466
--- /dev/null
+++ b/dmenu-allow-color-font-5.0.diff
@@ -0,0 +1,32 @@
+diff --git drw.c drw.c
+index 4cdbcbe..7a5bc0d 100644
+--- drw.c
++++ drw.c
+@@ -133,19 +133,6 @@ xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern)
+ 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->xfont = xfont;
+ font->pattern = pattern;
+@@ -351,7 +338,6 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
+ fcpattern = FcPatternDuplicate(drw->fonts->pattern);
+ FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
+ FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue);
+- FcPatternAddBool(fcpattern, FC_COLOR, FcFalse);
+
+ FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
+ FcDefaultSubstitute(fcpattern);
diff --git a/drw.c b/drw.c
index 25e7541..f5fb84d 100644
--- a/drw.c
+++ b/drw.c
@@ -125,6 +125,7 @@ static Fnt *xfont_create(Drw *drw, const char *fontname,
die("no font specified.");
}
+#if 0
/* 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
@@ -138,6 +139,7 @@ static Fnt *xfont_create(Drw *drw, const char *fontname,
XftFontClose(drw->dpy, xfont);
return NULL;
}
+#endif
font = ecalloc(1, sizeof(Fnt));
font->xfont = xfont;
@@ -331,7 +333,7 @@ int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h,
fcpattern = FcPatternDuplicate(drw->fonts->pattern);
FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue);
- FcPatternAddBool(fcpattern, FC_COLOR, FcFalse);
+ /* FcPatternAddBool(fcpattern, FC_COLOR, FcFalse); */
FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
FcDefaultSubstitute(fcpattern);