Mercurial > emacs
changeset 70699:434948c350d2
(better_font_p): Any font beats no font.
(best_matching_font): Simplify based on above change.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 17 May 2006 22:51:07 +0000 |
parents | 102448f41c25 |
children | 3cde28b591e8 |
files | src/xfaces.c |
diffstat | 1 files changed, 22 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xfaces.c Wed May 17 22:37:25 2006 +0000 +++ b/src/xfaces.c Wed May 17 22:51:07 2006 +0000 @@ -6383,6 +6383,12 @@ { int i; + /* Any font is better than no font. */ + if (! font1) + return 0; + if (! font2) + return 1; + for (i = 0; i < DIM (font_sort_order); ++i) { int xlfd_idx = font_sort_order[i]; @@ -6627,29 +6633,19 @@ if (needs_overstrike) *needs_overstrike = 0; - /* Start with the first non-scalable font in the list. */ - for (i = 0; i < nfonts; ++i) - if (!font_scalable_p (fonts + i)) - break; + best = NULL; /* Find the best match among the non-scalable fonts. */ - if (i < nfonts) - { - best = fonts + i; - - for (i = 1; i < nfonts; ++i) - if (!font_scalable_p (fonts + i) - && better_font_p (specified, fonts + i, best, 1, avgwidth)) - { - best = fonts + i; - - exact_p = exact_face_match_p (specified, best, avgwidth); - if (exact_p) - break; - } - } - else - best = NULL; + for (i = 1; i < nfonts; ++i) + if (!font_scalable_p (fonts + i) + && better_font_p (specified, fonts + i, best, 1, avgwidth)) + { + best = fonts + i; + + exact_p = exact_face_match_p (specified, best, avgwidth); + if (exact_p) + break; + } /* Unless we found an exact match among non-scalable fonts, see if we can find a better match among scalable fonts. */ @@ -6673,8 +6669,7 @@ for (i = 0; i < nfonts; ++i) if (font_scalable_p (fonts + i)) { - if (best == NULL - || better_font_p (specified, fonts + i, best, 0, 0) + if (better_font_p (specified, fonts + i, best, 0, 0) || (!non_scalable_has_exact_height_p && !better_font_p (specified, best, fonts + i, 0, 0))) { @@ -6702,6 +6697,10 @@ } } + /* We should have found SOME font. */ + if (best == NULL) + abort (); + if (font_scalable_p (best)) font_name = build_scalable_font_name (f, best, pt); else