2014-07-19 Kenichi 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).
This commit is contained in:
Kenichi Handa 2014-07-20 00:18:23 +09:00
parent 31ca1841d2
commit bf0d3f76dc
3 changed files with 16 additions and 2 deletions

View 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

View 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;

View 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]);