(font_find_for_lface): Handle float font size.
authorKenichi Handa <handa@m17n.org>
Mon, 2 Jun 2008 04:07:43 +0000 (04:07 +0000)
committerKenichi Handa <handa@m17n.org>
Mon, 2 Jun 2008 04:07:43 +0000 (04:07 +0000)
(font_open_for_lface): Likewise.

src/ChangeLog
src/font.c

index dc54dda..2095834 100644 (file)
@@ -1,5 +1,8 @@
 2008-06-02  Kenichi Handa  <handa@m17n.org>
 
+       * font.c (font_find_for_lface): Handle float font size.
+       (font_open_for_lface): Likewise.
+
        * xfaces.c (x_supports_face_attributes_p): Check face->font before
        comparing the properties.
 
index 9e99b81..042cd57 100644 (file)
@@ -2817,6 +2817,7 @@ font_find_for_lface (f, attrs, spec, c)
 {
   Lisp_Object frame, entities, val, props[FONT_REGISTRY_INDEX + 1] ;
   Lisp_Object size;
+  int pixel_size;
   int i, result;
 
   if (c >= 0)
@@ -2840,6 +2841,13 @@ font_find_for_lface (f, attrs, spec, c)
 
   XSETFRAME (frame, f);
   size = AREF (spec, FONT_SIZE_INDEX);
+  pixel_size = font_pixel_size (f, spec);
+  if (pixel_size == 0)
+    {
+      double pt = XINT (attrs[LFACE_HEIGHT_INDEX]);
+
+      pixel_size = POINT_TO_PIXEL (pt / 10, f->resy);
+    }
   ASET (spec, FONT_SIZE_INDEX, Qnil);
   entities = font_list_entities (frame, spec);
   ASET (spec, FONT_SIZE_INDEX, size);
@@ -2873,16 +2881,7 @@ font_find_for_lface (f, attrs, spec, c)
        FONT_SET_STYLE (prefer, FONT_SLANT_INDEX, attrs[LFACE_SLANT_INDEX]);
       if (NILP (AREF (prefer, FONT_WIDTH_INDEX)))
        FONT_SET_STYLE (prefer, FONT_WIDTH_INDEX, attrs[LFACE_SWIDTH_INDEX]);
-      if (INTEGERP (size))
-       ASET (prefer, FONT_SIZE_INDEX, size);
-      else if (FLOATP (size))
-       ASET (prefer, FONT_SIZE_INDEX, make_number (font_pixel_size (f, spec)));
-      else
-       {
-         double pt = XINT (attrs[LFACE_HEIGHT_INDEX]);
-         int pixel_size = POINT_TO_PIXEL (pt / 10, f->resy);
-         ASET (prefer, FONT_SIZE_INDEX, make_number (pixel_size));
-       }
+      ASET (prefer, FONT_SIZE_INDEX, make_number (pixel_size));
       ASET (spec, FONT_SIZE_INDEX, Qnil);
       entities = font_sort_entites (entities, prefer, frame, spec, c < 0);
       ASET (spec, FONT_SIZE_INDEX, size);
@@ -2931,8 +2930,8 @@ font_open_for_lface (f, entity, attrs, spec)
 {
   int size;
 
-  if (FONT_SPEC_P (spec) && INTEGERP (AREF (spec, FONT_SIZE_INDEX)))
-    size = XINT (AREF (spec, FONT_SIZE_INDEX));
+  if (FONT_SPEC_P (spec) && ! NILP (AREF (spec, FONT_SIZE_INDEX)))
+    size = font_pixel_size (f, spec);
   else
     {
       double pt = XINT (attrs[LFACE_HEIGHT_INDEX]);