diff options
| author | Stefan Monnier | 2008-02-06 03:14:46 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2008-02-06 03:14:46 +0000 |
| commit | f9ffa1eabb499f073b72015041ac2ed1d10f34e7 (patch) | |
| tree | b4ff2a07acfa90ebe15edcb9f68e1eb80dd740a3 /src | |
| parent | 76860cbbf52f2ffb7c4a970fd3c27e341a9efd4f (diff) | |
| download | emacs-f9ffa1eabb499f073b72015041ac2ed1d10f34e7.tar.gz 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/ChangeLog | 4 | ||||
| -rw-r--r-- | src/font.c | 54 |
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 @@ | |||
| 2 | 2 | ||
| 3 | * font.h (enum lgstring_indices, enum lglyph_indices): New enums. | 3 | * font.h (enum lgstring_indices, enum lglyph_indices): New enums. |
| 4 | (LGSTRING_SLOT, LGSTRING_SET_SLOT): New macros. | 4 | (LGSTRING_SLOT, LGSTRING_SET_SLOT): New macros. |
| 5 | * font.c (check_gstring): Use them and AREF to access the vector before | ||
| 6 | we know it's really a gstring. | ||
| 7 | (Ffont_shape_text): Fix typo. | ||
| 8 | (Ffont_shape_text, Ffont_otf_alternates): Fix up int/Lisp_Oject mixups. | ||
| 5 | 9 | ||
| 6 | * composite.h (Fcompose_region_internal, Fcompose_string_internal): | 10 | * composite.h (Fcompose_region_internal, Fcompose_string_internal): |
| 7 | Declare. | 11 | 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 @@ | |||
| 1 | /* font.c -- "Font" primitives. | 1 | /* font.c -- "Font" primitives. |
| 2 | Copyright (C) 2006 Free Software Foundation, Inc. | 2 | Copyright (C) 2006, 2008 Free Software Foundation, Inc. |
| 3 | Copyright (C) 2006 | 3 | Copyright (C) 2006 |
| 4 | National Institute of Advanced Industrial Science and Technology (AIST) | 4 | National Institute of Advanced Industrial Science and Technology (AIST) |
| 5 | Registration Number H13PRO009 | 5 | Registration Number H13PRO009 |
| @@ -8,7 +8,7 @@ This file is part of GNU Emacs. | |||
| 8 | 8 | ||
| 9 | GNU Emacs is free software; you can redistribute it and/or modify | 9 | GNU Emacs is free software; you can redistribute it and/or modify |
| 10 | it under the terms of the GNU General Public License as published by | 10 | it under the terms of the GNU General Public License as published by |
| 11 | the Free Software Foundation; either version 2, or (at your option) | 11 | the Free Software Foundation; either version 3, or (at your option) |
| 12 | any later version. | 12 | any later version. |
| 13 | 13 | ||
| 14 | GNU Emacs is distributed in the hope that it will be useful, | 14 | GNU Emacs is distributed in the hope that it will be useful, |
| @@ -1576,16 +1576,16 @@ check_gstring (gstring) | |||
| 1576 | if (ASIZE (val) < LGSTRING_HEADER_SIZE) | 1576 | if (ASIZE (val) < LGSTRING_HEADER_SIZE) |
| 1577 | goto err; | 1577 | goto err; |
| 1578 | CHECK_FONT_OBJECT (LGSTRING_FONT (gstring)); | 1578 | CHECK_FONT_OBJECT (LGSTRING_FONT (gstring)); |
| 1579 | if (! NILP (LGSTRING_LBEARING (gstring))) | 1579 | if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_LBEARING))) |
| 1580 | CHECK_NUMBER (LGSTRING_LBEARING (gstring)); | 1580 | CHECK_NUMBER (LGSTRING_SLOT (gstring, LGSTRING_IX_LBEARING)); |
| 1581 | if (! NILP (LGSTRING_RBEARING (gstring))) | 1581 | if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_RBEARING))) |
| 1582 | CHECK_NUMBER (LGSTRING_RBEARING (gstring)); | 1582 | CHECK_NUMBER (LGSTRING_SLOT (gstring, LGSTRING_IX_RBEARING)); |
| 1583 | if (! NILP (LGSTRING_WIDTH (gstring))) | 1583 | if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_WIDTH))) |
| 1584 | CHECK_NATNUM (LGSTRING_WIDTH (gstring)); | 1584 | CHECK_NATNUM (LGSTRING_SLOT (gstring, LGSTRING_IX_WIDTH)); |
| 1585 | if (! NILP (LGSTRING_ASCENT (gstring))) | 1585 | if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT))) |
| 1586 | CHECK_NUMBER (LGSTRING_ASCENT (gstring)); | 1586 | CHECK_NUMBER (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT)); |
| 1587 | if (! NILP (LGSTRING_DESCENT (gstring))) | 1587 | if (!NILP (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT))) |
| 1588 | CHECK_NUMBER (LGSTRING_DESCENT(gstring)); | 1588 | CHECK_NUMBER (LGSTRING_SLOT (gstring, LGSTRING_IX_ASCENT)); |
| 1589 | 1589 | ||
| 1590 | for (i = 0; i < LGSTRING_LENGTH (gstring); i++) | 1590 | for (i = 0; i < LGSTRING_LENGTH (gstring); i++) |
| 1591 | { | 1591 | { |
| @@ -1593,18 +1593,18 @@ check_gstring (gstring) | |||
| 1593 | CHECK_VECTOR (val); | 1593 | CHECK_VECTOR (val); |
| 1594 | if (ASIZE (val) < LGSTRING_GLYPH_SIZE) | 1594 | if (ASIZE (val) < LGSTRING_GLYPH_SIZE) |
| 1595 | goto err; | 1595 | goto err; |
| 1596 | if (NILP (LGLYPH_CHAR (val))) | 1596 | if (NILP (AREF (val, LGLYPH_IX_CHAR))) |
| 1597 | break; | 1597 | break; |
| 1598 | CHECK_NATNUM (LGLYPH_FROM (val)); | 1598 | CHECK_NATNUM (AREF (val, LGLYPH_IX_FROM)); |
| 1599 | CHECK_NATNUM (LGLYPH_TO (val)); | 1599 | CHECK_NATNUM (AREF (val, LGLYPH_IX_TO)); |
| 1600 | CHECK_CHARACTER (LGLYPH_CHAR (val)); | 1600 | CHECK_CHARACTER (AREF (val, LGLYPH_IX_CHAR)); |
| 1601 | if (! NILP (LGLYPH_CODE (val))) | 1601 | if (!NILP (AREF (val, LGLYPH_IX_CODE))) |
| 1602 | CHECK_NATNUM (LGLYPH_CODE (val)); | 1602 | CHECK_NATNUM (AREF (val, LGLYPH_IX_CODE)); |
| 1603 | if (! NILP (LGLYPH_WIDTH (val))) | 1603 | if (!NILP (AREF (val, LGLYPH_IX_WIDTH))) |
| 1604 | CHECK_NATNUM (LGLYPH_WIDTH (val)); | 1604 | CHECK_NATNUM (AREF (val, LGLYPH_IX_WIDTH)); |
| 1605 | if (! NILP (LGLYPH_ADJUSTMENT (val))) | 1605 | if (!NILP (AREF (val, LGLYPH_IX_ADJUSTMENT))) |
| 1606 | { | 1606 | { |
| 1607 | val = LGLYPH_ADJUSTMENT (val); | 1607 | val = AREF (val, LGLYPH_IX_ADJUSTMENT); |
| 1608 | CHECK_VECTOR (val); | 1608 | CHECK_VECTOR (val); |
| 1609 | if (ASIZE (val) < 3) | 1609 | if (ASIZE (val) < 3) |
| 1610 | goto err; | 1610 | goto err; |
| @@ -3604,7 +3604,7 @@ FONT-OBJECT. */) | |||
| 3604 | if (NILP (string)) | 3604 | if (NILP (string)) |
| 3605 | Fcompose_region_internal (from, to, gstr, Qnil); | 3605 | Fcompose_region_internal (from, to, gstr, Qnil); |
| 3606 | else | 3606 | else |
| 3607 | Fcompose_region_internal (string, from, to, gstr, Qnil); | 3607 | Fcompose_string_internal (string, from, to, gstr, Qnil); |
| 3608 | } | 3608 | } |
| 3609 | } | 3609 | } |
| 3610 | return make_number (end); | 3610 | return make_number (end); |
| @@ -3643,7 +3643,7 @@ FONT-OBJECT. */) | |||
| 3643 | if (NILP (LGLYPH_ADJUSTMENT (g))) | 3643 | if (NILP (LGLYPH_ADJUSTMENT (g))) |
| 3644 | { | 3644 | { |
| 3645 | metrics.width = LGLYPH_WIDTH (g); | 3645 | metrics.width = LGLYPH_WIDTH (g); |
| 3646 | if (XINT (LGLYPH_CHAR (g)) == 0 || metrics.width == 0) | 3646 | if (LGLYPH_CHAR (g) == 0 || metrics.width == 0) |
| 3647 | need_composition = 1; | 3647 | need_composition = 1; |
| 3648 | } | 3648 | } |
| 3649 | else | 3649 | else |
| @@ -3810,7 +3810,7 @@ corresponding character. */) | |||
| 3810 | 3810 | ||
| 3811 | gstring_in = Ffont_make_gstring (font_object, make_number (1)); | 3811 | gstring_in = Ffont_make_gstring (font_object, make_number (1)); |
| 3812 | g = LGSTRING_GLYPH (gstring_in, 0); | 3812 | g = LGSTRING_GLYPH (gstring_in, 0); |
| 3813 | LGLYPH_SET_CHAR (g, character); | 3813 | LGLYPH_SET_CHAR (g, XINT (character)); |
| 3814 | gstring_out = Ffont_make_gstring (font_object, make_number (10)); | 3814 | gstring_out = Ffont_make_gstring (font_object, make_number (10)); |
| 3815 | while ((num = font->driver->otf_drive (font, otf_features, gstring_in, 0, 1, | 3815 | while ((num = font->driver->otf_drive (font, otf_features, gstring_in, 0, 1, |
| 3816 | gstring_out, 0, 1)) < 0) | 3816 | gstring_out, 0, 1)) < 0) |
| @@ -3820,8 +3820,8 @@ corresponding character. */) | |||
| 3820 | for (i = 0; i < num; i++) | 3820 | for (i = 0; i < num; i++) |
| 3821 | { | 3821 | { |
| 3822 | Lisp_Object g = LGSTRING_GLYPH (gstring_out, i); | 3822 | Lisp_Object g = LGSTRING_GLYPH (gstring_out, i); |
| 3823 | int c = XINT (LGLYPH_CHAR (g)); | 3823 | int c = LGLYPH_CHAR (g); |
| 3824 | unsigned code = XUINT (LGLYPH_CODE (g)); | 3824 | unsigned code = LGLYPH_CODE (g); |
| 3825 | 3825 | ||
| 3826 | alternates = Fcons (Fcons (make_number (code), | 3826 | alternates = Fcons (Fcons (make_number (code), |
| 3827 | c > 0 ? make_number (c) : Qnil), | 3827 | c > 0 ? make_number (c) : Qnil), |