changeset 97428:a262dde85972

(x_produce_glyphs): Handle the case when font has no space character in calculating tabs.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 11 Aug 2008 18:50:49 +0000
parents b3268dd75fc3
children 53dca1f0eeef
files src/xdisp.c
diffstat 1 files changed, 27 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Mon Aug 11 18:50:33 2008 +0000
+++ b/src/xdisp.c	Mon Aug 11 18:50:49 2008 +0000
@@ -21367,25 +21367,33 @@
 	}
       else if (it->char_to_display == '\t')
 	{
-	  int tab_width = it->tab_width * font->space_width;
-	  int x = it->current_x + it->continuation_lines_width;
-	  int next_tab_x = ((1 + x + tab_width - 1) / tab_width) * tab_width;
-
-	  /* If the distance from the current position to the next tab
-	     stop is less than a space character width, use the
-	     tab stop after that.  */
-	  if (next_tab_x - x < font->space_width)
-	    next_tab_x += tab_width;
-
-	  it->pixel_width = next_tab_x - x;
-	  it->nglyphs = 1;
-	  it->ascent = it->phys_ascent = FONT_BASE (font) + boff;
-	  it->descent = it->phys_descent = FONT_DESCENT (font) - boff;
-
-	  if (it->glyph_row)
-	    {
-	      append_stretch_glyph (it, it->object, it->pixel_width,
-				    it->ascent + it->descent, it->ascent);
+	  if (font->space_width > 0)
+	    {
+	      int tab_width = it->tab_width * font->space_width;
+	      int x = it->current_x + it->continuation_lines_width;
+	      int next_tab_x = ((1 + x + tab_width - 1) / tab_width) * tab_width;
+
+	      /* If the distance from the current position to the next tab
+		 stop is less than a space character width, use the
+		 tab stop after that.  */
+	      if (next_tab_x - x < font->space_width)
+		next_tab_x += tab_width;
+
+	      it->pixel_width = next_tab_x - x;
+	      it->nglyphs = 1;
+	      it->ascent = it->phys_ascent = FONT_BASE (font) + boff;
+	      it->descent = it->phys_descent = FONT_DESCENT (font) - boff;
+
+	      if (it->glyph_row)
+		{
+		  append_stretch_glyph (it, it->object, it->pixel_width,
+					it->ascent + it->descent, it->ascent);
+		}
+	    }
+	  else
+	    {
+	      it->pixel_width = 0;
+	      it->nglyphs = 1;
 	    }
 	}
       else