diff --git a/st.c b/st.c index fc9ed70..5e8a934 100644 --- a/st.c +++ b/st.c @@ -348,7 +348,7 @@ static void xdrawcursor(void); static void xinit(void); static void xloadcols(void); static int xsetcolorname(int, const char *); -static int xloadfont(Font *, FcPattern *); +static int xloadfont(Font *, FcPattern *, int); static void xloadfonts(char *, int); static void xsettitle(char *); static void xresettitle(void); @@ -2468,10 +2468,11 @@ xhints(void) { } int -xloadfont(Font *f, FcPattern *pattern) { +xloadfont(Font *f, FcPattern *pattern, int aa) { FcPattern *match; FcResult result; - + FcValue v; + match = FcFontMatch(NULL, pattern, &result); if(!match) return 1; @@ -2481,6 +2482,11 @@ xloadfont(Font *f, FcPattern *pattern) { return 1; } + if(aa>=0){ + v.type = FcTypeBool; + v.u.b = aa; + FcPatternAdd(match, FC_ANTIALIAS, v, false); + } if(!(f->match = XftFontOpenPattern(xw.dpy, match))) { FcPatternDestroy(match); return 1; @@ -2504,6 +2510,8 @@ xloadfonts(char *fontstr, int fontsize) { FcPattern *pattern; FcResult result; double fontval; + int aa; + FcBool b; if(fontstr[0] == '-') { pattern = XftXlfdParse(fontstr, False, False); @@ -2511,6 +2519,8 @@ xloadfonts(char *fontstr, int fontsize) { pattern = FcNameParse((FcChar8 *)fontstr); } + aa = (FcPatternGetBool(pattern, FC_ANTIALIAS, 0, &b)==FcResultMatch)? !!b : -1; + if(!pattern) die("st: can't open font %s\n", fontstr); @@ -2535,7 +2545,7 @@ xloadfonts(char *fontstr, int fontsize) { FcConfigSubstitute(0, pattern, FcMatchPattern); FcDefaultSubstitute(pattern); - if(xloadfont(&dc.font, pattern)) + if(xloadfont(&dc.font, pattern, aa)) die("st: can't open font %s\n", fontstr); /* Setting character width and height. */ @@ -2544,17 +2554,17 @@ xloadfonts(char *fontstr, int fontsize) { FcPatternDel(pattern, FC_SLANT); FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ITALIC); - if(xloadfont(&dc.ifont, pattern)) + if(xloadfont(&dc.ifont, pattern, aa)) die("st: can't open font %s\n", fontstr); FcPatternDel(pattern, FC_WEIGHT); FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_BOLD); - if(xloadfont(&dc.ibfont, pattern)) + if(xloadfont(&dc.ibfont, pattern, aa)) die("st: can't open font %s\n", fontstr); FcPatternDel(pattern, FC_SLANT); FcPatternAddInteger(pattern, FC_SLANT, FC_SLANT_ROMAN); - if(xloadfont(&dc.bfont, pattern)) + if(xloadfont(&dc.bfont, pattern, aa)) die("st: can't open font %s\n", fontstr); FcPatternDestroy(pattern);