#ifndef _M17N_FONT_H_
 #define _M17N_FONT_H_
 
-/** Type of font stored in MFont->property[MFONT_TYPE].  */
+/** Type of font.  Now obsolete.  */
 
 enum MFontType
   {
     MFONT_REGISTRY,
     MFONT_SIZE,
     MFONT_RESY,
-    MFONT_TYPE,
     /* anchor */
     MFONT_PROPERTY_MAX
   };
 
 #define MFONT_INIT(font) memset ((font), 0, sizeof (MFont))
 
-
-extern MFontDriver *mfont__driver_list[MFONT_TYPE_MAX];
+extern MPlist *mfont__driver_list;
 
 extern MSymbol Mlayouter;
 
 #include <ft2build.h>
 #include FT_FREETYPE_H
 
+#ifdef HAVE_OTF
+#include <otf.h>
+#endif /* HAVE_OTF */
+
+typedef struct
+{
+  M17NObject control;
+  MFont font;
+  char *filename;
+  int otf_flag;        /* This font 1: is OTF, 0: may be OTF, -1: is not OTF.  */
+  MPlist *charmap_list;
+  int charmap_index;
+  FT_Face ft_face;
+#ifdef HAVE_OTF
+  OTF *otf;
+#endif /* HAVE_OTF */
+  void *extra_info;            /* Xft uses this member.  */
+} MFTInfo;
+
+extern MFontDriver mfont__ft_driver;
+
 extern int mfont__ft_init ();
 
 extern void mfont__ft_fini ();