Index: vte/src/vtexft.c
===================================================================
--- vte.orig/src/vtexft.c	2008-06-21 18:25:15.000000000 -0700
+++ vte/src/vtexft.c	2008-06-21 18:25:22.000000000 -0700
@@ -855,16 +855,23 @@
 	gsize i, j;
 	gint width, y_off, x_off, char_width;
 	XftFont *font, *ft;
+	struct _vte_xft_font * xft_font;
 
 	data = (struct _vte_xft_data*) draw->impl_data;
-	if (G_UNLIKELY (data->font == NULL)){
+	if (G_UNLIKELY (bold)) {
+		xft_font = data->font_bold ? data->font_bold : data->font;
+	}
+	else {
+		xft_font = data->font;
+	}
+	if (G_UNLIKELY (xft_font == NULL)){
 		return; /* cannot draw anything */
 	}
 
 	/* find the first displayable character ... */
 	font = NULL;
 	for (i = 0; i < n_requests; i++) {
-		font = _vte_xft_font_for_char (data->font, requests[i].c);
+		font = _vte_xft_font_for_char (xft_font, requests[i].c);
 		if (G_UNLIKELY (font == NULL)) {
 			continue;
 		}
@@ -900,7 +907,7 @@
 					font, requests[i].c);
 			glyphs[j].x = requests[i].x + x_off;
 			next_x = requests[i].x + requests[i].columns*char_width;
-			width = _vte_xft_char_width (data->font,
+			width = _vte_xft_char_width (xft_font,
 					font, requests[i].c, requests[i].columns);
 			if (G_UNLIKELY (width != 0)) {
 				width = requests[i].columns*char_width - width;
@@ -913,7 +920,7 @@
 			/* find the next displayable character ... */
 			ft = NULL;
 			while (++i < n_requests) {
-				ft = _vte_xft_font_for_char (data->font,
+				ft = _vte_xft_font_for_char (xft_font,
 						requests[i].c);
 				if (G_UNLIKELY (ft == NULL)) {
 					continue;
