diff -wbBur st-0.2.1/st.c st-0.2.1.fonts/st.c
--- st-0.2.1/st.c	2012-02-16 04:05:14.000000000 +0400
+++ st-0.2.1.fonts/st.c	2012-05-16 21:01:11.422686235 +0400
@@ -35,7 +35,7 @@
 
 #define USAGE \
 	"st " VERSION " (c) 2010-2012 st engineers\n" \
-	"usage: st [-t title] [-c class] [-w windowid] [-v] [-e command...]\n"
+	"usage: st [-t title] [-c class] [-w windowid] [-v] [-f font] [-F boldfont] [-e command...]\n"
 
 /* XEMBED messages */
 #define XEMBED_FOCUS_IN  4
@@ -330,6 +330,8 @@
 static char *opt_title = NULL;
 static char *opt_embed = NULL;
 static char *opt_class = NULL;
+static char *opt_font = FONT;
+static char *opt_boldfont = BOLDFONT;
 
 int
 utf8decode(char *s, long *u) {
@@ -1735,7 +1737,7 @@
 initfonts(char *fontstr, char *bfontstr) {
 	if((dc.font.set = xinitfont(fontstr)) == NULL ||
 	   (dc.bfont.set = xinitfont(bfontstr)) == NULL)
-		die("Can't load font %s\n", dc.font.set ? BOLDFONT : FONT);
+		die("Can't load font %s\n", dc.font.set ? opt_boldfont : opt_font);
 	xgetfontinfo(dc.font.set, &dc.font.ascent, &dc.font.descent,
 	    &dc.font.lbearing, &dc.font.rbearing);
 	xgetfontinfo(dc.bfont.set, &dc.bfont.ascent, &dc.bfont.descent,
@@ -1753,7 +1755,7 @@
 	xw.scr = XDefaultScreen(xw.dpy);
 	
 	/* font */
-	initfonts(FONT, BOLDFONT);
+	initfonts(opt_font, opt_boldfont);
 
 	/* XXX: Assuming same size for bold font */
 	xw.cw = dc.font.rbearing - dc.font.lbearing;
@@ -2151,6 +2153,12 @@
 		case 'w':
 			if(++i < argc) opt_embed = argv[i];
 			break;
+		case 'f':
+			if(++i < argc) opt_font = argv[i];
+			break;
+		case 'F':
+			if(++i < argc) opt_boldfont = argv[i];
+			break;
 		case 'e':
 			/* eat every remaining arguments */
 			if(++i < argc) opt_cmd = &argv[i];
