summaryrefslogtreecommitdiff
path: root/src/xfns.c
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2005-03-17 18:32:33 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2005-03-17 18:32:33 +0000
commitc28e7ae824ee16d3d89fde77a0ca178f85576775 (patch)
tree20126729bad0e41ad1dad0eb280169f63f8df2e4 /src/xfns.c
parent9f9e527507d2d48e605e16e720acbc92cdb827c3 (diff)
downloademacs-c28e7ae824ee16d3d89fde77a0ca178f85576775.tar.gz
(xic_create_fontsetname): Add `motif' argument.
Always return a freshly allocated string. (xic_create_xfontset): Adjust call.
Diffstat (limited to 'src/xfns.c')
-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[] =
char xic_defaut_fontset[] = "-*-*-*-r-normal--14-*-*-*-*-*-*-*";
+/* Create an Xt fontset spec from the name of a base font.
+ If `motif' is True use the Motif syntax. */
char *
-xic_create_fontsetname (base_fontname)
+xic_create_fontsetname (base_fontname, motif)
char *base_fontname;
+ Bool motif;
{
+ const char *sep = motif ? ";" : ",";
+ char *fontsetname;
+
/* Make a fontset name from the base font name. */
if (xic_defaut_fontset == base_fontname)
- /* There is no base font name, use the default. */
- return base_fontname;
+ { /* There is no base font name, use the default. */
+ int len = strlen (base_fontname) + 2;
+ fontsetname = xmalloc (len);
+ bzero (fontsetname, len);
+ strcpy (fontsetname, base_fontname);
+ }
else
{
/* Make a fontset name from the base font name.
@@ -1977,20 +1987,19 @@ xic_create_fontsetname (base_fontname)
- the base font where the charset spec is replaced by -*-*.
- the same but with the family also replaced with -*-*-. */
char *p = base_fontname;
- char *fontsetname;
int i;
-
+
for (i = 0; *p; p++)
if (*p == '-') i++;
if (i != 14)
{ /* As the font name doesn't conform to XLFD, we can't
modify it to generalize it to allcs and allfamilies.
Use the specified font plus the default. */
- int len = strlen (base_fontname) + strlen (xic_defaut_fontset) + 2;
+ int len = strlen (base_fontname) + strlen (xic_defaut_fontset) + 3;
fontsetname = xmalloc (len);
bzero (fontsetname, len);
strcpy (fontsetname, base_fontname);
- strcat (fontsetname, ",");
+ strcat (fontsetname, sep);
strcat (fontsetname, xic_defaut_fontset);
}
else
@@ -2028,17 +2037,19 @@ xic_create_fontsetname (base_fontname)
/* Build the actual font set name. */
len = strlen (base_fontname) + strlen (font_allcs)
- + strlen (font_allfamilies) + 3;
+ + strlen (font_allfamilies) + 4;
fontsetname = xmalloc (len);
bzero (fontsetname, len);
strcpy (fontsetname, base_fontname);
- strcat (fontsetname, ",");
+ strcat (fontsetname, sep);
strcat (fontsetname, font_allcs);
- strcat (fontsetname, ",");
+ strcat (fontsetname, sep);
strcat (fontsetname, font_allfamilies);
}
- return fontsetname;
}
+ if (motif)
+ strcat (fontsetname, ":");
+ return fontsetname;
}
static XFontSet
@@ -2071,7 +2082,7 @@ xic_create_xfontset (f, base_fontname)
if (!xfs)
{
- char *fontsetname = xic_create_fontsetname (base_fontname);
+ char *fontsetname = xic_create_fontsetname (base_fontname, False);
/* New fontset. */
xfs = XCreateFontSet (FRAME_X_DISPLAY (f),
@@ -2079,8 +2090,7 @@ xic_create_xfontset (f, base_fontname)
&missing_count, &def_string);
if (missing_list)
XFreeStringList (missing_list);
- if (fontsetname != base_fontname)
- xfree (fontsetname);
+ xfree (fontsetname);
}
if (FRAME_XIC_BASE_FONTNAME (f))