]> git.eshelyaron.com Git - emacs.git/commitdiff
2014-07-19 Kenichi Handa <handa@gnu.org>
authorKenichi Handa <handa@gnu.org>
Sat, 19 Jul 2014 15:18:23 +0000 (00:18 +0900)
committerKenichi Handa <handa@gnu.org>
Sat, 19 Jul 2014 15:18:23 +0000 (00:18 +0900)
* xfaces.c (realize_x_face): Call font_load_for_lface with no
mandatory font spec (Bug#17973).

2014-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>

* font.c (font_score): Return the worst score if the size of
ENTITY is wrong by more than a factor 2 (Bug#17973).

src/ChangeLog
src/font.c
src/xfaces.c

index 7d244db6b1d4bd7db151bc9acd9731c679ab5773..51569f14f3153a5b98f9783ee564f3f404a7c149 100644 (file)
@@ -1,3 +1,13 @@
+2014-07-19  K. Handa  <handa@gnu.org>
+
+       * xfaces.c (realize_x_face): Call font_load_for_lface with no
+       mandatory font spec (Bug#17973).
+
+2014-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * font.c (font_score): Return the worst score if the size of
+       ENTITY is wrong by more than a factor 2 (Bug#17973).
+
 2014-07-18  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * frame.c (frame_unspecified_color): New function
index ef8b5e40eeb980ccf3960a5284b9dc5742f35931..054a68bfd94bbc55be79d741c4d8c8437e32763a 100644 (file)
@@ -2158,10 +2158,14 @@ font_score (Lisp_Object entity, Lisp_Object *spec_prop)
         lowest bit is set if the DPI is different.  */
       EMACS_INT diff;
       EMACS_INT pixel_size = XINT (spec_prop[FONT_SIZE_INDEX]);
+      EMACS_INT entity_size = XINT (AREF (entity, FONT_SIZE_INDEX));
 
       if (CONSP (Vface_font_rescale_alist))
        pixel_size *= font_rescale_ratio (entity);
-      diff = eabs (pixel_size - XINT (AREF (entity, FONT_SIZE_INDEX))) << 1;
+      if (pixel_size * 2 < entity_size || entity_size * 2 < pixel_size)
+       /* This size is wrong by more than a factor 2: reject it!  */
+       return 0xFFFFFFFF;
+      diff = eabs (pixel_size - entity_size) << 1;
       if (! NILP (spec_prop[FONT_DPI_INDEX])
          && ! EQ (spec_prop[FONT_DPI_INDEX], AREF (entity, FONT_DPI_INDEX)))
        diff |= 1;
index 081875f5bea8984b1be20a6f260b1297e59c2234..34895123db9896481219cd7cf44cd1b23e7a6afb 100644 (file)
@@ -5547,7 +5547,7 @@ realize_x_face (struct face_cache *cache, Lisp_Object attrs[LFACE_VECTOR_SIZE])
        }
       if (! FONT_OBJECT_P (attrs[LFACE_FONT_INDEX]))
        attrs[LFACE_FONT_INDEX]
-         = font_load_for_lface (f, attrs, attrs[LFACE_FONT_INDEX]);
+         = font_load_for_lface (f, attrs, Ffont_spec (0, NULL));
       if (FONT_OBJECT_P (attrs[LFACE_FONT_INDEX]))
        {
          face->font = XFONT_OBJECT (attrs[LFACE_FONT_INDEX]);