diff --git a/graphics/psdrv/afm.c b/graphics/psdrv/afm.c
index dcd136b2154eaad87a1c3896e423fd35b30cf4e7..25b6ed539b73f11b2f3737cf7096a772dc913b8c 100644
--- a/graphics/psdrv/afm.c
+++ b/graphics/psdrv/afm.c
@@ -181,6 +181,8 @@ static AFM *PSDRV_AFMParse(char const *file)
 	        afm->Weight = FW_BOLD;
 	    else if(!strncmp("Light", value, 5))
 	        afm->Weight = FW_LIGHT;
+	    else if(!strncmp("Black", value, 5))
+	        afm->Weight = FW_BLACK;
 	    else {
   	        FIXME("Unkown AFM Weight '%s'\n", value);
 	        afm->Weight = FW_NORMAL;
@@ -252,12 +254,20 @@ static AFM *PSDRV_AFMParse(char const *file)
     }
     fclose(fp);
 
+    if(afm->FontName == NULL)
+        WARN("%s contains no FontName.\n", file);
+    if(afm->FullName == NULL)
+        afm->FullName = HEAP_strdupA(PSDRV_Heap, 0, afm->FontName);
+    if(afm->FamilyName == NULL)
+        afm->FamilyName = HEAP_strdupA(PSDRV_Heap, 0, afm->FontName);      
     if(afm->Ascender == 0.0)
         afm->Ascender = afm->FontBBox.ury;
     if(afm->Descender == 0.0)
         afm->Descender = afm->FontBBox.lly;
     if(afm->FullAscender == 0.0)
         afm->FullAscender = afm->Ascender;
+    if(afm->Weight == 0)
+        afm->Weight = FW_NORMAL;
 
     return afm;
 }