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 }