From 819ab95f726e46dfec4718de9185b288eb7fa8c6 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Wed, 1 Oct 2008 12:37:28 +0000 Subject: [PATCH] (font_matching_entity): Reflect ATTRS in font selection. (font_find_for_lface) [HAVE_NS]: Don't ignore case. --- src/ChangeLog | 5 +++++ src/font.c | 24 ++++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 6cf8ee7fce3..8603222ea32 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2008-10-01 Adrian Robert + + * font.c (font_matching_entity): Reflect ATTRS in font selection. + (font_find_for_lface) [HAVE_NS]: Don't ignore case. + 2008-09-30 Stefan Monnier * dispnew.c (Fsend_string_to_terminal): Don't try to send a string to diff --git a/src/font.c b/src/font.c index ba05b57a001..816ce9a674f 100644 --- a/src/font.c +++ b/src/font.c @@ -2765,12 +2765,18 @@ font_matching_entity (f, attrs, spec) struct font_driver_list *driver_list = f->font_driver_list; Lisp_Object ftype, size, entity; Lisp_Object frame; + Lisp_Object work = Fcopy_font_spec (spec); XSETFRAME (frame, f); ftype = AREF (spec, FONT_TYPE_INDEX); size = AREF (spec, FONT_SIZE_INDEX); if (FLOATP (size)) ASET (spec, FONT_SIZE_INDEX, make_number (font_pixel_size (f, spec))); + + FONT_SET_STYLE (work, FONT_WEIGHT_INDEX, attrs[LFACE_WEIGHT_INDEX]); + FONT_SET_STYLE (work, FONT_SLANT_INDEX, attrs[LFACE_SLANT_INDEX]); + FONT_SET_STYLE (work, FONT_WIDTH_INDEX, attrs[LFACE_SWIDTH_INDEX]); + entity = Qnil; for (; driver_list; driver_list = driver_list->next) if (driver_list->on @@ -2779,14 +2785,14 @@ font_matching_entity (f, attrs, spec) Lisp_Object cache = font_get_cache (f, driver_list->driver); Lisp_Object copy; - ASET (spec, FONT_TYPE_INDEX, driver_list->driver->type); - entity = assoc_no_quit (spec, XCDR (cache)); + ASET (work, FONT_TYPE_INDEX, driver_list->driver->type); + entity = assoc_no_quit (work, XCDR (cache)); if (CONSP (entity)) entity = XCDR (entity); else { - entity = driver_list->driver->match (frame, spec); - copy = Fcopy_font_spec (spec); + entity = driver_list->driver->match (frame, work); + copy = Fcopy_font_spec (work); ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type); XSETCDR (cache, Fcons (Fcons (copy, entity), XCDR (cache))); } @@ -2795,7 +2801,7 @@ font_matching_entity (f, attrs, spec) } ASET (spec, FONT_TYPE_INDEX, ftype); ASET (spec, FONT_SIZE_INDEX, size); - font_add_log ("match", spec, entity); + font_add_log ("match", work, entity); return entity; } @@ -3166,7 +3172,13 @@ font_find_for_lface (f, attrs, spec, c) else { Lisp_Object alters - = Fassoc_string (val, Vface_alternative_font_family_alist, Qt); + = Fassoc_string (val, Vface_alternative_font_family_alist, +#ifndef HAVE_NS + Qt +#else + Qnil +#endif + ); if (! NILP (alters)) { -- 2.39.5