package com.baselet.diagram.io; import java.awt.Font; import com.baselet.control.config.Config; import com.baselet.diagram.Notifier; import com.itextpdf.awt.DefaultFontMapper; import com.itextpdf.text.pdf.BaseFont; class PdfFontMapper extends DefaultFontMapper { @Override public BaseFont awtToPdf(Font font) { String fontName; Config config = Config.getInstance(); // Choose the appropriate PDF export font if (font == null) { fontName = config.getPdfExportFont(); } else if (font.isBold() && !font.isItalic()) { fontName = config.getPdfExportFontBold(); } else if (font.isItalic() && !font.isBold()) { fontName = config.getPdfExportFontItalic(); } else if (font.isBold() && font.isItalic()) { fontName = config.getPdfExportFontBoldItalic(); } else { fontName = config.getPdfExportFont(); } if (fontName == null || fontName.isEmpty()) { return super.awtToPdf(font); // user has not specified a font to embedd } try { return BaseFont.createFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); } catch (Exception e) { Notifier.getInstance().showError("Font for PDF invalid (using default instead): " + fontName); return super.awtToPdf(font); // Fall back to the default mapper } } }