Fix some double-frees/use-after-free

r? @frank-trampe
From the commit log: "_ReadPSFont() is probably weird but it fcloses the file passed as
parameter if the function fails." 
So we only fclose() it if `fd` is non-NULL, as above. (Guess that was the underlying question)