--- rxvt-unicode/src/rxvtfont.C 2010/11/29 12:33:22 1.167 +++ rxvt-unicode/src/rxvtfont.C 2010/12/30 01:13:24 1.170 @@ -41,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[] = { @@ -161,8 +161,6 @@ 0x304c, 0x672c, // が本 }; -#define NUM_EXTENT_TEST_CHARS (sizeof (extent_test_chars) / sizeof (extent_test_chars[0])) - #define dTermDisplay Display *disp = term->dpy #define dTermGC GC gc = term->gc @@ -794,12 +792,14 @@ diff += 300; // more heavily penalize what looks like scaled bitmap fonts } - if (!set_properties (p, fname)) - continue; - - if (prop.height != rxvt_fontprop::unset - && p.height > prop.height) // weed out too large fonts - continue; + if (!set_properties (p, fname) + // also weed out too large fonts + || (prop.height != rxvt_fontprop::unset + && p.height > prop.height)) + { + free (fname); + continue; + } if (prop.height != rxvt_fontprop::unset) diff += (prop.height - p.height) * 128; if (prop.weight != rxvt_fontprop::unset) diff += abs (prop.weight - p.weight); @@ -920,7 +920,7 @@ width = 1; - for (uint16_t *t = extent_test_chars + NUM_EXTENT_TEST_CHARS; t-- > extent_test_chars; ) + for (uint16_t *t = extent_test_chars + ARRAY_LENGTH(extent_test_chars); t-- > extent_test_chars; ) { if (FROM_UNICODE (cs, *t) == NOCHAR) continue; @@ -1238,7 +1238,7 @@ int glheight = height; - for (uint16_t *t = extent_test_chars + NUM_EXTENT_TEST_CHARS; t-- > extent_test_chars; ) + for (uint16_t *t = extent_test_chars + ARRAY_LENGTH(extent_test_chars); t-- > extent_test_chars; ) { FcChar16 ch = *t;