Mercurial > emacs
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; |