use of org.apache.pdfbox.pdmodel.font.Standard14Fonts.FontName 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);
}
}
use of org.apache.pdfbox.pdmodel.font.Standard14Fonts.FontName in project pdfbox by apache.
the class PDSimpleFont method readEncoding.
/**
* Reads the Encoding from the Font dictionary or the embedded or substituted font file.
* Must be called at the end of any subclass constructors.
*
* @throws IOException if the font file could not be read
*/
protected void readEncoding() throws IOException {
COSBase encodingBase = dict.getDictionaryObject(COSName.ENCODING);
if (encodingBase instanceof COSName) {
COSName encodingName = (COSName) encodingBase;
this.encoding = Encoding.getInstance(encodingName);
if (this.encoding == null) {
LOG.warn("Unknown encoding: " + encodingName.getName());
// fallback
this.encoding = readEncodingFromFont();
}
} else if (encodingBase instanceof COSDictionary) {
COSDictionary encodingDict = (COSDictionary) encodingBase;
Encoding builtIn = null;
Boolean symbolic = getSymbolicFlag();
COSName baseEncoding = encodingDict.getCOSName(COSName.BASE_ENCODING);
boolean hasValidBaseEncoding = baseEncoding != null && Encoding.getInstance(baseEncoding) != null;
if (!hasValidBaseEncoding && Boolean.TRUE.equals(symbolic)) {
builtIn = readEncodingFromFont();
}
if (symbolic == null) {
symbolic = false;
}
this.encoding = new DictionaryEncoding(encodingDict, !symbolic, builtIn);
} else {
this.encoding = readEncodingFromFont();
}
// normalise the standard 14 name, e.g "Symbol,Italic" -> "Symbol"
FontName standard14Name = Standard14Fonts.getMappedFontName(getName());
assignGlyphList(standard14Name);
}
Aggregations