--- rxvt-unicode/src/rxvtfont.C 2010/03/31 22:46:40 1.162 +++ rxvt-unicode/src/rxvtfont.C 2010/12/14 08:01:51 1.168 @@ -28,6 +28,10 @@ #include +#if XFT +# include +#endif + #define MAX_OVERLAP_ROMAN (8 + 2) // max. character width in 8ths of the base width #define MAX_OVERLAP_ITALIC (8 + 3) // max. overlap for italic fonts @@ -37,7 +41,7 @@ : ((prop)->width * (wcw) * MAX_OVERLAP_ROMAN + 7) >> 3 \ )) -const struct rxvt_fallback_font { +static const struct rxvt_fallback_font { codeset cs; const char *name; } fallback_fonts[] = { @@ -450,7 +454,7 @@ chrs [1] = NOCHAR; *chrs = cc->c1; - rxvt_font *f1 = (*fs)[fs->find_font (cc->c1)]; + rxvt_font *f1 = (*fs)[fs->find_font_idx (cc->c1)]; f1->draw (d, x, y, chrs, width, fg, bg); if (cc->c2 != NOCHAR) @@ -461,7 +465,7 @@ *chrs = cc->c2; rxvt_font *f2 = (f1->has_char (cc->c2, 0, careful) && !careful) ? f1 - : (*fs)[fs->find_font (cc->c2)]; + : (*fs)[fs->find_font_idx (cc->c2)]; f2->draw (d, x, y, chrs, width, fg, Color_none); } @@ -1405,7 +1409,7 @@ { int src_x = x, src_y = y; - if (term->bgPixmap.is_parentOrigin ()) + if (term->bgPixmap.flags & bgPixmap_t::isTransparent) { src_x += term->window_vt_x; src_y += term->window_vt_y; @@ -1484,7 +1488,7 @@ force_prop = false; for (rxvt_font **i = fonts.begin (); i != fonts.end (); i++) - FONT_UNREF (*i); + (*i)->unref (); for (pagemap **p = fmap.begin (); p != fmap.end (); p++) delete *p; @@ -1541,6 +1545,9 @@ void rxvt_fontset::push_font (rxvt_font *font) { + // the fontCount index is reserved for the overflow font, it is only + // necessary when we get fontCount or more fonts, as they cannot be + // represented in the rendition. if (fonts.size () == fontCount) { rxvt_font *f = new rxvt_font_overflow (this);