aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2009-04-09 02:40:51 +0000
committerKenichi Handa2009-04-09 02:40:51 +0000
commit483670b590fbb3f0ae2b3380aa9351b2d2e19b2c (patch)
tree6a5a22c4117b39bb01af8aad775bd8c9aae061d3 /src
parent583ebd632711949ba88e26f341e752ed3ed3f7f7 (diff)
downloademacs-483670b590fbb3f0ae2b3380aa9351b2d2e19b2c.tar.gz
emacs-483670b590fbb3f0ae2b3380aa9351b2d2e19b2c.zip
(font_put_extra): If VAL is nil, delete the slot for PROP
from the list of extra properties. (font_clear_prop): Be sure to delete `:name' font property.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog6
-rw-r--r--src/font.c13
2 files changed, 18 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index aca9e8014cf..f5cc4463bea 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12009-04-09 Kenichi Handa <handa@m17n.org>
2
3 * font.c (font_put_extra): If VAL is nil, delete the slot for PROP
4 from the list of extra properties.
5 (font_clear_prop): Be sure to delete `:name' font property.
6
12009-04-08 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 72009-04-08 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2 8
3 * dispnew.c (redraw_overlapping_rows): Fix detection of 9 * dispnew.c (redraw_overlapping_rows): Fix detection of
diff --git a/src/font.c b/src/font.c
index f5a9e3e70e2..bb83fe938a0 100644
--- a/src/font.c
+++ b/src/font.c
@@ -719,6 +719,8 @@ font_put_extra (font, prop, val)
719 { 719 {
720 Lisp_Object prev = Qnil; 720 Lisp_Object prev = Qnil;
721 721
722 if (NILP (val))
723 return val;
722 while (CONSP (extra) 724 while (CONSP (extra)
723 && NILP (Fstring_lessp (prop, XCAR (XCAR (extra))))) 725 && NILP (Fstring_lessp (prop, XCAR (XCAR (extra)))))
724 prev = extra, extra = XCDR (extra); 726 prev = extra, extra = XCDR (extra);
@@ -729,6 +731,8 @@ font_put_extra (font, prop, val)
729 return val; 731 return val;
730 } 732 }
731 XSETCDR (slot, val); 733 XSETCDR (slot, val);
734 if (NILP (val))
735 ASET (font, FONT_EXTRA_INDEX, Fdelq (slot, extra));
732 return val; 736 return val;
733} 737}
734 738
@@ -3078,13 +3082,20 @@ font_clear_prop (attrs, prop)
3078 3082
3079 if (! FONTP (font)) 3083 if (! FONTP (font))
3080 return; 3084 return;
3085 if (! NILP (Ffont_get (font, QCname)))
3086 {
3087 font = Fcopy_font_spec (font);
3088 font_put_extra (font, QCname, Qnil);
3089 }
3090
3081 if (NILP (AREF (font, prop)) 3091 if (NILP (AREF (font, prop))
3082 && prop != FONT_FAMILY_INDEX 3092 && prop != FONT_FAMILY_INDEX
3083 && prop != FONT_FOUNDRY_INDEX 3093 && prop != FONT_FOUNDRY_INDEX
3084 && prop != FONT_WIDTH_INDEX 3094 && prop != FONT_WIDTH_INDEX
3085 && prop != FONT_SIZE_INDEX) 3095 && prop != FONT_SIZE_INDEX)
3086 return; 3096 return;
3087 font = Fcopy_font_spec (font); 3097 if (EQ (font, attrs[LFACE_FONT_INDEX]))
3098 font = Fcopy_font_spec (font);
3088 ASET (font, prop, Qnil); 3099 ASET (font, prop, Qnil);
3089 if (prop == FONT_FAMILY_INDEX || prop == FONT_FOUNDRY_INDEX) 3100 if (prop == FONT_FAMILY_INDEX || prop == FONT_FOUNDRY_INDEX)
3090 { 3101 {