From: Chong Yidong Date: Mon, 11 Aug 2008 18:50:49 +0000 (+0000) Subject: (x_produce_glyphs): Handle the case when font has no space character X-Git-Tag: emacs-pretest-23.0.90~3526 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0f16b42b137c19dfb5b9f6c4cedd30214da1c822;p=emacs.git (x_produce_glyphs): Handle the case when font has no space character in calculating tabs. --- diff --git a/src/xdisp.c b/src/xdisp.c index 2f809e3a096..d4bdde452b5 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -21367,25 +21367,33 @@ x_produce_glyphs (it) } 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) + 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 { - append_stretch_glyph (it, it->object, it->pixel_width, - it->ascent + it->descent, it->ascent); + it->pixel_width = 0; + it->nglyphs = 1; } } else