Mercurial > emacs
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