comparison src/font.c @ 112434:9de5a68b57e1

Promote SSDATA macro from gtkutil.c and xsmfns.c to lisp.h.
author Paul Eggert <eggert@cs.ucla.edu>
date Sat, 22 Jan 2011 18:56:06 -0800
parents 42e22c4f06b7
children
comparison
equal deleted inserted replaced
112433:7b649f6eac4f 112434:9de5a68b57e1
1188 else 1188 else
1189 { 1189 {
1190 if (SYMBOLP (val)) 1190 if (SYMBOLP (val))
1191 val = SYMBOL_NAME (val); 1191 val = SYMBOL_NAME (val);
1192 if (j == XLFD_REGISTRY_INDEX 1192 if (j == XLFD_REGISTRY_INDEX
1193 && ! strchr ((char *) SDATA (val), '-')) 1193 && ! strchr (SSDATA (val), '-'))
1194 { 1194 {
1195 /* Change "jisx0208*" and "jisx0208" to "jisx0208*-*". */ 1195 /* Change "jisx0208*" and "jisx0208" to "jisx0208*-*". */
1196 if (SDATA (val)[SBYTES (val) - 1] == '*') 1196 if (SDATA (val)[SBYTES (val) - 1] == '*')
1197 { 1197 {
1198 f[j] = alloca (SBYTES (val) + 3); 1198 f[j] = alloca (SBYTES (val) + 3);
1205 sprintf (f[j], "%s*-*", SDATA (val)); 1205 sprintf (f[j], "%s*-*", SDATA (val));
1206 len += SBYTES (val) + 4; 1206 len += SBYTES (val) + 4;
1207 } 1207 }
1208 } 1208 }
1209 else 1209 else
1210 f[j] = (char *) SDATA (val), len += SBYTES (val) + 1; 1210 f[j] = SSDATA (val), len += SBYTES (val) + 1;
1211 } 1211 }
1212 } 1212 }
1213 1213
1214 for (i = FONT_WEIGHT_INDEX, j = XLFD_WEIGHT_INDEX; i <= FONT_WIDTH_INDEX; 1214 for (i = FONT_WEIGHT_INDEX, j = XLFD_WEIGHT_INDEX; i <= FONT_WIDTH_INDEX;
1215 i++, j++) 1215 i++, j++)
1218 if (NILP (val)) 1218 if (NILP (val))
1219 f[j] = "*", len += 2; 1219 f[j] = "*", len += 2;
1220 else 1220 else
1221 { 1221 {
1222 val = SYMBOL_NAME (val); 1222 val = SYMBOL_NAME (val);
1223 f[j] = (char *) SDATA (val), len += SBYTES (val) + 1; 1223 f[j] = SSDATA (val), len += SBYTES (val) + 1;
1224 } 1224 }
1225 } 1225 }
1226 1226
1227 val = AREF (font, FONT_SIZE_INDEX); 1227 val = AREF (font, FONT_SIZE_INDEX);
1228 font_assert (NUMBERP (val) || NILP (val)); 1228 font_assert (NUMBERP (val) || NILP (val));
1701 if (! NILP (family) 1701 if (! NILP (family)
1702 && NILP (AREF (font_spec, FONT_FAMILY_INDEX))) 1702 && NILP (AREF (font_spec, FONT_FAMILY_INDEX)))
1703 { 1703 {
1704 CHECK_STRING (family); 1704 CHECK_STRING (family);
1705 len = SBYTES (family); 1705 len = SBYTES (family);
1706 p0 = (char *) SDATA (family); 1706 p0 = SSDATA (family);
1707 p1 = strchr (p0, '-'); 1707 p1 = strchr (p0, '-');
1708 if (p1) 1708 if (p1)
1709 { 1709 {
1710 if ((*p0 != '*' && p1 - p0 > 0) 1710 if ((*p0 != '*' && p1 - p0 > 0)
1711 && NILP (AREF (font_spec, FONT_FOUNDRY_INDEX))) 1711 && NILP (AREF (font_spec, FONT_FOUNDRY_INDEX)))
1720 if (! NILP (registry)) 1720 if (! NILP (registry))
1721 { 1721 {
1722 /* Convert "XXX" and "XXX*" to "XXX*-*". */ 1722 /* Convert "XXX" and "XXX*" to "XXX*-*". */
1723 CHECK_STRING (registry); 1723 CHECK_STRING (registry);
1724 len = SBYTES (registry); 1724 len = SBYTES (registry);
1725 p0 = (char *) SDATA (registry); 1725 p0 = SSDATA (registry);
1726 p1 = strchr (p0, '-'); 1726 p1 = strchr (p0, '-');
1727 if (! p1) 1727 if (! p1)
1728 { 1728 {
1729 if (SDATA (registry)[len - 1] == '*') 1729 if (SDATA (registry)[len - 1] == '*')
1730 registry = concat2 (registry, build_string ("-*")); 1730 registry = concat2 (registry, build_string ("-*"));
1853 1853
1854 if (! NILP (val)) 1854 if (! NILP (val))
1855 otf = XSAVE_VALUE (XCDR (val))->pointer; 1855 otf = XSAVE_VALUE (XCDR (val))->pointer;
1856 else 1856 else
1857 { 1857 {
1858 otf = STRINGP (file) ? OTF_open ((char *) SDATA (file)) : NULL; 1858 otf = STRINGP (file) ? OTF_open (SSDATA (file)) : NULL;
1859 val = make_save_value (otf, 0); 1859 val = make_save_value (otf, 0);
1860 otf_list = Fcons (Fcons (file, val), otf_list); 1860 otf_list = Fcons (Fcons (file, val), otf_list);
1861 } 1861 }
1862 return otf; 1862 return otf;
1863 } 1863 }
2998 font_spec_from_name (Lisp_Object font_name) 2998 font_spec_from_name (Lisp_Object font_name)
2999 { 2999 {
3000 Lisp_Object spec = Ffont_spec (0, NULL); 3000 Lisp_Object spec = Ffont_spec (0, NULL);
3001 3001
3002 CHECK_STRING (font_name); 3002 CHECK_STRING (font_name);
3003 if (font_parse_name ((char *) SDATA (font_name), spec) == -1) 3003 if (font_parse_name (SSDATA (font_name), spec) == -1)
3004 return Qnil; 3004 return Qnil;
3005 font_put_extra (spec, QCname, font_name); 3005 font_put_extra (spec, QCname, font_name);
3006 font_put_extra (spec, QCuser_spec, font_name); 3006 font_put_extra (spec, QCuser_spec, font_name);
3007 return spec; 3007 return spec;
3008 } 3008 }
3156 if (! NILP (foundry[0])) 3156 if (! NILP (foundry[0]))
3157 foundry[1] = null_vector; 3157 foundry[1] = null_vector;
3158 else if (STRINGP (attrs[LFACE_FOUNDRY_INDEX])) 3158 else if (STRINGP (attrs[LFACE_FOUNDRY_INDEX]))
3159 { 3159 {
3160 val = attrs[LFACE_FOUNDRY_INDEX]; 3160 val = attrs[LFACE_FOUNDRY_INDEX];
3161 foundry[0] = font_intern_prop ((char *) SDATA (val), SBYTES (val), 1); 3161 foundry[0] = font_intern_prop (SSDATA (val), SBYTES (val), 1);
3162 foundry[1] = Qnil; 3162 foundry[1] = Qnil;
3163 foundry[2] = null_vector; 3163 foundry[2] = null_vector;
3164 } 3164 }
3165 else 3165 else
3166 foundry[0] = Qnil, foundry[1] = null_vector; 3166 foundry[0] = Qnil, foundry[1] = null_vector;
3187 3187
3188 val = AREF (work, FONT_FAMILY_INDEX); 3188 val = AREF (work, FONT_FAMILY_INDEX);
3189 if (NILP (val) && STRINGP (attrs[LFACE_FAMILY_INDEX])) 3189 if (NILP (val) && STRINGP (attrs[LFACE_FAMILY_INDEX]))
3190 { 3190 {
3191 val = attrs[LFACE_FAMILY_INDEX]; 3191 val = attrs[LFACE_FAMILY_INDEX];
3192 val = font_intern_prop ((char *) SDATA (val), SBYTES (val), 1); 3192 val = font_intern_prop (SSDATA (val), SBYTES (val), 1);
3193 } 3193 }
3194 if (NILP (val)) 3194 if (NILP (val))
3195 { 3195 {
3196 family = alloca ((sizeof family[0]) * 2); 3196 family = alloca ((sizeof family[0]) * 2);
3197 family[0] = Qnil; 3197 family[0] = Qnil;
3618 char *keystr = SDATA (SYMBOL_NAME (key)); 3618 char *keystr = SDATA (SYMBOL_NAME (key));
3619 3619
3620 if (strcmp (boolean_properties[i], keystr) == 0) 3620 if (strcmp (boolean_properties[i], keystr) == 0)
3621 { 3621 {
3622 const char *str = INTEGERP (val) ? (XINT (val) ? "true" : "false") 3622 const char *str = INTEGERP (val) ? (XINT (val) ? "true" : "false")
3623 : SYMBOLP (val) ? (const char *) SDATA (SYMBOL_NAME (val)) 3623 : SYMBOLP (val) ? SSDATA (SYMBOL_NAME (val))
3624 : "true"; 3624 : "true";
3625 3625
3626 if (strcmp ("false", str) == 0 || strcmp ("False", str) == 0 3626 if (strcmp ("false", str) == 0 || strcmp ("False", str) == 0
3627 || strcmp ("FALSE", str) == 0 || strcmp ("FcFalse", str) == 0 3627 || strcmp ("FALSE", str) == 0 || strcmp ("FcFalse", str) == 0
3628 || strcmp ("off", str) == 0 || strcmp ("OFF", str) == 0 3628 || strcmp ("off", str) == 0 || strcmp ("OFF", str) == 0
3888 val = args[i + 1]; 3888 val = args[i + 1];
3889 3889
3890 if (EQ (key, QCname)) 3890 if (EQ (key, QCname))
3891 { 3891 {
3892 CHECK_STRING (val); 3892 CHECK_STRING (val);
3893 font_parse_name ((char *) SDATA (val), spec); 3893 font_parse_name (SSDATA (val), spec);
3894 font_put_extra (spec, key, val); 3894 font_put_extra (spec, key, val);
3895 } 3895 }
3896 else 3896 else
3897 { 3897 {
3898 int idx = get_font_prop_index (key); 3898 int idx = get_font_prop_index (key);
4248 if (STRINGP (font_name) 4248 if (STRINGP (font_name)
4249 && SDATA (font_name)[0] == '-') 4249 && SDATA (font_name)[0] == '-')
4250 { 4250 {
4251 if (NILP (fold_wildcards)) 4251 if (NILP (fold_wildcards))
4252 return font_name; 4252 return font_name;
4253 strcpy (name, (char *) SDATA (font_name)); 4253 strcpy (name, SSDATA (font_name));
4254 goto done; 4254 goto done;
4255 } 4255 }
4256 pixel_size = XFONT_OBJECT (font)->pixel_size; 4256 pixel_size = XFONT_OBJECT (font)->pixel_size;
4257 } 4257 }
4258 if (font_unparse_xlfd (font, pixel_size, name, 256) < 0) 4258 if (font_unparse_xlfd (font, pixel_size, name, 256) < 0)
4911 { 4911 {
4912 int fontset = fs_query_fontset (name, 0); 4912 int fontset = fs_query_fontset (name, 0);
4913 4913
4914 if (fontset >= 0) 4914 if (fontset >= 0)
4915 name = fontset_ascii (fontset); 4915 name = fontset_ascii (fontset);
4916 font_object = font_open_by_name (f, (char *) SDATA (name)); 4916 font_object = font_open_by_name (f, SSDATA (name));
4917 } 4917 }
4918 else if (FONT_OBJECT_P (name)) 4918 else if (FONT_OBJECT_P (name))
4919 font_object = name; 4919 font_object = name;
4920 else if (FONT_ENTITY_P (name)) 4920 else if (FONT_ENTITY_P (name))
4921 font_object = font_open_entity (f, name, 0); 4921 font_object = font_open_entity (f, name, 0);
4989 4989
4990 if (EQ (Vfont_log, Qt)) 4990 if (EQ (Vfont_log, Qt))
4991 return; 4991 return;
4992 if (STRINGP (AREF (Vfont_log_deferred, 0))) 4992 if (STRINGP (AREF (Vfont_log_deferred, 0)))
4993 { 4993 {
4994 char *str = (char *) SDATA (AREF (Vfont_log_deferred, 0)); 4994 char *str = SSDATA (AREF (Vfont_log_deferred, 0));
4995 4995
4996 ASET (Vfont_log_deferred, 0, Qnil); 4996 ASET (Vfont_log_deferred, 0, Qnil);
4997 font_add_log (str, AREF (Vfont_log_deferred, 1), 4997 font_add_log (str, AREF (Vfont_log_deferred, 1),
4998 AREF (Vfont_log_deferred, 2)); 4998 AREF (Vfont_log_deferred, 2));
4999 } 4999 }
5267 void 5267 void
5268 init_font (void) 5268 init_font (void)
5269 { 5269 {
5270 Vfont_log = egetenv ("EMACS_FONT_LOG") ? Qnil : Qt; 5270 Vfont_log = egetenv ("EMACS_FONT_LOG") ? Qnil : Qt;
5271 } 5271 }
5272