if (gFontForIgnorable) { delete gFontForIgnorable; gFontForIgnorable = nsnull; }
FreeGlobals(void){  gInitialized = 0;  NS_IF_RELEASE(gFontEncodingProperties);  NS_IF_RELEASE(gCharsetManager);  NS_IF_RELEASE(gPref);  NS_IF_RELEASE(gUsersLocale);  NS_IF_RELEASE(gSystemLocale);  NS_IF_RELEASE(gUserDefined);  NS_IF_RELEASE(gUserDefinedConverter);  NS_IF_RELEASE(gFontPackageProxy);  if (gUserDefinedCCMap)    FreeCCMap(gUserDefinedCCMap);  NS_IF_RELEASE(gJA);  NS_IF_RELEASE(gKO);  NS_IF_RELEASE(gZHTW);  NS_IF_RELEASE(gZHCN);  NS_IF_RELEASE(gZHHK);  // free CMap  if (nsFontMetricsWin::gFontMaps) {    PL_HashTableDestroy(nsFontMetricsWin::gFontMaps);    nsFontMetricsWin::gFontMaps = nsnull;    if (nsFontMetricsWin::gEmptyCCMap) {      FreeCCMap(nsFontMetricsWin::gEmptyCCMap);      nsFontMetricsWin::gEmptyCCMap = nsnull;    }  }  if (nsFontMetricsWin::gGlobalFonts) {    for (int i = nsFontMetricsWin::gGlobalFonts->Count()-1; i >= 0; --i) {      nsGlobalFont* font = (nsGlobalFont*)nsFontMetricsWin::gGlobalFonts->ElementAt(i);      delete font;    }    delete nsFontMetricsWin::gGlobalFonts;    nsFontMetricsWin::gGlobalFonts = nsnull;  }  // free FamilyNames  if (nsFontMetricsWin::gFamilyNames) {    PL_HashTableDestroy(nsFontMetricsWin::gFamilyNames);    nsFontMetricsWin::gFamilyNames = nsnull;  }  // free Font weight  if (nsFontMetricsWin::gFontWeights) {    PL_HashTableDestroy(nsFontMetricsWin::gFontWeights);    nsFontMetricsWin::gFontWeights = nsnull;  }  // free generated charset maps  for (int i = 0; i < eCharset_COUNT; ++i) {    if (gCharsetInfo[i].mCCMap) {      FreeCCMap(gCharsetInfo[i].mCCMap);      gCharsetInfo[i].mCCMap = nsnull;    }  }}