comparison src/xfns.c @ 60695:d8c3512bc427

(xic_create_fontsetname): Add a final catch-all font pattern.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 18 Mar 2005 02:25:13 +0000
parents 34f4b9f0b40d
children 41e456f361cc
comparison
equal deleted inserted replaced
60694:9e7ee067df09 60695:d8c3512bc427
2003 strcat (fontsetname, xic_defaut_fontset); 2003 strcat (fontsetname, xic_defaut_fontset);
2004 } 2004 }
2005 else 2005 else
2006 { 2006 {
2007 int len; 2007 int len;
2008 char *p1 = NULL; 2008 char *p1 = NULL, *p2 = NULL;
2009 char *font_allcs = NULL; 2009 char *font_allcs = NULL;
2010 char *font_allfamilies = NULL; 2010 char *font_allfamilies = NULL;
2011 char *font_all = NULL;
2011 char *allcs = "*-*-*-*-*-*-*"; 2012 char *allcs = "*-*-*-*-*-*-*";
2012 char *allfamilies = "-*-*-"; 2013 char *allfamilies = "-*-*-";
2014 char *all = "*-*-*-*-";
2013 2015
2014 for (i = 0, p = base_fontname; i < 8; p++) 2016 for (i = 0, p = base_fontname; i < 8; p++)
2015 { 2017 {
2016 if (*p == '-') 2018 if (*p == '-')
2017 { 2019 {
2018 i++; 2020 i++;
2019 if (i == 3) 2021 if (i == 3)
2020 p1 = p + 1; 2022 p1 = p + 1;
2023 else if (i == 7)
2024 p2 = p + 1;
2021 } 2025 }
2022 } 2026 }
2023 /* Build the font spec that matches all charsets. */ 2027 /* Build the font spec that matches all charsets. */
2024 len = p - base_fontname + strlen (allcs) + 1; 2028 len = p - base_fontname + strlen (allcs) + 1;
2025 font_allcs = (char *) alloca (len); 2029 font_allcs = (char *) alloca (len);
2030 /* Build the font spec that matches all families. */ 2034 /* Build the font spec that matches all families. */
2031 len = p - p1 + strlen (allcs) + strlen (allfamilies) + 1; 2035 len = p - p1 + strlen (allcs) + strlen (allfamilies) + 1;
2032 font_allfamilies = (char *) alloca (len); 2036 font_allfamilies = (char *) alloca (len);
2033 bzero (font_allfamilies, len); 2037 bzero (font_allfamilies, len);
2034 strcpy (font_allfamilies, allfamilies); 2038 strcpy (font_allfamilies, allfamilies);
2035 bcopy (p1, font_allfamilies + (strlen (allfamilies)), p - p1); 2039 bcopy (p1, font_allfamilies + strlen (allfamilies), p - p1);
2036 strcat (font_allfamilies, allcs); 2040 strcat (font_allfamilies, allcs);
2041
2042 /* Build the font spec that matches all. */
2043 len = p - p2 + strlen (allcs) + strlen (all) + strlen (allfamilies) + 1;
2044 font_all = (char *) alloca (len);
2045 bzero (font_all, len);
2046 strcpy (font_all, allfamilies);
2047 strcat (font_all, all);
2048 bcopy (p2, font_all + strlen (all) + strlen (allfamilies), p - p2);
2049 strcat (font_all, allcs);
2037 2050
2038 /* Build the actual font set name. */ 2051 /* Build the actual font set name. */
2039 len = strlen (base_fontname) + strlen (font_allcs) 2052 len = strlen (base_fontname) + strlen (font_allcs)
2040 + strlen (font_allfamilies) + 4; 2053 + strlen (font_allfamilies) + strlen (font_all) + 5;
2041 fontsetname = xmalloc (len); 2054 fontsetname = xmalloc (len);
2042 bzero (fontsetname, len); 2055 bzero (fontsetname, len);
2043 strcpy (fontsetname, base_fontname); 2056 strcpy (fontsetname, base_fontname);
2044 strcat (fontsetname, sep); 2057 strcat (fontsetname, sep);
2045 strcat (fontsetname, font_allcs); 2058 strcat (fontsetname, font_allcs);
2046 strcat (fontsetname, sep); 2059 strcat (fontsetname, sep);
2047 strcat (fontsetname, font_allfamilies); 2060 strcat (fontsetname, font_allfamilies);
2061 strcat (fontsetname, sep);
2062 strcat (fontsetname, font_all);
2048 } 2063 }
2049 } 2064 }
2050 if (motif) 2065 if (motif)
2051 strcat (fontsetname, ":"); 2066 strcat (fontsetname, ":");
2052 return fontsetname; 2067 return fontsetname;