Search in sources :

Example 1 with BuiltInEncoding

use of org.apache.pdfbox.pdmodel.font.encoding.BuiltInEncoding in project pdfbox by apache.

the class PDTrueTypeFont method readEncodingFromFont.

@Override
protected Encoding readEncodingFromFont() throws IOException {
    if (!isEmbedded() && getStandard14AFM() != null) {
        // read from AFM
        return new Type1Encoding(getStandard14AFM());
    } else {
        // which will override this anyway
        if (getSymbolicFlag() != null && !getSymbolicFlag()) {
            return StandardEncoding.INSTANCE;
        }
        // normalise the standard 14 name, e.g "Symbol,Italic" -> "Symbol"
        FontName standard14Name = Standard14Fonts.getMappedFontName(getName());
        // likewise, if the font is standard 14 then we know it's Standard Encoding
        if (isStandard14() && standard14Name != FontName.SYMBOL && standard14Name != FontName.ZAPF_DINGBATS) {
            return StandardEncoding.INSTANCE;
        }
        // synthesize an encoding, so that getEncoding() is always usable
        PostScriptTable post = ttf.getPostScript();
        Map<Integer, String> codeToName = new HashMap<>();
        for (int code = 0; code <= 256; code++) {
            int gid = codeToGID(code);
            if (gid > 0) {
                String name = null;
                if (post != null) {
                    name = post.getName(gid);
                }
                if (name == null) {
                    // GID pseudo-name
                    name = Integer.toString(gid);
                }
                codeToName.put(code, name);
            }
        }
        return new BuiltInEncoding(codeToName);
    }
}
Also used : PostScriptTable(org.apache.fontbox.ttf.PostScriptTable) Type1Encoding(org.apache.pdfbox.pdmodel.font.encoding.Type1Encoding) HashMap(java.util.HashMap) BuiltInEncoding(org.apache.pdfbox.pdmodel.font.encoding.BuiltInEncoding) FontName(org.apache.pdfbox.pdmodel.font.Standard14Fonts.FontName) UniUtil.getUniNameOfCodePoint(org.apache.pdfbox.pdmodel.font.UniUtil.getUniNameOfCodePoint)

Aggregations

HashMap (java.util.HashMap)1 PostScriptTable (org.apache.fontbox.ttf.PostScriptTable)1 FontName (org.apache.pdfbox.pdmodel.font.Standard14Fonts.FontName)1 UniUtil.getUniNameOfCodePoint (org.apache.pdfbox.pdmodel.font.UniUtil.getUniNameOfCodePoint)1 BuiltInEncoding (org.apache.pdfbox.pdmodel.font.encoding.BuiltInEncoding)1 Type1Encoding (org.apache.pdfbox.pdmodel.font.encoding.Type1Encoding)1