diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2005-03-17 18:32:33 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2005-03-17 18:32:33 +0000 |
commit | c28e7ae824ee16d3d89fde77a0ca178f85576775 (patch) | |
tree | 20126729bad0e41ad1dad0eb280169f63f8df2e4 /src/xfns.c | |
parent | 9f9e527507d2d48e605e16e720acbc92cdb827c3 (diff) | |
download | emacs-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.c | 38 |
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)) |