diff options
| author | Stefan Monnier | 2005-03-18 02:25:13 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2005-03-18 02:25:13 +0000 |
| commit | 968a6679624d4e84c154a2f61f17defb6906b973 (patch) | |
| tree | 83869efece6b03ec9740b85a05aab72679a74610 /src | |
| parent | c7bd5d5712ab62d1c6e390bd7d12754e53b8de26 (diff) | |
| download | emacs-968a6679624d4e84c154a2f61f17defb6906b973.tar.gz emacs-968a6679624d4e84c154a2f61f17defb6906b973.zip | |
(xic_create_fontsetname): Add a final catch-all font pattern.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xfns.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/xfns.c b/src/xfns.c index e5db1db2e83..603a948a372 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -2005,11 +2005,13 @@ xic_create_fontsetname (base_fontname, motif) | |||
| 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 | { |
| @@ -2018,6 +2020,8 @@ xic_create_fontsetname (base_fontname, motif) | |||
| 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. */ |
| @@ -2032,12 +2036,21 @@ xic_create_fontsetname (base_fontname, motif) | |||
| 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); |
| 2037 | 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); | ||
| 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); |
| @@ -2045,6 +2058,8 @@ xic_create_fontsetname (base_fontname, motif) | |||
| 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) |