summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2008-02-06 03:14:46 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2008-02-06 03:14:46 +0000
commitf9ffa1eabb499f073b72015041ac2ed1d10f34e7 (patch)
treeb4ff2a07acfa90ebe15edcb9f68e1eb80dd740a3 /src
parent76860cbbf52f2ffb7c4a970fd3c27e341a9efd4f (diff)
downloademacs-f9ffa1eabb499f073b72015041ac2ed1d10f34e7.tar.gz
emacs-f9ffa1eabb499f073b72015041ac2ed1d10f34e7.tar.bz2
emacs-f9ffa1eabb499f073b72015041ac2ed1d10f34e7.zip
(check_gstring): Use them and AREF to access the vector before
we know it's really a gstring. (Ffont_shape_text): Fix typo. (Ffont_shape_text, Ffont_otf_alternates): Fix up int/Lisp_Oject mixups.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog4
-rw-r--r--src/font.c54
2 files changed, 31 insertions, 27 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 8fa3ee97b78..88ed0a7f4c9 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -2,6 +2,10 @@
* font.h (enum lgstring_indices, enum lglyph_indices): New enums.
(LGSTRING_SLOT, LGSTRING_SET_SLOT): New macros.
+ * font.c (check_gstring): Use them and AREF to access the vector before
+ we know it's really a gstring.
+ (Ffont_shape_text): Fix typo.
+ (Ffont_shape_text, Ffont_otf_alternates): Fix up int/Lisp_Oject mixups.
* composite.h (Fcompose_region_internal, Fcompose_string_internal):
Declare.
diff --git a/src/font.c b/src/font.c
index 691f8bc1282..a2ce0c6dbaf 100644
--- a/src/font.c
+++ b/src/font.c
@@ -1,5 +1,5 @@
/* font.c -- "Font" primitives.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2008 Free Software Foundation, Inc.
Copyright (C) 2006
National Institute of Advanced Industrial Science and Technology (AIST)
Registration Number H13PRO009
@@ -8,7 +8,7 @@ This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
@@ -1576,16 +1576,16 @@ check_gstring (gstring)
if (ASIZE (val) < LGSTRING_HEADER_SIZE)
goto err;
CHECK_FONT_OBJECT (LGSTRING_FONT (gstring));
- if (! NILP (LGSTRING_LBEARING (gstring)))
- CHECK_NUMBER (LGSTRING_LBEARING (gstring));
- if (! NILP (LGSTRING_RBEARING (gstring)))
- CHECK_NUMBER (LGSTRING_RBEARING (gstring));
- if (! NILP (LGSTRING_WIDTH (gstring)))
- CHECK_NATNUM (LGSTRING_WIDTH (gstring));
- if (! NILP (LGSTRING_ASCENT (gstring)))
- CHECK_NUMBER (LGSTRING_ASCENT (gstring));
- if (! NILP (LGSTRING_DESCENT (gstring)))
- CHECK_NUMBER (LGSTRING_DESCENT(gstring));
+ if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_LBEARING)))
+ CHECK_NUMBER (LGSTRING_SLOT (gstring, LGSTRING_IX_LBEARING));
+ if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_RBEARING)))
+ CHECK_NUMBER (LGSTRING_SLOT (gstring, LGSTRING_IX_RBEARING));
+ if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_WIDTH)))
+ CHECK_NATNUM (LGSTRING_SLOT (gstring, LGSTRING_IX_WIDTH));
+ if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT)))
+ CHECK_NUMBER (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT));
+ if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT)))
+ CHECK_NUMBER (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT));
for (i = 0; i < LGSTRING_LENGTH (gstring); i++)
{
@@ -1593,18 +1593,18 @@ check_gstring (gstring)
CHECK_VECTOR (val);
if (ASIZE (val) < LGSTRING_GLYPH_SIZE)
goto err;
- if (NILP (LGLYPH_CHAR (val)))
+ if (NILP (AREF (val, LGLYPH_IX_CHAR)))
break;
- CHECK_NATNUM (LGLYPH_FROM (val));
- CHECK_NATNUM (LGLYPH_TO (val));
- CHECK_CHARACTER (LGLYPH_CHAR (val));
- if (! NILP (LGLYPH_CODE (val)))
- CHECK_NATNUM (LGLYPH_CODE (val));
- if (! NILP (LGLYPH_WIDTH (val)))
- CHECK_NATNUM (LGLYPH_WIDTH (val));
- if (! NILP (LGLYPH_ADJUSTMENT (val)))
+ CHECK_NATNUM (AREF (val, LGLYPH_IX_FROM));
+ CHECK_NATNUM (AREF (val, LGLYPH_IX_TO));
+ CHECK_CHARACTER (AREF (val, LGLYPH_IX_CHAR));
+ if (!NILP (AREF (val, LGLYPH_IX_CODE)))
+ CHECK_NATNUM (AREF (val, LGLYPH_IX_CODE));
+ if (!NILP (AREF (val, LGLYPH_IX_WIDTH)))
+ CHECK_NATNUM (AREF (val, LGLYPH_IX_WIDTH));
+ if (!NILP (AREF (val, LGLYPH_IX_ADJUSTMENT)))
{
- val = LGLYPH_ADJUSTMENT (val);
+ val = AREF (val, LGLYPH_IX_ADJUSTMENT);
CHECK_VECTOR (val);
if (ASIZE (val) < 3)
goto err;
@@ -3604,7 +3604,7 @@ FONT-OBJECT. */)
if (NILP (string))
Fcompose_region_internal (from, to, gstr, Qnil);
else
- Fcompose_region_internal (string, from, to, gstr, Qnil);
+ Fcompose_string_internal (string, from, to, gstr, Qnil);
}
}
return make_number (end);
@@ -3643,7 +3643,7 @@ FONT-OBJECT. */)
if (NILP (LGLYPH_ADJUSTMENT (g)))
{
metrics.width = LGLYPH_WIDTH (g);
- if (XINT (LGLYPH_CHAR (g)) == 0 || metrics.width == 0)
+ if (LGLYPH_CHAR (g) == 0 || metrics.width == 0)
need_composition = 1;
}
else
@@ -3810,7 +3810,7 @@ corresponding character. */)
gstring_in = Ffont_make_gstring (font_object, make_number (1));
g = LGSTRING_GLYPH (gstring_in, 0);
- LGLYPH_SET_CHAR (g, character);
+ LGLYPH_SET_CHAR (g, XINT (character));
gstring_out = Ffont_make_gstring (font_object, make_number (10));
while ((num = font->driver->otf_drive (font, otf_features, gstring_in, 0, 1,
gstring_out, 0, 1)) < 0)
@@ -3820,8 +3820,8 @@ corresponding character. */)
for (i = 0; i < num; i++)
{
Lisp_Object g = LGSTRING_GLYPH (gstring_out, i);
- int c = XINT (LGLYPH_CHAR (g));
- unsigned code = XUINT (LGLYPH_CODE (g));
+ int c = LGLYPH_CHAR (g);
+ unsigned code = LGLYPH_CODE (g);
alternates = Fcons (Fcons (make_number (code),
c > 0 ? make_number (c) : Qnil),