comparison src/xdisp.c @ 91140:6ab6b7928830

(handle_composition_prop): Adjusted for the change of lispy gstring. Call a function for auto-composition with the third arg it->window. (fill_composite_glyph_string): Adjusted for the change of lispy string. (x_produce_glyphs): Adjusted for the change of font_prepare_compositionl.
author Kenichi Handa <handa@m17n.org>
date Sat, 01 Dec 2007 02:41:05 +0000
parents 880960b70474
children 5e49a450f62d
comparison
equal deleted inserted replaced
91139:3b9ed57b1424 91140:6ab6b7928830
4629 { 4629 {
4630 EMACS_INT pos_byte = IT_BYTEPOS (*it); 4630 EMACS_INT pos_byte = IT_BYTEPOS (*it);
4631 4631
4632 it->c = FETCH_CHAR (pos_byte); 4632 it->c = FETCH_CHAR (pos_byte);
4633 } 4633 }
4634 args[3] = font_at (it->c, this_pos, face, it->w, it->string); 4634 args[3] = it->window;
4635 } 4635 }
4636 else 4636 else
4637 #endif /* USE_FONT_BACKEND */ 4637 #endif /* USE_FONT_BACKEND */
4638 args[3] = Qnil; 4638 args[3] = Qnil;
4639 safe_call (4, args); 4639 safe_call (4, args);
4732 { 4732 {
4733 Lisp_Object lgstring = AREF (XHASH_TABLE (composition_hash_table) 4733 Lisp_Object lgstring = AREF (XHASH_TABLE (composition_hash_table)
4734 ->key_and_value, 4734 ->key_and_value,
4735 cmp->hash_index * 2); 4735 cmp->hash_index * 2);
4736 4736
4737 it->c = XINT (LGLYPH_CHAR (LGSTRING_GLYPH (lgstring, 0))); 4737 it->c = LGLYPH_CHAR (LGSTRING_GLYPH (lgstring, 0));
4738 } 4738 }
4739 else 4739 else
4740 #endif /* USE_FONT_BACKEND */ 4740 #endif /* USE_FONT_BACKEND */
4741 { 4741 {
4742 int i; 4742 int i;
19303 for (i = 0, s->nchars = 0; i < s->cmp->glyph_len; i++, s->nchars++) 19303 for (i = 0, s->nchars = 0; i < s->cmp->glyph_len; i++, s->nchars++)
19304 { 19304 {
19305 Lisp_Object g = LGSTRING_GLYPH (gstring, i); 19305 Lisp_Object g = LGSTRING_GLYPH (gstring, i);
19306 unsigned code; 19306 unsigned code;
19307 XChar2b * store_pos; 19307 XChar2b * store_pos;
19308 if (NILP (LGLYPH_FROM (g))) 19308 if (NILP (g))
19309 break; 19309 break;
19310 code = XUINT (LGLYPH_CODE (g)); 19310 code = LGLYPH_CODE (g);
19311 store_pos = s->char2b + i; 19311 store_pos = s->char2b + i;
19312 STORE_XCHAR2B (store_pos, code >> 8, code & 0xFF); 19312 STORE_XCHAR2B (store_pos, code >> 8, code & 0xFF);
19313 } 19313 }
19314 s->width = s->cmp->pixel_width; 19314 s->width = s->cmp->pixel_width;
19315 } 19315 }
21107 21107
21108 #ifdef USE_FONT_BACKEND 21108 #ifdef USE_FONT_BACKEND
21109 if (cmp->method == COMPOSITION_WITH_GLYPH_STRING) 21109 if (cmp->method == COMPOSITION_WITH_GLYPH_STRING)
21110 { 21110 {
21111 if (! cmp->font || cmp->font != font) 21111 if (! cmp->font || cmp->font != font)
21112 font_prepare_composition (cmp); 21112 font_prepare_composition (cmp, it->f);
21113 } 21113 }
21114 else 21114 else
21115 #endif /* USE_FONT_BACKEND */ 21115 #endif /* USE_FONT_BACKEND */
21116 /* If we have not yet calculated pixel size data of glyphs of 21116 /* If we have not yet calculated pixel size data of glyphs of
21117 the composition for the current face font, calculate them 21117 the composition for the current face font, calculate them