[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/font.c,v
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] Changes to emacs/src/font.c,v |
Date: |
Mon, 25 Feb 2008 01:43:03 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Kenichi Handa <handa> 08/02/25 01:43:02
Index: font.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/font.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- font.c 22 Feb 2008 19:04:03 -0000 1.8
+++ font.c 25 Feb 2008 01:43:02 -0000 1.9
@@ -3625,6 +3625,12 @@
Lisp_Object gstring, n;
int len, i, j;
+ if (! FONT_OBJECT_P (font_object))
+ return Qnil;
+ CHECK_FONT_GET_OBJECT (font_object, font);
+ if (! font->driver->shape)
+ return Qnil;
+
if (NILP (string))
{
validate_region (&from, &to);
@@ -3641,49 +3647,9 @@
args_out_of_range_3 (string, from, to);
}
- if (! FONT_OBJECT_P (font_object))
- return to;
-
- CHECK_FONT_GET_OBJECT (font_object, font);
len = end - start;
gstring = Ffont_make_gstring (font_object, make_number (len));
Ffont_fill_gstring (gstring, font_object, from, to, string);
- if (! font->driver->shape)
- {
- /* Make zero-width glyphs to have one pixel width to make the
- display routine not lose the cursor. */
- for (i = 0; i < len; i++)
- {
- Lisp_Object g = LGSTRING_GLYPH (gstring, i);
- unsigned code;
- struct font_metrics metrics;
-
- if (NILP (g))
- break;
- code = LGLYPH_CODE (g);
- if (font->driver->text_extents (font, &code, 1, &metrics) == 0)
- {
- Lisp_Object gstr = Ffont_make_gstring (font_object,
- make_number (1));
- LGSTRING_SET_WIDTH (gstr, 1);
- LGSTRING_SET_LBEARING (gstr, metrics.lbearing);
- LGSTRING_SET_RBEARING (gstr, metrics.rbearing + 1);
- LGSTRING_SET_ASCENT (gstr, metrics.ascent);
- LGSTRING_SET_DESCENT (gstr, metrics.descent);
- LGLYPH_SET_FROM (g, 0);
- LGLYPH_SET_TO (g, 1);
- LGSTRING_SET_GLYPH (gstr, 0, g);
- from = make_number (start + i);
- to = make_number (start + i + 1);
- if (NILP (string))
- Fcompose_region_internal (from, to, gstr, Qnil);
- else
- Fcompose_string_internal (string, from, to, gstr, Qnil);
- }
- }
- return make_number (end);
- }
-
/* Try at most three times with larger gstring each time. */
for (i = 0; i < 3; i++)
- [Emacs-diffs] Changes to emacs/src/font.c,v, Stefan Monnier, 2008/02/05
- [Emacs-diffs] Changes to emacs/src/font.c,v, Glenn Morris, 2008/02/05
- [Emacs-diffs] Changes to emacs/src/font.c,v, Eli Zaretskii, 2008/02/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Kenichi Handa, 2008/02/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Stefan Monnier, 2008/02/18
- [Emacs-diffs] Changes to emacs/src/font.c,v, Stefan Monnier, 2008/02/22
- [Emacs-diffs] Changes to emacs/src/font.c,v,
Kenichi Handa <=
- [Emacs-diffs] Changes to emacs/src/font.c,v, Juanma Barranquero, 2008/02/26
- [Emacs-diffs] Changes to emacs/src/font.c,v, Stefan Monnier, 2008/02/26