changeset 94939:da7871784939

Throughout the file, delete all USE_FONT_BACKEND conditionals. Don't check enable_font_backend. Delete all codes used only when USE_FONT_BACKEND is not defined. (xic_create_xfontset): Original code deleted and renamed from xic_create_xfontset2. Use FRAME_FONT, not FRAME_FONT_OBJECT. (x_make_gc): Don't set GCFont in GCs. (Fx_create_frame) [USE_LUCID]: Set xlwmenu_default_font to a font opened by "fixed". (syms_of_xfns): Don't set get_font_info_func, load_font_func, find_ccl_program_func, query_font_func, set_frame_fontset_func, get_font_repertory_func.
author Kenichi Handa <handa@m17n.org>
date Wed, 14 May 2008 01:42:09 +0000
parents 5752d7154afc
children 061d44df20b7
files src/xfns.c
diffstat 1 files changed, 27 insertions(+), 259 deletions(-) [+]
line wrap: on
line diff
--- a/src/xfns.c	Wed May 14 01:41:52 2008 +0000
+++ b/src/xfns.c	Wed May 14 01:42:09 2008 +0000
@@ -50,10 +50,7 @@
 #include "termhooks.h"
 #include "atimer.h"
 #include "termchar.h"
-
-#ifdef USE_FONT_BACKEND
 #include "font.h"
-#endif	/* USE_FONT_BACKEND */
 
 #ifdef HAVE_X_WINDOWS
 
@@ -1928,8 +1925,7 @@
 
 #ifdef HAVE_X_I18N
 
-static XFontSet xic_create_xfontset P_ ((struct frame *, char *));
-static XFontSet xic_create_xfontset2 P_ ((struct frame *));
+static XFontSet xic_create_xfontset P_ ((struct frame *));
 static XIMStyle best_xim_style P_ ((XIMStyles *, XIMStyles *));
 
 
@@ -2105,105 +2101,11 @@
 #endif
 
 static XFontSet
-xic_create_xfontset (f, base_fontname)
-     struct frame *f;
-     char *base_fontname;
-{
-  XFontSet xfs = NULL;
-  char **missing_list = NULL;
-  int missing_count;
-  char *def_string;
-  Lisp_Object rest, frame;
-
-  if (!base_fontname)
-    base_fontname = xic_defaut_fontset;
-
-  /* See if there is another frame already using same fontset.  */
-  FOR_EACH_FRAME (rest, frame)
-    {
-      struct frame *cf = XFRAME (frame);
-      if (cf != f && FRAME_LIVE_P (f) && FRAME_X_P (cf)
-          && FRAME_X_DISPLAY_INFO (cf) == FRAME_X_DISPLAY_INFO (f)
-          && FRAME_XIC_BASE_FONTNAME (cf)
-          && !strcmp (FRAME_XIC_BASE_FONTNAME (cf), base_fontname))
-        {
-          xfs = FRAME_XIC_FONTSET (cf);
-          break;
-        }
-    }
-
-  if (!xfs)
-    {
-      char *fontsetname = xic_create_fontsetname (base_fontname, False);
-
-      /* New fontset.  */
-      xfs = XCreateFontSet (FRAME_X_DISPLAY (f),
-			    fontsetname, &missing_list,
-			    &missing_count, &def_string);
-#ifdef DEBUG_XIC_FONTSET
-      print_fontset_result (xfs, fontsetname, missing_list, missing_count);
-#endif
-      if (missing_list)
-	XFreeStringList (missing_list);
-      if (! xfs)
-	{
-	  /* FONTSETNAME contains a list of font names (specific fonts
-	     first, general fonts last), but giving that to
-	     XCreateFontSet at once occasionally fails (bug of X?).
-	     So, we try to call XCreateFontSet for each fontname.  */
-	  char *p0 = fontsetname, *p1;
-
-	  while (p0)
-	    {
-	      p1 = strchr (p0, ',');
-	      if (p1)
-		*p1 = '\0';
-	      xfs = XCreateFontSet (FRAME_X_DISPLAY (f),
-				    p0, &missing_list,
-				    &missing_count, &def_string);
-#ifdef DEBUG_XIC_FONTSET
-	      print_fontset_result (xfs, p0, missing_list, missing_count);
-#endif
-	      if (missing_list)
-		XFreeStringList (missing_list);
-	      if (xfs)
-		break;
-	      p0 = p1 ? p1 + 1 : NULL;
-	    }
-	}
-      xfree (fontsetname);
-      if (! xfs && base_fontname != xic_defaut_fontset)
-	{
-	  /* Try the default fontset name at a last resort.  */
-	  fontsetname = xic_create_fontsetname (xic_defaut_fontset, False);
-	  xfs = XCreateFontSet (FRAME_X_DISPLAY (f),
-				fontsetname, &missing_list,
-				&missing_count, &def_string);
-#ifdef DEBUG_XIC_FONTSET
-	  print_fontset_result (xfs, fontsetname, missing_list, missing_count);
-#endif
-	  if (missing_list)
-	    XFreeStringList (missing_list);
-	  xfree (fontsetname);
-	}
-    }
-
-  if (FRAME_XIC_BASE_FONTNAME (f))
-    xfree (FRAME_XIC_BASE_FONTNAME (f));
-  FRAME_XIC_BASE_FONTNAME (f) = xstrdup (base_fontname);
-
-  /* No need to free def_string.  */
-  return xfs;
-}
-
-#ifdef USE_FONT_BACKEND
-
-static XFontSet
-xic_create_xfontset2 (f)
+xic_create_xfontset (f)
      struct frame *f;
 {
   XFontSet xfs = NULL;
-  struct font *font = FRAME_FONT_OBJECT (f);
+  struct font *font = FRAME_FONT (f);
   int pixel_size = font->pixel_size;
   Lisp_Object rest, frame;
 
@@ -2214,8 +2116,8 @@
 
       if (cf != f && FRAME_LIVE_P (f) && FRAME_X_P (cf)
           && FRAME_X_DISPLAY_INFO (cf) == FRAME_X_DISPLAY_INFO (f)
-	  && FRAME_FONT_OBJECT (f)
-	  && FRAME_FONT_OBJECT (f)->pixel_size == pixel_size)
+	  && FRAME_FONT (f)
+	  && FRAME_FONT (f)->pixel_size == pixel_size)
         {
           xfs = FRAME_XIC_FONTSET (cf);
           break;
@@ -2295,7 +2197,6 @@
 
   return xfs;
 }
-#endif	/* USE_FONT_BACKEND */
 
 /* Free the X fontset of frame F if it is the last frame using it.  */
 
@@ -2369,15 +2270,7 @@
     return;
 
   /* Create X fontset. */
-#ifdef USE_FONT_BACKEND
-  if (enable_font_backend)
-    xfs = xic_create_xfontset2 (f);
-  else
-#endif
-  xfs = xic_create_xfontset
-    (f, (FRAME_FONTSET (f) < 0) ? NULL
-        : (char *) SDATA (fontset_ascii (FRAME_FONTSET (f))));
-
+  xfs = xic_create_xfontset (f);
   xim = FRAME_X_XIM (f);
   if (xim)
     {
@@ -2532,12 +2425,7 @@
 
   xic_free_xfontset (f);
 
-#ifdef USE_FONT_BACKEND
-  if (enable_font_backend)
-    xfs = xic_create_xfontset2 (f);
-  else
-#endif
-  xfs = xic_create_xfontset (f, base_fontname);
+  xfs = xic_create_xfontset (f);
 
   attr = XVaCreateNestedList (0, XNFontSet, xfs, NULL);
   if (FRAME_XIC_STYLE (f) & XIMPreeditPosition)
@@ -3041,20 +2929,13 @@
   /* Create the GCs of this frame.
      Note that many default values are used.  */
 
-  /* Normal video */
-#ifdef USE_FONT_BACKEND
-  if (enable_font_backend)
-    gc_values.font = FRAME_X_DISPLAY_INFO (f)->font->fid;
-  else
-#endif
-  gc_values.font = FRAME_FONT (f)->fid;
   gc_values.foreground = FRAME_FOREGROUND_PIXEL (f);
   gc_values.background = FRAME_BACKGROUND_PIXEL (f);
   gc_values.line_width = 0;	/* Means 1 using fast algorithm.  */
   f->output_data.x->normal_gc
     = XCreateGC (FRAME_X_DISPLAY (f),
 		 FRAME_X_WINDOW (f),
-		 GCLineWidth | GCFont | GCForeground | GCBackground,
+		 GCLineWidth | GCForeground | GCBackground,
 		 &gc_values);
 
   /* Reverse video style.  */
@@ -3063,7 +2944,7 @@
   f->output_data.x->reverse_gc
     = XCreateGC (FRAME_X_DISPLAY (f),
 		 FRAME_X_WINDOW (f),
-		 GCFont | GCForeground | GCBackground | GCLineWidth,
+		 GCForeground | GCBackground | GCLineWidth,
 		 &gc_values);
 
   /* Cursor has cursor-color background, background-color foreground.  */
@@ -3076,7 +2957,7 @@
 			     cursor_bits, 16, 16);
   f->output_data.x->cursor_gc
     = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
-		 (GCFont | GCForeground | GCBackground
+		 (GCForeground | GCBackground
 		  | GCFillStyle /* | GCStipple */ | GCLineWidth),
 		 &gc_values);
 
@@ -3173,7 +3054,7 @@
   return Qnil;
 }
 
-#ifdef USE_FONT_BACKEND
+
 static void
 x_default_font_parameter (f, parms)
      struct frame *f;
@@ -3210,7 +3091,7 @@
     }
   x_default_parameter (f, parms, Qfont, font, "font", "Font", RES_TYPE_STRING);
 }
-#endif	/* USE_FONT_BACKEND */
+
 
 DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
        1, 1, 0,
@@ -3394,78 +3275,26 @@
   f->resx = dpyinfo->resx;
   f->resy = dpyinfo->resy;
 
-#ifdef USE_FONT_BACKEND
-  if (enable_font_backend)
-    {
-      /* Perhaps, we must allow frame parameter, say `font-backend',
-	 to specify which font backends to use.  */
 #ifdef HAVE_FREETYPE
 #ifdef HAVE_XFT
-      register_font_driver (&xftfont_driver, f);
+  register_font_driver (&xftfont_driver, f);
 #else	/* not HAVE_XFT */
-      register_font_driver (&ftxfont_driver, f);
+  register_font_driver (&ftxfont_driver, f);
 #endif	/* not HAVE_XFT */
 #endif	/* HAVE_FREETYPE */
-      register_font_driver (&xfont_driver, f);
-
-      x_default_parameter (f, parms, Qfont_backend, Qnil,
-			   "fontBackend", "FontBackend", RES_TYPE_STRING);
-    }
-#endif	/* USE_FONT_BACKEND */
+  register_font_driver (&xfont_driver, f);
+
+  x_default_parameter (f, parms, Qfont_backend, Qnil,
+		       "fontBackend", "FontBackend", RES_TYPE_STRING);
 
   /* Extract the window parameters from the supplied values
      that are needed to determine window geometry.  */
-#ifdef USE_FONT_BACKEND
-  if (enable_font_backend)
-    x_default_font_parameter (f, parms);
-else
-#endif	/* USE_FONT_BACKEND */
-  {
-    Lisp_Object font;
-
-    font = x_get_arg (dpyinfo, parms, Qfont, "font", "Font", RES_TYPE_STRING);
-
-    /* If the caller has specified no font, try out fonts which we
-       hope have bold and italic variations.  */
-    if (!STRINGP (font))
-      {
-	char *names[]
-	  = { "-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1",
-	      "-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-1",
-	      "-*-*-medium-r-normal-*-*-140-*-*-c-*-iso8859-1",
-	      /* This was formerly the first thing tried, but it finds
-		 too many fonts and takes too long.  */
-	      "-*-*-medium-r-*-*-*-*-*-*-c-*-iso8859-1",
-	      /* If those didn't work, look for something which will
-		 at least work.  */
-	      "-*-fixed-*-*-*-*-*-140-*-*-c-*-iso8859-1",
-	      NULL };
-	int i;
-
-	BLOCK_INPUT;
-	for (i = 0; names[i]; i++)
-	  {
-	    Lisp_Object list;
-
-	    list = x_list_fonts (f, build_string (names[i]), 0, 1);
-	    if (CONSP (list))
-	      {
-		font = XCAR (list);
-		break;
-	      }
-	  }
-	UNBLOCK_INPUT;
-	if (! STRINGP (font))
-	  font = build_string ("fixed");
-      }
-    x_default_parameter (f, parms, Qfont, font,
-			 "font", "Font", RES_TYPE_STRING);
-  }
+  x_default_font_parameter (f, parms);
 
 #ifdef USE_LUCID
   /* Prevent lwlib/xlwmenu.c from crashing because of a bug
      whereby it fails to get any font.  */
-  xlwmenu_default_font = FRAME_FONT (f);
+  xlwmenu_default_font = XLoadQueryFont (FRAME_X_DISPLAY (f), "fixed");
 #endif
 
   /* Frame contents get displaced if an embedded X window has a border.  */
@@ -4987,68 +4816,21 @@
   f->resx = dpyinfo->resx;
   f->resy = dpyinfo->resy;
 
-#ifdef USE_FONT_BACKEND
-  if (enable_font_backend)
-    {
-      /* Perhaps, we must allow frame parameter, say `font-backend',
-	 to specify which font backends to use.  */
 #ifdef HAVE_FREETYPE
 #ifdef HAVE_XFT
-      register_font_driver (&xftfont_driver, f);
+  register_font_driver (&xftfont_driver, f);
 #else	/* not HAVE_XFT */
-      register_font_driver (&ftxfont_driver, f);
+  register_font_driver (&ftxfont_driver, f);
 #endif	/* not HAVE_XFT */
 #endif	/* HAVE_FREETYPE */
-      register_font_driver (&xfont_driver, f);
-
-      x_default_parameter (f, parms, Qfont_backend, Qnil,
-			   "fontBackend", "FontBackend", RES_TYPE_STRING);
-    }
-#endif	/* USE_FONT_BACKEND */
+  register_font_driver (&xfont_driver, f);
+
+  x_default_parameter (f, parms, Qfont_backend, Qnil,
+		       "fontBackend", "FontBackend", RES_TYPE_STRING);
 
   /* Extract the window parameters from the supplied values that are
      needed to determine window geometry.  */
-#ifdef USE_FONT_BACKEND
-  if (enable_font_backend)
-    x_default_font_parameter (f, parms);
-else
-#endif	/* USE_FONT_BACKEND */
-  {
-    Lisp_Object font;
-
-    font = x_get_arg (dpyinfo, parms, Qfont, "font", "Font", RES_TYPE_STRING);
-
-    BLOCK_INPUT;
-    /* First, try whatever font the caller has specified.  */
-    if (STRINGP (font))
-      {
-	tem = Fquery_fontset (font, Qnil);
-	if (STRINGP (tem))
-	  font = x_new_fontset (f, tem);
-	else
-	  font = x_new_font (f, SDATA (font));
-      }
-
-    /* Try out a font which we hope has bold and italic variations.  */
-    if (!STRINGP (font))
-      font = x_new_font (f, "-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1");
-    if (!STRINGP (font))
-      font = x_new_font (f, "-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-1");
-    if (! STRINGP (font))
-      font = x_new_font (f, "-*-*-medium-r-normal-*-*-140-*-*-c-*-iso8859-1");
-    if (! STRINGP (font))
-      /* This was formerly the first thing tried, but it finds too many fonts
-	 and takes too long.  */
-      font = x_new_font (f, "-*-*-medium-r-*-*-*-*-*-*-c-*-iso8859-1");
-    /* If those didn't work, look for something which will at least work.  */
-    if (! STRINGP (font))
-      font = x_new_font (f, "-*-fixed-*-*-*-*-*-140-*-*-c-*-iso8859-1");
-    UNBLOCK_INPUT;
-    if (! STRINGP (font))
-      font = build_string ("fixed");
-
-    x_set_frame_parameters (f, Fcons (Fcons (Qfont, font), Qnil));
-  }
+  x_default_font_parameter (f, parms);
 
   x_default_parameter (f, parms, Qborder_width, make_number (2),
 		       "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
@@ -5991,9 +5773,7 @@
   x_set_fringe_width,
   x_set_wait_for_wm,
   x_set_fullscreen,
-#ifdef USE_FONT_BACKEND
   x_set_font_backend
-#endif	/* USE_FONT_BACKEND */
 };
 
 void
@@ -6193,18 +5973,6 @@
   defsubr (&Sx_backspace_delete_keys_p);
 
   /* Setting callback functions for fontset handler.  */
-  get_font_info_func = x_get_font_info;
-
-#if 0 /* This function pointer doesn't seem to be used anywhere.
-	 And the pointer assigned has the wrong type, anyway.  */
-  list_fonts_func = x_list_fonts;
-#endif
-
-  load_font_func = x_load_font;
-  find_ccl_program_func = x_find_ccl_program;
-  query_font_func = x_query_font;
-  set_frame_fontset_func = x_set_font;
-  get_font_repertory_func = x_get_font_repertory;
   check_window_system_func = check_x;
 
   hourglass_atimer = NULL;