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;
     }
 
     /**