private String getUniqueFontName()

in src/java/org/apache/fop/render/pdf/pdfbox/MergeFontsPDFWriter.java [160:205]


    private String getUniqueFontName(COSDictionary fontData) throws IOException {
        FontContainer fontContainer = getFont(fontData);
        PDFont font = fontContainer.font;
        if (font.getName() != null) {
            String extra = "";
            String name = getName(font.getName()) + "_" + ((COSName)fontData.getItem(COSName.SUBTYPE)).getName();
            if (font instanceof PDType0Font) {
                PDCIDFont descendantFont = ((PDType0Font) font).getDescendantFont();
                if (descendantFont instanceof PDCIDFontType0) {
                    CFFFont cffFont = ((PDCIDFontType0) descendantFont).getCFFFont();
                    if (cffFont instanceof CFFCIDFont
                            && ((CFFCIDFont) cffFont).getFdSelect().getClass().getName()
                            .equals("org.apache.fontbox.cff.CFFParser$Format0FDSelect")) {
                        extra += "format0";
                    }
                    return name + extra + "cff";
                } else if (descendantFont instanceof PDCIDFontType2 && fontContainer.getToUnicode() != null) {
                    if (!isSubsetFont(font.getName())) {
                        extra = "f3";
                    }
                    return name + extra;
                }
            } else if (font instanceof PDTrueTypeFont && isSubsetFont(font.getName())) {
                TrueTypeFont tt = ((PDTrueTypeFont) font).getTrueTypeFont();
                CmapSubtable[] cmaps = tt.getCmap().getCmaps();
                String mac = "";
                for (CmapSubtable c : cmaps) {
                    if (c.getGlyphId(1) > 0) {
                        extra = "cid";
                    }
                    if (c.getPlatformId() == 1) {
                        mac = "mac";
                    }
                }
                if (cmaps.length != 2) {
                    extra += "cmap" + cmaps.length;
                }
                return name + extra + mac;
            } else if (font instanceof PDType1CFont) {
                return getNamePDType1Font(name, (PDType1CFont) font);
            } else if (font instanceof PDType1Font) {
                return name;
            }
        }
        return null;
    }