diff --git a/examples/text/text.c b/examples/text/text.c
index 97732d0..2ba94fe 100644
--- a/examples/text/text.c
+++ b/examples/text/text.c
@@ -39,7 +39,6 @@ int main( int argc,
   GtkWidget *text;
   GdkColormap *cmap;
   GdkColor color;
-  GdkFont *fixed_font;
 
   FILE *infile;
 
diff --git a/gdk/Makefile.am b/gdk/Makefile.am
index 1919107..f7c4f5f 100644
--- a/gdk/Makefile.am
+++ b/gdk/Makefile.am
@@ -72,7 +72,6 @@ gdk_public_h_sources =				\
 	gdkdnd.h				\
 	gdkdrawable.h				\
 	gdkevents.h				\
-	gdkfont.h				\
 	gdkgc.h					\
 	gdkimage.h				\
 	gdkinput.h				\
@@ -111,7 +110,6 @@ gdk_c_sources =                 \
 	gdkdnd.c		\
 	gdkdraw.c		\
 	gdkevents.c     	\
-	gdkfont.c		\
 	gdkgc.c			\
 	gdkglobals.c		\
 	gdkimage.c		\
diff --git a/gdk/directfb/gdkdrawable-directfb.c b/gdk/directfb/gdkdrawable-directfb.c
index 9fdad15..cabc525 100644
--- a/gdk/directfb/gdkdrawable-directfb.c
+++ b/gdk/directfb/gdkdrawable-directfb.c
@@ -659,30 +659,6 @@ gdk_directfb_draw_polygon (GdkDrawable *drawable,
 }
 
 static void
-gdk_directfb_draw_text (GdkDrawable *drawable,
-                        GdkFont     *font,
-                        GdkGC       *gc,
-                        gint         x,
-                        gint         y,
-                        const gchar *text,
-                        gint         text_length)
-{
-  D_UNIMPLEMENTED();
-}
-
-static void
-gdk_directfb_draw_text_wc (GdkDrawable    *drawable,
-                           GdkFont        *font,
-                           GdkGC          *gc,
-                           gint            x,
-                           gint            y,
-                           const GdkWChar *text,
-                           gint            text_length)
-{
-  D_UNIMPLEMENTED();
-}
-
-static void
 gdk_directfb_draw_drawable (GdkDrawable *drawable,
                             GdkGC       *gc,
                             GdkDrawable *src,
diff --git a/gdk/directfb/gdkfont-directfb.c b/gdk/directfb/gdkfont-directfb.c
deleted file mode 100644
index a778a52..0000000
--- a/gdk/directfb/gdkfont-directfb.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/* GDK - The GIMP Drawing Kit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GTK+ Team.
- */
-
-/*
- * GTK+ DirectFB backend
- * Copyright (C) 2001-2002  convergence integrated media GmbH
- * Copyright (C) 2002-2004  convergence GmbH
- * Written by Denis Oliver Kropp <dok@convergence.de> and
- *            Sven Neumann <sven@convergence.de>
- */
-
-#undef GDK_DISABLE_DEPRECATED
-
-#include "config.h"
-#include "gdk.h"
-
-#include <string.h>
-
-#include "gdkdirectfb.h"
-#include "gdkprivate-directfb.h"
-
-#include "gdkinternals.h"
-
-#include "gdkfont.h"
-#include "gdkalias.h"
-
-
-typedef struct _GdkFontDirectFB  GdkFontDirectFB;
-
-struct _GdkFontDirectFB
-{
-  GdkFontPrivate    base;
-  gint              size;
-  IDirectFBFont    *dfbfont;
-};
-
-
-static GdkFont *
-gdk_directfb_bogus_font (gint height)
-{
-  GdkFont         *font;
-  GdkFontDirectFB *private;
-
-  private = g_new0 (GdkFontDirectFB, 1);
-  font = (GdkFont *)private;
-
-  font->type = GDK_FONT_FONT;
-  font->ascent = height*3/4;
-  font->descent = height/4;
-  private->size = height;
-  private->base.ref_count = 1;
-  return font;
-}
-
-GdkFont*
-gdk_font_from_description_for_display (GdkDisplay * display,PangoFontDescription *font_desc)
-{
-  gint size;
-
-  g_return_val_if_fail (font_desc, NULL);
-
-  size = pango_font_description_get_size (font_desc);
-
-  return gdk_directfb_bogus_font (PANGO_PIXELS (size));
-}
-
-/* ********************* */
-
-GdkFont*
-gdk_fontset_load (const gchar *fontset_name)
-{
-  return gdk_directfb_bogus_font (10);
-}
-
-GdkFont *
-gdk_fontset_load_for_display (GdkDisplay *display,const gchar *font_name) {
-  return gdk_directfb_bogus_font (10);
-}
-
-GdkFont *
-gdk_font_load_for_display (GdkDisplay *display,const gchar *font_name)
-{
-  return gdk_directfb_bogus_font (10);
-}
-
-void
-_gdk_font_destroy (GdkFont *font)
-{
-  switch (font->type)
-    {
-    case GDK_FONT_FONT:
-      break;
-    case GDK_FONT_FONTSET:
-      break;
-    default:
-      g_error ("unknown font type.");
-      break;
-    }
-
-  g_free (font);
-}
-
-gint
-_gdk_font_strlen (GdkFont     *font,
-                  const gchar *str)
-{
-  GdkFontDirectFB *font_private;
-  gint length = 0;
-
-  g_return_val_if_fail (font != NULL, -1);
-  g_return_val_if_fail (str != NULL, -1);
-
-  font_private = (GdkFontDirectFB*) font;
-
-  if (font->type == GDK_FONT_FONT)
-    {
-      guint16 *string_2b = (guint16 *)str;
-
-      while (*(string_2b++))
-        length++;
-    }
-  else if (font->type == GDK_FONT_FONTSET)
-    {
-      length = strlen (str);
-    }
-  else
-    g_error("undefined font type\n");
-
-  return length;
-}
-
-gint
-gdk_font_id (const GdkFont *font)
-{
-  const GdkFontDirectFB *font_private;
-
-  g_return_val_if_fail (font != NULL, 0);
-
-  font_private = (const GdkFontDirectFB*) font;
-
-  if (font->type == GDK_FONT_FONT)
-    {
-      return -1;
-    }
-  else
-    {
-      return 0;
-    }
-}
-
-gint
-gdk_font_equal (const GdkFont *fonta,
-                const GdkFont *fontb)
-{
-  const GdkFontDirectFB *privatea;
-  const GdkFontDirectFB *privateb;
-
-  g_return_val_if_fail (fonta != NULL, FALSE);
-  g_return_val_if_fail (fontb != NULL, FALSE);
-
-  privatea = (const GdkFontDirectFB*) fonta;
-  privateb = (const GdkFontDirectFB*) fontb;
-
-  if(fonta == fontb)
-    return TRUE;
-
-  return FALSE;
-}
-
-gint
-gdk_text_width (GdkFont      *font,
-                const gchar  *text,
-                gint          text_length)
-{
-  GdkFontDirectFB *private;
-
-  private = (GdkFontDirectFB*) font;
-
-  return (text_length * private->size) / 2;
-}
-
-gint
-gdk_text_width_wc (GdkFont        *font,
-                   const GdkWChar *text,
-                   gint            text_length)
-{
-  return 0;
-}
-
-void
-gdk_text_extents (GdkFont     *font,
-                  const gchar *text,
-                  gint         text_length,
-                  gint        *lbearing,
-                  gint        *rbearing,
-                  gint        *width,
-                  gint        *ascent,
-                  gint        *descent)
-{
-  if(ascent)
-    *ascent = font->ascent;
-  if(descent)
-    *descent = font->descent;
-  if(width)
-    *width = gdk_text_width(font, text, text_length);
-  if(lbearing)
-    *lbearing = 0;
-  if(rbearing)
-    *rbearing = 0;
-}
-
-void
-gdk_text_extents_wc (GdkFont        *font,
-                     const GdkWChar *text,
-                     gint            text_length,
-                     gint           *lbearing,
-                     gint           *rbearing,
-                     gint           *width,
-                     gint           *ascent,
-                     gint           *descent)
-{
-  char *realstr;
-  int i;
-
-  realstr = alloca (text_length + 1);
-
-  for(i = 0; i < text_length; i++)
-    realstr[i] = text[i];
-
-  realstr[i] = '\0';
-
-  return gdk_text_extents (font,
-                           realstr,
-                           text_length,
-                           lbearing,
-                           rbearing,
-                           width,
-                           ascent,
-                           descent);
-}
-
-GdkFont *
-gdk_font_lookup (GdkNativeWindow xid)
-{
-	g_warning(" gdk_font_lookup unimplemented \n");
-  return NULL;
-}
-
-GdkDisplay*
-gdk_font_get_display (GdkFont* font)
-{
-	g_warning(" gdk_font_get_display unimplemented \n");
-  return NULL;
-}
-
-#define __GDK_FONT_X11_C__
-#include "gdkaliasdef.c"
diff --git a/gdk/directfb/gdkgc-directfb.c b/gdk/directfb/gdkgc-directfb.c
index 7348312..260b990 100644
--- a/gdk/directfb/gdkgc-directfb.c
+++ b/gdk/directfb/gdkgc-directfb.c
@@ -199,17 +199,6 @@ gdk_directfb_gc_set_values (GdkGC           *gc,
       private->values_mask |= GDK_GC_BACKGROUND;
     }
 
-  if (values_mask & GDK_GC_FONT)
-    {
-      GdkFont *oldf = private->values.font;
-
-      private->values.font = gdk_font_ref (values->font);
-      private->values_mask |= GDK_GC_FONT;
-
-      if (oldf)
-        gdk_font_unref (oldf);
-    }
-
   if (values_mask & GDK_GC_FUNCTION)
     {
       private->values.function = values->function;
diff --git a/gdk/gdk.h b/gdk/gdk.h
index d834bb1..dcfef32 100644
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -39,7 +39,6 @@
 #include <gdk/gdkdrawable.h>
 #include <gdk/gdkenumtypes.h>
 #include <gdk/gdkevents.h>
-#include <gdk/gdkfont.h>
 #include <gdk/gdkgc.h>
 #include <gdk/gdkimage.h>
 #include <gdk/gdkinput.h>
diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols
index fbaecdd..0286f45 100644
--- a/gdk/gdk.symbols
+++ b/gdk/gdk.symbols
@@ -237,7 +237,6 @@ gdk_subwindow_mode_get_type G_GNUC_CONST
 gdk_visibility_state_get_type G_GNUC_CONST
 gdk_wm_decoration_get_type G_GNUC_CONST
 gdk_wm_function_get_type G_GNUC_CONST
-gdk_font_type_get_type G_GNUC_CONST
 gdk_cursor_type_get_type G_GNUC_CONST
 gdk_drag_action_get_type G_GNUC_CONST
 gdk_gc_values_mask_get_type G_GNUC_CONST
@@ -254,30 +253,6 @@ gdk_visual_type_get_type G_GNUC_CONST
 #endif
 
 #if IN_HEADER(__GDK_FONT_H__)
-#if IN_FILE(__GDK_FONT_C__)
-#ifndef GDK_DISABLE_DEPRECATED
-gdk_font_from_description
-#endif
-gdk_font_get_type G_GNUC_CONST
-gdk_font_ref
-gdk_font_unref
-#ifndef GDK_DISABLE_DEPRECATED
-gdk_font_load
-gdk_string_width
-gdk_char_width
-gdk_char_width_wc
-gdk_string_measure
-gdk_text_measure
-gdk_char_measure
-gdk_string_height
-gdk_text_height
-gdk_char_height
-gdk_string_extents
-#endif
-#endif
-#endif
-
-#if IN_HEADER(__GDK_FONT_H__)
 #if IN_FILE(__GDK_FONT_X11_C__)
 #ifndef GDK_DISABLE_DEPRECATED
 gdk_text_extents
@@ -537,9 +512,6 @@ gdk_drawable_get_data
 gdk_drawable_set_data
 gdk_drawable_ref
 gdk_drawable_unref
-gdk_draw_string
-gdk_draw_text
-gdk_draw_text_wc
 #endif
 gdk_drawable_get_depth
 gdk_drawable_get_display
@@ -1193,14 +1165,6 @@ gdk_x11_window_get_drawable_impl
 gdk_x11_pixmap_get_drawable_impl
 #endif
 
-#if IN_FILE(__GDK_FONT_X11_C__)
-#ifndef GDK_DISABLE_DEPRECATED
-gdk_x11_font_get_name
-gdk_x11_font_get_xdisplay
-#endif
-gdk_x11_font_get_xfont
-#endif
-
 #if IN_FILE(__GDK_GC_X11_C__)
 gdk_x11_gc_get_xdisplay
 gdk_x11_gc_get_xgc
diff --git a/gdk/gdkdraw.c b/gdk/gdkdraw.c
index 298f405..3ee593a 100644
--- a/gdk/gdkdraw.c
+++ b/gdk/gdkdraw.c
@@ -498,106 +498,6 @@ gdk_draw_polygon (GdkDrawable    *drawable,
                                                    n_points);
 }
 
-/* gdk_draw_string
- *
- * Modified by Li-Da Lho to draw 16 bits and Multibyte strings
- *
- * Interface changed: add "GdkFont *font" to specify font or fontset explicitely
- */
-/**
- * gdk_draw_string:
- * @drawable: a #GdkDrawable (a #GdkWindow or a #GdkPixmap).
- * @font: a #GdkFont.
- * @gc: a #GdkGC.
- * @x: the x coordinate of the left edge of the text.
- * @y: the y coordinate of the baseline of the text.
- * @string:  the string of characters to draw.
- * 
- * Draws a string of characters in the given font or fontset.
- * 
- * Deprecated: 2.4: Use gdk_draw_layout() instead.
- **/
-void
-gdk_draw_string (GdkDrawable *drawable,
-		 GdkFont     *font,
-		 GdkGC       *gc,
-		 gint         x,
-		 gint         y,
-		 const gchar *string)
-{
-  gdk_draw_text (drawable, font, gc, x, y, string, _gdk_font_strlen (font, string));
-}
-
-/* gdk_draw_text
- *
- * Modified by Li-Da Lho to draw 16 bits and Multibyte strings
- *
- * Interface changed: add "GdkFont *font" to specify font or fontset explicitely
- */
-/**
- * gdk_draw_text:
- * @drawable: a #GdkDrawable (a #GdkWindow or a #GdkPixmap).
- * @font: a #GdkFont.
- * @gc: a #GdkGC.
- * @x: the x coordinate of the left edge of the text.
- * @y: the y coordinate of the baseline of the text.
- * @text:  the characters to draw.
- * @text_length: the number of characters of @text to draw.
- * 
- * Draws a number of characters in the given font or fontset.
- *
- * Deprecated: 2.4: Use gdk_draw_layout() instead.
- **/
-void
-gdk_draw_text (GdkDrawable *drawable,
-	       GdkFont     *font,
-	       GdkGC       *gc,
-	       gint         x,
-	       gint         y,
-	       const gchar *text,
-	       gint         text_length)
-{
-  g_return_if_fail (GDK_IS_DRAWABLE (drawable));
-  g_return_if_fail (font != NULL);
-  g_return_if_fail (GDK_IS_GC (gc));
-  g_return_if_fail (text != NULL);
-
-  GDK_DRAWABLE_GET_CLASS (drawable)->draw_text (drawable, font, gc, x, y, text, text_length);
-}
-
-/**
- * gdk_draw_text_wc:
- * @drawable: a #GdkDrawable (a #GdkWindow or a #GdkPixmap).
- * @font: a #GdkFont.
- * @gc: a #GdkGC.
- * @x: the x coordinate of the left edge of the text.
- * @y: the y coordinate of the baseline of the text.
- * @text: the wide characters to draw.
- * @text_length: the number of characters to draw.
- * 
- * Draws a number of wide characters using the given font of fontset.
- * If the font is a 1-byte font, the string is converted into 1-byte 
- * characters (discarding the high bytes) before output.
- * 
- * Deprecated: 2.4: Use gdk_draw_layout() instead.
- **/
-void
-gdk_draw_text_wc (GdkDrawable	 *drawable,
-		  GdkFont	 *font,
-		  GdkGC		 *gc,
-		  gint		  x,
-		  gint		  y,
-		  const GdkWChar *text,
-		  gint		  text_length)
-{
-  g_return_if_fail (GDK_IS_DRAWABLE (drawable));
-  g_return_if_fail (font != NULL);
-  g_return_if_fail (GDK_IS_GC (gc));
-  g_return_if_fail (text != NULL);
-
-  GDK_DRAWABLE_GET_CLASS (drawable)->draw_text_wc (drawable, font, gc, x, y, text, text_length);
-}
-
 /**
  * gdk_draw_drawable:
  * @drawable: a #GdkDrawable
diff --git a/gdk/gdkdrawable.h b/gdk/gdkdrawable.h
index b8dabb5..d3cddcb 100644
--- a/gdk/gdkdrawable.h
+++ b/gdk/gdkdrawable.h
@@ -83,20 +83,6 @@ struct _GdkDrawableClass
 			  gboolean	filled,
 			  GdkPoint     *points,
 			  gint		npoints);
-  void (*draw_text)      (GdkDrawable  *drawable,
-			  GdkFont      *font,
-			  GdkGC	       *gc,
-			  gint		x,
-			  gint		y,
-			  const gchar  *text,
-			  gint		text_length);
-  void (*draw_text_wc)   (GdkDrawable	 *drawable,
-			  GdkFont	 *font,
-			  GdkGC		 *gc,
-			  gint		  x,
-			  gint		  y,
-			  const GdkWChar *text,
-			  gint		  text_length);
   void (*draw_drawable)  (GdkDrawable  *drawable,
 			  GdkGC	       *gc,
 			  GdkDrawable  *src,
@@ -299,33 +285,6 @@ void gdk_draw_polygon   (GdkDrawable      *drawable,
 			 gboolean          filled,
 			 const GdkPoint   *points,
 			 gint              n_points);
-#if !defined (GDK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION)
-/* Used by gtk_default_draw_string () */
-void gdk_draw_string    (GdkDrawable      *drawable,
-			 GdkFont          *font,
-			 GdkGC            *gc,
-			 gint              x,
-			 gint              y,
-			 const gchar      *string);
-#endif /* !GDK_DISABLE_DEPRECATED || GTK_COMPILATION */
-#if !defined (GDK_DISABLE_DEPRECATED) || defined (GDK_COMPILATION)
-/* Used by gdk_pixmap_draw_text (), gdk_window_draw_text() */
-void gdk_draw_text      (GdkDrawable      *drawable,
-			 GdkFont          *font,
-			 GdkGC            *gc,
-			 gint              x,
-			 gint              y,
-			 const gchar      *text,
-			 gint              text_length);
-/* Used by gdk_pixmap_draw_text_wc (), gdk_window_draw_text_wc () */
-void gdk_draw_text_wc   (GdkDrawable      *drawable,
-			 GdkFont          *font,
-			 GdkGC            *gc,
-			 gint              x,
-			 gint              y,
-			 const GdkWChar   *text,
-			 gint              text_length);
-#endif /* !GDK_DISABLE_DEPRECATED || GDK_COMPILATION */
 void gdk_draw_drawable  (GdkDrawable      *drawable,
 			 GdkGC            *gc,
 			 GdkDrawable      *src,
diff --git a/gdk/gdkfont.c b/gdk/gdkfont.c
deleted file mode 100644
index 4c848dd..0000000
--- a/gdk/gdkfont.c
+++ /dev/null
@@ -1,359 +0,0 @@
-/* GDK - The GIMP Drawing Kit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GTK+ Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#undef GDK_DISABLE_DEPRECATED
-
-#include "config.h"
-#include "gdkdisplay.h"
-#include "gdkfont.h"
-#include "gdkinternals.h"
-#include "gdkalias.h"
-
-GType
-gdk_font_get_type (void)
-{
-  static GType our_type = 0;
-  
-  if (our_type == 0)
-    our_type = g_boxed_type_register_static (g_intern_static_string ("GdkFont"),
-					     (GBoxedCopyFunc)gdk_font_ref,
-					     (GBoxedFreeFunc)gdk_font_unref);
-  return our_type;
-}
-
-/**
- * gdk_font_ref:
- * @font: a #GdkFont
- * 
- * Increases the reference count of a font by one.
- * 
- * Return value: @font
- **/
-GdkFont*
-gdk_font_ref (GdkFont *font)
-{
-  GdkFontPrivate *private;
-
-  g_return_val_if_fail (font != NULL, NULL);
-
-  private = (GdkFontPrivate*) font;
-  private->ref_count += 1;
-  return font;
-}
-
-/**
- * gdk_font_unref:
- * @font: a #GdkFont
- * 
- * Decreases the reference count of a font by one.
- * If the result is zero, destroys the font.
- **/
-void
-gdk_font_unref (GdkFont *font)
-{
-  GdkFontPrivate *private;
-  private = (GdkFontPrivate*) font;
-
-  g_return_if_fail (font != NULL);
-  g_return_if_fail (private->ref_count > 0);
-
-  private->ref_count -= 1;
-  if (private->ref_count == 0)
-    _gdk_font_destroy (font);
-}
-
-/**
- * gdk_string_width:
- * @font:  a #GdkFont
- * @string: the nul-terminated string to measure
- * 
- * Determines the width of a nul-terminated string.
- * (The distance from the origin of the string to the 
- * point where the next string in a sequence of strings
- * should be drawn)
- * 
- * Return value: the width of the string in pixels.
- **/
-gint
-gdk_string_width (GdkFont     *font,
-		  const gchar *string)
-{
-  g_return_val_if_fail (font != NULL, -1);
-  g_return_val_if_fail (string != NULL, -1);
-
-  return gdk_text_width (font, string, _gdk_font_strlen (font, string));
-}
-
-/**
- * gdk_char_width:
- * @font: a #GdkFont
- * @character: the character to measure.
- * 
- * Determines the width of a given character.
- * 
- * Return value: the width of the character in pixels.
- *
- * Deprecated: Use gdk_text_extents() instead.
- **/
-gint
-gdk_char_width (GdkFont *font,
-		gchar    character)
-{
-  g_return_val_if_fail (font != NULL, -1);
-
-  return gdk_text_width (font, &character, 1);
-}
-
-/**
- * gdk_char_width_wc:
- * @font: a #GdkFont
- * @character: the character to measure.
- * 
- * Determines the width of a given wide character. (Encoded
- * in the wide-character encoding of the current locale).
- * 
- * Return value: the width of the character in pixels.
- **/
-gint
-gdk_char_width_wc (GdkFont *font,
-		   GdkWChar character)
-{
-  g_return_val_if_fail (font != NULL, -1);
-
-  return gdk_text_width_wc (font, &character, 1);
-}
-
-/**
- * gdk_string_measure:
- * @font: a #GdkFont
- * @string: the nul-terminated string to measure.
- * 
- * Determines the distance from the origin to the rightmost
- * portion of a nul-terminated string when drawn. This is not the
- * correct value for determining the origin of the next
- * portion when drawing text in multiple pieces.
- * See gdk_string_width().
- * 
- * Return value: the right bearing of the string in pixels.
- **/
-gint
-gdk_string_measure (GdkFont     *font,
-                    const gchar *string)
-{
-  g_return_val_if_fail (font != NULL, -1);
-  g_return_val_if_fail (string != NULL, -1);
-
-  return gdk_text_measure (font, string, _gdk_font_strlen (font, string));
-}
-
-/**
- * gdk_string_extents:
- * @font: a #GdkFont.
- * @string: the nul-terminated string to measure.
- * @lbearing: the left bearing of the string.
- * @rbearing: the right bearing of the string.
- * @width: the width of the string.
- * @ascent: the ascent of the string.
- * @descent: the descent of the string.
- * 
- * Gets the metrics of a nul-terminated string.
- **/
-void
-gdk_string_extents (GdkFont     *font,
-		    const gchar *string,
-		    gint        *lbearing,
-		    gint        *rbearing,
-		    gint        *width,
-		    gint        *ascent,
-		    gint        *descent)
-{
-  g_return_if_fail (font != NULL);
-  g_return_if_fail (string != NULL);
-
-  gdk_text_extents (font, string, _gdk_font_strlen (font, string),
-		    lbearing, rbearing, width, ascent, descent);
-}
-
-
-/**
- * gdk_text_measure:
- * @font: a #GdkFont
- * @text: the text to measure.
- * @text_length: the length of the text in bytes.
- * 
- * Determines the distance from the origin to the rightmost
- * portion of a string when drawn. This is not the
- * correct value for determining the origin of the next
- * portion when drawing text in multiple pieces. 
- * See gdk_text_width().
- * 
- * Return value: the right bearing of the string in pixels.
- **/
-gint
-gdk_text_measure (GdkFont     *font,
-                  const gchar *text,
-                  gint         text_length)
-{
-  gint rbearing;
-
-  g_return_val_if_fail (font != NULL, -1);
-  g_return_val_if_fail (text != NULL, -1);
-
-  gdk_text_extents (font, text, text_length, NULL, &rbearing, NULL, NULL, NULL);
-  return rbearing;
-}
-
-/**
- * gdk_char_measure:
- * @font: a #GdkFont
- * @character: the character to measure.
- * 
- * Determines the distance from the origin to the rightmost
- * portion of a character when drawn. This is not the
- * correct value for determining the origin of the next
- * portion when drawing text in multiple pieces. 
- * 
- * Return value: the right bearing of the character in pixels.
- **/
-gint
-gdk_char_measure (GdkFont *font,
-                  gchar    character)
-{
-  g_return_val_if_fail (font != NULL, -1);
-
-  return gdk_text_measure (font, &character, 1);
-}
-
-/**
- * gdk_string_height:
- * @font: a #GdkFont
- * @string: the nul-terminated string to measure.
- * 
- * Determines the total height of a given nul-terminated
- * string. This value is not generally useful, because you
- * cannot determine how this total height will be drawn in
- * relation to the baseline. See gdk_string_extents().
- * 
- * Return value: the height of the string in pixels.
- **/
-gint
-gdk_string_height (GdkFont     *font,
-		   const gchar *string)
-{
-  g_return_val_if_fail (font != NULL, -1);
-  g_return_val_if_fail (string != NULL, -1);
-
-  return gdk_text_height (font, string, _gdk_font_strlen (font, string));
-}
-
-/**
- * gdk_text_height:
- * @font: a #GdkFont
- * @text: the text to measure.
- * @text_length: the length of the text in bytes.
- * 
- * Determines the total height of a given string.
- * This value is not generally useful, because you cannot
- * determine how this total height will be drawn in
- * relation to the baseline. See gdk_text_extents().
- * 
- * Return value: the height of the string in pixels.
- **/
-gint
-gdk_text_height (GdkFont     *font,
-		 const gchar *text,
-		 gint         text_length)
-{
-  gint ascent, descent;
-
-  g_return_val_if_fail (font != NULL, -1);
-  g_return_val_if_fail (text != NULL, -1);
-
-  gdk_text_extents (font, text, text_length, NULL, NULL, NULL, &ascent, &descent);
-  return ascent + descent;
-}
-
-/**
- * gdk_char_height:
- * @font: a #GdkFont
- * @character: the character to measure.
- * 
- * Determines the total height of a given character.
- * This value is not generally useful, because you cannot
- * determine how this total height will be drawn in
- * relation to the baseline. See gdk_text_extents().
- * 
- * Return value: the height of the character in pixels.
- *
- * Deprecated: Use gdk_text_extents() instead.
- **/
-gint
-gdk_char_height (GdkFont *font,
-		 gchar    character)
-{
-  g_return_val_if_fail (font != NULL, -1);
-
-  return gdk_text_height (font, &character, 1);
-}
-
-/**
- * gdk_font_from_description:
- * @font_desc: a #PangoFontDescription.
- * 
- * Load a #GdkFont based on a Pango font description. This font will
- * only be an approximation of the Pango font, and
- * internationalization will not be handled correctly. This function
- * should only be used for legacy code that cannot be easily converted
- * to use Pango. Using Pango directly will produce better results.
- * 
- * Return value: the newly loaded font, or %NULL if the font
- * cannot be loaded.
- **/
-GdkFont*
-gdk_font_from_description (PangoFontDescription *font_desc)
-{
-  return gdk_font_from_description_for_display (gdk_display_get_default (),font_desc);
-}
-
-/**
- * gdk_font_load:
- * @font_name: a XLFD describing the font to load.
- * 
- * Loads a font.
- * 
- * The font may be newly loaded or looked up the font in a cache. 
- * You should make no assumptions about the initial reference count.
- * 
- * Return value: a #GdkFont, or %NULL if the font could not be loaded.
- **/
-GdkFont*
-gdk_font_load (const gchar *font_name)
-{  
-   return gdk_font_load_for_display (gdk_display_get_default(), font_name);
-}
-
-#define __GDK_FONT_C__
-#include "gdkaliasdef.c"
diff --git a/gdk/gdkfont.h b/gdk/gdkfont.h
deleted file mode 100644
index a48a5c4..0000000
--- a/gdk/gdkfont.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/* GDK - The GIMP Drawing Kit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GTK+ Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#if !defined(GDK_DISABLE_DEPRECATED) || defined(GDK_COMPILATION) || defined(GTK_COMPILATION)
-
-#ifndef __GDK_FONT_H__
-#define __GDK_FONT_H__
-
-#include <gdk/gdktypes.h>
-#include <pango/pango.h>
-
-G_BEGIN_DECLS
-
-#define GDK_TYPE_FONT gdk_font_get_type ()
-
-/* Types of font.
- *   GDK_FONT_FONT: the font is an XFontStruct.
- *   GDK_FONT_FONTSET: the font is an XFontSet used for I18N.
- */
-typedef enum
-{
-  GDK_FONT_FONT,
-  GDK_FONT_FONTSET
-} GdkFontType;
-
-struct _GdkFont
-{
-  GdkFontType type;
-  gint ascent;
-  gint descent;
-};
-
-GType    gdk_font_get_type  (void) G_GNUC_CONST;
-
-GdkFont* gdk_font_ref	    (GdkFont        *font);
-void	 gdk_font_unref	    (GdkFont        *font);
-gint	 gdk_font_id	    (const GdkFont  *font);
-gboolean gdk_font_equal	    (const GdkFont  *fonta,
-			     const GdkFont  *fontb);
-
-GdkFont *gdk_font_load_for_display             (GdkDisplay           *display,
-						const gchar          *font_name);
-GdkFont *gdk_fontset_load_for_display          (GdkDisplay           *display,
-						const gchar          *fontset_name);
-GdkFont *gdk_font_from_description_for_display (GdkDisplay           *display,
-						PangoFontDescription *font_desc);
-
-#ifndef GDK_DISABLE_DEPRECATED
-
-#ifndef GDK_MULTIHEAD_SAFE
-GdkFont* gdk_font_load             (const gchar          *font_name);
-GdkFont* gdk_fontset_load          (const gchar          *fontset_name);
-GdkFont* gdk_font_from_description (PangoFontDescription *font_desc);
-#endif
-
-gint	 gdk_string_width   (GdkFont        *font,
-			     const gchar    *string);
-gint	 gdk_text_width	    (GdkFont        *font,
-			     const gchar    *text,
-			     gint            text_length);
-gint	 gdk_text_width_wc  (GdkFont        *font,
-			     const GdkWChar *text,
-			     gint            text_length);
-gint	 gdk_char_width	    (GdkFont        *font,
-			     gchar           character);
-gint	 gdk_char_width_wc  (GdkFont        *font,
-			     GdkWChar        character);
-gint	 gdk_string_measure (GdkFont        *font,
-			     const gchar    *string);
-gint	 gdk_text_measure   (GdkFont        *font,
-			     const gchar    *text,
-			     gint            text_length);
-gint	 gdk_char_measure   (GdkFont        *font,
-			     gchar           character);
-gint	 gdk_string_height  (GdkFont        *font,
-			     const gchar    *string);
-gint	 gdk_text_height    (GdkFont        *font,
-			     const gchar    *text,
-			     gint            text_length);
-gint	 gdk_char_height    (GdkFont        *font,
-			     gchar           character);
-
-void     gdk_text_extents   (GdkFont     *font,
-			     const gchar *text,
-			     gint         text_length,
-			     gint        *lbearing,
-			     gint        *rbearing,
-			     gint        *width,
-			     gint        *ascent,
-			     gint        *descent);
-void    gdk_text_extents_wc (GdkFont        *font,
-			     const GdkWChar *text,
-			     gint            text_length,
-			     gint           *lbearing,
-			     gint           *rbearing,
-			     gint           *width,
-			     gint           *ascent,
-			     gint           *descent);
-void     gdk_string_extents (GdkFont     *font,
-			     const gchar *string,
-			     gint        *lbearing,
-			     gint        *rbearing,
-			     gint        *width,
-			     gint        *ascent,
-			     gint        *descent);
-
-GdkDisplay * gdk_font_get_display (GdkFont *font);
-
-#endif /* GDK_DISABLE_DEPRECATED */
-
-G_END_DECLS
-
-#endif /* __GDK_FONT_H__ */
-
-#endif /* !GDK_DISABLE_DEPRECATED || GDK_COMPILATION || GTK_COMPILATION */
diff --git a/gdk/gdkgc.h b/gdk/gdkgc.h
index a72eed4..7b433ab 100644
--- a/gdk/gdkgc.h
+++ b/gdk/gdkgc.h
@@ -161,7 +161,6 @@ struct _GdkGCValues
 {
   GdkColor	    foreground;
   GdkColor	    background;
-  GdkFont	   *font;
   GdkFunction	    function;
   GdkFill	    fill;
   GdkPixmap	   *tile;
diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h
index 0681bdc..0a51e95 100644
--- a/gdk/gdkinternals.h
+++ b/gdk/gdkinternals.h
@@ -89,18 +89,6 @@ typedef enum {
   GDK_DEBUG_EVENTLOOP     = 1 <<15
 } GdkDebugFlag;
 
-#ifndef GDK_DISABLE_DEPRECATED
-
-typedef struct _GdkFontPrivate	       GdkFontPrivate;
-
-struct _GdkFontPrivate
-{
-  GdkFont font;
-  guint ref_count;
-};
-
-#endif /* GDK_DISABLE_DEPRECATED */
-
 extern GList            *_gdk_default_filters;
 extern GdkWindow  	*_gdk_parent_root;
 extern gint		 _gdk_error_code;
@@ -427,8 +415,6 @@ GdkSubwindowMode _gdk_gc_get_subwindow (GdkGC *gc);
  *****************************************/
 
 /* Font/string functions implemented in module-specific code */
-gint _gdk_font_strlen (GdkFont *font, const char *str);
-void _gdk_font_destroy (GdkFont *font);
 
 void _gdk_colormap_real_destroy (GdkColormap *colormap);
 
diff --git a/gdk/gdkoffscreenwindow.c b/gdk/gdkoffscreenwindow.c
index dcba0a1..12e0dc8 100644
--- a/gdk/gdkoffscreenwindow.c
+++ b/gdk/gdkoffscreenwindow.c
@@ -407,56 +407,6 @@ gdk_offscreen_window_draw_polygon (GdkDrawable  *drawable,
 }
 
 static void
-gdk_offscreen_window_draw_text (GdkDrawable  *drawable,
-				GdkFont      *font,
-				GdkGC	       *gc,
-				gint		x,
-				gint		y,
-				const gchar  *text,
-				gint		text_length)
-{
-  GdkOffscreenWindow *offscreen = GDK_OFFSCREEN_WINDOW (drawable);
-  GdkDrawable *real_drawable = get_real_drawable (offscreen);
-  GdkWindowObject *private = GDK_WINDOW_OBJECT (offscreen->wrapper);
-
-  gdk_draw_text (real_drawable,
-		 font,
-		 gc,
-		 x,
-		 y,
-		 text,
-		 text_length);
-
-  /* Hard to compute the minimal size, not that often used anyway. */
-  add_damage (offscreen, 0, 0, private->width, private->height, FALSE);
-}
-
-static void
-gdk_offscreen_window_draw_text_wc (GdkDrawable	 *drawable,
-				   GdkFont	 *font,
-				   GdkGC		 *gc,
-				   gint		  x,
-				   gint		  y,
-				   const GdkWChar *text,
-				   gint		  text_length)
-{
-  GdkOffscreenWindow *offscreen = GDK_OFFSCREEN_WINDOW (drawable);
-  GdkDrawable *real_drawable = get_real_drawable (offscreen);
-  GdkWindowObject *private = GDK_WINDOW_OBJECT (offscreen->wrapper);
-
-  gdk_draw_text_wc (real_drawable,
-		    font,
-		    gc,
-		    x,
-		    y,
-		    text,
-		    text_length);
-
-  /* Hard to compute the minimal size, not that often used anyway. */
-  add_damage (offscreen, 0, 0, private->width, private->height, FALSE);
-}
-
-static void
 gdk_offscreen_window_draw_points (GdkDrawable  *drawable,
 				  GdkGC	       *gc,
 				  GdkPoint     *points,
@@ -1265,8 +1215,6 @@ gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass)
   drawable_class->draw_rectangle = gdk_offscreen_window_draw_rectangle;
   drawable_class->draw_arc = gdk_offscreen_window_draw_arc;
   drawable_class->draw_polygon = gdk_offscreen_window_draw_polygon;
-  drawable_class->draw_text = gdk_offscreen_window_draw_text;
-  drawable_class->draw_text_wc = gdk_offscreen_window_draw_text_wc;
   drawable_class->draw_drawable_with_src = gdk_offscreen_window_draw_drawable;
   drawable_class->draw_points = gdk_offscreen_window_draw_points;
   drawable_class->draw_segments = gdk_offscreen_window_draw_segments;
diff --git a/gdk/gdkpixmap.c b/gdk/gdkpixmap.c
index 919a202..505caf1 100644
--- a/gdk/gdkpixmap.c
+++ b/gdk/gdkpixmap.c
@@ -55,20 +55,6 @@ static void   gdk_pixmap_draw_polygon   (GdkDrawable     *drawable,
 					 gboolean         filled,
 					 GdkPoint        *points,
 					 gint             npoints);
-static void   gdk_pixmap_draw_text      (GdkDrawable     *drawable,
-					 GdkFont         *font,
-					 GdkGC           *gc,
-					 gint             x,
-					 gint             y,
-					 const gchar     *text,
-					 gint             text_length);
-static void   gdk_pixmap_draw_text_wc   (GdkDrawable     *drawable,
-					 GdkFont         *font,
-					 GdkGC           *gc,
-					 gint             x,
-					 gint             y,
-					 const GdkWChar  *text,
-					 gint             text_length);
 static void   gdk_pixmap_draw_drawable  (GdkDrawable     *drawable,
 					 GdkGC           *gc,
 					 GdkPixmap       *src,
@@ -201,8 +187,6 @@ gdk_pixmap_class_init (GdkPixmapObjectClass *klass)
   drawable_class->draw_rectangle = gdk_pixmap_draw_rectangle;
   drawable_class->draw_arc = gdk_pixmap_draw_arc;
   drawable_class->draw_polygon = gdk_pixmap_draw_polygon;
-  drawable_class->draw_text = gdk_pixmap_draw_text;
-  drawable_class->draw_text_wc = gdk_pixmap_draw_text_wc;
   drawable_class->draw_drawable_with_src = gdk_pixmap_draw_drawable;
   drawable_class->draw_points = gdk_pixmap_draw_points;
   drawable_class->draw_segments = gdk_pixmap_draw_segments;
@@ -340,38 +324,6 @@ gdk_pixmap_draw_polygon (GdkDrawable *drawable,
 }
 
 static void
-gdk_pixmap_draw_text (GdkDrawable *drawable,
-		      GdkFont     *font,
-		      GdkGC       *gc,
-		      gint         x,
-		      gint         y,
-		      const gchar *text,
-		      gint         text_length)
-{
-  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
-
-  _gdk_gc_remove_drawable_clip (gc);  
-  gdk_draw_text (private->impl, font, gc,
-                 x, y, text, text_length);
-}
-
-static void
-gdk_pixmap_draw_text_wc (GdkDrawable    *drawable,
-			 GdkFont        *font,
-			 GdkGC          *gc,
-			 gint            x,
-			 gint            y,
-			 const GdkWChar *text,
-			 gint            text_length)
-{
-  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
-
-  _gdk_gc_remove_drawable_clip (gc);  
-  gdk_draw_text_wc (private->impl, font, gc,
-                    x, y, text, text_length);
-}
-
-static void
 gdk_pixmap_draw_drawable (GdkDrawable *drawable,
 			  GdkGC       *gc,
 			  GdkPixmap   *src,
diff --git a/gdk/gdktypes.h b/gdk/gdktypes.h
index ae9362f..f2ec5b3 100644
--- a/gdk/gdktypes.h
+++ b/gdk/gdktypes.h
@@ -102,7 +102,6 @@ typedef guint32 GdkNativeWindow;
 typedef struct _GdkColor	      GdkColor;
 typedef struct _GdkColormap	      GdkColormap;
 typedef struct _GdkCursor	      GdkCursor;
-typedef struct _GdkFont		      GdkFont;
 typedef struct _GdkGC                 GdkGC;
 typedef struct _GdkImage              GdkImage;
 typedef struct _GdkRegion             GdkRegion;
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 78b19e8..7363868 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -184,20 +184,6 @@ static void   gdk_window_draw_polygon   (GdkDrawable     *drawable,
 					 gboolean         filled,
 					 GdkPoint        *points,
 					 gint             npoints);
-static void   gdk_window_draw_text      (GdkDrawable     *drawable,
-					 GdkFont         *font,
-					 GdkGC           *gc,
-					 gint             x,
-					 gint             y,
-					 const gchar     *text,
-					 gint             text_length);
-static void   gdk_window_draw_text_wc   (GdkDrawable     *drawable,
-					 GdkFont         *font,
-					 GdkGC           *gc,
-					 gint             x,
-					 gint             y,
-					 const GdkWChar  *text,
-					 gint             text_length);
 static void   gdk_window_draw_drawable  (GdkDrawable     *drawable,
 					 GdkGC           *gc,
 					 GdkPixmap       *src,
@@ -450,8 +436,6 @@ gdk_window_class_init (GdkWindowObjectClass *klass)
   drawable_class->draw_rectangle = gdk_window_draw_rectangle;
   drawable_class->draw_arc = gdk_window_draw_arc;
   drawable_class->draw_polygon = gdk_window_draw_polygon;
-  drawable_class->draw_text = gdk_window_draw_text;
-  drawable_class->draw_text_wc = gdk_window_draw_text_wc;
   drawable_class->draw_drawable_with_src = gdk_window_draw_drawable;
   drawable_class->draw_points = gdk_window_draw_points;
   drawable_class->draw_segments = gdk_window_draw_segments;
@@ -3712,42 +3696,6 @@ gdk_window_draw_polygon (GdkDrawable *drawable,
   END_DRAW;
 }
 
-static void
-gdk_window_draw_text (GdkDrawable *drawable,
-		      GdkFont     *font,
-		      GdkGC       *gc,
-		      gint         x,
-		      gint         y,
-		      const gchar *text,
-		      gint         text_length)
-{
-  if (GDK_WINDOW_DESTROYED (drawable))
-    return;
-
-  BEGIN_DRAW;
-  gdk_draw_text (impl, font, gc,
-		 x - x_offset, y - y_offset, text, text_length);
-  END_DRAW;
-}
-
-static void
-gdk_window_draw_text_wc (GdkDrawable    *drawable,
-			 GdkFont        *font,
-			 GdkGC          *gc,
-			 gint            x,
-			 gint            y,
-			 const GdkWChar *text,
-			 gint            text_length)
-{
-  if (GDK_WINDOW_DESTROYED (drawable))
-    return;
-
-  BEGIN_DRAW;
-  gdk_draw_text_wc (impl, font, gc,
-		    x - x_offset, y - y_offset, text, text_length);
-  END_DRAW;
-}
-
 static GdkDrawable *
 gdk_window_get_source_drawable (GdkDrawable *drawable)
 {
diff --git a/gdk/quartz/gdkdrawable-quartz.c b/gdk/quartz/gdkdrawable-quartz.c
index 2f03f2e..47dd636 100644
--- a/gdk/quartz/gdkdrawable-quartz.c
+++ b/gdk/quartz/gdkdrawable-quartz.c
@@ -299,30 +299,6 @@ gdk_quartz_draw_polygon (GdkDrawable *drawable,
 }
 
 static void
-gdk_quartz_draw_text (GdkDrawable *drawable,
-		      GdkFont     *font,
-		      GdkGC       *gc,
-		      gint         x,
-		      gint         y,
-		      const gchar *text,
-		      gint         text_length)
-{
-  /* FIXME: Implement */
-}
-
-static void
-gdk_quartz_draw_text_wc (GdkDrawable    *drawable,
-			 GdkFont	*font,
-			 GdkGC	        *gc,
-			 gint	         x,
-			 gint	         y,
-			 const GdkWChar *text,
-			 gint	         text_length)
-{
-  /* FIXME: Implement */
-}
-
-static void
 gdk_quartz_draw_drawable (GdkDrawable *drawable,
 			  GdkGC       *gc,
 			  GdkPixmap   *src,
diff --git a/gdk/quartz/gdkfont-quartz.c b/gdk/quartz/gdkfont-quartz.c
deleted file mode 100644
index 2857cd5..0000000
--- a/gdk/quartz/gdkfont-quartz.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* gdkwindow-quartz.c
- *
- * Copyright (C) 2005 Imendio AB
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-#include "config.h"
-
-#include "gdkfont.h"
-
-GdkFont*
-gdk_font_load_for_display (GdkDisplay  *display,
-			   const gchar *font_name)
-{
-  /* FIXME: Implement */
-  return NULL;
-}
-
-GdkFont*
-gdk_font_from_description_for_display (GdkDisplay           *display,
-				       PangoFontDescription *desc)
-{
-  /* FIXME: Implement */
-  return NULL;
-}
-
-GdkFont *
-gdk_fontset_load_for_display (GdkDisplay  *display,
-			      const gchar *fontset_name)
-{
-  return NULL;
-}
-
-GdkFont*
-gdk_fontset_load (const gchar *fontset_name)
-{
-  return NULL;
-}
-
-gint
-gdk_text_width (GdkFont      *font,
-		const gchar  *text,
-		gint          text_length)
-{
-  /* FIXME: Implement */
-  return -1;
-}
-
-void
-gdk_text_extents (GdkFont     *font,
-                  const gchar *text,
-                  gint         text_length,
-		  gint        *lbearing,
-		  gint        *rbearing,
-		  gint        *width,
-		  gint        *ascent,
-		  gint        *descent)
-{
-  /* FIXME: Implement */
-}
-
-gint
-gdk_text_width_wc (GdkFont	  *font,
-		   const GdkWChar *text,
-		   gint		   text_length)
-{
-  /* FIXME: Implement */
-  return 0;
-}
-
-
-void
-gdk_text_extents_wc (GdkFont        *font,
-		     const GdkWChar *text,
-		     gint            text_length,
-		     gint           *lbearing,
-		     gint           *rbearing,
-		     gint           *width,
-		     gint           *ascent,
-		     gint           *descent)
-{
-  /* FIXME: Implement */
-}
-
-void
-_gdk_font_destroy (GdkFont *font)
-{
-  /* FIXME: Implement */
-}
-
-gint
-_gdk_font_strlen (GdkFont     *font,
-		  const gchar *str)
-{
-  /* FIXME: Implement */
-  return -1;
-}
-
-gint
-gdk_font_id (const GdkFont *font)
-{
-  /* FIXME: Implement */
-  return 0;
-}
-
-gboolean
-gdk_font_equal (const GdkFont *fonta,
-                const GdkFont *fontb)
-{
-  /* FIXME: Implement */
-  return FALSE;
-}
-
-GdkDisplay* 
-gdk_font_get_display (GdkFont* font)
-{
-  /* FIXME: Implement */ 
-  return NULL;
-}
diff --git a/gdk/quartz/gdkprivate-quartz.h b/gdk/quartz/gdkprivate-quartz.h
index d7196b2..c49757c 100644
--- a/gdk/quartz/gdkprivate-quartz.h
+++ b/gdk/quartz/gdkprivate-quartz.h
@@ -52,7 +52,6 @@ struct _GdkGCQuartz
 {
   GdkGC             parent_instance;
 
-  GdkFont          *font;
   GdkFunction       function;
   GdkSubwindowMode  subwindow_mode;
   gboolean          graphics_exposures;
diff --git a/gdk/win32/gdkdrawable-win32.c b/gdk/win32/gdkdrawable-win32.c
index 52ab3fb..5c46a58 100644
--- a/gdk/win32/gdkdrawable-win32.c
+++ b/gdk/win32/gdkdrawable-win32.c
@@ -70,20 +70,6 @@ static void gdk_win32_draw_polygon   (GdkDrawable    *drawable,
 				      gboolean        filled,
 				      GdkPoint       *points,
 				      gint            npoints);
-static void gdk_win32_draw_text      (GdkDrawable    *drawable,
-				      GdkFont        *font,
-				      GdkGC          *gc,
-				      gint            x,
-				      gint            y,
-				      const gchar    *text,
-				      gint            text_length);
-static void gdk_win32_draw_text_wc   (GdkDrawable    *drawable,
-				      GdkFont        *font,
-				      GdkGC          *gc,
-				      gint            x,
-				      gint            y,
-				      const GdkWChar *text,
-				      gint            text_length);
 static void gdk_win32_draw_drawable  (GdkDrawable    *drawable,
 				      GdkGC          *gc,
 				      GdkPixmap      *src,
@@ -1039,96 +1025,6 @@ gdk_draw_text_handler (GdkWin32SingleFont *singlefont,
 }
 
 static void
-gdk_win32_draw_text (GdkDrawable *drawable,
-		     GdkFont     *font,
-		     GdkGC       *gc,
-		     gint         x,
-		     gint         y,
-		     const gchar *text,
-		     gint         text_length)
-{
-  const GdkGCValuesMask mask = GDK_GC_FOREGROUND|GDK_GC_FONT;
-  wchar_t *wcstr, wc;
-  glong wlen;
-  gdk_draw_text_arg arg;
-
-  if (text_length == 0)
-    return;
-
-  g_assert (font->type == GDK_FONT_FONT || font->type == GDK_FONT_FONTSET);
-
-  arg.x = x;
-  arg.y = y;
-  arg.hdc = gdk_win32_hdc_get (drawable, gc, mask);
-
-  GDK_NOTE (DRAW, g_print ("gdk_win32_draw_text: %s (%d,%d) \"%.*s\" (len %d)\n",
-			   _gdk_win32_drawable_description (drawable),
-			   x, y,
-			   (text_length > 10 ? 10 : text_length),
-			   text, text_length));
-  
-  if (text_length == 1)
-    {
-      /* For single characters, don't try to interpret as UTF-8. */
-      wc = (guchar) text[0];
-      _gdk_wchar_text_handle (font, &wc, 1, gdk_draw_text_handler, &arg);
-    }
-  else
-    {
-      wcstr = g_utf8_to_utf16 (text, text_length, NULL, &wlen, NULL);
-      _gdk_wchar_text_handle (font, wcstr, wlen, gdk_draw_text_handler, &arg);
-      g_free (wcstr);
-    }
-
-  gdk_win32_hdc_release (drawable, gc, mask);
-}
-
-static void
-gdk_win32_draw_text_wc (GdkDrawable	 *drawable,
-			GdkFont          *font,
-			GdkGC		 *gc,
-			gint		  x,
-			gint		  y,
-			const GdkWChar *text,
-			gint		  text_length)
-{
-  const GdkGCValuesMask mask = GDK_GC_FOREGROUND|GDK_GC_FONT;
-  gint i;
-  wchar_t *wcstr;
-  gdk_draw_text_arg arg;
-
-  if (text_length == 0)
-    return;
-
-  g_assert (font->type == GDK_FONT_FONT || font->type == GDK_FONT_FONTSET);
-
-  arg.x = x;
-  arg.y = y;
-  arg.hdc = gdk_win32_hdc_get (drawable, gc, mask);
-
-  GDK_NOTE (DRAW, g_print ("gdk_win32_draw_text_wc: %s (%d,%d) len: %d\n",
-			   _gdk_win32_drawable_description (drawable),
-			   x, y, text_length));
-      
-  if (sizeof (wchar_t) != sizeof (GdkWChar))
-    {
-      wcstr = g_new (wchar_t, text_length);
-      for (i = 0; i < text_length; i++)
-	wcstr[i] = text[i];
-    }
-  else
-    wcstr = (wchar_t *) text;
-
-  _gdk_wchar_text_handle (font, wcstr, text_length,
-			 gdk_draw_text_handler, &arg);
-
-  if (sizeof (wchar_t) != sizeof (GdkWChar))
-    g_free (wcstr);
-
-  gdk_win32_hdc_release (drawable, gc, mask);
-}
-
-static void
 gdk_win32_draw_drawable (GdkDrawable *drawable,
 			 GdkGC       *gc,
 			 GdkPixmap   *src,
diff --git a/gdk/win32/gdkfont-win32.c b/gdk/win32/gdkfont-win32.c
deleted file mode 100644
index e58a8d2..0000000
--- a/gdk/win32/gdkfont-win32.c
+++ /dev/null
@@ -1,1718 +0,0 @@
-/* GDK - The GIMP Drawing Kit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- * Copyright (C) 1998-2002 Tor Lillqvist
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GTK+ Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#include "config.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
-
-#include "gdkfont.h"
-#include "gdkpango.h" /* gdk_pango_context_get() */
-#include "gdkdisplay.h"
-#include "gdkprivate-win32.h"
-
-static GHashTable *font_name_hash = NULL;
-static GHashTable *fontset_name_hash = NULL;
-
-static void
-gdk_font_hash_insert (GdkFontType  type,
-		      GdkFont     *font,
-		      const gchar *font_name)
-{
-  GdkFontPrivateWin32 *private = (GdkFontPrivateWin32 *) font;
-  GHashTable **hashp = (type == GDK_FONT_FONT) ?
-    &font_name_hash : &fontset_name_hash;
-
-  if (!*hashp)
-    *hashp = g_hash_table_new (g_str_hash, g_str_equal);
-
-  private->names = g_slist_prepend (private->names, g_strdup (font_name));
-  g_hash_table_insert (*hashp, private->names->data, font);
-}
-
-static void
-gdk_font_hash_remove (GdkFontType type,
-		      GdkFont    *font)
-{
-  GdkFontPrivateWin32 *private = (GdkFontPrivateWin32 *) font;
-  GSList *tmp_list;
-  GHashTable *hash = (type == GDK_FONT_FONT) ?
-    font_name_hash : fontset_name_hash;
-
-  tmp_list = private->names;
-  while (tmp_list)
-    {
-      g_hash_table_remove (hash, tmp_list->data);
-      g_free (tmp_list->data);
-      
-      tmp_list = tmp_list->next;
-    }
-
-  g_slist_free (private->names);
-  private->names = NULL;
-}
-
-static GdkFont *
-gdk_font_hash_lookup (GdkFontType  type,
-		      const gchar *font_name)
-{
-  GdkFont *result;
-  GHashTable *hash = (type == GDK_FONT_FONT) ?
-    font_name_hash : fontset_name_hash;
-
-  if (!hash)
-    return NULL;
-  else
-    {
-      result = g_hash_table_lookup (hash, font_name);
-      if (result)
-	gdk_font_ref (result);
-      
-      return result;
-    }
-}
-
-static const char *
-charset_name (DWORD charset)
-{
-  switch (charset)
-    {
-    case ANSI_CHARSET: return "ansi";
-    case DEFAULT_CHARSET: return "default";
-    case SYMBOL_CHARSET: return "symbol";
-    case SHIFTJIS_CHARSET: return "shiftjis";
-    case HANGEUL_CHARSET: return "hangeul";
-    case GB2312_CHARSET: return "gb2312";
-    case CHINESEBIG5_CHARSET: return "big5";
-    case JOHAB_CHARSET: return "johab";
-    case HEBREW_CHARSET: return "hebrew";
-    case ARABIC_CHARSET: return "arabic";
-    case GREEK_CHARSET: return "greek";
-    case TURKISH_CHARSET: return "turkish";
-    case VIETNAMESE_CHARSET: return "vietnamese";
-    case THAI_CHARSET: return "thai";
-    case EASTEUROPE_CHARSET: return "easteurope";
-    case RUSSIAN_CHARSET: return "russian";
-    case MAC_CHARSET: return "mac";
-    case BALTIC_CHARSET: return "baltic";
-    }
-  return "unknown";
-}
-
-/* This table classifies Unicode characters according to the Microsoft
- * Unicode subset numbering. This is based on the table in "Developing
- * International Software for Windows 95 and Windows NT". This is almost,
- * but not quite, the same as the official Unicode block table in
- * Blocks.txt from ftp.unicode.org. The bit number field is the bitfield
- * number as in the FONTSIGNATURE struct's fsUsb field.
- * There are some grave bugs in the table in the books. For instance
- * it claims there are Hangul at U+3400..U+4DFF while this range in
- * fact contains CJK Unified Ideographs Extension A. Also, the whole
- * block of Hangul Syllables U+AC00..U+D7A3 is missing from the book.
- */
-
-typedef enum
-{
-  U_BASIC_LATIN = 0,
-  U_LATIN_1_SUPPLEMENT = 1,
-  U_LATIN_EXTENDED_A = 2,
-  U_LATIN_EXTENDED_B = 3,
-  U_IPA_EXTENSIONS = 4,
-  U_SPACING_MODIFIER_LETTERS = 5,
-  U_COMBINING_DIACRITICAL_MARKS = 6,
-  U_BASIC_GREEK = 7,
-  U_GREEK_SYMBOLS_AND_COPTIC = 8,
-  U_CYRILLIC = 9,
-  U_ARMENIAN = 10,
-  U_HEBREW_EXTENDED = 12,
-  U_BASIC_HEBREW = 11,
-  U_BASIC_ARABIC = 13,
-  U_ARABIC_EXTENDED = 14,
-  U_DEVANAGARI = 15,
-  U_BENGALI = 16,
-  U_GURMUKHI = 17,
-  U_GUJARATI = 18,
-  U_ORIYA = 19,
-  U_TAMIL = 20,
-  U_TELUGU = 21,
-  U_KANNADA = 22,
-  U_MALAYALAM = 23,
-  U_THAI = 24,
-  U_LAO = 25,
-  U_GEORGIAN_EXTENDED = 27,
-  U_BASIC_GEORGIAN = 26,
-  U_HANGUL_JAMO = 28,
-  U_LATIN_EXTENDED_ADDITIONAL = 29,
-  U_GREEK_EXTENDED = 30,
-  U_GENERAL_PUNCTUATION = 31,
-  U_SUPERSCRIPTS_AND_SUBSCRIPTS = 32,
-  U_CURRENCY_SYMBOLS = 33,
-  U_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS = 34,
-  U_LETTERLIKE_SYMBOLS = 35,
-  U_NUMBER_FORMS = 36,
-  U_ARROWS = 37,
-  U_MATHEMATICAL_OPERATORS = 38,
-  U_MISCELLANEOUS_TECHNICAL = 39,
-  U_CONTROL_PICTURES = 40,
-  U_OPTICAL_CHARACTER_RECOGNITION = 41,
-  U_ENCLOSED_ALPHANUMERICS = 42,
-  U_BOX_DRAWING = 43,
-  U_BLOCK_ELEMENTS = 44,
-  U_GEOMETRIC_SHAPES = 45,
-  U_MISCELLANEOUS_SYMBOLS = 46,
-  U_DINGBATS = 47,
-  U_CJK_SYMBOLS_AND_PUNCTUATION = 48,
-  U_HIRAGANA = 49,
-  U_KATAKANA = 50,
-  U_BOPOMOFO = 51,
-  U_HANGUL_COMPATIBILITY_JAMO = 52,
-  U_CJK_MISCELLANEOUS = 53,
-  U_ENCLOSED_CJK = 54,
-  U_CJK_COMPATIBILITY = 55,
-  U_HANGUL = 56,
-  U_HANGUL_SUPPLEMENTARY_A = 57,
-  U_HANGUL_SUPPLEMENTARY_B = 58,
-  U_CJK_UNIFIED_IDEOGRAPHS = 59,
-  U_PRIVATE_USE_AREA = 60,
-  U_CJK_COMPATIBILITY_IDEOGRAPHS = 61,
-  U_ALPHABETIC_PRESENTATION_FORMS = 62,
-  U_ARABIC_PRESENTATION_FORMS_A = 63,
-  U_COMBINING_HALF_MARKS = 64,
-  U_CJK_COMPATIBILITY_FORMS = 65,
-  U_SMALL_FORM_VARIANTS = 66,
-  U_ARABIC_PRESENTATION_FORMS_B = 67,
-  U_SPECIALS = 69,
-  U_HALFWIDTH_AND_FULLWIDTH_FORMS = 68,
-  U_LAST_PLUS_ONE
-} unicode_subset;
-
-static struct {
-  wchar_t low, high;
-  unicode_subset bit; 
-  gchar *name;
-} utab[] =
-{
-  { 0x0000, 0x007E,
-    U_BASIC_LATIN, "Basic Latin" },
-  { 0x00A0, 0x00FF,
-    U_LATIN_1_SUPPLEMENT, "Latin-1 Supplement" },
-  { 0x0100, 0x017F,
-    U_LATIN_EXTENDED_A, "Latin Extended-A" },
-  { 0x0180, 0x024F,
-    U_LATIN_EXTENDED_B, "Latin Extended-B" },
-  { 0x0250, 0x02AF,
-    U_IPA_EXTENSIONS, "IPA Extensions" },
-  { 0x02B0, 0x02FF,
-    U_SPACING_MODIFIER_LETTERS, "Spacing Modifier Letters" },
-  { 0x0300, 0x036F,
-    U_COMBINING_DIACRITICAL_MARKS, "Combining Diacritical Marks" },
-  { 0x0370, 0x03CF,
-    U_BASIC_GREEK, "Basic Greek" },
-  { 0x03D0, 0x03FF,
-    U_GREEK_SYMBOLS_AND_COPTIC, "Greek Symbols and Coptic" },
-  { 0x0400, 0x04FF,
-    U_CYRILLIC, "Cyrillic" },
-  { 0x0530, 0x058F,
-    U_ARMENIAN, "Armenian" },
-  { 0x0590, 0x05CF,
-    U_HEBREW_EXTENDED, "Hebrew Extended" },
-  { 0x05D0, 0x05FF,
-    U_BASIC_HEBREW, "Basic Hebrew" },
-  { 0x0600, 0x0652,
-    U_BASIC_ARABIC, "Basic Arabic" },
-  { 0x0653, 0x06FF,
-    U_ARABIC_EXTENDED, "Arabic Extended" },
-  { 0x0900, 0x097F,
-    U_DEVANAGARI, "Devanagari" },
-  { 0x0980, 0x09FF,
-    U_BENGALI, "Bengali" },
-  { 0x0A00, 0x0A7F,
-    U_GURMUKHI, "Gurmukhi" },
-  { 0x0A80, 0x0AFF,
-    U_GUJARATI, "Gujarati" },
-  { 0x0B00, 0x0B7F,
-    U_ORIYA, "Oriya" },
-  { 0x0B80, 0x0BFF,
-    U_TAMIL, "Tamil" },
-  { 0x0C00, 0x0C7F,
-    U_TELUGU, "Telugu" },
-  { 0x0C80, 0x0CFF,
-    U_KANNADA, "Kannada" },
-  { 0x0D00, 0x0D7F,
-    U_MALAYALAM, "Malayalam" },
-  { 0x0E00, 0x0E7F,
-    U_THAI, "Thai" },
-  { 0x0E80, 0x0EFF,
-    U_LAO, "Lao" },
-  { 0x10A0, 0x10CF,
-    U_GEORGIAN_EXTENDED, "Georgian Extended" },
-  { 0x10D0, 0x10FF,
-    U_BASIC_GEORGIAN, "Basic Georgian" },
-  { 0x1100, 0x11FF,
-    U_HANGUL_JAMO, "Hangul Jamo" },
-  { 0x1E00, 0x1EFF,
-    U_LATIN_EXTENDED_ADDITIONAL, "Latin Extended Additional" },
-  { 0x1F00, 0x1FFF,
-    U_GREEK_EXTENDED, "Greek Extended" },
-  { 0x2000, 0x206F,
-    U_GENERAL_PUNCTUATION, "General Punctuation" },
-  { 0x2070, 0x209F,
-    U_SUPERSCRIPTS_AND_SUBSCRIPTS, "Superscripts and Subscripts" },
-  { 0x20A0, 0x20CF,
-    U_CURRENCY_SYMBOLS, "Currency Symbols" },
-  { 0x20D0, 0x20FF,
-    U_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS, "Combining Diacritical Marks for Symbols" },
-  { 0x2100, 0x214F,
-    U_LETTERLIKE_SYMBOLS, "Letterlike Symbols" },
-  { 0x2150, 0x218F,
-    U_NUMBER_FORMS, "Number Forms" },
-  { 0x2190, 0x21FF,
-    U_ARROWS, "Arrows" },
-  { 0x2200, 0x22FF,
-    U_MATHEMATICAL_OPERATORS, "Mathematical Operators" },
-  { 0x2300, 0x23FF,
-    U_MISCELLANEOUS_TECHNICAL, "Miscellaneous Technical" },
-  { 0x2400, 0x243F,
-    U_CONTROL_PICTURES, "Control Pictures" },
-  { 0x2440, 0x245F,
-    U_OPTICAL_CHARACTER_RECOGNITION, "Optical Character Recognition" },
-  { 0x2460, 0x24FF,
-    U_ENCLOSED_ALPHANUMERICS, "Enclosed Alphanumerics" },
-  { 0x2500, 0x257F,
-    U_BOX_DRAWING, "Box Drawing" },
-  { 0x2580, 0x259F,
-    U_BLOCK_ELEMENTS, "Block Elements" },
-  { 0x25A0, 0x25FF,
-    U_GEOMETRIC_SHAPES, "Geometric Shapes" },
-  { 0x2600, 0x26FF,
-    U_MISCELLANEOUS_SYMBOLS, "Miscellaneous Symbols" },
-  { 0x2700, 0x27BF,
-    U_DINGBATS, "Dingbats" },
-  { 0x3000, 0x303F,
-    U_CJK_SYMBOLS_AND_PUNCTUATION, "CJK Symbols and Punctuation" },
-  { 0x3040, 0x309F,
-    U_HIRAGANA, "Hiragana" },
-  { 0x30A0, 0x30FF,
-    U_KATAKANA, "Katakana" },
-  { 0x3100, 0x312F,
-    U_BOPOMOFO, "Bopomofo" },
-  { 0x3130, 0x318F,
-    U_HANGUL_COMPATIBILITY_JAMO, "Hangul Compatibility Jamo" },
-  { 0x3190, 0x319F,
-    U_CJK_MISCELLANEOUS, "CJK Miscellaneous" },
-  { 0x3200, 0x32FF,
-    U_ENCLOSED_CJK, "Enclosed CJK" },
-  { 0x3300, 0x33FF,
-    U_CJK_COMPATIBILITY, "CJK Compatibility" },
-  /* The book claims:
-   * U+3400..U+3D2D = Hangul
-   * U+3D2E..U+44B7 = Hangul Supplementary A
-   * U+44B8..U+4DFF = Hangul Supplementary B
-   * but actually in Unicode
-   * U+3400..U+4DB5 = CJK Unified Ideographs Extension A
-   */
-  { 0x3400, 0x4DB5,
-    U_CJK_UNIFIED_IDEOGRAPHS, "CJK Unified Ideographs Extension A" },
-  { 0x4E00, 0x9FFF,
-    U_CJK_UNIFIED_IDEOGRAPHS, "CJK Unified Ideographs" },
-  /* This was missing completely from the book's table. */
-  { 0xAC00, 0xD7A3,
-    U_HANGUL, "Hangul Syllables" },
-  { 0xE000, 0xF8FF,
-    U_PRIVATE_USE_AREA, "Private Use Area" },
-  { 0xF900, 0xFAFF,
-    U_CJK_COMPATIBILITY_IDEOGRAPHS, "CJK Compatibility Ideographs" },
-  { 0xFB00, 0xFB4F,
-    U_ALPHABETIC_PRESENTATION_FORMS, "Alphabetic Presentation Forms" },
-  { 0xFB50, 0xFDFF,
-    U_ARABIC_PRESENTATION_FORMS_A, "Arabic Presentation Forms-A" },
-  { 0xFE20, 0xFE2F,
-    U_COMBINING_HALF_MARKS, "Combining Half Marks" },
-  { 0xFE30, 0xFE4F,
-    U_CJK_COMPATIBILITY_FORMS, "CJK Compatibility Forms" },
-  { 0xFE50, 0xFE6F,
-    U_SMALL_FORM_VARIANTS, "Small Form Variants" },
-  { 0xFE70, 0xFEFE,
-    U_ARABIC_PRESENTATION_FORMS_B, "Arabic Presentation Forms-B" },
-  { 0xFEFF, 0xFEFF,
-    U_SPECIALS, "Specials" },
-  { 0xFF00, 0xFFEF,
-    U_HALFWIDTH_AND_FULLWIDTH_FORMS, "Halfwidth and Fullwidth Forms" },
-  { 0xFFF0, 0xFFFD,
-    U_SPECIALS, "Specials" }
-};
-
-static void
-print_unicode_subranges (FONTSIGNATURE *fsp)
-{
-  int i;
-  gboolean checked[G_N_ELEMENTS (utab)];
-  gboolean need_comma = FALSE;
-
-  memset (checked, 0, sizeof (checked));
-
-  for (i = 0; i < G_N_ELEMENTS (utab); i++)
-    if (!checked[i]
-	&& (fsp->fsUsb[utab[i].bit/32] & (1 << (utab[i].bit % 32))))
-      {
-	g_print ("%s %s", (need_comma ? "," : ""), utab[i].name);
-	need_comma = TRUE;
-	checked[i] = TRUE;
-      }
-  if (!need_comma)
-    g_print (" none!");
-  g_print ("\n");
-}
-
-static gboolean
-check_unicode_subranges (UINT           charset,
-			 FONTSIGNATURE *fsp)
-{
-  gint i;
-  gboolean retval = FALSE;
-
-  /* If the fsUsb bit array has at least one of the bits set, trust it */
-  for (i = 0; i < U_LAST_PLUS_ONE; i++)
-    if (i != U_PRIVATE_USE_AREA && (fsp->fsUsb[i/32] & (1 << (i % 32))))
-      return FALSE;
-
-  /* Otherwise, guess what subranges there should be in the font */
-  fsp->fsUsb[0] = fsp->fsUsb[1] = fsp->fsUsb[2] = fsp->fsUsb[3] = 0;
-
-#define set_bit(bitno) (fsp->fsUsb[(bitno)/32] |= (1 << ((bitno) % 32)))
-
-  /* Set Unicode subrange bits based on code pages supported.
-   * This is mostly just guesswork.
-   */
-
-#define check_cp(bit) (fsp->fsCsb[0] & (bit))
-
-  if (check_cp(FS_LATIN1))
-    {
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_CURRENCY_SYMBOLS);
-      retval = TRUE;
-    }
-  if (check_cp (FS_LATIN2))
-    {
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_A);
-      set_bit (U_CURRENCY_SYMBOLS);
-      retval = TRUE;
-    }
-  if (check_cp (FS_CYRILLIC))
-    {
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_CYRILLIC);
-      retval = TRUE;
-    }
-  if (check_cp (FS_GREEK))
-    {
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_BASIC_GREEK);
-      retval = TRUE;
-    }
-  if (check_cp (FS_TURKISH))
-    {
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_A);
-      set_bit (U_CURRENCY_SYMBOLS);
-      retval = TRUE;
-    }
-  if (check_cp (FS_HEBREW))
-    {
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_CURRENCY_SYMBOLS);
-      set_bit (U_BASIC_HEBREW);
-      set_bit (U_HEBREW_EXTENDED);
-      retval = TRUE;
-    }
-  if (check_cp (FS_ARABIC))
-    {
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_CURRENCY_SYMBOLS);
-      set_bit (U_BASIC_ARABIC);
-      set_bit (U_ARABIC_EXTENDED);
-      retval = TRUE;
-    }
-  if (check_cp (FS_BALTIC))
-    {
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_CURRENCY_SYMBOLS);
-      set_bit (U_LATIN_EXTENDED_A);
-      set_bit (U_LATIN_EXTENDED_B);
-      retval = TRUE;
-    }
-  if (check_cp (FS_VIETNAMESE))
-    {
-      /* ??? */
-      set_bit (U_BASIC_LATIN);
-      retval = TRUE;
-    }
-  if (check_cp (FS_THAI))
-    {
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_THAI);
-      retval = TRUE;
-    }
-  if (check_cp (FS_JISJAPAN))
-    {
-      /* Based on MS Gothic */
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_CJK_SYMBOLS_AND_PUNCTUATION);
-      set_bit (U_HIRAGANA);
-      set_bit (U_KATAKANA);
-      set_bit (U_CJK_UNIFIED_IDEOGRAPHS);
-      set_bit (U_HALFWIDTH_AND_FULLWIDTH_FORMS);
-      retval = TRUE;
-    }
-  if (check_cp (FS_CHINESESIMP))
-    {
-      /* Based on MS Hei */
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_HIRAGANA);
-      set_bit (U_KATAKANA);
-      set_bit (U_BOPOMOFO);
-      set_bit (U_CJK_UNIFIED_IDEOGRAPHS);
-      retval = TRUE;
-    }
-  if (check_cp (FS_WANSUNG)
-      || check_cp (FS_JOHAB))	/* ??? */
-    {
-      /* Based on GulimChe. I wonder if all Korean fonts
-       * really support this large range of Unicode subranges?
-       */
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_A);
-      set_bit (U_SPACING_MODIFIER_LETTERS);
-      set_bit (U_BASIC_GREEK);
-      set_bit (U_CYRILLIC);
-      set_bit (U_HANGUL_JAMO);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS);
-      set_bit (U_CURRENCY_SYMBOLS);
-      set_bit (U_LETTERLIKE_SYMBOLS);
-      set_bit (U_NUMBER_FORMS);
-      set_bit (U_ARROWS);
-      set_bit (U_MATHEMATICAL_OPERATORS);
-      set_bit (U_MISCELLANEOUS_TECHNICAL);
-      set_bit (U_ENCLOSED_ALPHANUMERICS);
-      set_bit (U_BOX_DRAWING);
-      set_bit (U_BLOCK_ELEMENTS);
-      set_bit (U_GEOMETRIC_SHAPES);
-      set_bit (U_MISCELLANEOUS_SYMBOLS);
-      set_bit (U_CJK_SYMBOLS_AND_PUNCTUATION);
-      set_bit (U_HIRAGANA);
-      set_bit (U_KATAKANA);
-      set_bit (U_HANGUL_COMPATIBILITY_JAMO);
-      set_bit (U_ENCLOSED_CJK);
-      set_bit (U_CJK_COMPATIBILITY_FORMS);
-      set_bit (U_HANGUL);
-      set_bit (U_CJK_UNIFIED_IDEOGRAPHS);
-      set_bit (U_CJK_COMPATIBILITY_IDEOGRAPHS);
-      set_bit (U_HALFWIDTH_AND_FULLWIDTH_FORMS);
-      retval = TRUE;
-    }
-  if (check_cp (FS_CHINESETRAD))
-    {
-      /* Based on MingLiU */
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_BOX_DRAWING);
-      set_bit (U_BLOCK_ELEMENTS);
-      set_bit (U_CJK_SYMBOLS_AND_PUNCTUATION);
-      set_bit (U_BOPOMOFO);
-      set_bit (U_CJK_UNIFIED_IDEOGRAPHS);
-      set_bit (U_CJK_COMPATIBILITY_IDEOGRAPHS);
-      set_bit (U_SMALL_FORM_VARIANTS);
-      set_bit (U_HALFWIDTH_AND_FULLWIDTH_FORMS);
-      retval = TRUE;
-    }
-  if (check_cp (FS_SYMBOL) || charset == MAC_CHARSET)
-    {
-      /* Non-Unicode encoding, I guess. Pretend it covers
-       * the single-byte range of values.
-       */
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      retval = TRUE;
-    }
-
-  if (retval)
-    return TRUE;
-
-  GDK_NOTE (MISC, g_print ("... No code page bits set!\n"));
-
-  /* Sigh. Not even any code page bits were set. Guess based on
-   * charset, then. These somewhat optimistic guesses are based on the
-   * table in Appendix M in the book "Developing ..."  mentioned
-   * above.
-   */
-  switch (charset)
-    {
-    case ANSI_CHARSET:
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_A);
-      set_bit (U_LATIN_EXTENDED_B);
-      set_bit (U_SPACING_MODIFIER_LETTERS);
-      set_bit (U_COMBINING_DIACRITICAL_MARKS);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS);
-      set_bit (U_CURRENCY_SYMBOLS);
-#if 0 /* I find this too hard to believe... */
-      set_bit (U_BASIC_GREEK);
-      set_bit (U_CYRILLIC);
-      set_bit (U_BASIC_HEBREW);
-      set_bit (U_HEBREW_EXTENDED);
-      set_bit (U_BASIC_ARABIC);
-      set_bit (U_ARABIC_EXTENDED);
-      set_bit (U_LETTERLIKE_SYMBOLS);
-      set_bit (U_NUMBER_FORMS);
-      set_bit (U_ARROWS);
-      set_bit (U_MATHEMATICAL_OPERATORS);
-      set_bit (U_MISCELLANEOUS_TECHNICAL);
-      set_bit (U_ENCLOSED_ALPHANUMERICS);
-      set_bit (U_BOX_DRAWING);
-      set_bit (U_BLOCK_ELEMENTS);
-      set_bit (U_GEOMETRIC_SHAPES);
-      set_bit (U_MISCELLANEOUS_SYMBOLS);
-      set_bit (U_HIRAGANA);
-      set_bit (U_KATAKANA);
-      set_bit (U_BOPOMOFO);
-      set_bit (U_HANGUL_COMPATIBILITY_JAMO);
-      set_bit (U_CJK_MISCELLANEOUS);
-      set_bit (U_CJK_COMPATIBILITY);
-      set_bit (U_HANGUL);
-      set_bit (U_HANGUL_SUPPLEMENTARY_A);
-      set_bit (U_CJK_COMPATIBILITY_IDEOGRAPHS);
-      set_bit (U_ALPHABETIC_PRESENTATION_FORMS);
-      set_bit (U_SMALL_FORM_VARIANTS);
-      set_bit (U_ARABIC_PRESENTATION_FORMS_B);
-      set_bit (U_HALFWIDTH_AND_FULLWIDTH_FORMS);
-      set_bit (U_SPECIALS);
-#endif
-      retval = TRUE;
-      break;
-    case SYMBOL_CHARSET:
-      /* Unggh */
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      retval = TRUE;
-      break;
-    case SHIFTJIS_CHARSET:
-    case HANGEUL_CHARSET:
-    case GB2312_CHARSET:
-    case CHINESEBIG5_CHARSET:
-    case JOHAB_CHARSET:
-      /* The table really does claim these "locales" (it doesn't
-       * talk about charsets per se) cover the same Unicode
-       * subranges
-       */
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_A);
-      set_bit (U_LATIN_EXTENDED_B);
-      set_bit (U_SPACING_MODIFIER_LETTERS);
-      set_bit (U_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS);
-      set_bit (U_BASIC_GREEK);
-      set_bit (U_CYRILLIC);
-      set_bit (U_HANGUL_JAMO);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS);
-      set_bit (U_CURRENCY_SYMBOLS);
-      set_bit (U_LETTERLIKE_SYMBOLS);
-      set_bit (U_NUMBER_FORMS);
-      set_bit (U_ARROWS);
-      set_bit (U_MATHEMATICAL_OPERATORS);
-      set_bit (U_MISCELLANEOUS_TECHNICAL);
-      set_bit (U_ENCLOSED_ALPHANUMERICS);
-      set_bit (U_BOX_DRAWING);
-      set_bit (U_BLOCK_ELEMENTS);
-      set_bit (U_GEOMETRIC_SHAPES);
-      set_bit (U_MISCELLANEOUS_SYMBOLS);
-      set_bit (U_CJK_SYMBOLS_AND_PUNCTUATION);
-      set_bit (U_HIRAGANA);
-      set_bit (U_KATAKANA);
-      set_bit (U_BOPOMOFO);
-      set_bit (U_HANGUL_COMPATIBILITY_JAMO);
-      set_bit (U_CJK_MISCELLANEOUS);
-      set_bit (U_CJK_COMPATIBILITY);
-      set_bit (U_HANGUL);
-      set_bit (U_HANGUL_SUPPLEMENTARY_A);
-      set_bit (U_CJK_UNIFIED_IDEOGRAPHS);
-      set_bit (U_CJK_COMPATIBILITY_IDEOGRAPHS);
-      set_bit (U_ALPHABETIC_PRESENTATION_FORMS);
-      set_bit (U_SMALL_FORM_VARIANTS);
-      set_bit (U_ARABIC_PRESENTATION_FORMS_B);
-      set_bit (U_SPECIALS);
-      retval = TRUE;
-      break;
-    case HEBREW_CHARSET:
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_B);
-      set_bit (U_SPACING_MODIFIER_LETTERS);
-      set_bit (U_BASIC_HEBREW);
-      set_bit (U_HEBREW_EXTENDED);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_LETTERLIKE_SYMBOLS);
-      retval = TRUE; 
-      break;
-    case ARABIC_CHARSET:
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_A);
-      set_bit (U_LATIN_EXTENDED_B);
-      set_bit (U_SPACING_MODIFIER_LETTERS);
-      set_bit (U_BASIC_GREEK);
-      set_bit (U_BASIC_ARABIC);
-      set_bit (U_ARABIC_EXTENDED);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_LETTERLIKE_SYMBOLS);
-      set_bit (U_ARROWS);
-      set_bit (U_MATHEMATICAL_OPERATORS);
-      set_bit (U_MISCELLANEOUS_TECHNICAL);
-      set_bit (U_BOX_DRAWING);
-      set_bit (U_BLOCK_ELEMENTS);
-      set_bit (U_GEOMETRIC_SHAPES);
-      set_bit (U_MISCELLANEOUS_SYMBOLS);
-      set_bit (U_HALFWIDTH_AND_FULLWIDTH_FORMS);
-      retval = TRUE;
-      break;
-    case GREEK_CHARSET:
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_B);
-      set_bit (U_BASIC_GREEK);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS);
-      set_bit (U_LETTERLIKE_SYMBOLS);
-      set_bit (U_ARROWS);
-      set_bit (U_MATHEMATICAL_OPERATORS);
-      set_bit (U_MISCELLANEOUS_TECHNICAL);
-      set_bit (U_BOX_DRAWING);
-      set_bit (U_BLOCK_ELEMENTS);
-      set_bit (U_GEOMETRIC_SHAPES);
-      set_bit (U_MISCELLANEOUS_SYMBOLS);
-      retval = TRUE;
-      break;
-    case TURKISH_CHARSET:
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_A);
-      set_bit (U_LATIN_EXTENDED_B);
-      set_bit (U_SPACING_MODIFIER_LETTERS);
-      set_bit (U_BASIC_GREEK);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS);
-      set_bit (U_CURRENCY_SYMBOLS);
-      set_bit (U_LETTERLIKE_SYMBOLS);
-      set_bit (U_ARROWS);
-      set_bit (U_MATHEMATICAL_OPERATORS);
-      set_bit (U_MISCELLANEOUS_TECHNICAL);
-      set_bit (U_BOX_DRAWING);
-      set_bit (U_BLOCK_ELEMENTS);
-      set_bit (U_GEOMETRIC_SHAPES);
-      set_bit (U_MISCELLANEOUS_SYMBOLS);
-      retval = TRUE;
-      break;
-    case VIETNAMESE_CHARSET:
-    case THAI_CHARSET:
-      /* These are not in the table, so I have no idea */
-      break;
-    case BALTIC_CHARSET:
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_A);
-      set_bit (U_LATIN_EXTENDED_B);
-      set_bit (U_SPACING_MODIFIER_LETTERS);
-      set_bit (U_BASIC_GREEK);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS);
-      set_bit (U_CURRENCY_SYMBOLS);
-      set_bit (U_LETTERLIKE_SYMBOLS);
-      set_bit (U_ARROWS);
-      set_bit (U_MATHEMATICAL_OPERATORS);
-      set_bit (U_MISCELLANEOUS_TECHNICAL);
-      set_bit (U_BOX_DRAWING);
-      set_bit (U_BLOCK_ELEMENTS);
-      set_bit (U_GEOMETRIC_SHAPES);
-      set_bit (U_MISCELLANEOUS_SYMBOLS);
-      retval = TRUE;
-      break;
-    case EASTEUROPE_CHARSET:
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_LATIN_EXTENDED_A);
-      set_bit (U_LATIN_EXTENDED_B);
-      set_bit (U_SPACING_MODIFIER_LETTERS);
-      set_bit (U_BASIC_GREEK);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_SUPERSCRIPTS_AND_SUBSCRIPTS);
-      set_bit (U_CURRENCY_SYMBOLS);
-      set_bit (U_LETTERLIKE_SYMBOLS);
-      set_bit (U_ARROWS);
-      set_bit (U_MATHEMATICAL_OPERATORS);
-      set_bit (U_MISCELLANEOUS_TECHNICAL);
-      set_bit (U_BOX_DRAWING);
-      set_bit (U_BLOCK_ELEMENTS);
-      set_bit (U_GEOMETRIC_SHAPES);
-      set_bit (U_MISCELLANEOUS_SYMBOLS);
-      retval = TRUE;
-      break;
-    case RUSSIAN_CHARSET:
-      set_bit (U_BASIC_LATIN);
-      set_bit (U_LATIN_1_SUPPLEMENT);
-      set_bit (U_CYRILLIC);
-      set_bit (U_GENERAL_PUNCTUATION);
-      set_bit (U_LETTERLIKE_SYMBOLS);
-      set_bit (U_ARROWS);
-      set_bit (U_MATHEMATICAL_OPERATORS);
-      set_bit (U_MISCELLANEOUS_TECHNICAL);
-      set_bit (U_BOX_DRAWING);
-      set_bit (U_BLOCK_ELEMENTS);
-      set_bit (U_GEOMETRIC_SHAPES);
-      set_bit (U_MISCELLANEOUS_SYMBOLS);
-      retval = TRUE;
-      break;
-    }
-
-#undef set_bit
-  return retval;
-}
-
-static GdkWin32SingleFont *
-gdk_font_load_logfont (LOGFONT *lfp)
-{
-  GdkWin32SingleFont *singlefont;
-  HFONT hfont;
-  LOGFONT logfont;
-  CHARSETINFO csi;
-  HGDIOBJ oldfont;
-  int tries;
-  gchar face[100];
-
-  for (tries = 0; ; tries++)
-    {
-      GDK_NOTE (MISC, g_print ("... trying %ld,%ld,%ld,%ld,"
-			       "%ld,%d,%d,%d,"
-			       "%d,%d,%d,"
-			       "%d,%#.02x,\"%s\"\n",
-			       lfp->lfHeight, lfp->lfWidth,
-			       lfp->lfEscapement, lfp->lfOrientation,
-			       lfp->lfWeight, lfp->lfItalic,
-			       lfp->lfUnderline, lfp->lfStrikeOut,
-			       lfp->lfCharSet,
-			       lfp->lfOutPrecision, lfp->lfClipPrecision,
-			       lfp->lfQuality, lfp->lfPitchAndFamily,
-			       lfp->lfFaceName));
-      hfont = CreateFontIndirect (lfp);
-
-      if (hfont != NULL)
-	break;
-      
-      /* If we fail, try some similar fonts often found on Windows. */
-      if (tries == 0)
-	{
-	  if (g_ascii_strcasecmp (lfp->lfFaceName, "helvetica") == 0)
-	    strcpy (lfp->lfFaceName, "arial");
-	  else if (g_ascii_strcasecmp (lfp->lfFaceName, "new century schoolbook") == 0)
-	    strcpy (lfp->lfFaceName, "century schoolbook");
-	  else if (g_ascii_strcasecmp (lfp->lfFaceName, "courier") == 0)
-	    strcpy (lfp->lfFaceName, "courier new");
-	  else if (g_ascii_strcasecmp (lfp->lfFaceName, "lucida") == 0)
-	    strcpy (lfp->lfFaceName, "lucida sans unicode");
-	  else if (g_ascii_strcasecmp (lfp->lfFaceName, "lucidatypewriter") == 0)
-	    strcpy (lfp->lfFaceName, "lucida console");
-	  else if (g_ascii_strcasecmp (lfp->lfFaceName, "times") == 0)
-	    strcpy (lfp->lfFaceName, "times new roman");
-	}
-      else if (tries == 1)
-	{
-	  if (g_ascii_strcasecmp (lfp->lfFaceName, "courier") == 0)
-	    {
-	      strcpy (lfp->lfFaceName, "");
-	      lfp->lfPitchAndFamily |= FF_MODERN;
-	    }
-	  else if (g_ascii_strcasecmp (lfp->lfFaceName, "times new roman") == 0)
-	    {
-	      strcpy (lfp->lfFaceName, "");
-	      lfp->lfPitchAndFamily |= FF_ROMAN;
-	    }
-	  else if (g_ascii_strcasecmp (lfp->lfFaceName, "helvetica") == 0
-		   || g_ascii_strcasecmp (lfp->lfFaceName, "lucida") == 0)
-	    {
-	      strcpy (lfp->lfFaceName, "");
-	      lfp->lfPitchAndFamily |= FF_SWISS;
-	    }
-	  else
-	    {
-	      strcpy (lfp->lfFaceName, "");
-	      lfp->lfPitchAndFamily = (lfp->lfPitchAndFamily & 0x0F) | FF_DONTCARE;
-	    }
-	}
-      else
-	break;
-      tries++;
-    }
-
-  if (!hfont)
-    return NULL;
-      
-  singlefont = g_new (GdkWin32SingleFont, 1);
-  singlefont->hfont = hfont;
-  GetObject (singlefont->hfont, sizeof (logfont), &logfont);
-  oldfont = SelectObject (_gdk_display_hdc, singlefont->hfont);
-  memset (&singlefont->fs, 0, sizeof (singlefont->fs));
-  singlefont->charset = GetTextCharsetInfo (_gdk_display_hdc, &singlefont->fs, 0);
-  GetTextFace (_gdk_display_hdc, sizeof (face), face);
-  SelectObject (_gdk_display_hdc, oldfont);
-  if (TranslateCharsetInfo ((DWORD *) (gintptr) singlefont->charset, &csi,
-			    TCI_SRCCHARSET)
-      && singlefont->charset != MAC_CHARSET)
-    singlefont->codepage = csi.ciACP;
-  else
-    singlefont->codepage = 0;
-
-  GDK_NOTE (MISC, (g_print ("... = %p %s cs %s cp%d\n",
-			    singlefont->hfont, face,
-			    charset_name (singlefont->charset),
-			    singlefont->codepage),
-		   g_print ("... Unicode subranges:"),
-		   print_unicode_subranges (&singlefont->fs)));
-  if (check_unicode_subranges (singlefont->charset, &singlefont->fs))
-    GDK_NOTE (MISC, (g_print ("... Guesstimated Unicode subranges:"),
-		     print_unicode_subranges (&singlefont->fs)));
-
-  return singlefont;
-}
-
-static GdkWin32SingleFont *
-gdk_font_load_internal (const gchar *font_name)
-{
-  LOGFONT logfont;
-
-  char *fn;
-  int numfields, n1, n2;
-  char foundry[32], family[100], weight[32], slant[32], set_width[32],
-    spacing[32], registry[32], encoding[32];
-  char pixel_size[10], point_size[10], res_x[10], res_y[10], avg_width[10];
-  int c;
-  char *p;
-  int logpixelsy;
-
-  g_return_val_if_fail (font_name != NULL, NULL);
-
-  GDK_NOTE (MISC, g_print ("gdk_font_load_internal: %s\n", font_name));
-
-  numfields = sscanf (font_name,
-		      "-%30[^-]-%100[^-]-%30[^-]-%30[^-]-%30[^-]-%n",
-		      foundry,
-		      family,
-		      weight,
-		      slant,
-		      set_width,
-		      &n1);
-  if (numfields == 0)
-    {
-      /* Probably a plain Windows font name */
-      logfont.lfHeight = 0;
-      logfont.lfWidth = 0;
-      logfont.lfEscapement = 0;
-      logfont.lfOrientation = 0;
-      logfont.lfWeight = FW_DONTCARE;
-      logfont.lfItalic = FALSE;
-      logfont.lfUnderline = FALSE;
-      logfont.lfStrikeOut = FALSE;
-      logfont.lfCharSet = ANSI_CHARSET;
-      logfont.lfOutPrecision = OUT_TT_ONLY_PRECIS;
-      logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
-      logfont.lfQuality = PROOF_QUALITY;
-      logfont.lfPitchAndFamily = DEFAULT_PITCH;
-      fn = g_filename_from_utf8 (font_name, -1, NULL, NULL, NULL);
-      strcpy (logfont.lfFaceName, fn);
-      g_free (fn);
-    }
-  else if (numfields != 5)
-    {
-      g_warning ("gdk_font_load: font name %s illegal", font_name);
-      return NULL;
-    }
-  else
-    {
-      /* It must be a XLFD name */
-
-      /* Check for hex escapes in the font family,
-       * put in there by logfont_to_xlfd. Convert them in-place.
-       */
-      p = family;
-      while (*p)
-	{
-	  if (*p == '%' && isxdigit (p[1]) && isxdigit (p[2]))
-	    {
-	      sscanf (p+1, "%2x", &c);
-	      *p = c;
-	      strcpy (p+1, p+3);
-	    }
-	  p++;
-	}
-
-      /* Skip add_style which often is empty in the requested font name */
-      while (font_name[n1] && font_name[n1] != '-')
-	n1++;
-      numfields++;
-
-      numfields += sscanf (font_name + n1,
-			   "-%8[^-]-%8[^-]-%8[^-]-%8[^-]-%30[^-]-%8[^-]-%30[^-]-%30[^-]%n",
-			   pixel_size,
-			   point_size,
-			   res_x,
-			   res_y,
-			   spacing,
-			   avg_width,
-			   registry,
-			   encoding,
-			   &n2);
-
-      if (numfields != 14 || font_name[n1 + n2] != '\0')
-	{
-	  g_warning ("gdk_font_load: font name %s illegal", font_name);
-	  return NULL;
-	}
-
-      logpixelsy = GetDeviceCaps (_gdk_display_hdc, LOGPIXELSY);
-
-      if (strcmp (pixel_size, "*") == 0)
-	if (strcmp (point_size, "*") == 0)
-	  logfont.lfHeight = 0;
-	else
-	  logfont.lfHeight = -(int) (((double) atoi (point_size))/720.*logpixelsy);
-      else
-	logfont.lfHeight = -atoi (pixel_size);
-
-      logfont.lfWidth = 0;
-      logfont.lfEscapement = 0;
-      logfont.lfOrientation = 0;
-
-      if (g_ascii_strcasecmp (weight, "thin") == 0)
-	logfont.lfWeight = FW_THIN;
-      else if (g_ascii_strcasecmp (weight, "extralight") == 0)
-	logfont.lfWeight = FW_EXTRALIGHT;
-      else if (g_ascii_strcasecmp (weight, "ultralight") == 0)
-#ifdef FW_ULTRALIGHT
-	logfont.lfWeight = FW_ULTRALIGHT;
-#else
-	logfont.lfWeight = FW_EXTRALIGHT; /* In fact, FW_ULTRALIGHT really is 
-					   * defined as FW_EXTRALIGHT anyway.
-					   */
-#endif
-      else if (g_ascii_strcasecmp (weight, "light") == 0)
-	logfont.lfWeight = FW_LIGHT;
-      else if (g_ascii_strcasecmp (weight, "normal") == 0)
-	logfont.lfWeight = FW_NORMAL;
-      else if (g_ascii_strcasecmp (weight, "regular") == 0)
-	logfont.lfWeight = FW_REGULAR;
-      else if (g_ascii_strcasecmp (weight, "medium") == 0)
-	logfont.lfWeight = FW_MEDIUM;
-      else if (g_ascii_strcasecmp (weight, "semibold") == 0)
-	logfont.lfWeight = FW_SEMIBOLD;
-      else if (g_ascii_strcasecmp (weight, "demibold") == 0)
-#ifdef FW_DEMIBOLD
-	logfont.lfWeight = FW_DEMIBOLD;
-#else
-	logfont.lfWeight = FW_SEMIBOLD;	/* As above */
-#endif
-      else if (g_ascii_strcasecmp (weight, "bold") == 0)
-	logfont.lfWeight = FW_BOLD;
-      else if (g_ascii_strcasecmp (weight, "extrabold") == 0)
-	logfont.lfWeight = FW_EXTRABOLD;
-      else if (g_ascii_strcasecmp (weight, "ultrabold") == 0)
-#ifdef FW_ULTRABOLD
-	logfont.lfWeight = FW_ULTRABOLD;
-#else
-	logfont.lfWeight = FW_EXTRABOLD; /* As above */
-#endif
-      else if (g_ascii_strcasecmp (weight, "heavy") == 0)
-	logfont.lfWeight = FW_HEAVY;
-      else if (g_ascii_strcasecmp (weight, "black") == 0)
-#ifdef FW_BLACK
-	logfont.lfWeight = FW_BLACK;
-#else
-	logfont.lfWeight = FW_HEAVY;	/* As above */
-#endif
-      else
-	logfont.lfWeight = FW_DONTCARE;
-
-      if (g_ascii_strcasecmp (slant, "italic") == 0
-	  || g_ascii_strcasecmp (slant, "oblique") == 0
-	  || g_ascii_strcasecmp (slant, "i") == 0
-	  || g_ascii_strcasecmp (slant, "o") == 0)
-	logfont.lfItalic = TRUE;
-      else
-	logfont.lfItalic = FALSE;
-      logfont.lfUnderline = FALSE;
-      logfont.lfStrikeOut = FALSE;
-      if (g_ascii_strcasecmp (registry, "iso8859") == 0)
-	if (strcmp (encoding, "1") == 0)
-	  logfont.lfCharSet = ANSI_CHARSET;
-	else if (strcmp (encoding, "2") == 0)
-	  logfont.lfCharSet = EASTEUROPE_CHARSET;
-	else if (strcmp (encoding, "7") == 0)
-	  logfont.lfCharSet = GREEK_CHARSET;
-	else if (strcmp (encoding, "8") == 0)
-	  logfont.lfCharSet = HEBREW_CHARSET;
-	else if (strcmp (encoding, "9") == 0)
-	  logfont.lfCharSet = TURKISH_CHARSET;
-	else
-	  logfont.lfCharSet = ANSI_CHARSET; /* XXX ??? */
-      else if (g_ascii_strcasecmp (registry, "jisx0208.1983") == 0)
-	logfont.lfCharSet = SHIFTJIS_CHARSET;
-      else if (g_ascii_strcasecmp (registry, "ksc5601.1987") == 0)
-	logfont.lfCharSet = HANGEUL_CHARSET;
-      else if (g_ascii_strcasecmp (registry, "gb2312.1980") == 0)
-	logfont.lfCharSet = GB2312_CHARSET;
-      else if (g_ascii_strcasecmp (registry, "big5") == 0)
-	logfont.lfCharSet = CHINESEBIG5_CHARSET;
-      else if (g_ascii_strcasecmp (registry, "windows") == 0
-	       || g_ascii_strcasecmp (registry, "microsoft") == 0)
-	if (g_ascii_strcasecmp (encoding, "symbol") == 0)
-	  logfont.lfCharSet = SYMBOL_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "shiftjis") == 0)
-	  logfont.lfCharSet = SHIFTJIS_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "gb2312") == 0)
-	  logfont.lfCharSet = GB2312_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "hangeul") == 0)
-	  logfont.lfCharSet = HANGEUL_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "big5") == 0)
-	  logfont.lfCharSet = CHINESEBIG5_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "johab") == 0)
-	  logfont.lfCharSet = JOHAB_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "hebrew") == 0)
-	  logfont.lfCharSet = HEBREW_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "arabic") == 0)
-	  logfont.lfCharSet = ARABIC_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "greek") == 0)
-	  logfont.lfCharSet = GREEK_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "turkish") == 0)
-	  logfont.lfCharSet = TURKISH_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "easteurope") == 0)
-	  logfont.lfCharSet = EASTEUROPE_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "russian") == 0)
-	  logfont.lfCharSet = RUSSIAN_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "mac") == 0)
-	  logfont.lfCharSet = MAC_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "baltic") == 0)
-	  logfont.lfCharSet = BALTIC_CHARSET;
-	else if (g_ascii_strcasecmp (encoding, "cp1251") == 0)
-	  logfont.lfCharSet = RUSSIAN_CHARSET;
-	else
-	  logfont.lfCharSet = ANSI_CHARSET; /* XXX ??? */
-      else
-	logfont.lfCharSet = ANSI_CHARSET; /* XXX ??? */
-      logfont.lfOutPrecision = OUT_TT_PRECIS;
-      logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
-      logfont.lfQuality = PROOF_QUALITY;
-      if (g_ascii_strcasecmp (spacing, "m") == 0)
-	logfont.lfPitchAndFamily = FIXED_PITCH;
-      else if (g_ascii_strcasecmp (spacing, "p") == 0)
-	logfont.lfPitchAndFamily = VARIABLE_PITCH;
-      else 
-	logfont.lfPitchAndFamily = DEFAULT_PITCH;
-      fn = g_filename_from_utf8 (family, -1, NULL, NULL, NULL);
-      strcpy (logfont.lfFaceName, fn);
-      g_free (fn);
-    }
-
-  return gdk_font_load_logfont (&logfont);
-}
-
-static GdkFont *
-gdk_font_from_one_singlefont (GdkWin32SingleFont *singlefont)
-{
-  GdkFont *font;
-  GdkFontPrivateWin32 *private;
-  HGDIOBJ oldfont;
-  TEXTMETRIC textmetric;
-
-  private = g_new (GdkFontPrivateWin32, 1);
-  font = (GdkFont*) private;
-
-  private->base.ref_count = 1;
-  private->names = NULL;
-  private->fonts = g_slist_append (NULL, singlefont);
-
-  /* Pretend all fonts are fontsets... Gtktext and gtkentry work better
-   * that way, they use wide chars, which is necessary for non-ASCII
-   * chars to work. (Yes, even Latin-1, as we use Unicode internally.)
-   */
-  font->type = GDK_FONT_FONTSET;
-  oldfont = SelectObject (_gdk_display_hdc, singlefont->hfont);
-  GetTextMetrics (_gdk_display_hdc, &textmetric);
-  SelectObject (_gdk_display_hdc, oldfont);
-  font->ascent = textmetric.tmAscent;
-  font->descent = textmetric.tmDescent;
-
-  GDK_NOTE (MISC, g_print ("... asc %d desc %d\n",
-			   font->ascent, font->descent));
-
-  return font;
-}
-
-GdkFont*
-gdk_font_load_for_display (GdkDisplay  *display,
-                           const gchar *font_name)
-{
-  GdkFont *font;
-  GdkFontPrivateWin32 *private;
-  GdkWin32SingleFont *singlefont;
-  HGDIOBJ oldfont;
-  TEXTMETRIC textmetric;
-
-  g_return_val_if_fail (font_name != NULL, NULL);
-  g_return_val_if_fail (display == gdk_display_get_default (), NULL);
-
-  font = gdk_font_hash_lookup (GDK_FONT_FONTSET, font_name);
-  if (font)
-    return font;
-
-  private = g_new (GdkFontPrivateWin32, 1);
-  font = (GdkFont*) private;
-
-  singlefont = gdk_font_load_internal (font_name);
-
-  private->base.ref_count = 1;
-  private->names = NULL;
-  private->fonts = g_slist_append (NULL, singlefont);
-
-  /* Pretend all fonts are fontsets... Gtktext and gtkentry work better
-   * that way, they use wide chars, which is necessary for non-ASCII
-   * chars to work. (Yes, even Latin-1, as we use Unicode internally.)
-   */
-  font->type = GDK_FONT_FONTSET;
-  oldfont = SelectObject (_gdk_display_hdc, singlefont->hfont);
-  GetTextMetrics (_gdk_display_hdc, &textmetric);
-  SelectObject (_gdk_display_hdc, oldfont);
-  font->ascent = textmetric.tmAscent;
-  font->descent = textmetric.tmDescent;
-
-  GDK_NOTE (MISC, g_print ("... asc %d desc %d\n",
-			   font->ascent, font->descent));
-
-  gdk_font_hash_insert (GDK_FONT_FONTSET, font, font_name);
-
-  return gdk_font_from_one_singlefont (gdk_font_load_internal (font_name));
-}
-
-GdkFont*
-gdk_font_from_description_for_display (GdkDisplay           *display,
-                                       PangoFontDescription *font_desc)
-{
-  LOGFONT logfont;
-  int size;
-
-  g_return_val_if_fail (font_desc != NULL, NULL);
-  g_return_val_if_fail (display == gdk_display_get_default (), NULL);
-
-  size = PANGO_PIXELS (pango_font_description_get_size (font_desc));
-
-  logfont.lfHeight = - MulDiv (size,
-  			       GetDeviceCaps (_gdk_display_hdc, LOGPIXELSY),
-			       72);
-  logfont.lfWidth = 0;
-  logfont.lfEscapement = 0;
-  logfont.lfOrientation = 0;
-  logfont.lfWeight = FW_DONTCARE;
-  logfont.lfItalic = FALSE;
-  logfont.lfUnderline = FALSE;
-  logfont.lfStrikeOut = FALSE;
-  logfont.lfCharSet = ANSI_CHARSET;
-  logfont.lfOutPrecision = OUT_TT_ONLY_PRECIS;
-  logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
-  logfont.lfQuality = PROOF_QUALITY;
-  logfont.lfPitchAndFamily = DEFAULT_PITCH;
-  strcpy (logfont.lfFaceName, "Arial");
-
-  return gdk_font_from_one_singlefont (gdk_font_load_logfont (&logfont));
-}
-
-GdkFont*
-gdk_fontset_load (const gchar *fontset_name)
-{
-  GdkFont *font;
-  GdkFontPrivateWin32 *private;
-  GdkWin32SingleFont *singlefont;
-  HGDIOBJ oldfont;
-  TEXTMETRIC textmetric;
-  gchar *fs;
-  gchar *b, *p, *s;
-
-  g_return_val_if_fail (fontset_name != NULL, NULL);
-
-  font = gdk_font_hash_lookup (GDK_FONT_FONTSET, fontset_name);
-  if (font)
-    return font;
-
-  s = fs = g_strdup (fontset_name);
-  while (*s && isspace (*s))
-    s++;
-
-  g_return_val_if_fail (*s, NULL);
-
-  private = g_new (GdkFontPrivateWin32, 1);
-  font = (GdkFont*) private;
-
-  private->base.ref_count = 1;
-  private->names = NULL;
-  private->fonts = NULL;
-
-  font->type = GDK_FONT_FONTSET;
-  font->ascent = 0;
-  font->descent = 0;
-
-  while (TRUE)
-    {
-      if ((p = strchr (s, ',')) != NULL)
-	b = p;
-      else
-	b = s + strlen (s);
-
-      while (isspace (b[-1]))
-	b--;
-      *b = '\0';
-      singlefont = gdk_font_load_internal (s);
-      if (singlefont)
-	{
-	  private->fonts = g_slist_append (private->fonts, singlefont);
-	  oldfont = SelectObject (_gdk_display_hdc, singlefont->hfont);
-	  GetTextMetrics (_gdk_display_hdc, &textmetric);
-	  SelectObject (_gdk_display_hdc, oldfont);
-	  font->ascent = MAX (font->ascent, textmetric.tmAscent);
-	  font->descent = MAX (font->descent, textmetric.tmDescent);
-	}
-      if (p)
-	{
-	  s = p + 1;
-	  while (*s && isspace (*s))
-	    s++;
-	}
-      else
-	break;
-      if (!*s)
-	break;
-    }
-  
-  g_free (fs);
-
-  gdk_font_hash_insert (GDK_FONT_FONTSET, font, fontset_name);
-
-  return font;
-}
-
-GdkFont*
-gdk_fontset_load_for_display (GdkDisplay  *display,
-			      const gchar *fontset_name)
-{
-  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
-  
-  return gdk_fontset_load (fontset_name);
-}
-
-void
-_gdk_font_destroy (GdkFont *font)
-{
-  GdkFontPrivateWin32 *private = (GdkFontPrivateWin32 *) font;
-  GdkWin32SingleFont *singlefont;
-  GSList *list;
-
-  singlefont = (GdkWin32SingleFont *) private->fonts->data;
-  GDK_NOTE (MISC, g_print ("_gdk_font_destroy %p\n",
-			   singlefont->hfont));
-
-  gdk_font_hash_remove (font->type, font);
-  
-  switch (font->type)
-    {
-    case GDK_FONT_FONT:
-      DeleteObject (singlefont->hfont);
-      break;
-      
-    case GDK_FONT_FONTSET:
-      list = private->fonts;
-      while (list)
-	{
-	  singlefont = (GdkWin32SingleFont *) list->data;
-	  DeleteObject (singlefont->hfont);
-	  
-	  list = list->next;
-	}
-      g_slist_free (private->fonts);
-      break;
-    }
-  g_free (font);
-}
-
-gint
-_gdk_font_strlen (GdkFont     *font,
-		  const gchar *str)
-{
-  g_return_val_if_fail (font != NULL, -1);
-  g_return_val_if_fail (str != NULL, -1);
-
-  return strlen (str);
-}
-
-gint
-gdk_font_id (const GdkFont *font)
-{
-  const GdkFontPrivateWin32 *private;
-
-  g_return_val_if_fail (font != NULL, 0);
-
-  private = (const GdkFontPrivateWin32 *) font;
-
-  /* FIXME: What to do on Win64? */
-  if (font->type == GDK_FONT_FONT)
-    return (gint) (gintptr) ((GdkWin32SingleFont *) private->fonts->data)->hfont;
-  else
-    return 0;
-}
-
-gboolean
-gdk_font_equal (const GdkFont *fonta,
-                const GdkFont *fontb)
-{
-  const GdkFontPrivateWin32 *privatea;
-  const GdkFontPrivateWin32 *privateb;
-
-  g_return_val_if_fail (fonta != NULL, FALSE);
-  g_return_val_if_fail (fontb != NULL, FALSE);
-
-  privatea = (const GdkFontPrivateWin32 *) fonta;
-  privateb = (const GdkFontPrivateWin32 *) fontb;
-
-  if (fonta->type == GDK_FONT_FONT && fontb->type == GDK_FONT_FONT)
-    return (((GdkWin32SingleFont *) privatea->fonts->data)->hfont
-	    == ((GdkWin32SingleFont *) privateb->fonts->data)->hfont);
-  else if (fonta->type == GDK_FONT_FONTSET && fontb->type == GDK_FONT_FONTSET)
-    {
-      GSList *lista = privatea->fonts;
-      GSList *listb = privateb->fonts;
-
-      while (lista && listb)
-	{
-	  if (((GdkWin32SingleFont *) lista->data)->hfont
-	      != ((GdkWin32SingleFont *) listb->data)->hfont)
-	    return FALSE;
-	  lista = lista->next;
-	  listb = listb->next;
-	}
-      if (lista || listb)
-	return FALSE;
-      else
-	return TRUE;
-    }
-  else
-    return FALSE;
-}
-
-/* Return the Unicode Subset bitfield number for a Unicode character */
-
-static int
-unicode_classify (wchar_t wc)
-{
-  int min = 0;
-  int max = G_N_ELEMENTS (utab) - 1;
-  int mid;
-
-  while (max >= min)
-    {
-      mid = (min + max) / 2;
-      if (utab[mid].high < wc)
-	min = mid + 1;
-      else if (wc < utab[mid].low)
-	max = mid - 1;
-      else if (utab[mid].low <= wc && wc <= utab[mid].high)
-	return utab[mid].bit;
-      else
-	break;
-    }
-  /* Fallback... returning -1 might cause problems. Returning
-   * U_BASIC_LATIN won't help handling strange characters, but won't
-   * do harm either.
-   */
-  return U_BASIC_LATIN;
-}
-
-void
-_gdk_wchar_text_handle (GdkFont       *font,
-		       const wchar_t *wcstr,
-		       int            wclen,
-		       void         (*handler)(GdkWin32SingleFont *,
-					       const wchar_t *,
-					       int,
-					       void *),
-		       void          *arg)
-{
-  GdkFontPrivateWin32 *private;
-  GdkWin32SingleFont *singlefont;
-  GSList *list;
-  int  block;
-  const wchar_t *start, *end, *wcp;
-
-  wcp = wcstr;
-  end = wcp + wclen;
-  private = (GdkFontPrivateWin32 *) font;
-
-  g_assert (private->base.ref_count > 0);
-
-  GDK_NOTE (MISC, g_print ("_gdk_wchar_text_handle: "));
-
-  while (wcp < end)
-    {
-      /* Split Unicode string into pieces of the same class */
-      start = wcp;
-      block = unicode_classify (*wcp);
-      while (wcp + 1 < end && unicode_classify (wcp[1]) == block)
-	wcp++;
-
-      /* Find a font in the fontset that can handle this class */
-      list = private->fonts;
-      while (list)
-	{
-	  singlefont = (GdkWin32SingleFont *) list->data;
-	  
-	  if (singlefont->fs.fsUsb[block/32] & (1 << (block % 32)))
-	    break;
-
-	  list = list->next;
-	}
-
-      if (!list)
-	singlefont = NULL;
-
-      GDK_NOTE (MISC, g_print ("%" G_GSIZE_FORMAT ":%" G_GSIZE_FORMAT ":%d:%p ",
-			       start-wcstr, wcp-wcstr, block,
-			       (singlefont ? singlefont->hfont : 0)));
-
-      /* Call the callback function */
-      (*handler) (singlefont, start, wcp+1 - start, arg);
-      wcp++;
-    }
-  GDK_NOTE (MISC, g_print ("\n"));
-}
-
-typedef struct
-{
-  SIZE total;
-} gdk_text_size_arg;
-
-static void
-gdk_text_size_handler (GdkWin32SingleFont *singlefont,
-		       const wchar_t      *wcstr,
-		       int		   wclen,
-		       void		  *argp)
-{
-  SIZE this_size;
-  HGDIOBJ oldfont;
-  gdk_text_size_arg *arg = (gdk_text_size_arg *) argp;
-
-  if (!singlefont)
-    return;
-
-  if ((oldfont = SelectObject (_gdk_display_hdc, singlefont->hfont)) == NULL)
-    {
-      WIN32_GDI_FAILED ("SelectObject");
-      return;
-    }
-  GetTextExtentPoint32W (_gdk_display_hdc, wcstr, wclen, &this_size);
-  SelectObject (_gdk_display_hdc, oldfont);
-
-  arg->total.cx += this_size.cx;
-  arg->total.cy = MAX (arg->total.cy, this_size.cy);
-}
-
-gint
-gdk_text_width (GdkFont      *font,
-		const gchar  *text,
-		gint          text_length)
-{
-  gint width = -1;
-
-  gdk_text_extents (font, text, text_length, NULL, NULL, &width, NULL, NULL);
-
-  return width;
-}
-
-gint
-gdk_text_width_wc (GdkFont	  *font,
-		   const GdkWChar *text,
-		   gint		   text_length)
-{
-  gint width = -1;
-
-  gdk_text_extents_wc (font, text, text_length, NULL, NULL, &width, NULL, NULL);
-
-  return width;
-}
-
-void
-gdk_text_extents (GdkFont     *font,
-                  const gchar *text,
-                  gint         text_length,
-		  gint        *lbearing,
-		  gint        *rbearing,
-		  gint        *width,
-		  gint        *ascent,
-		  gint        *descent)
-{
-  gdk_text_size_arg arg;
-  glong wlen;
-  wchar_t *wcstr, wc;
-
-  g_return_if_fail (font != NULL);
-  g_return_if_fail (text != NULL);
-
-  if (text_length == 0)
-    {
-      if (lbearing)
-	*lbearing = 0;
-      if (rbearing)
-	*rbearing = 0;
-      if (width)
-	*width = 0;
-      if (ascent)
-	*ascent = 0;
-      if (descent)
-	*descent = 0;
-      return;
-    }
-
-  g_assert (font->type == GDK_FONT_FONT || font->type == GDK_FONT_FONTSET);
-
-  arg.total.cx = arg.total.cy = 0;
-
-  if (text_length == 1)
-    {
-      wc = (guchar) text[0];
-      _gdk_wchar_text_handle (font, &wc, 1, gdk_text_size_handler, &arg);
-    }
-  else
-    {
-      wcstr = g_utf8_to_utf16 (text, text_length, NULL, &wlen, NULL);
-      _gdk_wchar_text_handle (font, wcstr, wlen, gdk_text_size_handler, &arg);
-      g_free (wcstr);
-    }
-
-  /* XXX This is quite bogus */
-  if (lbearing)
-    *lbearing = 0;
-  if (rbearing)
-    *rbearing = arg.total.cx;
-  /* What should be the difference between width and rbearing? */
-  if (width)
-    *width = arg.total.cx;
-  if (ascent)
-    *ascent = arg.total.cy + 1;
-  if (descent)
-    *descent = font->descent + 1;
-}
-
-void
-gdk_text_extents_wc (GdkFont        *font,
-		     const GdkWChar *text,
-		     gint            text_length,
-		     gint           *lbearing,
-		     gint           *rbearing,
-		     gint           *width,
-		     gint           *ascent,
-		     gint           *descent)
-{
-  gdk_text_size_arg arg;
-  wchar_t *wcstr;
-  gint i;
-
-  g_return_if_fail (font != NULL);
-  g_return_if_fail (text != NULL);
-
-  if (text_length == 0)
-    {
-      if (lbearing)
-	*lbearing = 0;
-      if (rbearing)
-	*rbearing = 0;
-      if (width)
-	*width = 0;
-      if (ascent)
-	*ascent = 0;
-      if (descent)
-	*descent = 0;
-      return;
-    }
-
-  g_assert (font->type == GDK_FONT_FONT || font->type == GDK_FONT_FONTSET);
-
-  if (sizeof (wchar_t) != sizeof (GdkWChar))
-    {
-      wcstr = g_new (wchar_t, text_length);
-      for (i = 0; i < text_length; i++)
-	wcstr[i] = text[i];
-    }
-  else
-    wcstr = (wchar_t *) text;
-
-  arg.total.cx = arg.total.cy = 0;
-
-  _gdk_wchar_text_handle (font, wcstr, text_length,
-			 gdk_text_size_handler, &arg);
-
-  if (sizeof (wchar_t) != sizeof (GdkWChar))
-    g_free (wcstr);
-
-  /* XXX This is quite bogus */
-  if (lbearing)
-    *lbearing = 0;
-  if (rbearing)
-    *rbearing = arg.total.cx;
-  if (width)
-    *width = arg.total.cx;
-  if (ascent)
-    *ascent = arg.total.cy + 1;
-  if (descent)
-    *descent = font->descent + 1;
-}
-
-GdkDisplay* 
-gdk_font_get_display (GdkFont* font)
-{
-  return _gdk_display;
-}
diff --git a/gdk/win32/gdkprivate-win32.h b/gdk/win32/gdkprivate-win32.h
index 26e5e7d..b62d0ed 100644
--- a/gdk/win32/gdkprivate-win32.h
+++ b/gdk/win32/gdkprivate-win32.h
@@ -120,7 +120,6 @@ GdkScreen *GDK_WINDOW_SCREEN(GObject *win);
 typedef struct _GdkColormapPrivateWin32 GdkColormapPrivateWin32;
 typedef struct _GdkCursorPrivate        GdkCursorPrivate;
 typedef struct _GdkWin32SingleFont      GdkWin32SingleFont;
-typedef struct _GdkFontPrivateWin32     GdkFontPrivateWin32;
 typedef struct _GdkGCWin32		GdkGCWin32;
 typedef struct _GdkGCWin32Class		GdkGCWin32Class;
 
@@ -138,17 +137,6 @@ struct _GdkWin32SingleFont
   FONTSIGNATURE fs;
 };
 
-#ifndef GDK_DISABLE_DEPRECATED
-
-struct _GdkFontPrivateWin32
-{
-  GdkFontPrivate base;
-  GSList *fonts;		/* List of GdkWin32SingleFonts */
-  GSList *names;
-};
-
-#endif /* GDK_DISABLE_DEPRECATED */
-
 struct _GdkVisualClass
 {
   GObjectClass parent_class;
@@ -188,7 +176,6 @@ struct _GdkGCWin32
 
   GdkGCValuesMask values_mask;
 
-  GdkFont *font;
   gint rop2;
   GdkSubwindowMode subwindow_mode;
   gint graphics_exposures;
@@ -293,15 +280,6 @@ void    _gdk_selection_property_delete (GdkWindow *);
 
 void    _gdk_dropfiles_store (gchar *data);
 
-void    _gdk_wchar_text_handle    (GdkFont       *font,
-				   const wchar_t *wcstr,
-				   int            wclen,
-				   void         (*handler)(GdkWin32SingleFont *,
-							   const wchar_t *,
-							   int,
-							   void *),
-				   void          *arg);
-
 void       _gdk_push_modal_window   (GdkWindow *window);
 void       _gdk_remove_modal_window (GdkWindow *window);
 GdkWindow *_gdk_modal_current       ();
diff --git a/gdk/x11/Makefile.am b/gdk/x11/Makefile.am
index 5d41ec8..14949b8 100644
--- a/gdk/x11/Makefile.am
+++ b/gdk/x11/Makefile.am
@@ -29,7 +29,6 @@ libgdk_x11_la_SOURCES =    	\
 	gdkdrawable-x11.c  	\
 	gdkdrawable-x11.h	\
 	gdkevents-x11.c	   	\
-	gdkfont-x11.c	   	\
 	gdkgc-x11.c 	   	\
 	gdkgeometry-x11.c  	\
 	gdkglobals-x11.c   	\
diff --git a/gdk/x11/gdkdrawable-x11.c b/gdk/x11/gdkdrawable-x11.c
index ab98b7f..42073d3 100644
--- a/gdk/x11/gdkdrawable-x11.c
+++ b/gdk/x11/gdkdrawable-x11.c
@@ -71,20 +71,6 @@ static void gdk_x11_draw_polygon   (GdkDrawable    *drawable,
 				    gboolean        filled,
 				    GdkPoint       *points,
 				    gint            npoints);
-static void gdk_x11_draw_text      (GdkDrawable    *drawable,
-				    GdkFont        *font,
-				    GdkGC          *gc,
-				    gint            x,
-				    gint            y,
-				    const gchar    *text,
-				    gint            text_length);
-static void gdk_x11_draw_text_wc   (GdkDrawable    *drawable,
-				    GdkFont        *font,
-				    GdkGC          *gc,
-				    gint            x,
-				    gint            y,
-				    const GdkWChar *text,
-				    gint            text_length);
 static void gdk_x11_draw_drawable  (GdkDrawable    *drawable,
 				    GdkGC          *gc,
 				    GdkPixmap      *src,
@@ -158,8 +144,6 @@ _gdk_drawable_impl_x11_class_init (GdkDrawableImplX11Class *klass)
   drawable_class->draw_rectangle = gdk_x11_draw_rectangle;
   drawable_class->draw_arc = gdk_x11_draw_arc;
   drawable_class->draw_polygon = gdk_x11_draw_polygon;
-  drawable_class->draw_text = gdk_x11_draw_text;
-  drawable_class->draw_text_wc = gdk_x11_draw_text_wc;
   drawable_class->draw_drawable_with_src = gdk_x11_draw_drawable;
   drawable_class->draw_points = gdk_x11_draw_points;
   drawable_class->draw_segments = gdk_x11_draw_segments;
@@ -531,103 +515,6 @@ gdk_x11_draw_polygon (GdkDrawable *drawable,
   g_free (tmp_points);
 }
 
-/* gdk_x11_draw_text
- *
- * Modified by Li-Da Lho to draw 16 bits and Multibyte strings
- *
- * Interface changed: add "GdkFont *font" to specify font or fontset explicitely
- */
-static void
-gdk_x11_draw_text (GdkDrawable *drawable,
-		   GdkFont     *font,
-		   GdkGC       *gc,
-		   gint         x,
-		   gint         y,
-		   const gchar *text,
-		   gint         text_length)
-{
-  GdkDrawableImplX11 *impl;
-  Display *xdisplay;
-
-  impl = GDK_DRAWABLE_IMPL_X11 (drawable);
-  xdisplay = GDK_SCREEN_XDISPLAY (impl->screen);
-  
-  if (font->type == GDK_FONT_FONT)
-    {
-      XFontStruct *xfont = (XFontStruct *) GDK_FONT_XFONT (font);
-      XSetFont(xdisplay, GDK_GC_GET_XGC (gc), xfont->fid);
-      if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
-	{
-	  XDrawString (xdisplay, impl->xid,
-		       GDK_GC_GET_XGC (gc), x, y, text, text_length);
-	}
-      else
-	{
-	  XDrawString16 (xdisplay, impl->xid,
-			 GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2);
-	}
-    }
-  else if (font->type == GDK_FONT_FONTSET)
-    {
-      XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font);
-      XmbDrawString (xdisplay, impl->xid,
-		     fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length);
-    }
-  else
-    g_error("undefined font type\n");
-}
-
-static void
-gdk_x11_draw_text_wc (GdkDrawable    *drawable,
-		      GdkFont	     *font,
-		      GdkGC	     *gc,
-		      gint	      x,
-		      gint	      y,
-		      const GdkWChar *text,
-		      gint	      text_length)
-{
-  GdkDrawableImplX11 *impl;
-  Display *xdisplay;
-
-  impl = GDK_DRAWABLE_IMPL_X11 (drawable);
-  xdisplay = GDK_SCREEN_XDISPLAY (impl->screen);
-  
-  if (font->type == GDK_FONT_FONT)
-    {
-      XFontStruct *xfont = (XFontStruct *) GDK_FONT_XFONT (font);
-      gchar *text_8bit;
-      gint i;
-      XSetFont(xdisplay, GDK_GC_GET_XGC (gc), xfont->fid);
-      text_8bit = g_new (gchar, text_length);
-      for (i=0; i<text_length; i++) text_8bit[i] = text[i];
-      XDrawString (xdisplay, impl->xid,
-                   GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length);
-      g_free (text_8bit);
-    }
-  else if (font->type == GDK_FONT_FONTSET)
-    {
-      if (sizeof(GdkWChar) == sizeof(wchar_t))
-	{
-	  XwcDrawString (xdisplay, impl->xid,
-			 (XFontSet) GDK_FONT_XFONT (font),
-			 GDK_GC_GET_XGC (gc), x, y, (wchar_t *)text, text_length);
-	}
-      else
-	{
-	  wchar_t *text_wchar;
-	  gint i;
-	  text_wchar = g_new (wchar_t, text_length);
-	  for (i=0; i<text_length; i++) text_wchar[i] = text[i];
-	  XwcDrawString (xdisplay, impl->xid,
-			 (XFontSet) GDK_FONT_XFONT (font),
-			 GDK_GC_GET_XGC (gc), x, y, text_wchar, text_length);
-	  g_free (text_wchar);
-	}
-    }
-  else
-    g_error("undefined font type\n");
-}
-
 static void
 gdk_x11_draw_drawable (GdkDrawable *drawable,
 		       GdkGC       *gc,
diff --git a/gdk/x11/gdkfont-x11.c b/gdk/x11/gdkfont-x11.c
deleted file mode 100644
index e47df1f..0000000
--- a/gdk/x11/gdkfont-x11.c
+++ /dev/null
@@ -1,848 +0,0 @@
-/* GDK - The GIMP Drawing Kit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GTK+ Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#undef GDK_DISABLE_DEPRECATED
-
-#include "config.h"
-#include <X11/Xlib.h>
-#include <X11/Xos.h>
-#include <locale.h>
-
-#include "gdkx.h"
-#include "gdkfont.h"
-#include "gdkprivate-x11.h"
-#include "gdkinternals.h"
-#include "gdkdisplay-x11.h"
-#include "gdkscreen-x11.h"
-#include "gdkalias.h"
-
-typedef struct _GdkFontPrivateX        GdkFontPrivateX;
-
-struct _GdkFontPrivateX
-{
-  GdkFontPrivate base;
-  /* XFontStruct *xfont; */
-  /* generic pointer point to XFontStruct or XFontSet */
-  gpointer xfont;
-  GdkDisplay *display;
-
-  GSList *names;
-  XID xid;
-};
-
-static GHashTable *
-gdk_font_name_hash_get (GdkDisplay *display)
-{
-  GHashTable *result;
-  static GQuark font_name_quark = 0;
-
-  if (!font_name_quark)
-    font_name_quark = g_quark_from_static_string ("gdk-font-hash");
-
-  result = g_object_get_qdata (G_OBJECT (display), font_name_quark);
-
-  if (!result)
-    {
-      result = g_hash_table_new (g_str_hash, g_str_equal);
-      g_object_set_qdata_full (G_OBJECT (display),
-         font_name_quark, result, (GDestroyNotify) g_hash_table_destroy);
-    }
-
-  return result;
-}
-
-static GHashTable *
-gdk_fontset_name_hash_get (GdkDisplay *display)
-{
-  GHashTable *result;
-  static GQuark fontset_name_quark = 0;
-  
-  if (!fontset_name_quark)
-    fontset_name_quark = g_quark_from_static_string ("gdk-fontset-hash");
-
-  result = g_object_get_qdata (G_OBJECT (display), fontset_name_quark);
-
-  if (!result)
-    {
-      result = g_hash_table_new (g_str_hash, g_str_equal);
-      g_object_set_qdata_full (G_OBJECT (display),
-         fontset_name_quark, result, (GDestroyNotify) g_hash_table_destroy);
-    }
-
-  return result;
-}
-
-/** 
- * gdk_font_get_display:
- * @font: the #GdkFont.
- *
- * Returns the #GdkDisplay for @font.
- *
- * Returns: the corresponding #GdkDisplay.
- *
- * Since: 2.2
- **/
-GdkDisplay* 
-gdk_font_get_display (GdkFont* font)
-{
-  return ((GdkFontPrivateX *)font)->display;
-}
-
-static void
-gdk_font_hash_insert (GdkFontType  type, 
-		      GdkFont     *font, 
-		      const gchar *font_name)
-{
-  GdkFontPrivateX *private = (GdkFontPrivateX *)font;
-  GHashTable *hash = (type == GDK_FONT_FONT) ?
-    gdk_font_name_hash_get (private->display) : gdk_fontset_name_hash_get (private->display);
-
-  private->names = g_slist_prepend (private->names, g_strdup (font_name));
-  g_hash_table_insert (hash, private->names->data, font);
-}
-
-static void
-gdk_font_hash_remove (GdkFontType type, 
-		      GdkFont    *font)
-{
-  GdkFontPrivateX *private = (GdkFontPrivateX *)font;
-  GSList *tmp_list;
-  GHashTable *hash = (type == GDK_FONT_FONT) ?
-    gdk_font_name_hash_get (private->display) : gdk_fontset_name_hash_get (private->display);
-
-  tmp_list = private->names;
-  while (tmp_list)
-    {
-      g_hash_table_remove (hash, tmp_list->data);
-      g_free (tmp_list->data);
-      
-      tmp_list = tmp_list->next;
-    }
-
-  g_slist_free (private->names);
-  private->names = NULL;
-}
-
-static GdkFont *
-gdk_font_hash_lookup (GdkDisplay  *display, 
-		      GdkFontType  type, 
-		      const gchar *font_name)
-{
-  GdkFont *result;
-  GHashTable *hash;
-  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
-
-  hash = (type == GDK_FONT_FONT) ? gdk_font_name_hash_get (display) : 
-				   gdk_fontset_name_hash_get (display);
-  if (!hash)
-    return NULL;
-  else
-    {
-      result = g_hash_table_lookup (hash, font_name);
-      if (result)
-	gdk_font_ref (result);
-      
-      return result;
-    }
-}
-
-/**
- * gdk_font_load_for_display:
- * @display: a #GdkDisplay
- * @font_name: a XLFD describing the font to load.
- * @returns: a #GdkFont, or %NULL if the font could not be loaded.
- *
- * Loads a font for use on @display.
- *
- * The font may be newly loaded or looked up the font in a cache. 
- * You should make no assumptions about the initial reference count.
- *
- * Since: 2.2
- */
-GdkFont *
-gdk_font_load_for_display (GdkDisplay  *display, 
-			   const gchar *font_name)
-{
-  GdkFont *font;
-  GdkFontPrivateX *private;
-  XFontStruct *xfont;
-
-  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
-  g_return_val_if_fail (font_name != NULL, NULL);
-  
-  font = gdk_font_hash_lookup (display, GDK_FONT_FONT, font_name);
-  if (font)
-    return font;
-
-  xfont = XLoadQueryFont (GDK_DISPLAY_XDISPLAY (display), font_name);
-  if (xfont == NULL)
-    return NULL;
-
-  font = gdk_font_lookup_for_display (display, xfont->fid);
-  if (font != NULL) 
-    {
-      private = (GdkFontPrivateX *) font;
-      if (xfont != private->xfont)
-	XFreeFont (GDK_DISPLAY_XDISPLAY (display), xfont);
-
-      gdk_font_ref (font);
-    }
-  else
-    {
-      private = g_new (GdkFontPrivateX, 1);
-      private->display = display;
-      private->xfont = xfont;
-      private->base.ref_count = 1;
-      private->names = NULL;
-      private->xid = xfont->fid | XID_FONT_BIT;
- 
-      font = (GdkFont*) private;
-      font->type = GDK_FONT_FONT;
-      font->ascent =  xfont->ascent;
-      font->descent = xfont->descent;
-      
-      _gdk_xid_table_insert (display, &private->xid, font);
-    }
-
-  gdk_font_hash_insert (GDK_FONT_FONT, font, font_name);
-
-  return font;
-}
-
-/**
- * gdk_font_from_description_for_display:
- * @display: a #GdkDisplay
- * @font_desc: a #PangoFontDescription.
- * 
- * Loads a #GdkFont based on a Pango font description for use on @display. 
- * This font will only be an approximation of the Pango font, and
- * internationalization will not be handled correctly. This function
- * should only be used for legacy code that cannot be easily converted
- * to use Pango. Using Pango directly will produce better results.
- * 
- * Return value: the newly loaded font, or %NULL if the font
- * cannot be loaded.
- *
- * Since: 2.2
- */
-GdkFont *
-gdk_font_from_description_for_display (GdkDisplay           *display,
-				       PangoFontDescription *font_desc)
-{
-  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
-  g_return_val_if_fail (font_desc != NULL, NULL);
-
-  return gdk_font_load_for_display (display, "fixed");
-}
-
-/**
- * gdk_fontset_load_for_display:
- * @display: a #GdkDisplay
- * @fontset_name: a comma-separated list of XLFDs describing
- *   the component fonts of the fontset to load.
- * @returns: a #GdkFont, or %NULL if the fontset could not be loaded.
- * 
- * Loads a fontset for use on @display.
- *
- * The fontset may be newly loaded or looked up in a cache. 
- * You should make no assumptions about the initial reference count.
- *
- * Since: 2.2
- */
-GdkFont *
-gdk_fontset_load_for_display (GdkDisplay  *display,
-			      const gchar *fontset_name)
-{
-  GdkFont *font;
-  GdkFontPrivateX *private;
-  XFontSet fontset;
-  gint  missing_charset_count;
-  gchar **missing_charset_list;
-  gchar *def_string;
-
-  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
-  
-  font = gdk_font_hash_lookup (display, GDK_FONT_FONTSET, fontset_name);
-  if (font)
-    return font;
-
-  private = g_new (GdkFontPrivateX, 1);
-  font = (GdkFont*) private;
-
-  private->display = display;
-  fontset = XCreateFontSet (GDK_DISPLAY_XDISPLAY (display), fontset_name,
-			    &missing_charset_list, &missing_charset_count,
-			    &def_string);
-
-  if (missing_charset_count)
-    {
-      gint i;
-      g_printerr ("The font \"%s\" does not support all the required character sets for the current locale \"%s\"\n",
-                 fontset_name, setlocale (LC_ALL, NULL));
-      for (i=0;i<missing_charset_count;i++)
-	g_printerr ("  (Missing character set \"%s\")\n",
-                    missing_charset_list[i]);
-      XFreeStringList (missing_charset_list);
-    }
-
-  private->base.ref_count = 1;
-
-  if (!fontset)
-    {
-      g_free (font);
-      return NULL;
-    }
-  else
-    {
-      gint num_fonts;
-      gint i;
-      XFontStruct **font_structs;
-      gchar **font_names;
-      
-      private->xfont = fontset;
-      font->type = GDK_FONT_FONTSET;
-      num_fonts = XFontsOfFontSet (fontset, &font_structs, &font_names);
-
-      font->ascent = font->descent = 0;
-      
-      for (i = 0; i < num_fonts; i++)
-	{
-	  font->ascent = MAX (font->ascent, font_structs[i]->ascent);
-	  font->descent = MAX (font->descent, font_structs[i]->descent);
-	}
- 
-      private->names = NULL;
-      gdk_font_hash_insert (GDK_FONT_FONTSET, font, fontset_name);
-      
-      return font;
-    }
-}
-
-/**
- * gdk_fontset_load:
- * @fontset_name: a comma-separated list of XLFDs describing
- *     the component fonts of the fontset to load.
- * 
- * Loads a fontset.
- *
- * The fontset may be newly loaded or looked up in a cache. 
- * You should make no assumptions about the initial reference count.
- * 
- * Return value: a #GdkFont, or %NULL if the fontset could not be loaded.
- **/
-GdkFont*
-gdk_fontset_load (const gchar *fontset_name)
-{
-  return gdk_fontset_load_for_display (gdk_display_get_default (), fontset_name);
-}
-
-void
-_gdk_font_destroy (GdkFont *font)
-{
-  GdkFontPrivateX *private = (GdkFontPrivateX *)font;
-  
-  gdk_font_hash_remove (font->type, font);
-      
-  switch (font->type)
-    {
-    case GDK_FONT_FONT:
-      _gdk_xid_table_remove (private->display, private->xid);
-      XFreeFont (GDK_DISPLAY_XDISPLAY (private->display),
-		  (XFontStruct *) private->xfont);
-      break;
-    case GDK_FONT_FONTSET:
-      XFreeFontSet (GDK_DISPLAY_XDISPLAY (private->display),
-		    (XFontSet) private->xfont);
-      break;
-    default:
-      g_error ("unknown font type.");
-      break;
-    }
-  g_free (font);
-}
-
-gint
-_gdk_font_strlen (GdkFont     *font,
-		  const gchar *str)
-{
-  GdkFontPrivateX *font_private;
-  gint length = 0;
-
-  g_return_val_if_fail (font != NULL, -1);
-  g_return_val_if_fail (str != NULL, -1);
-
-  font_private = (GdkFontPrivateX*) font;
-
-  if (font->type == GDK_FONT_FONT)
-    {
-      XFontStruct *xfont = (XFontStruct *) font_private->xfont;
-      if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
-	{
-	  length = strlen (str);
-	}
-      else
-	{
-	  guint16 *string_2b = (guint16 *)str;
-	    
-	  while (*(string_2b++))
-	    length++;
-	}
-    }
-  else if (font->type == GDK_FONT_FONTSET)
-    {
-      length = strlen (str);
-    }
-  else
-    g_error("undefined font type\n");
-
-  return length;
-}
-
-/**
- * gdk_font_id:
- * @font: a #GdkFont.
- * 
- * Returns the X Font ID for the given font. 
- * 
- * Return value: the numeric X Font ID
- **/
-gint
-gdk_font_id (const GdkFont *font)
-{
-  const GdkFontPrivateX *font_private;
-
-  g_return_val_if_fail (font != NULL, 0);
-
-  font_private = (const GdkFontPrivateX*) font;
-
-  if (font->type == GDK_FONT_FONT)
-    {
-      return ((XFontStruct *) font_private->xfont)->fid;
-    }
-  else
-    {
-      return 0;
-    }
-}
-
-/**
- * gdk_font_equal:
- * @fonta: a #GdkFont.
- * @fontb: another #GdkFont.
- * 
- * Compares two fonts for equality. Single fonts compare equal
- * if they have the same X font ID. This operation does
- * not currently work correctly for fontsets.
- * 
- * Return value: %TRUE if the fonts are equal.
- **/
-gboolean
-gdk_font_equal (const GdkFont *fonta,
-                const GdkFont *fontb)
-{
-  const GdkFontPrivateX *privatea;
-  const GdkFontPrivateX *privateb;
-
-  g_return_val_if_fail (fonta != NULL, FALSE);
-  g_return_val_if_fail (fontb != NULL, FALSE);
-
-  privatea = (const GdkFontPrivateX*) fonta;
-  privateb = (const GdkFontPrivateX*) fontb;
-
-  if (fonta->type == GDK_FONT_FONT && fontb->type == GDK_FONT_FONT)
-    {
-      return (((XFontStruct *) privatea->xfont)->fid ==
-	      ((XFontStruct *) privateb->xfont)->fid);
-    }
-  else if (fonta->type == GDK_FONT_FONTSET && fontb->type == GDK_FONT_FONTSET)
-    {
-      gchar *namea, *nameb;
-
-      namea = XBaseFontNameListOfFontSet((XFontSet) privatea->xfont);
-      nameb = XBaseFontNameListOfFontSet((XFontSet) privateb->xfont);
-      
-      return (strcmp(namea, nameb) == 0);
-    }
-  else
-    /* fontset != font */
-    return FALSE;
-}
-
-/**
- * gdk_text_width:
- * @font: a #GdkFont
- * @text: the text to measure.
- * @text_length: the length of the text in bytes.
- * 
- * Determines the width of a given string.
- * 
- * Return value: the width of the string in pixels.
- **/
-gint
-gdk_text_width (GdkFont      *font,
-		const gchar  *text,
-		gint          text_length)
-{
-  GdkFontPrivateX *private;
-  gint width;
-  XFontStruct *xfont;
-  XFontSet fontset;
-
-  g_return_val_if_fail (font != NULL, -1);
-  g_return_val_if_fail (text != NULL, -1);
-
-  private = (GdkFontPrivateX*) font;
-
-  switch (font->type)
-    {
-    case GDK_FONT_FONT:
-      xfont = (XFontStruct *) private->xfont;
-      if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
-	{
-	  width = XTextWidth (xfont, text, text_length);
-	}
-      else
-	{
-	  width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2);
-	}
-      break;
-    case GDK_FONT_FONTSET:
-      fontset = (XFontSet) private->xfont;
-      width = XmbTextEscapement (fontset, text, text_length);
-      break;
-    default:
-      width = 0;
-    }
-  return width;
-}
-
-/**
- * gdk_text_width_wc:
- * @font: a #GdkFont
- * @text: the text to measure.
- * @text_length: the length of the text in characters.
- * 
- * Determines the width of a given wide-character string.
- * 
- * Return value: the width of the string in pixels.
- **/
-gint
-gdk_text_width_wc (GdkFont	  *font,
-		   const GdkWChar *text,
-		   gint		   text_length)
-{
-  GdkFontPrivateX *private;
-  gint width;
-  XFontStruct *xfont;
-  XFontSet fontset;
-
-  g_return_val_if_fail (font != NULL, -1);
-  g_return_val_if_fail (text != NULL, -1);
-
-  private = (GdkFontPrivateX*) font;
-
-  switch (font->type)
-    {
-    case GDK_FONT_FONT:
-      xfont = (XFontStruct *) private->xfont;
-      if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
-        {
-          gchar *text_8bit;
-          gint i;
-          text_8bit = g_new (gchar, text_length);
-          for (i=0; i<text_length; i++) text_8bit[i] = text[i];
-          width = XTextWidth (xfont, text_8bit, text_length);
-          g_free (text_8bit);
-        }
-      else
-        {
-          width = 0;
-        }
-      break;
-    case GDK_FONT_FONTSET:
-      if (sizeof(GdkWChar) == sizeof(wchar_t))
-	{
-	  fontset = (XFontSet) private->xfont;
-	  width = XwcTextEscapement (fontset, (wchar_t *)text, text_length);
-	}
-      else
-	{
-	  wchar_t *text_wchar;
-	  gint i;
-	  fontset = (XFontSet) private->xfont;
-	  text_wchar = g_new(wchar_t, text_length);
-	  for (i=0; i<text_length; i++) text_wchar[i] = text[i];
-	  width = XwcTextEscapement (fontset, text_wchar, text_length);
-	  g_free (text_wchar);
-	}
-      break;
-    default:
-      width = 0;
-    }
-  return width;
-}
-
-/**
- * gdk_text_extents:
- * @font: a #GdkFont
- * @text: the text to measure
- * @text_length: the length of the text in bytes. (If the
- *    font is a 16-bit font, this is twice the length
- *    of the text in characters.)
- * @lbearing: the left bearing of the string.
- * @rbearing: the right bearing of the string.
- * @width: the width of the string.
- * @ascent: the ascent of the string.
- * @descent: the descent of the string.
- * 
- * Gets the metrics of a string.
- **/
-void
-gdk_text_extents (GdkFont     *font,
-                  const gchar *text,
-                  gint         text_length,
-		  gint        *lbearing,
-		  gint        *rbearing,
-		  gint        *width,
-		  gint        *ascent,
-		  gint        *descent)
-{
-  GdkFontPrivateX *private;
-  XCharStruct overall;
-  XFontStruct *xfont;
-  XFontSet    fontset;
-  XRectangle  ink, logical;
-  int direction;
-  int font_ascent;
-  int font_descent;
-
-  g_return_if_fail (font != NULL);
-  g_return_if_fail (text != NULL);
-
-  private = (GdkFontPrivateX*) font;
-
-  switch (font->type)
-    {
-    case GDK_FONT_FONT:
-      xfont = (XFontStruct *) private->xfont;
-      if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
-	{
-	  XTextExtents (xfont, text, text_length,
-			&direction, &font_ascent, &font_descent,
-			&overall);
-	}
-      else
-	{
-	  XTextExtents16 (xfont, (XChar2b *) text, text_length / 2,
-			  &direction, &font_ascent, &font_descent,
-			  &overall);
-	}
-      if (lbearing)
-	*lbearing = overall.lbearing;
-      if (rbearing)
-	*rbearing = overall.rbearing;
-      if (width)
-	*width = overall.width;
-      if (ascent)
-	*ascent = overall.ascent;
-      if (descent)
-	*descent = overall.descent;
-      break;
-    case GDK_FONT_FONTSET:
-      fontset = (XFontSet) private->xfont;
-      XmbTextExtents (fontset, text, text_length, &ink, &logical);
-      if (lbearing)
-	*lbearing = ink.x;
-      if (rbearing)
-	*rbearing = ink.x + ink.width;
-      if (width)
-	*width = logical.width;
-      if (ascent)
-	*ascent = -ink.y;
-      if (descent)
-	*descent = ink.y + ink.height;
-      break;
-    }
-
-}
-
-/**
- * gdk_text_extents_wc:
- * @font: a #GdkFont
- * @text: the text to measure.
- * @text_length: the length of the text in character.
- * @lbearing: the left bearing of the string.
- * @rbearing: the right bearing of the string.
- * @width: the width of the string.
- * @ascent: the ascent of the string.
- * @descent: the descent of the string.
- * 
- * Gets the metrics of a string of wide characters.
- **/
-void
-gdk_text_extents_wc (GdkFont        *font,
-		     const GdkWChar *text,
-		     gint            text_length,
-		     gint           *lbearing,
-		     gint           *rbearing,
-		     gint           *width,
-		     gint           *ascent,
-		     gint           *descent)
-{
-  GdkFontPrivateX *private;
-  XCharStruct overall;
-  XFontStruct *xfont;
-  XFontSet    fontset;
-  XRectangle  ink, logical;
-  int direction;
-  int font_ascent;
-  int font_descent;
-
-  g_return_if_fail (font != NULL);
-  g_return_if_fail (text != NULL);
-
-  private = (GdkFontPrivateX*) font;
-
-  switch (font->type)
-    {
-    case GDK_FONT_FONT:
-      {
-	gchar *text_8bit;
-	gint i;
-
-	xfont = (XFontStruct *) private->xfont;
-	g_return_if_fail ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0));
-
-	text_8bit = g_new (gchar, text_length);
-	for (i=0; i<text_length; i++) 
-	  text_8bit[i] = text[i];
-
-	XTextExtents (xfont, text_8bit, text_length,
-		      &direction, &font_ascent, &font_descent,
-		      &overall);
-	g_free (text_8bit);
-	
-	if (lbearing)
-	  *lbearing = overall.lbearing;
-	if (rbearing)
-	  *rbearing = overall.rbearing;
-	if (width)
-	  *width = overall.width;
-	if (ascent)
-	  *ascent = overall.ascent;
-	if (descent)
-	  *descent = overall.descent;
-	break;
-      }
-    case GDK_FONT_FONTSET:
-      fontset = (XFontSet) private->xfont;
-
-      if (sizeof(GdkWChar) == sizeof(wchar_t))
-	XwcTextExtents (fontset, (wchar_t *)text, text_length, &ink, &logical);
-      else
-	{
-	  wchar_t *text_wchar;
-	  gint i;
-	  
-	  text_wchar = g_new (wchar_t, text_length);
-	  for (i = 0; i < text_length; i++)
-	    text_wchar[i] = text[i];
-	  XwcTextExtents (fontset, text_wchar, text_length, &ink, &logical);
-	  g_free (text_wchar);
-	}
-      if (lbearing)
-	*lbearing = ink.x;
-      if (rbearing)
-	*rbearing = ink.x + ink.width;
-      if (width)
-	*width = logical.width;
-      if (ascent)
-	*ascent = -ink.y;
-      if (descent)
-	*descent = ink.y + ink.height;
-      break;
-    }
-
-}
-
-/**
- * gdk_x11_font_get_xdisplay:
- * @font: a #GdkFont.
- * 
- * Returns the display of a #GdkFont.
- * 
- * Return value:  an Xlib <type>Display*</type>.
- **/
-Display *
-gdk_x11_font_get_xdisplay (GdkFont *font)
-{
-  g_return_val_if_fail (font != NULL, NULL);
-
-  return GDK_DISPLAY_XDISPLAY (((GdkFontPrivateX *)font)->display);
-}
-
-/**
- * gdk_x11_font_get_xfont:
- * @font: a #GdkFont.
- * 
- * Returns the X font belonging to a #GdkFont.
- * 
- * Return value: an Xlib <type>XFontStruct*</type> or an <type>XFontSet</type>.
- **/
-gpointer
-gdk_x11_font_get_xfont (GdkFont *font)
-{
-  g_return_val_if_fail (font != NULL, NULL);
-
-  return ((GdkFontPrivateX *)font)->xfont;
-}
-
-/**
- * gdk_x11_font_get_name:
- * @font: a #GdkFont.
- * 
- * Return the X Logical Font Description (for font->type == GDK_FONT_FONT)
- * or comma separated list of XLFDs (for font->type == GDK_FONT_FONTSET)
- * that was used to load the font. If the same font was loaded
- * via multiple names, which name is returned is undefined.
- * 
- * Return value: the name of the font. This string is owned
- *   by GDK and must not be modified or freed.
- **/
-G_CONST_RETURN char *
-gdk_x11_font_get_name (GdkFont *font)
-{
-  GdkFontPrivateX *private = (GdkFontPrivateX *)font;
-
-  g_return_val_if_fail (font != NULL, NULL);
-
-  g_assert (private->names);
-
-  return private->names->data;
-}
-     
-#define __GDK_FONT_X11_C__
-#include "gdkaliasdef.c"
diff --git a/gdk/x11/gdkgc-x11.c b/gdk/x11/gdkgc-x11.c
index 0a6869a..3cac64f 100644
--- a/gdk/x11/gdkgc-x11.c
+++ b/gdk/x11/gdkgc-x11.c
@@ -206,8 +206,6 @@ gdk_x11_gc_get_values (GdkGC       *gc,
     {
       values->foreground.pixel = xvalues.foreground;
       values->background.pixel = xvalues.background;
-      values->font = gdk_font_lookup_for_display (GDK_GC_DISPLAY (gc),
-						  xvalues.font);
 
       switch (xvalues.function)
 	{
@@ -408,11 +406,6 @@ gdk_x11_gc_values_to_xvalues (GdkGCValues    *values,
       xvalues->background = values->background.pixel;
       *xvalues_mask |= GCBackground;
     }
-  if ((mask & GDK_GC_FONT) && (values->font->type == GDK_FONT_FONT))
-    {
-      xvalues->font = ((XFontStruct *) (GDK_FONT_XFONT (values->font)))->fid;
-      *xvalues_mask |= GCFont;
-    }
   if (mask & GDK_GC_FUNCTION)
     {
       switch (values->function)
diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h
index d8aa42c..bfc42d7 100644
--- a/gdk/x11/gdkx.h
+++ b/gdk/x11/gdkx.h
@@ -192,29 +192,6 @@ void        gdk_x11_register_standard_event_type (GdkDisplay *display,
 						  gint        event_base,
 						  gint        n_events);
 
-#if !defined(GDK_DISABLE_DEPRECATED) || defined(GDK_COMPILATION)
-
-gpointer             gdk_x11_font_get_xfont    (GdkFont *font);
-#define GDK_FONT_XFONT(font)          (gdk_x11_font_get_xfont (font))
-
-#define gdk_font_lookup_for_display(display, xid) ((GdkFont*) gdk_xid_table_lookup_for_display (display, ((xid)|XID_FONT_BIT)))
-
-#endif /* !GDK_DISABLE_DEPRECATED || GDK_COMPILATION */
-
-#ifndef GDK_DISABLE_DEPRECATED
-
-Display *            gdk_x11_font_get_xdisplay (GdkFont *font);
-G_CONST_RETURN char *gdk_x11_font_get_name     (GdkFont *font);
-
-#define GDK_FONT_XDISPLAY(font)       (gdk_x11_font_get_xdisplay (font))
-
-#ifndef GDK_MULTIHEAD_SAFE
-
-#define gdk_font_lookup(xid)	   ((GdkFont*) gdk_xid_table_lookup (xid))
-
-#endif /* GDK_MULTIHEAD_SAFE */
-#endif /* GDK_DISABLE_DEPRECATED */
-
 G_END_DECLS
 
 #endif /* __GDK_X_H__ */
diff --git a/gdk/x11/gdkxid.c b/gdk/x11/gdkxid.c
index c53ee38..85c82bb 100644
--- a/gdk/x11/gdkxid.c
+++ b/gdk/x11/gdkxid.c
@@ -85,7 +85,7 @@ _gdk_xid_table_remove (GdkDisplay *display,
  * Returns the GDK object associated with the given X id.
  *
  * Return value: the associated Gdk object, which may be a #GdkPixmap,
- *     a #GdkWindow or a #GdkFont or %NULL if no object is associated
+ *     a #GdkWindow or %NULL if no object is associated
  *     with the X id.
  *
  * Since: 2.2
@@ -116,7 +116,7 @@ gdk_xid_table_lookup_for_display (GdkDisplay  *display,
  * display.
  *
  * Return value: the associated Gdk object, which may be a #GdkPixmap,
- *     a #GdkWindow or a #GdkFont or %NULL if no object is associated
+ *     a #GdkWindow or %NULL if no object is associated
  *     with the X id.
  */
 gpointer
diff --git a/gtk/gtkfontsel.c b/gtk/gtkfontsel.c
index 33a9eb3..3367f8b 100644
--- a/gtk/gtkfontsel.c
+++ b/gtk/gtkfontsel.c
@@ -97,7 +97,6 @@ static const guint16 font_sizes[] = {
 enum {
    PROP_0,
    PROP_FONT_NAME,
-   PROP_FONT,
    PROP_PREVIEW_TEXT
 };
 
@@ -164,7 +163,6 @@ static void     gtk_font_selection_scroll_to_selection   (GtkFontSelection *font
 static void    gtk_font_selection_load_font          (GtkFontSelection *fs);
 static void    gtk_font_selection_update_preview     (GtkFontSelection *fs);
 
-static GdkFont* gtk_font_selection_get_font_internal (GtkFontSelection *fontsel);
 static PangoFontDescription *gtk_font_selection_get_font_description (GtkFontSelection *fontsel);
 static gboolean gtk_font_selection_select_font_desc  (GtkFontSelection      *fontsel,
 						      PangoFontDescription  *new_desc,
@@ -197,13 +195,7 @@ gtk_font_selection_class_init (GtkFontSelectionClass *klass)
                                                         P_("The string that represents this font"),
                                                         DEFAULT_FONT_NAME,
                                                         GTK_PARAM_READWRITE));
-  g_object_class_install_property (gobject_class,
-				   PROP_FONT,
-				   g_param_spec_boxed ("font",
-						       P_("Font"),
-						       P_("The GdkFont that is currently selected"),
-						       GDK_TYPE_FONT,
-						       GTK_PARAM_READABLE));
+
   g_object_class_install_property (gobject_class,
                                    PROP_PREVIEW_TEXT,
                                    g_param_spec_string ("preview-text",
@@ -252,9 +244,6 @@ static void gtk_font_selection_get_property (GObject         *object,
     case PROP_FONT_NAME:
       g_value_take_string (value, gtk_font_selection_get_font_name (fontsel));
       break;
-    case PROP_FONT:
-      g_value_set_boxed (value, gtk_font_selection_get_font_internal (fontsel));
-      break;
     case PROP_PREVIEW_TEXT:
       g_value_set_string (value, gtk_font_selection_get_preview_text (fontsel));
       break;
@@ -578,9 +567,6 @@ gtk_font_selection_finalize (GObject *object)
   
   fontsel = GTK_FONT_SELECTION (object);
 
-  if (fontsel->font)
-    gdk_font_unref (fontsel->font);
-
   gtk_font_selection_ref_family (fontsel, NULL);
   gtk_font_selection_ref_face (fontsel, NULL);
 
@@ -1106,10 +1092,6 @@ gtk_font_selection_select_size (GtkTreeSelection *selection,
 static void
 gtk_font_selection_load_font (GtkFontSelection *fontsel)
 {
-  if (fontsel->font)
-    gdk_font_unref (fontsel->font);
-  fontsel->font = NULL;
-
   gtk_font_selection_update_preview (fontsel);
 }
 
@@ -1167,19 +1149,6 @@ gtk_font_selection_update_preview (GtkFontSelection *fontsel)
   gtk_editable_set_position (GTK_EDITABLE (preview_entry), 0);
 }
 
-static GdkFont*
-gtk_font_selection_get_font_internal (GtkFontSelection *fontsel)
-{
-  if (!fontsel->font)
-    {
-      PangoFontDescription *font_desc = gtk_font_selection_get_font_description (fontsel);
-      fontsel->font = gdk_font_from_description_for_display (gtk_widget_get_display (GTK_WIDGET (fontsel)), font_desc);
-      pango_font_description_free (font_desc);
-    }
-  
-  return fontsel->font;
-}
-
 
 /*****************************************************************************
  * These functions are the main public interface for getting/setting the font.
diff --git a/gtk/gtkfontsel.h b/gtk/gtkfontsel.h
index 5b1b2ce..3d9152a 100644
--- a/gtk/gtkfontsel.h
+++ b/gtk/gtkfontsel.h
@@ -83,10 +83,6 @@ struct _GtkFontSelection
   PangoFontFace *GSEAL (face);		/* Current face */
   
   gint GSEAL (size);
-  
-  GdkFont *GSEAL (font);		/* Cache for gdk_font_selection_get_font, so we can preserve
-                                         * refcounting behavior
-                                         */
 };
 
 struct _GtkFontSelectionClass
diff --git a/gtk/gtkgc.c b/gtk/gtkgc.c
index 15d8636..80a2d66 100644
--- a/gtk/gtkgc.c
+++ b/gtk/gtkgc.c
@@ -208,10 +208,6 @@ gtk_gc_key_hash (gpointer key)
     {
       hash_val += keyval->values.background.pixel;
     }
-  if (keyval->mask & GDK_GC_FONT)
-    {
-      hash_val += gdk_font_id (keyval->values.font);
-    }
   if (keyval->mask & GDK_GC_FUNCTION)
     {
       hash_val += (gint) keyval->values.function;
@@ -316,11 +312,6 @@ gtk_gc_key_equal (gpointer a,
       if (avalues->background.pixel != bvalues->background.pixel)
 	return FALSE;
     }
-  if (akey->mask & GDK_GC_FONT)
-    {
-      if (!gdk_font_equal (avalues->font, bvalues->font))
-	return FALSE;
-    }
   if (akey->mask & GDK_GC_FUNCTION)
     {
       if (avalues->function != bvalues->function)
diff --git a/gtk/gtkstyle.c b/gtk/gtkstyle.c
index ecd080f..2c0cd42 100644
--- a/gtk/gtkstyle.c
+++ b/gtk/gtkstyle.c
@@ -145,15 +145,6 @@ static void gtk_default_draw_diamond    (GtkStyle        *style,
 					 gint             y,
 					 gint             width,
 					 gint             height);
-static void gtk_default_draw_string     (GtkStyle        *style,
-					 GdkWindow       *window,
-					 GtkStateType     state_type,
-					 GdkRectangle    *area,
-					 GtkWidget       *widget,
-					 const gchar     *detail,
-					 gint             x,
-					 gint             y,
-					 const gchar     *string);
 static void gtk_default_draw_box        (GtkStyle        *style,
 					 GdkWindow       *window,
 					 GtkStateType     state_type,
@@ -334,8 +325,6 @@ static void hls_to_rgb			(gdouble	 *h,
 
 static void style_unrealize_cursor_gcs (GtkStyle *style);
 
-static GdkFont *gtk_style_get_font_internal (GtkStyle *style);
-
 /*
  * Data for default check and radio buttons
  */
@@ -507,7 +496,6 @@ gtk_style_class_init (GtkStyleClass *klass)
   klass->draw_polygon = gtk_default_draw_polygon;
   klass->draw_arrow = gtk_default_draw_arrow;
   klass->draw_diamond = gtk_default_draw_diamond;
-  klass->draw_string = gtk_default_draw_string;
   klass->draw_box = gtk_default_draw_box;
   klass->draw_flat_box = gtk_default_draw_flat_box;
   klass->draw_check = gtk_default_draw_check;
@@ -624,9 +612,6 @@ gtk_style_finalize (GObject *object)
   g_slist_free (priv->color_hashes);
 
   pango_font_description_free (style->font_desc);
-  
-  if (style->private_font)
-    gdk_font_unref (style->private_font);
 
   if (style->private_font_desc)
     pango_font_description_free (style->private_font_desc);
@@ -765,12 +750,6 @@ gtk_style_attach (GtkStyle  *style,
   if (!new_style)
     {
       new_style = gtk_style_duplicate (style);
-      if (gdk_colormap_get_screen (style->colormap) != gdk_colormap_get_screen (colormap) &&
-	  new_style->private_font)
-	{
-	  gdk_font_unref (new_style->private_font);
-	  new_style->private_font = NULL;
-	}
       gtk_style_realize (new_style, colormap);
     }
 
@@ -814,12 +793,6 @@ gtk_style_detach (GtkStyle *style)
 
       if (style->private_font_desc)
 	{
-	  if (style->private_font)
-	    {
-	      gdk_font_unref (style->private_font);
-	      style->private_font = NULL;
-	    }
-	  
 	  pango_font_description_free (style->private_font_desc);
 	  style->private_font_desc = NULL;
 	}
@@ -1030,12 +1003,6 @@ gtk_style_real_copy (GtkStyle *style,
 	g_object_ref (style->bg_pixmap[i]);
     }
 
-  if (style->private_font)
-    gdk_font_unref (style->private_font);
-  style->private_font = src->private_font;
-  if (style->private_font)
-    gdk_font_ref (style->private_font);
-
   if (style->font_desc)
     pango_font_description_free (style->font_desc);
   if (src->font_desc)
@@ -2768,39 +2735,6 @@ gtk_default_draw_diamond (GtkStyle      *style,
 }
 
 static void
-gtk_default_draw_string (GtkStyle      *style,
-                         GdkWindow     *window,
-                         GtkStateType   state_type,
-                         GdkRectangle  *area,
-                         GtkWidget     *widget,
-                         const gchar   *detail,
-                         gint           x,
-                         gint           y,
-                         const gchar   *string)
-{
-  if (area)
-    {
-      gdk_gc_set_clip_rectangle (style->white_gc, area);
-      gdk_gc_set_clip_rectangle (style->fg_gc[state_type], area);
-    }
-
-  if (state_type == GTK_STATE_INSENSITIVE)
-    gdk_draw_string (window,
-		     gtk_style_get_font_internal (style),
-		     style->white_gc, x + 1, y + 1, string);
-
-  gdk_draw_string (window,
-		   gtk_style_get_font_internal (style),
-		   style->fg_gc[state_type], x, y, string);
-
-  if (area)
-    {
-      gdk_gc_set_clip_rectangle (style->white_gc, NULL);
-      gdk_gc_set_clip_rectangle (style->fg_gc[state_type], NULL);
-    }
-}
-
-static void
 option_menu_get_props (GtkWidget      *widget,
 		       GtkRequisition *indicator_size,
 		       GtkBorder      *indicator_spacing)
@@ -6139,58 +6073,6 @@ gtk_border_get_type (void)
   return our_type;
 }
 
-static GdkFont *
-gtk_style_get_font_internal (GtkStyle *style)
-{
-  g_return_val_if_fail (GTK_IS_STYLE (style), NULL);
-
-  if (style->private_font && style->private_font_desc)
-    {
-      if (!style->font_desc ||
-	  !pango_font_description_equal (style->private_font_desc, style->font_desc))
-	{
-	  gdk_font_unref (style->private_font);
-	  style->private_font = NULL;
-	  
-	  if (style->private_font_desc)
-	    {
-	      pango_font_description_free (style->private_font_desc);
-	      style->private_font_desc = NULL;
-	    }
-	}
-    }
-  
-  if (!style->private_font)
-    {
-      GdkDisplay *display;
-
-      if (style->colormap)
-	{
-	  display = gdk_screen_get_display (gdk_colormap_get_screen (style->colormap));
-	}
-      else
-	{
-	  display = gdk_display_get_default ();
-	  GTK_NOTE (MULTIHEAD,
-		    g_warning ("gtk_style_get_font() should not be called on an unattached style"));
-	}
-      
-      if (style->font_desc)
-	{
-	  style->private_font = gdk_font_from_description_for_display (display, style->font_desc);
-	  style->private_font_desc = pango_font_description_copy (style->font_desc);
-	}
-
-      if (!style->private_font)
-	style->private_font = gdk_font_load_for_display (display, "fixed");
-      
-      if (!style->private_font) 
-	g_error ("Unable to load \"fixed\" font");
-    }
-
-  return style->private_font;
-}
-
 typedef struct _CursorInfo CursorInfo;
 
 struct _CursorInfo
diff --git a/gtk/gtkstyle.h b/gtk/gtkstyle.h
index 141cbcc..7974d4d 100644
--- a/gtk/gtkstyle.h
+++ b/gtk/gtkstyle.h
@@ -111,7 +111,6 @@ struct _GtkStyle
 
   gint depth;
   GdkColormap *colormap;
-  GdkFont *private_font;
   PangoFontDescription *private_font_desc; /* Font description for style->private_font or %NULL */
 
   /* the RcStyle from which this style was created */
diff --git a/modules/engines/pixbuf/pixbuf-draw.c b/modules/engines/pixbuf/pixbuf-draw.c
index 38f2761..f9188a2 100644
--- a/modules/engines/pixbuf/pixbuf-draw.c
+++ b/modules/engines/pixbuf/pixbuf-draw.c
@@ -587,44 +587,6 @@ draw_diamond (GtkStyle     *style,
 }
 
 static void
-draw_string (GtkStyle * style,
-	     GdkWindow * window,
-	     GtkStateType state,
-	     GdkRectangle * area,
-	     GtkWidget * widget,
-	     const gchar *detail,
-	     gint x,
-	     gint y,
-	     const gchar * string)
-{
-  g_return_if_fail(style != NULL);
-  g_return_if_fail(window != NULL);
-
-  if (state == GTK_STATE_INSENSITIVE)
-    {
-      if (area)
-	{
-	  gdk_gc_set_clip_rectangle(style->white_gc, area);
-	  gdk_gc_set_clip_rectangle(style->fg_gc[state], area);
-	}
-
-      gdk_draw_string(window, gtk_style_get_font (style), style->fg_gc[state], x, y, string);
-      
-      if (area)
-	{
-	  gdk_gc_set_clip_rectangle(style->white_gc, NULL);
-	  gdk_gc_set_clip_rectangle(style->fg_gc[state], NULL);
-	}
-    }
-  else
-    {
-      gdk_gc_set_clip_rectangle(style->fg_gc[state], area);
-      gdk_draw_string(window, gtk_style_get_font (style), style->fg_gc[state], x, y, string);
-      gdk_gc_set_clip_rectangle(style->fg_gc[state], NULL);
-    }
-}
-
-static void
 draw_box (GtkStyle     *style,
 	  GdkWindow    *window,
  	  GtkStateType  state,
@@ -1094,7 +1056,6 @@ pixbuf_style_class_init (PixbufStyleClass *klass)
   style_class->draw_shadow = draw_shadow;
   style_class->draw_arrow = draw_arrow;
   style_class->draw_diamond = draw_diamond;
-  style_class->draw_string = draw_string;
   style_class->draw_box = draw_box;
   style_class->draw_flat_box = draw_flat_box;
   style_class->draw_check = draw_check;
