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);
