# HG changeset patch # User Kenichi Handa # Date 1239244839 0 # Node ID 9a6e5b1105a655242238e6cd6d3f3d6ab946c989 # Parent 5967d3d57ee856668b7ba50228da2edd1ef0aca9 (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. diff -r 5967d3d57ee8 -r 9a6e5b1105a6 src/font.c --- a/src/font.c Thu Apr 09 02:32:39 2009 +0000 +++ b/src/font.c Thu Apr 09 02:40:39 2009 +0000 @@ -719,6 +719,8 @@ { Lisp_Object prev = Qnil; + if (NILP (val)) + return val; while (CONSP (extra) && NILP (Fstring_lessp (prop, XCAR (XCAR (extra))))) prev = extra, extra = XCDR (extra); @@ -729,6 +731,8 @@ return val; } XSETCDR (slot, val); + if (NILP (val)) + ASET (font, FONT_EXTRA_INDEX, Fdelq (slot, extra)); return val; } @@ -3078,13 +3082,20 @@ if (! FONTP (font)) return; + if (! NILP (Ffont_get (font, QCname))) + { + font = Fcopy_font_spec (font); + font_put_extra (font, QCname, Qnil); + } + if (NILP (AREF (font, prop)) && prop != FONT_FAMILY_INDEX && prop != FONT_FOUNDRY_INDEX && prop != FONT_WIDTH_INDEX && prop != FONT_SIZE_INDEX) return; - font = Fcopy_font_spec (font); + if (EQ (font, attrs[LFACE_FONT_INDEX])) + font = Fcopy_font_spec (font); ASET (font, prop, Qnil); if (prop == FONT_FAMILY_INDEX || prop == FONT_FOUNDRY_INDEX) {