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