emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/xfns.c


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/src/xfns.c
Date: Thu, 17 Mar 2005 13:32:34 -0500

Index: emacs/src/xfns.c
diff -c emacs/src/xfns.c:1.634 emacs/src/xfns.c:1.635
*** emacs/src/xfns.c:1.634      Sat Mar 12 23:25:42 2005
--- emacs/src/xfns.c    Thu Mar 17 18:32:33 2005
***************
*** 1961,1974 ****
  
  char xic_defaut_fontset[] = "-*-*-*-r-normal--14-*-*-*-*-*-*-*";
  
  char *
! xic_create_fontsetname (base_fontname)
       char *base_fontname;
  {
    /* 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;
    else
      {
        /* Make a fontset name from the base font name.
--- 1961,1984 ----
  
  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, 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.  */
!       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,1996 ****
         - 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;
          fontsetname = xmalloc (len);
          bzero (fontsetname, len);
          strcpy (fontsetname, base_fontname);
!         strcat (fontsetname, ",");
          strcat (fontsetname, xic_defaut_fontset);
        }
        else
--- 1987,2005 ----
         - the base font where the charset spec is replaced by -*-*.
         - the same but with the family also replaced with -*-*-.  */
        char *p = base_fontname;
        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) + 3;
          fontsetname = xmalloc (len);
          bzero (fontsetname, len);
          strcpy (fontsetname, base_fontname);
!         strcat (fontsetname, sep);
          strcat (fontsetname, xic_defaut_fontset);
        }
        else
***************
*** 2028,2044 ****
  
          /* Build the actual font set name.  */
          len = strlen (base_fontname) + strlen (font_allcs)
!           + strlen (font_allfamilies) + 3;
          fontsetname = xmalloc (len);
          bzero (fontsetname, len);
          strcpy (fontsetname, base_fontname);
!         strcat (fontsetname, ",");
          strcat (fontsetname, font_allcs);
!         strcat (fontsetname, ",");
          strcat (fontsetname, font_allfamilies);
        }
-       return fontsetname;
      }
  }
  
  static XFontSet
--- 2037,2055 ----
  
          /* Build the actual font set name.  */
          len = strlen (base_fontname) + strlen (font_allcs)
!           + strlen (font_allfamilies) + 4;
          fontsetname = xmalloc (len);
          bzero (fontsetname, len);
          strcpy (fontsetname, base_fontname);
!         strcat (fontsetname, sep);
          strcat (fontsetname, font_allcs);
!         strcat (fontsetname, sep);
          strcat (fontsetname, font_allfamilies);
        }
      }
+   if (motif)
+     strcat (fontsetname, ":");
+   return fontsetname;
  }
  
  static XFontSet
***************
*** 2071,2077 ****
  
    if (!xfs)
      {
!       char *fontsetname = xic_create_fontsetname (base_fontname);
  
        /* New fontset.  */
        xfs = XCreateFontSet (FRAME_X_DISPLAY (f),
--- 2082,2088 ----
  
    if (!xfs)
      {
!       char *fontsetname = xic_create_fontsetname (base_fontname, False);
  
        /* New fontset.  */
        xfs = XCreateFontSet (FRAME_X_DISPLAY (f),
***************
*** 2079,2086 ****
                              &missing_count, &def_string);
        if (missing_list)
          XFreeStringList (missing_list);
!       if (fontsetname != base_fontname)
!       xfree (fontsetname);
      }
  
    if (FRAME_XIC_BASE_FONTNAME (f))
--- 2090,2096 ----
                              &missing_count, &def_string);
        if (missing_list)
          XFreeStringList (missing_list);
!       xfree (fontsetname);
      }
  
    if (FRAME_XIC_BASE_FONTNAME (f))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]