Mercurial > emacs
changeset 96200:5f7a1e1f15c4
(font_find_for_lface): Try the adstyle specified in the property of
LFACE_FONT of LFACE (if any).
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Sun, 22 Jun 2008 15:06:28 +0000 |
parents | 8322a8f8ab08 |
children | 84f1326f4862 |
files | src/font.c |
diffstat | 1 files changed, 29 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/font.c Sun Jun 22 15:01:52 2008 +0000 +++ b/src/font.c Sun Jun 22 15:06:28 2008 +0000 @@ -2959,9 +2959,9 @@ { Lisp_Object work; Lisp_Object frame, entities, val, props[FONT_REGISTRY_INDEX + 1] ; - Lisp_Object size, foundry[3], *family, registry[3]; + Lisp_Object size, foundry[3], *family, registry[3], adstyle[3]; int pixel_size; - int i, j, k, result; + int i, j, k, l, result; registry[0] = AREF (spec, FONT_REGISTRY_INDEX); if (NILP (registry[0])) @@ -3016,6 +3016,26 @@ else foundry[0] = Qnil, foundry[1] = null_vector; + adstyle[0] = AREF (work, FONT_ADSTYLE_INDEX); + if (! NILP (adstyle[0])) + adstyle[1] = null_vector; + else if (FONTP (attrs[LFACE_FONT_INDEX])) + { + Lisp_Object face_font = attrs[LFACE_FONT_INDEX]; + + if (! NILP (AREF (face_font, FONT_ADSTYLE_INDEX))) + { + adstyle[0] = AREF (face_font, FONT_ADSTYLE_INDEX); + adstyle[1] = Qnil; + adstyle[2] = null_vector; + } + else + adstyle[0] = Qnil, adstyle[1] = null_vector; + } + else + adstyle[0] = Qnil, adstyle[1] = null_vector; + + val = AREF (work, FONT_FAMILY_INDEX); if (NILP (val) && STRINGP (attrs[LFACE_FAMILY_INDEX])) val = font_intern_prop (SDATA (attrs[LFACE_FAMILY_INDEX]), @@ -3060,9 +3080,13 @@ for (k = 0; SYMBOLP (registry[k]); k++) { ASET (work, FONT_REGISTRY_INDEX, registry[k]); - entities = font_list_entities (frame, work); - if (ASIZE (entities) > 0) - goto found; + for (l = 0; SYMBOLP (adstyle[l]); l++) + { + ASET (work, FONT_ADSTYLE_INDEX, adstyle[l]); + entities = font_list_entities (frame, work); + if (ASIZE (entities) > 0) + goto found; + } } } }