(Fx_list_fonts): If a font size is specified in PATTERN, set it in
authorKenichi Handa <handa@m17n.org>
Thu, 23 Apr 2009 01:34:15 +0000 (01:34 +0000)
committerKenichi Handa <handa@m17n.org>
Thu, 23 Apr 2009 01:34:15 +0000 (01:34 +0000)
returned scalable fonts.

src/ChangeLog
src/xfaces.c

index 58c9272..7328c2d 100644 (file)
@@ -1,3 +1,8 @@
+2009-04-23  Kenichi Handa  <handa@m17n.org>
+
+       * xfaces.c (Fx_list_fonts): If a font size is specified in
+       PATTERN, set it in returned scalable fonts.
+
 2009-04-22  Chong Yidong  <cyd@stupidchicken.com>
 
        * keyboard.c (Fset_input_meta_mode): Doc fix.
index 62d2cf2..fa50d45 100644 (file)
@@ -1904,7 +1904,22 @@ the WIDTH times as wide as FACE on FRAME.  */)
       }
     args[0] = Flist_fonts (font_spec, frame, maximum, font_spec);
     for (tail = args[0]; CONSP (tail); tail = XCDR (tail))
-      XSETCAR (tail, Ffont_xlfd_name (XCAR (tail), Qnil));
+      {
+       Lisp_Object font_entity;
+
+       font_entity = XCAR (tail);
+       if ((NILP (AREF (font_entity, FONT_SIZE_INDEX))
+            || XINT (AREF (font_entity, FONT_SIZE_INDEX)) == 0)
+           && ! NILP (AREF (font_spec, FONT_SIZE_INDEX)))
+         {
+           /* This is a scalable font.  For backward compatibility,
+              we set the specified size. */
+           font_entity = Fcopy_font_spec (font_entity);
+           ASET (font_entity, FONT_SIZE_INDEX,
+                 AREF (font_spec, FONT_SIZE_INDEX));
+         }
+       XSETCAR (tail, Ffont_xlfd_name (font_entity, Qnil));
+      }
     if (NILP (frame))
       /* We don't have to check fontsets.  */
       return args[0];