aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/xfns.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/src/xfns.c b/src/xfns.c
index 9e8732faba8..e5db1db2e83 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1961,14 +1961,24 @@ static XIMStyle supported_xim_styles[] =
1961 1961
1962char xic_defaut_fontset[] = "-*-*-*-r-normal--14-*-*-*-*-*-*-*"; 1962char xic_defaut_fontset[] = "-*-*-*-r-normal--14-*-*-*-*-*-*-*";
1963 1963
1964/* Create an Xt fontset spec from the name of a base font.
1965 If `motif' is True use the Motif syntax. */
1964char * 1966char *
1965xic_create_fontsetname (base_fontname) 1967xic_create_fontsetname (base_fontname, motif)
1966 char *base_fontname; 1968 char *base_fontname;
1969 Bool motif;
1967{ 1970{
1971 const char *sep = motif ? ";" : ",";
1972 char *fontsetname;
1973
1968 /* Make a fontset name from the base font name. */ 1974 /* Make a fontset name from the base font name. */
1969 if (xic_defaut_fontset == base_fontname) 1975 if (xic_defaut_fontset == base_fontname)
1970 /* There is no base font name, use the default. */ 1976 { /* There is no base font name, use the default. */
1971 return base_fontname; 1977 int len = strlen (base_fontname) + 2;
1978 fontsetname = xmalloc (len);
1979 bzero (fontsetname, len);
1980 strcpy (fontsetname, base_fontname);
1981 }
1972 else 1982 else
1973 { 1983 {
1974 /* Make a fontset name from the base font name. 1984 /* Make a fontset name from the base font name.
@@ -1977,20 +1987,19 @@ xic_create_fontsetname (base_fontname)
1977 - the base font where the charset spec is replaced by -*-*. 1987 - the base font where the charset spec is replaced by -*-*.
1978 - the same but with the family also replaced with -*-*-. */ 1988 - the same but with the family also replaced with -*-*-. */
1979 char *p = base_fontname; 1989 char *p = base_fontname;
1980 char *fontsetname;
1981 int i; 1990 int i;
1982 1991
1983 for (i = 0; *p; p++) 1992 for (i = 0; *p; p++)
1984 if (*p == '-') i++; 1993 if (*p == '-') i++;
1985 if (i != 14) 1994 if (i != 14)
1986 { /* As the font name doesn't conform to XLFD, we can't 1995 { /* As the font name doesn't conform to XLFD, we can't
1987 modify it to generalize it to allcs and allfamilies. 1996 modify it to generalize it to allcs and allfamilies.
1988 Use the specified font plus the default. */ 1997 Use the specified font plus the default. */
1989 int len = strlen (base_fontname) + strlen (xic_defaut_fontset) + 2; 1998 int len = strlen (base_fontname) + strlen (xic_defaut_fontset) + 3;
1990 fontsetname = xmalloc (len); 1999 fontsetname = xmalloc (len);
1991 bzero (fontsetname, len); 2000 bzero (fontsetname, len);
1992 strcpy (fontsetname, base_fontname); 2001 strcpy (fontsetname, base_fontname);
1993 strcat (fontsetname, ","); 2002 strcat (fontsetname, sep);
1994 strcat (fontsetname, xic_defaut_fontset); 2003 strcat (fontsetname, xic_defaut_fontset);
1995 } 2004 }
1996 else 2005 else
@@ -2028,17 +2037,19 @@ xic_create_fontsetname (base_fontname)
2028 2037
2029 /* Build the actual font set name. */ 2038 /* Build the actual font set name. */
2030 len = strlen (base_fontname) + strlen (font_allcs) 2039 len = strlen (base_fontname) + strlen (font_allcs)
2031 + strlen (font_allfamilies) + 3; 2040 + strlen (font_allfamilies) + 4;
2032 fontsetname = xmalloc (len); 2041 fontsetname = xmalloc (len);
2033 bzero (fontsetname, len); 2042 bzero (fontsetname, len);
2034 strcpy (fontsetname, base_fontname); 2043 strcpy (fontsetname, base_fontname);
2035 strcat (fontsetname, ","); 2044 strcat (fontsetname, sep);
2036 strcat (fontsetname, font_allcs); 2045 strcat (fontsetname, font_allcs);
2037 strcat (fontsetname, ","); 2046 strcat (fontsetname, sep);
2038 strcat (fontsetname, font_allfamilies); 2047 strcat (fontsetname, font_allfamilies);
2039 } 2048 }
2040 return fontsetname;
2041 } 2049 }
2050 if (motif)
2051 strcat (fontsetname, ":");
2052 return fontsetname;
2042} 2053}
2043 2054
2044static XFontSet 2055static XFontSet
@@ -2071,7 +2082,7 @@ xic_create_xfontset (f, base_fontname)
2071 2082
2072 if (!xfs) 2083 if (!xfs)
2073 { 2084 {
2074 char *fontsetname = xic_create_fontsetname (base_fontname); 2085 char *fontsetname = xic_create_fontsetname (base_fontname, False);
2075 2086
2076 /* New fontset. */ 2087 /* New fontset. */
2077 xfs = XCreateFontSet (FRAME_X_DISPLAY (f), 2088 xfs = XCreateFontSet (FRAME_X_DISPLAY (f),
@@ -2079,8 +2090,7 @@ xic_create_xfontset (f, base_fontname)
2079 &missing_count, &def_string); 2090 &missing_count, &def_string);
2080 if (missing_list) 2091 if (missing_list)
2081 XFreeStringList (missing_list); 2092 XFreeStringList (missing_list);
2082 if (fontsetname != base_fontname) 2093 xfree (fontsetname);
2083 xfree (fontsetname);
2084 } 2094 }
2085 2095
2086 if (FRAME_XIC_BASE_FONTNAME (f)) 2096 if (FRAME_XIC_BASE_FONTNAME (f))