#include "font.h"
 #include "fontset.h"
 
+static M17NObjectArray fontset_table;
+
 struct MFontset
 {
   M17NObject control;
       M17N_OBJECT_UNREF (fontset_list);
       fontset_list = NULL;
     }
+  M17N_OBJECT_UNREGISTER (fontset_table, fontset);
   free (object);
 }
 
 int
 mfont__fontset_init ()
 {
+  M17N_OBJECT_ADD_ARRAY (fontset_table, "Fontset");
+
   Mfontset = msymbol ("fontset");
   Mfontset->managing_key = 1;
   fontset_list = mplist ();
 
   MSTRUCT_CALLOC (realized, MERROR_FONTSET);
   realized->fontset = fontset;
+  M17N_OBJECT_REF (fontset);
   realized->tick = fontset->tick;
   if (spec)
     {
 mfont__free_realized_fontset (MRealizedFontset *realized)
 {
   free_realized_fontset_elements (realized);
+  M17N_OBJECT_UNREF (realized->fontset);
   if (realized->spec)
     free (realized->spec);
   free (realized);
       else
        {
          M17N_OBJECT (fontset, free_fontset, MERROR_FONTSET);
+         M17N_OBJECT_REGISTER (fontset_table, fontset);
          fontset->name = sym;
          fontset->mdb = mdatabase_find (Mfontset, sym, Mnil, Mnil);
          if (! fontset->mdb)
   if (copy)
     return NULL;
   M17N_OBJECT (copy, free_fontset, MERROR_FONTSET);
+  M17N_OBJECT_REGISTER (fontset_table, copy);
   copy->name = sym;
 
   if (fontset->mdb)