@Override protected PdfDictionary getFontDescriptor(String fontName) { if (fontName != null && fontName.length() > 0) { PdfDictionary fontDescriptor = new PdfDictionary(); makeObjectIndirect(fontDescriptor); fontDescriptor.put(PdfName.Type, PdfName.FontDescriptor); FontMetrics fontMetrics = fontProgram.getFontMetrics(); fontDescriptor.put(PdfName.CapHeight, new PdfNumber(fontMetrics.getCapHeight())); fontDescriptor.put(PdfName.ItalicAngle, new PdfNumber(fontMetrics.getItalicAngle())); FontNames fontNames = fontProgram.getFontNames(); fontDescriptor.put(PdfName.FontWeight, new PdfNumber(fontNames.getFontWeight())); fontDescriptor.put(PdfName.FontName, new PdfName(fontName)); if (fontNames.getFamilyName() != null && fontNames.getFamilyName().length > 0 && fontNames.getFamilyName()[0].length >= 4) { fontDescriptor.put(PdfName.FontFamily, new PdfString(fontNames.getFamilyName()[0][3])); } int flags = fontProgram.getPdfFontFlags(); flags &= ~(FontDescriptorFlags.Symbolic | FontDescriptorFlags.Nonsymbolic); // reset both flags flags |= fontEncoding.isFontSpecific() ? // set based on font encoding FontDescriptorFlags.Symbolic : FontDescriptorFlags.Nonsymbolic; fontDescriptor.put(PdfName.Flags, new PdfNumber(flags)); return fontDescriptor; } else if (getPdfObject().getIndirectReference() != null && getPdfObject().getIndirectReference().getDocument().isTagged()) { Logger logger = LoggerFactory.getLogger(PdfType3Font.class); logger.warn(LogMessageConstant.TYPE3_FONT_ISSUE_TAGGED_PDF); } return null; }
int flags = fontProgram.getPdfFontFlags();
@Override protected PdfDictionary getFontDescriptor(String fontName) { PdfDictionary fontDescriptor = new PdfDictionary(); makeObjectIndirect(fontDescriptor); fontDescriptor.put(PdfName.Type, PdfName.FontDescriptor); fontDescriptor.put(PdfName.FontName, new PdfName(fontName)); fontDescriptor.put(PdfName.FontBBox, new PdfArray(getFontProgram().getFontMetrics().getBbox())); fontDescriptor.put(PdfName.Ascent, new PdfNumber(getFontProgram().getFontMetrics().getTypoAscender())); fontDescriptor.put(PdfName.Descent, new PdfNumber(getFontProgram().getFontMetrics().getTypoDescender())); fontDescriptor.put(PdfName.CapHeight, new PdfNumber(getFontProgram().getFontMetrics().getCapHeight())); fontDescriptor.put(PdfName.ItalicAngle, new PdfNumber(getFontProgram().getFontMetrics().getItalicAngle())); fontDescriptor.put(PdfName.StemV, new PdfNumber(getFontProgram().getFontMetrics().getStemV())); fontDescriptor.put(PdfName.Flags, new PdfNumber(getFontProgram().getPdfFontFlags())); if (fontProgram.getFontIdentification().getPanose() != null) { PdfDictionary styleDictionary = new PdfDictionary(); styleDictionary.put(PdfName.Panose, new PdfString(fontProgram.getFontIdentification().getPanose()).setHexWriting(true)); fontDescriptor.put(PdfName.Style, styleDictionary); } return fontDescriptor; }