changeset 106079:b38631655ffa

(x_produce_glyphs): Consider face-remapping when falling back to the default font in case that no suitable font is found.
author Kenichi Handa <handa@m17n.org>
date Tue, 17 Nov 2009 04:16:33 +0000
parents bff06ddbda0a
children aec72eae7cbb
files src/xdisp.c
diffstat 1 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Tue Nov 17 03:32:04 2009 +0000
+++ b/src/xdisp.c	Tue Nov 17 04:16:33 2009 +0000
@@ -21149,12 +21149,18 @@
 				  &char2b, it->multibyte_p, 0);
       font = face->font;
 
-      /* When no suitable font found, use the default font.  */
       font_not_found_p = font == NULL;
       if (font_not_found_p)
 	{
-	  font = FRAME_FONT (it->f);
-	  boff = FRAME_BASELINE_OFFSET (it->f);
+	  /* When no suitable font found, display an empty box based
+	     on the metrics of the font of the default face (or what
+	     remapped).  */
+	  struct face *no_font_face
+	    = FACE_FROM_ID (it->f,
+			    NILP (Vface_remapping_alist) ? DEFAULT_FACE_ID
+			    : lookup_basic_face (it->f, DEFAULT_FACE_ID));
+	  font = no_font_face->font;
+	  boff = font->baseline_offset;
 	}
       else
 	{
@@ -21425,7 +21431,7 @@
 		   at least one column.  */
 		char_width = 1;
 	      it->glyph_not_available_p = 1;
-	      it->pixel_width = FRAME_COLUMN_WIDTH (it->f) * char_width;
+	      it->pixel_width = font->space_width * char_width;
 	      it->phys_ascent = FONT_BASE (font) + boff;
 	      it->phys_descent = FONT_DESCENT (font) - boff;
 	    }