You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2021/03/31 06:26:10 UTC

svn commit: r1888242 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java

Author: lehmi
Date: Wed Mar 31 06:26:09 2021
New Revision: 1888242

URL: http://svn.apache.org/viewvc?rev=1888242&view=rev
Log:
PDFBOX-5143: cache some heavily used values, delete TODO

Modified:
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java?rev=1888242&r1=1888241&r2=1888242&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFType1Font.java Wed Mar 31 06:26:09 2021
@@ -41,6 +41,10 @@ public class CFFType1Font extends CFFFon
 
     private final PrivateType1CharStringReader reader = new PrivateType1CharStringReader();
 
+    private int defaultWidthX = Integer.MIN_VALUE;
+    private int nominalWidthX = Integer.MIN_VALUE;
+    private byte[][] localSubrIndex;
+
     /**
      * Private implementation of Type1CharStringReader, because only CFFType1Font can
      * expose this publicly, as CIDFonts only support this for legacy 'seac' commands.
@@ -162,7 +166,6 @@ public class CFFType1Font extends CFFFon
      * @param name the given key
      * @param value the given value
      */
-    // todo: can't we just accept a Map?
     void addToPrivateDict(String name, Object value)
     {
         if (value != null)
@@ -194,7 +197,11 @@ public class CFFType1Font extends CFFFon
 
     private byte[][] getLocalSubrIndex()
     {
-        return (byte[][])privateDict.get("Subrs");
+        if (localSubrIndex == null)
+        {
+            localSubrIndex = (byte[][]) privateDict.get("Subrs");
+        }
+        return localSubrIndex;
     }
 
     // helper for looking up keys/values
@@ -210,21 +217,21 @@ public class CFFType1Font extends CFFFon
 
     private int getDefaultWidthX()
     {
-        Number num = (Number)getProperty("defaultWidthX");
-        if (num == null)
+        if (defaultWidthX == Integer.MIN_VALUE)
         {
-            return 1000;
+            Number num = (Number) getProperty("defaultWidthX");
+            defaultWidthX = num != null ? num.intValue() : 1000;
         }
-        return num.intValue();
+        return defaultWidthX;
     }
 
     private int getNominalWidthX()
     {
-        Number num = (Number)getProperty("nominalWidthX");
-        if (num == null)
+        if (nominalWidthX == Integer.MIN_VALUE)
         {
-            return 0;
+            Number num = (Number) getProperty("nominalWidthX");
+            nominalWidthX = num != null ? num.intValue() : 0;
         }
-        return num.intValue();
+        return nominalWidthX;
     }
 }