use of com.tom_roush.pdfbox.pdmodel.font.encoding.DictionaryEncoding in project PdfBox-Android by TomRoush.
the class TestFontEncoding method testOverwrite.
public void testOverwrite() throws Exception {
// see PDFDBOX-3332
COSDictionary dictEncodingDict = new COSDictionary();
dictEncodingDict.setItem(COSName.TYPE, COSName.ENCODING);
dictEncodingDict.setItem(COSName.BASE_ENCODING, COSName.WIN_ANSI_ENCODING);
COSArray differences = new COSArray();
differences.add(COSInteger.get(32));
differences.add(COSName.getPDFName("a"));
dictEncodingDict.setItem(COSName.DIFFERENCES, differences);
DictionaryEncoding dictEncoding = new DictionaryEncoding(dictEncodingDict, false, null);
assertNull(dictEncoding.getNameToCodeMap().get("space"));
assertEquals(32, dictEncoding.getNameToCodeMap().get("a").intValue());
}
use of com.tom_roush.pdfbox.pdmodel.font.encoding.DictionaryEncoding in project PdfBox-Android by TomRoush.
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 encoding = dict.getDictionaryObject(COSName.ENCODING);
if (encoding != null) {
if (encoding instanceof COSName) {
COSName encodingName = (COSName) encoding;
this.encoding = Encoding.getInstance(encodingName);
if (this.encoding == null) {
Log.w("PdfBox-Android", "Unknown encoding: " + encodingName.getName());
// fallback
this.encoding = readEncodingFromFont();
}
} else if (encoding instanceof COSDictionary) {
COSDictionary encodingDict = (COSDictionary) encoding;
Encoding builtIn = null;
Boolean symbolic = getSymbolicFlag();
boolean isFlaggedAsSymbolic = symbolic != null && symbolic;
COSName baseEncoding = encodingDict.getCOSName(COSName.BASE_ENCODING);
boolean hasValidBaseEncoding = baseEncoding != null && Encoding.getInstance(baseEncoding) != null;
if (!hasValidBaseEncoding && isFlaggedAsSymbolic) {
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"
String standard14Name = Standard14Fonts.getMappedFontName(getName());
// assign the glyph list based on the font
if ("ZapfDingbats".equals(standard14Name)) {
glyphList = GlyphList.getZapfDingbats();
} else {
// StandardEncoding and Symbol are in the AGL
glyphList = GlyphList.getAdobeGlyphList();
}
}
use of com.tom_roush.pdfbox.pdmodel.font.encoding.DictionaryEncoding in project PdfBox-Android by TomRoush.
the class PDType3Font method readEncoding.
@Override
protected final void readEncoding() throws IOException {
COSBase encodingBase = dict.getDictionaryObject(COSName.ENCODING);
if (encodingBase instanceof COSName) {
COSName encodingName = (COSName) encodingBase;
encoding = Encoding.getInstance(encodingName);
if (encoding == null) {
Log.w("PdfBox-Android", "Unknown encoding: " + encodingName.getName());
}
} else if (encodingBase instanceof COSDictionary) {
encoding = new DictionaryEncoding((COSDictionary) encodingBase);
}
glyphList = GlyphList.getAdobeGlyphList();
}
Aggregations