List of usage examples for org.apache.pdfbox.cos COSName TRUE_TYPE
COSName TRUE_TYPE
To view the source code for org.apache.pdfbox.cos COSName TRUE_TYPE.
Click Source Link
From source file:at.gv.egiz.pdfas.lib.impl.stamping.pdfbox.PDFBoxFont.java
License:EUPL
private PDFont findCachedFont(PDFBOXObject pdfObject, FontInfoCache fontInfo) { try {//www . jav a2s .co m if (pdfObject.getFontCache().containsKey(fontInfo.fontPath)) { return pdfObject.getFontCache().get(fontInfo.fontPath); } List<COSObject> cosObjects = pdfObject.getDocument().getDocument().getObjectsByType(COSName.FONT); //COSName cosFontName = COSName.getPDFName(fontInfo.fontName); //COSName cosFontFamily = COSName.getPDFName(fontInfo.fontFamily); Iterator<COSObject> cosObjectIt = cosObjects.iterator(); while (cosObjectIt.hasNext()) { COSObject cosObject = cosObjectIt.next(); COSDictionary baseObject = (COSDictionary) cosObject.getObject(); if (baseObject instanceof COSDictionary) { COSDictionary fontDictionary = (COSDictionary) baseObject; COSBase subType = cosObject.getItem(COSName.SUBTYPE); COSDictionary fontDescriptor = (COSDictionary) cosObject.getDictionaryObject(COSName.FONT_DESC); if (fontDescriptor != null) { String fontName = fontDescriptor.getNameAsString(COSName.FONT_NAME); String fontFamily = fontDescriptor.getNameAsString(COSName.FONT_FAMILY); logger.trace("Inspecting Font {} - {}", fontFamily, fontName); if (COSName.TRUE_TYPE.equals(subType)) { if (fontInfo.fontName != null && fontInfo.fontName.equals(fontName) && fontInfo.fontFamily != null && fontInfo.fontFamily.equals(fontFamily)) { // Found it! :) logger.info("Found Font {}", fontInfo.fontName); return new PDTrueTypeFont(fontDictionary); } } else { logger.debug("Font not a TTF"); } } } else { logger.debug("Font not a COSDictionary"); } } } catch (Exception e) { logger.info("Failed to load existing TTF fonts!", e); } return null; }
From source file:org.apache.fop.render.pdf.pdfbox.FOPPDFSingleByteFont.java
License:Apache License
public FOPPDFSingleByteFont(COSDictionary fontData, String name) throws IOException { super(null, EmbeddingMode.FULL); if (fontData.getItem(COSName.SUBTYPE) == COSName.TRUE_TYPE) { setFontType(FontType.TRUETYPE);/* w ww .ja v a2 s . c om*/ } width = new int[0]; font = getFont(fontData); setFirstChar(font.getFirstChar()); setLastChar(font.getLastChar()); shortFontName = MergeFontsPDFWriter.getName(font.font.getName()); loadFontFile(font); float[] bBoxF = font.getBoundingBox(); int[] bBox = new int[bBoxF.length]; for (int i = 0; i < bBox.length; i++) { bBox[i] = (int) bBoxF[i]; } setFontBBox(bBox); setFontName(name); Object cmap = getCmap(font); for (int i = font.getFirstChar(); i <= font.getLastChar(); i++) { String mappedChar = getChar(cmap, i); if (mappedChar != null && !charMapGlobal.containsKey(mappedChar)) { charMapGlobal.put(mappedChar, i); } } //mark font as used notifyMapOperation(); FOPPDFMultiByteFont.setProperties(this, font.font); if (font.getWidths() != null) { //if width contains 0 we cant rely on codeToNameMap boolean usesZero = font.getWidths().contains(0); Set<Integer> codeToName = getCodeToName(font.getEncoding()).keySet(); for (int i = getFirstChar(); i <= Math.min(getLastChar(), getFirstChar() + font.getWidths().size()); i++) { if (usesZero || codeToName.contains(i)) { int w = font.getWidths().get(i - getFirstChar()); newWidth.put(i, w); } else { newWidth.put(i, 0); } } } mapping = new FOPPDFEncoding(); encodingSkip = font.getLastChar() + 1; addEncoding(font); }
From source file:org.apache.fop.render.pdf.pdfbox.MergeFontsPDFWriter.java
License:Apache License
private String getNewFont(COSDictionary fontData, FontInfo fontinfo, Collection<String> usedFonts) throws IOException { String base = getUniqueFontName(fontData); if (base == null || usedFonts.contains(base) || (parentFonts != null && parentFonts.contains(base))) { return null; }//from w w w . ja v a 2s . c om try { for (Typeface t : fontinfo.getUsedFonts().values()) { if (t instanceof FOPPDFFont && base.equals(t.getFontName())) { return ((FOPPDFFont) t).addFont(fontData); } } if (base.endsWith("cid") || fontData.getItem(COSName.SUBTYPE) != COSName.TYPE1 && fontData.getItem(COSName.SUBTYPE) != COSName.TRUE_TYPE) { fontinfo.addMetrics(base, new FOPPDFMultiByteFont(fontData, base)); } else { fontinfo.addMetrics(base, new FOPPDFSingleByteFont(fontData, base)); } } catch (IOException e) { log.warn(e.getMessage()); return null; } fontinfo.useFont(base); return base; }