1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-01 18:00:40 -08:00

Allow font names that end in "-NN", where NN is a number

* src/font.c (font_load_for_lface): If the font-spec didn't match
any available fonts, try again without interpreting trailing "-NN"
as the font size.  For the description of the original problem, see
http://lists.gnu.org/archive/html/help-emacs-windows/2015-06/msg00001.html
This commit is contained in:
Eli Zaretskii 2015-06-29 19:10:20 +03:00
parent 64110eb14d
commit ea60b543f6

View file

@ -3337,6 +3337,38 @@ font_load_for_lface (struct frame *f, Lisp_Object *attrs, Lisp_Object spec)
/* No font is listed for SPEC, but each font-backend may have
different criteria about "font matching". So, try it. */
entity = font_matching_entity (f, attrs, spec);
/* Perhaps the user asked for a font "Foobar-123", and we
interpreted "-123" as the size, whereas it really is part of
the name. So we reset the size to nil and the family name to
the entire "Foobar-123" thing, and try again with that. */
if (NILP (entity))
{
name = Ffont_get (spec, QCuser_spec);
if (STRINGP (name))
{
char *p = SDATA (name), *q = strrchr (p, '-');
if (q != NULL && c_isdigit (q[1]))
{
char *tail;
double font_size = strtod (q + 1, &tail);
if (font_size > 0 && tail != q + 1)
{
Lisp_Object lsize = Ffont_get (spec, QCsize);
if ((FLOATP (lsize) && XFLOAT_DATA (lsize) == font_size)
|| (INTEGERP (lsize) && XINT (lsize) == font_size))
{
ASET (spec, FONT_FAMILY_INDEX,
font_intern_prop (p, tail - p, 1));
ASET (spec, FONT_SIZE_INDEX, Qnil);
entity = font_matching_entity (f, attrs, spec);
}
}
}
}
}
if (NILP (entity))
return Qnil;
}