emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/src fontset.c


From: Kenichi Handa
Subject: [Emacs-diffs] emacs/src fontset.c
Date: Thu, 19 Mar 2009 06:50:42 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Kenichi Handa <handa>   09/03/19 06:50:42

Modified files:
        src            : fontset.c 

Log message:
        (Fset_fontset_font): When a spec of ASCII font is
        changed, use font_load_for_lface to get a new font object.  Call
        free_realized_fontset after handling ASCII font change.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/fontset.c?cvsroot=emacs&r1=1.164&r2=1.165

Patches:
Index: fontset.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/fontset.c,v
retrieving revision 1.164
retrieving revision 1.165
diff -u -b -r1.164 -r1.165
--- fontset.c   13 Mar 2009 16:14:20 -0000      1.164
+++ fontset.c   19 Mar 2009 06:50:41 -0000      1.165
@@ -1612,39 +1612,42 @@
   for (; CONSP (range_list); range_list = XCDR (range_list))
     FONTSET_ADD (fontset, XCAR (range_list), font_def, add);
 
-  /* Free all realized fontsets whose base is FONTSET.  This way, the
-     specified character(s) are surely redisplayed by a correct
-     font.  */
-  free_realized_fontsets (fontset);
-
   if (ascii_changed)
     {
       Lisp_Object tail, frame, alist;
       int fontset_id = XINT (FONTSET_ID (fontset));
 
-      alist = Qnil;
       FONTSET_ASCII (fontset) = fontname;
       name = FONTSET_NAME (fontset);
       FOR_EACH_FRAME (tail, frame)
        {
          FRAME_PTR f = XFRAME (frame);
          Lisp_Object font_object;
+         struct face *face;
 
-         if (FRAME_INITIAL_P(f) || FRAME_TERMCAP_P (f))
+         if (FRAME_INITIAL_P (f) || FRAME_TERMCAP_P (f))
            continue;
          if (fontset_id != FRAME_FONTSET (f))
            continue;
+         face = FACE_FROM_ID (f, DEFAULT_FACE_ID);
+         if (face)
+           font_object = font_load_for_lface (f, face->lface, font_spec);
+         else
          font_object = font_open_by_spec (f, font_spec);
          if (! NILP (font_object))
            {
              update_auto_fontset_alist (font_object, fontset);
-             if (NILP (alist))
-               alist = Fcons (Fcons (Qfont, name), Qnil);
+             alist = Fcons (Fcons (Qfont, Fcons (name, font_object)), Qnil);
              Fmodify_frame_parameters (frame, alist);
            }
        }
     }
 
+  /* Free all realized fontsets whose base is FONTSET.  This way, the
+     specified character(s) are surely redisplayed by a correct
+     font.  */
+  free_realized_fontsets (fontset);
+
   return Qnil;
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]