You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2019/05/18 08:58:35 UTC
svn commit: r1859457 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
Author: tilman
Date: Sat May 18 08:58:35 2019
New Revision: 1859457
URL: http://svn.apache.org/viewvc?rev=1859457&view=rev
Log:
PDFBOX-4549: refactor by splitting long constructor
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java?rev=1859457&r1=1859456&r2=1859457&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java Sat May 18 08:58:35 2019
@@ -102,6 +102,8 @@ public abstract class PDFont implements
* Constructor.
*
* @param fontDictionary Font dictionary.
+ *
+ * @throws java.io.IOException
*/
protected PDFont(COSDictionary fontDictionary) throws IOException
{
@@ -110,52 +112,56 @@ public abstract class PDFont implements
// standard 14 fonts use an AFM
afmStandard14 = Standard14Fonts.getAFM(getName()); // may be null (it usually is)
+ fontDescriptor = loadFontDescriptor();
+ toUnicodeCMap = loadUnicodeCmap();
+ }
- // font descriptor
+ private PDFontDescriptor loadFontDescriptor()
+ {
COSDictionary fd = (COSDictionary) dict.getDictionaryObject(COSName.FONT_DESC);
if (fd != null)
{
- fontDescriptor = new PDFontDescriptor(fd);
+ return new PDFontDescriptor(fd);
}
else if (afmStandard14 != null)
{
// build font descriptor from the AFM
- fontDescriptor = PDType1FontEmbedder.buildFontDescriptor(afmStandard14);
+ return PDType1FontEmbedder.buildFontDescriptor(afmStandard14);
}
else
{
- fontDescriptor = null;
+ return null;
}
+ }
- // ToUnicode CMap
+ private CMap loadUnicodeCmap()
+ {
COSBase toUnicode = dict.getDictionaryObject(COSName.TO_UNICODE);
- if (toUnicode != null)
+ if (toUnicode == null)
+ {
+ return null;
+ }
+
+ CMap cmap = null;
+ try
{
- CMap cmap = null;
- try
+ cmap = readCMap(toUnicode);
+ if (cmap != null && !cmap.hasUnicodeMappings())
{
- cmap = readCMap(toUnicode);
- if (cmap != null && !cmap.hasUnicodeMappings())
+ LOG.warn("Invalid ToUnicode CMap in font " + getName());
+ if (COSName.IDENTITY_H.equals(dict.getDictionaryObject(COSName.ENCODING)) &&
+ COSName.IDENTITY_H.getName().equals(cmap.getOrdering()))
{
- LOG.warn("Invalid ToUnicode CMap in font " + getName());
- if (COSName.IDENTITY_H.equals(dict.getDictionaryObject(COSName.ENCODING)) &&
- COSName.IDENTITY_H.getName().equals(cmap.getOrdering()))
- {
- // assume that if encoding is identity, then the reverse is also true
- cmap = CMapManager.getPredefinedCMap(COSName.IDENTITY_H.getName());
- }
+ // assume that if encoding is identity, then the reverse is also true
+ cmap = CMapManager.getPredefinedCMap(COSName.IDENTITY_H.getName());
}
}
- catch (IOException ex)
- {
- LOG.error("Could not read ToUnicode CMap in font " + getName(), ex);
- }
- toUnicodeCMap = cmap;
}
- else
+ catch (IOException ex)
{
- toUnicodeCMap = null;
+ LOG.error("Could not read ToUnicode CMap in font " + getName(), ex);
}
+ return cmap;
}
/**