Mercurial > emacs
comparison src/font.c @ 95888:ff04c95494e4
(font_find_for_lface): If registry is NULL, try iso8859-1 and ascii-0.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 13 Jun 2008 12:29:37 +0000 |
parents | c8bc52f94b6d |
children | e6e6c351339d |
comparison
equal
deleted
inserted
replaced
95887:c86b69eedb4f | 95888:ff04c95494e4 |
---|---|
2894 Lisp_Object spec; | 2894 Lisp_Object spec; |
2895 int c; | 2895 int c; |
2896 { | 2896 { |
2897 Lisp_Object work; | 2897 Lisp_Object work; |
2898 Lisp_Object frame, entities, val, props[FONT_REGISTRY_INDEX + 1] ; | 2898 Lisp_Object frame, entities, val, props[FONT_REGISTRY_INDEX + 1] ; |
2899 Lisp_Object size, foundry[3], *family; | 2899 Lisp_Object size, foundry[3], *family, registry[3]; |
2900 int pixel_size; | 2900 int pixel_size; |
2901 int i, j, result; | 2901 int i, j, k, result; |
2902 | |
2903 registry[0] = AREF (spec, FONT_REGISTRY_INDEX); | |
2904 if (NILP (registry[0])) | |
2905 { | |
2906 registry[0] = Qiso8859_1; | |
2907 registry[1] = Qascii_0; | |
2908 registry[2] = null_vector; | |
2909 } | |
2910 else | |
2911 registry[1] = null_vector; | |
2902 | 2912 |
2903 if (c >= 0 && ! NILP (AREF (spec, FONT_REGISTRY_INDEX))) | 2913 if (c >= 0 && ! NILP (AREF (spec, FONT_REGISTRY_INDEX))) |
2904 { | 2914 { |
2905 struct charset *encoding, *repertory; | 2915 struct charset *encoding, *repertory; |
2906 | 2916 |
2976 family[i++] = Qnil; | 2986 family[i++] = Qnil; |
2977 family[i] = null_vector; | 2987 family[i] = null_vector; |
2978 } | 2988 } |
2979 } | 2989 } |
2980 | 2990 |
2981 for (j = 0; SYMBOLP (family[j]); j++) | 2991 for (i = 0; SYMBOLP (family[i]); i++) |
2982 { | 2992 { |
2983 ASET (work, FONT_FAMILY_INDEX, family[j]); | 2993 ASET (work, FONT_FAMILY_INDEX, family[i]); |
2984 for (i = 0; SYMBOLP (foundry[i]); i++) | 2994 for (j = 0; SYMBOLP (foundry[j]); j++) |
2985 { | 2995 { |
2986 ASET (work, FONT_FOUNDRY_INDEX, foundry[i]); | 2996 ASET (work, FONT_FOUNDRY_INDEX, foundry[j]); |
2987 entities = font_list_entities (frame, work); | 2997 for (k = 0; SYMBOLP (registry[k]); k++) |
2988 if (ASIZE (entities) > 0) | 2998 { |
2989 break; | 2999 ASET (work, FONT_REGISTRY_INDEX, registry[j]); |
2990 } | 3000 entities = font_list_entities (frame, work); |
2991 if (ASIZE (entities) > 0) | 3001 if (ASIZE (entities) > 0) |
2992 break; | 3002 goto found; |
2993 } | 3003 } |
2994 if (ASIZE (entities) == 0) | 3004 } |
2995 return Qnil; | 3005 } |
3006 return Qnil; | |
3007 found: | |
2996 if (ASIZE (entities) == 1) | 3008 if (ASIZE (entities) == 1) |
2997 { | 3009 { |
2998 if (c < 0) | 3010 if (c < 0) |
2999 return AREF (entities, 0); | 3011 return AREF (entities, 0); |
3000 } | 3012 } |