ICEpdf Open Source
ICEpdf Open Source uses java.awt.Font when reading system font files for substitution. ICEpdf Open Source, by default, disables using java.awt.Font for reading embedded font files, because a malformed font file can crash the JVM. The system property
org.icepdf.core.awtFontLoading=truecan be set to enable java.awt.Font embedded font loading.
This will not work if the font embedded in the PDF is only a subset. It took far too long to figure this out.