diff options
| author | Kenichi Handa | 2012-02-02 09:30:09 +0900 |
|---|---|---|
| committer | Kenichi Handa | 2012-02-02 09:30:09 +0900 |
| commit | d2a51fd7a1d5d3c8f661c2068120b60e84eca875 (patch) | |
| tree | e2bb35b589f1f9948e9fafb64395a96e6f8ec754 /src | |
| parent | fce3fdeb947e51656675129592c8514be32b46bf (diff) | |
| download | emacs-d2a51fd7a1d5d3c8f661c2068120b60e84eca875.tar.gz emacs-d2a51fd7a1d5d3c8f661c2068120b60e84eca875.zip | |
Inhibit null-string composition component (Bug#6988).
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 7 | ||||
| -rw-r--r-- | src/xdisp.c | 10 |
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 @@ | |||
| 1 | 2012-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 | |||
| 1 | 2012-01-31 Glenn Morris <rgm@gnu.org> | 8 | 2012-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) |