aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2012-02-02 09:30:09 +0900
committerKenichi Handa2012-02-02 09:30:09 +0900
commitd2a51fd7a1d5d3c8f661c2068120b60e84eca875 (patch)
treee2bb35b589f1f9948e9fafb64395a96e6f8ec754 /src
parentfce3fdeb947e51656675129592c8514be32b46bf (diff)
downloademacs-d2a51fd7a1d5d3c8f661c2068120b60e84eca875.tar.gz
emacs-d2a51fd7a1d5d3c8f661c2068120b60e84eca875.zip
Inhibit null-string composition component (Bug#6988).
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog7
-rw-r--r--src/xdisp.c10
2 files changed, 14 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index d114f0897eb..c41202bcfee 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
12012-02-01 Kenichi Handa <handa@m17n.org>
2
3 * xdisp.c (BUILD_COMPOSITE_GLYPH_STRING): Initialize first_s to
4 NULL (Bug#6988).
5 (x_produce_glyphs): If the component of a composition is a null
6 string, set it->pixel_width to 1 to avoid zero-width glyph.
7
12012-01-31 Glenn Morris <rgm@gnu.org> 82012-01-31 Glenn Morris <rgm@gnu.org>
2 9
3 * nsterm.m (syms_of_nsterm) <x-toolkit-scroll-bars>: 10 * nsterm.m (syms_of_nsterm) <x-toolkit-scroll-bars>:
diff --git a/src/xdisp.c b/src/xdisp.c
index c90184f4a4c..864517b950c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -22738,7 +22738,7 @@ compute_overhangs_and_x (struct glyph_string *s, int x, int backward_p)
22738 ptrdiff_t cmp_id = (row)->glyphs[area][START].u.cmp.id; \ 22738 ptrdiff_t cmp_id = (row)->glyphs[area][START].u.cmp.id; \
22739 struct composition *cmp = composition_table[cmp_id]; \ 22739 struct composition *cmp = composition_table[cmp_id]; \
22740 XChar2b *char2b; \ 22740 XChar2b *char2b; \
22741 struct glyph_string *first_s IF_LINT (= NULL); \ 22741 struct glyph_string *first_s = NULL; \
22742 int n; \ 22742 int n; \
22743 \ 22743 \
22744 char2b = (XChar2b *) alloca ((sizeof *char2b) * cmp->glyph_len); \ 22744 char2b = (XChar2b *) alloca ((sizeof *char2b) * cmp->glyph_len); \
@@ -24400,7 +24400,7 @@ x_produce_glyphs (struct it *it)
24400 /* Initialize the bounding box. */ 24400 /* Initialize the bounding box. */
24401 if (pcm) 24401 if (pcm)
24402 { 24402 {
24403 width = pcm->width; 24403 width = cmp->glyph_len > 0 ? pcm->width : 0;
24404 ascent = pcm->ascent; 24404 ascent = pcm->ascent;
24405 descent = pcm->descent; 24405 descent = pcm->descent;
24406 lbearing = pcm->lbearing; 24406 lbearing = pcm->lbearing;
@@ -24408,7 +24408,7 @@ x_produce_glyphs (struct it *it)
24408 } 24408 }
24409 else 24409 else
24410 { 24410 {
24411 width = font->space_width; 24411 width = cmp->glyph_len > 0 ? font->space_width : 0;
24412 ascent = FONT_BASE (font); 24412 ascent = FONT_BASE (font);
24413 descent = FONT_DESCENT (font); 24413 descent = FONT_DESCENT (font);
24414 lbearing = 0; 24414 lbearing = 0;
@@ -24595,6 +24595,10 @@ x_produce_glyphs (struct it *it)
24595 it->glyph_row->contains_overlapping_glyphs_p = 1; 24595 it->glyph_row->contains_overlapping_glyphs_p = 1;
24596 24596
24597 it->pixel_width = cmp->pixel_width; 24597 it->pixel_width = cmp->pixel_width;
24598 if (it->pixel_width == 0)
24599 /* We assure that all visible glyphs have at least 1-pixel
24600 width. */
24601 it->pixel_width = 1;
24598 it->ascent = it->phys_ascent = cmp->ascent; 24602 it->ascent = it->phys_ascent = cmp->ascent;
24599 it->descent = it->phys_descent = cmp->descent; 24603 it->descent = it->phys_descent = cmp->descent;
24600 if (face->box != FACE_NO_BOX) 24604 if (face->box != FACE_NO_BOX)