[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/src xterm.c
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] emacs/src xterm.c |
Date: |
Thu, 11 Jun 2009 01:24:21 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Kenichi Handa <handa> 09/06/11 01:24:20
Modified files:
src : xterm.c
Log message:
(x_compute_glyph_string_overhangs): Handle the automatic
composition case.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/xterm.c?cvsroot=emacs&r1=1.1026&r2=1.1027
Patches:
Index: xterm.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xterm.c,v
retrieving revision 1.1026
retrieving revision 1.1027
diff -u -b -r1.1026 -r1.1027
--- xterm.c 19 May 2009 00:26:46 -0000 1.1026
+++ xterm.c 11 Jun 2009 01:24:20 -0000 1.1027
@@ -1194,16 +1194,27 @@
struct glyph_string *s;
{
if (s->cmp == NULL
- && s->first_glyph->type == CHAR_GLYPH)
+ && (s->first_glyph->type == CHAR_GLYPH
+ || s->first_glyph->type == COMPOSITE_GLYPH))
+ {
+ struct font_metrics metrics;
+
+ if (s->first_glyph->type == CHAR_GLYPH)
{
unsigned *code = alloca (sizeof (unsigned) * s->nchars);
struct font *font = s->font;
- struct font_metrics metrics;
int i;
for (i = 0; i < s->nchars; i++)
code[i] = (s->char2b[i].byte1 << 8) | s->char2b[i].byte2;
font->driver->text_extents (font, code, s->nchars, &metrics);
+ }
+ else
+ {
+ Lisp_Object gstring = composition_gstring_from_id (s->cmp_id);
+
+ composition_gstring_width (gstring, s->cmp_from, s->cmp_to, &metrics);
+ }
s->right_overhang = (metrics.rbearing > metrics.width
? metrics.rbearing - metrics.width : 0);
s->left_overhang = metrics.lbearing < 0 ? - metrics.lbearing : 0;
- [Emacs-diffs] emacs/src xterm.c,
Kenichi Handa <=