@Override public String toString() { String name = getFontNames().getFontName(); return name.length() > 0 ? name : super.toString(); } }
@Override public String toString() { String name = getFontNames().getFontName(); return name.length() > 0 ? name : super.toString(); } }
private static FontProgramDescriptor fetchDescriptorFromFontProgram(FontProgram fontProgram) { return new FontProgramDescriptor(fontProgram.getFontNames(), fontProgram.getFontMetrics()); } }
private static FontProgramDescriptor fetchDescriptorFromFontProgram(FontProgram fontProgram) { return new FontProgramDescriptor(fontProgram.getFontNames(), fontProgram.getFontMetrics()); } }
if (path.toLowerCase().endsWith(".ttf") || path.toLowerCase().endsWith(".otf") || path.toLowerCase().indexOf(".ttc,") > 0) { FontProgram fontProgram = FontProgramFactory.createFont(path); Object[] allNames = new Object[]{fontProgram.getFontNames().getFontName(), fontProgram.getFontNames().getFamilyName(), fontProgram.getFontNames().getFullName()}; fontNames.put(((String) allNames[0]).toLowerCase(), path); if (alias != null) { String fullName = fontProgram.getFontNames().getFullName()[0][3].toLowerCase(); String familyName = fontProgram.getFontNames().getFamilyName()[0][3].toLowerCase(); String psName = fontProgram.getFontNames().getFontName().toLowerCase(); registerFontFamily(familyName, fullName, null); fontNames.put(psName, path);
if (path.toLowerCase().endsWith(".ttf") || path.toLowerCase().endsWith(".otf") || path.toLowerCase().indexOf(".ttc,") > 0) { FontProgram fontProgram = FontProgramFactory.createFont(path); Object[] allNames = new Object[]{fontProgram.getFontNames().getFontName(), fontProgram.getFontNames().getFamilyName(), fontProgram.getFontNames().getFullName()}; fontNames.put(((String) allNames[0]).toLowerCase(), path); if (alias != null) { String fullName = fontProgram.getFontNames().getFullName()[0][3].toLowerCase(); String familyName = fontProgram.getFontNames().getFamilyName()[0][3].toLowerCase(); String psName = fontProgram.getFontNames().getFontName().toLowerCase(); registerFontFamily(familyName, fullName, null); fontNames.put(psName, path);
@Override public void flush() { if (isFlushed()) return; ensureUnderlyingObjectHasIndirectReference(); if (newFont) { flushFontData(fontProgram.getFontNames().getFontName(), PdfName.Type1); } super.flush(); }
@Override public void flush() { if (isFlushed()) return; ensureUnderlyingObjectHasIndirectReference(); //TODO make subtype class member and simplify this method if (newFont) { PdfName subtype; String fontName; if (((TrueTypeFont) getFontProgram()).isCff()) { subtype = PdfName.Type1; fontName = fontProgram.getFontNames().getFontName(); } else { subtype = PdfName.TrueType; fontName = updateSubsetPrefix(fontProgram.getFontNames().getFontName(), subset, embedded); } flushFontData(fontName, subtype); } super.flush(); }
@Override public void checkFont(PdfFont pdfFont) { if (!pdfFont.isEmbedded()) { throw new PdfAConformanceException(PdfAConformanceException.ALL_THE_FONTS_MUST_BE_EMBEDDED_THIS_ONE_IS_NOT_0) .setMessageParams(pdfFont.getFontProgram().getFontNames().getFontName()); } if (pdfFont instanceof PdfTrueTypeFont) { PdfTrueTypeFont trueTypeFont = (PdfTrueTypeFont) pdfFont; boolean symbolic = trueTypeFont.getFontEncoding().isFontSpecific(); if (symbolic) { checkSymbolicTrueTypeFont(trueTypeFont); } else { checkNonSymbolicTrueTypeFont(trueTypeFont); } } }
@Override public void checkFont(PdfFont pdfFont) { if (!pdfFont.isEmbedded()) { throw new PdfAConformanceException(PdfAConformanceException.ALL_THE_FONTS_MUST_BE_EMBEDDED_THIS_ONE_IS_NOT_0) .setMessageParams(pdfFont.getFontProgram().getFontNames().getFontName()); } if (pdfFont instanceof PdfTrueTypeFont) { PdfTrueTypeFont trueTypeFont = (PdfTrueTypeFont) pdfFont; boolean symbolic = trueTypeFont.getFontEncoding().isFontSpecific(); if (symbolic) { checkSymbolicTrueTypeFont(trueTypeFont); } else { checkNonSymbolicTrueTypeFont(trueTypeFont); } } }
@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; }
getPdfObject().put(PdfName.Type, PdfName.Font); getPdfObject().put(PdfName.Subtype, PdfName.Type0); String name = fontProgram.getFontNames().getFontName(); String style = fontProgram.getFontNames().getStyle(); if (style.length() > 0) { name += "-" + style; int[] metrics = hashSetToArray(longTag); Arrays.sort(metrics); PdfDictionary cidFont = getCidFontType2(null, fontDescriptor, fontProgram.getFontNames().getFontName(), metrics); getPdfObject().put(PdfName.DescendantFonts, new PdfArray(cidFont));
@Override public void flush() { if (isFlushed()) return; ensureUnderlyingObjectHasIndirectReference(); if (((Type3Font) getFontProgram()).getNumberOfGlyphs() < 1) { throw new PdfException("No glyphs defined for type3 font."); } PdfDictionary charProcs = new PdfDictionary(); for (int i = 0; i < 256; i++) { if (fontEncoding.canDecode(i)) { Type3Glyph glyph = getType3Glyph(fontEncoding.getUnicode(i)); if (glyph != null) { charProcs.put(new PdfName(fontEncoding.getDifference(i)), glyph.getContentStream()); glyph.getContentStream().flush(); } } } getPdfObject().put(PdfName.CharProcs, charProcs); getPdfObject().put(PdfName.FontMatrix, new PdfArray(getFontMatrix())); getPdfObject().put(PdfName.FontBBox, new PdfArray(fontProgram.getFontMetrics().getBbox())); String fontName = fontProgram.getFontNames().getFontName(); super.flushFontData(fontName, PdfName.Type3); //BaseFont is not listed as key in Type 3 font specification. getPdfObject().remove(PdfName.BaseFont); super.flush(); }
assert fontName != null && fontName.length() > 0; FontMetrics fontMetrics = fontProgram.getFontMetrics(); FontNames fontNames = fontProgram.getFontNames(); PdfDictionary fontDescriptor = new PdfDictionary(); makeObjectIndirect(fontDescriptor);