changeset 102655:3854b305c65b

(x_set_font): Handle the case that ARG is a cons.
author Kenichi Handa <handa@m17n.org>
date Thu, 19 Mar 2009 06:50:55 +0000
parents 8cacd0d8fb30
children ffa382f6551e
files src/frame.c
diffstat 1 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/frame.c	Thu Mar 19 06:50:41 2009 +0000
+++ b/src/frame.c	Thu Mar 19 06:50:55 2009 +0000
@@ -3372,8 +3372,9 @@
      fail to use ARG as the new parameter value.  */
   store_frame_param (f, Qfont, oldval);
 
-  /* ARG is a fontset name, a font name, or a font object.
-     In the last case, this function never fail.  */
+  /* ARG is a fontset name, a font name, a cons of fontset name and a
+     font object, or a font object.  In the last case, this function
+     never fail.  */
   if (STRINGP (arg))
     {
       fontset = fs_query_fontset (arg, 0);
@@ -3396,6 +3397,17 @@
       else
 	error ("The default fontset can't be used for a frame font");
     }
+  else if (CONSP (arg) && STRINGP (XCAR (arg)) && FONT_OBJECT_P (XCDR (arg)))
+    {
+      /* This is the case that the ASCII font of F's fontset XCAR
+	 (arg) is changed to the font XCDR (arg) by
+	 `set-fontset-font'.  */
+      fontset = fs_query_fontset (XCAR (arg), 0);
+      if (fontset < 0)
+	error ("Unknown fontset: %s", SDATA (XCAR (arg)));
+      font_object = XCDR (arg);
+      arg = AREF (font_object, FONT_NAME_INDEX);
+    }
   else if (FONT_OBJECT_P (arg))
     {
       font_object = arg;