emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r110631: Make face-font-rescale-alist


From: Kenichi Handa
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r110631: Make face-font-rescale-alist work correctly for non-ASCII fonts.
Date: Wed, 24 Oct 2012 00:48:17 +0900
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 110631 [merge]
committer: Kenichi Handa <address@hidden>
branch nick: trunk
timestamp: Wed 2012-10-24 00:48:17 +0900
message:
  Make face-font-rescale-alist work correctly for non-ASCII fonts.
modified:
  src/ChangeLog
  src/font.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2012-10-23 02:39:13 +0000
+++ b/src/ChangeLog     2012-10-23 15:47:51 +0000
@@ -1,3 +1,11 @@
+2012-10-23  Kenichi Handa  <address@hidden>
+
+       The following change is to make face-font-rescale-alist work
+       correctly for non-ASCII fonts.
+
+       * font.c (font_open_entity): Don't handle Vface_font_rescale_alist.
+       (font_open_for_lface): Handle Vface_font_rescale_alist.
+
 2012-10-23  Chong Yidong  <address@hidden>
 
        * xfaces.c (Vfont_list_limit): Move unused variable to faces.el.

=== modified file 'src/font.c'
--- a/src/font.c        2012-10-19 12:59:42 +0000
+++ b/src/font.c        2012-10-23 15:42:29 +0000
@@ -2816,14 +2816,11 @@
   Lisp_Object objlist, size, val, font_object;
   struct font *font;
   int min_width, height;
-  int scaled_pixel_size = pixel_size;
 
   eassert (FONT_ENTITY_P (entity));
   size = AREF (entity, FONT_SIZE_INDEX);
   if (XINT (size) != 0)
-    scaled_pixel_size = pixel_size = XINT (size);
-  else if (CONSP (Vface_font_rescale_alist))
-    scaled_pixel_size = pixel_size * font_rescale_ratio (entity);
+    pixel_size = XINT (size);
 
   val = AREF (entity, FONT_TYPE_INDEX);
   for (driver_list = f->font_driver_list;
@@ -2845,7 +2842,7 @@
         }
     }
 
-  font_object = driver_list->driver->open (f, entity, scaled_pixel_size);
+  font_object = driver_list->driver->open (f, entity, pixel_size);
   if (!NILP (font_object))
     ASET (font_object, FONT_SIZE_INDEX, make_number (pixel_size));
   FONT_ADD_LOG ("open", entity, font_object);
@@ -3230,31 +3227,36 @@
   if (INTEGERP (AREF (entity, FONT_SIZE_INDEX))
       && XINT (AREF (entity, FONT_SIZE_INDEX)) > 0)
     size = XINT (AREF (entity, FONT_SIZE_INDEX));
-  else if (FONT_SPEC_P (spec) && ! NILP (AREF (spec, FONT_SIZE_INDEX)))
-    size = font_pixel_size (f, spec);
   else
     {
-      double pt;
-      if (INTEGERP (attrs[LFACE_HEIGHT_INDEX]))
-       pt = XINT (attrs[LFACE_HEIGHT_INDEX]);
+      if (FONT_SPEC_P (spec) && ! NILP (AREF (spec, FONT_SIZE_INDEX)))
+       size = font_pixel_size (f, spec);
       else
        {
-         struct face *def = FACE_FROM_ID (f, DEFAULT_FACE_ID);
-         Lisp_Object height = def->lface[LFACE_HEIGHT_INDEX];
-         eassert (INTEGERP (height));
-         pt = XINT (height);
-       }
+         double pt;
+         if (INTEGERP (attrs[LFACE_HEIGHT_INDEX]))
+           pt = XINT (attrs[LFACE_HEIGHT_INDEX]);
+         else
+           {
+             struct face *def = FACE_FROM_ID (f, DEFAULT_FACE_ID);
+             Lisp_Object height = def->lface[LFACE_HEIGHT_INDEX];
+             eassert (INTEGERP (height));
+             pt = XINT (height);
+           }
 
-      pt /= 10;
-      size = POINT_TO_PIXEL (pt, f->resy);
+         pt /= 10;
+         size = POINT_TO_PIXEL (pt, f->resy);
 #ifdef HAVE_NS
-      if (size == 0)
-        {
-          Lisp_Object ffsize = get_frame_param (f, Qfontsize);
-          size = NUMBERP (ffsize) ? POINT_TO_PIXEL (XINT (ffsize), f->resy) : 
0;
-        }
+         if (size == 0)
+           {
+             Lisp_Object ffsize = get_frame_param (f, Qfontsize);
+             size = NUMBERP (ffsize) ? POINT_TO_PIXEL (XINT (ffsize), f->resy) 
: 0;
+           }
 #endif
+       }
+      size *= font_rescale_ratio (entity);
     }
+
   return font_open_entity (f, entity, size);
 }
 


reply via email to

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