Added checking for broken font cache.
Added supporting for iso10646 encoding.

diff --git a/graphics/x11drv/xfont.c b/graphics/x11drv/xfont.c
index 70ea998..ce26c4b 100644
--- a/graphics/x11drv/xfont.c
+++ b/graphics/x11drv/xfont.c
@@ -199,6 +199,10 @@
     { "0", DEFAULT_CHARSET, 0 },
     { NULL, DEFAULT_CHARSET, 0 }};
 
+static SuffixCharset sufch_iso10646[] = {
+    { "1", DEFAULT_CHARSET, 0 },
+    { NULL, DEFAULT_CHARSET, 0 }};
+
 /* Each of these must be matched explicitly */
 static SuffixCharset sufch_any[] = {
     { "fontspecific", SYMBOL_CHARSET, CP_SYMBOL },
@@ -234,6 +238,7 @@
 			{ "gb2312.1980",  sufch_gb2312,       &__fETTable[16]},
 			{ "big5.et",      sufch_big5,         &__fETTable[17]},
 			{ "unicode",      sufch_unicode,      &__fETTable[18]},
+			{ "iso10646",     sufch_iso10646,     &__fETTable[19]},
 			/* NULL prefix matches anything so put it last */
 			{   NULL,         sufch_any,          NULL },
 };
@@ -2059,6 +2064,8 @@
 			   if( offset > length ||
 			      (int)(pfi->next) != j++ ) goto fail;
 
+			   if( pfi->df.dfPixHeight == 0 ) goto fail;
+
 			   pfi->df.dfFace = pfr->lfFaceName;
 			   if( pfi->fi_flags & FI_SCALABLE )
 			   {