# HG changeset patch # User Kenichi Handa # Date 1222864602 0 # Node ID 5d2542d6df18b59004c64c856265a3fc69bd1406 # Parent e44273834265fe311b69f88c9775350ab36a23e0 (font_matching_entity): Reflect ATTRS in font selection. (font_find_for_lface) [HAVE_NS]: Don't ignore case. diff -r e44273834265 -r 5d2542d6df18 src/font.c --- a/src/font.c Wed Oct 01 09:12:37 2008 +0000 +++ b/src/font.c Wed Oct 01 12:36:42 2008 +0000 @@ -2765,12 +2765,18 @@ 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 @@ 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 @@ } 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 @@ 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)) {