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 2022/05/15 16:10:18 UTC

svn commit: r1900930 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Embedder.java

Author: tilman
Date: Sun May 15 16:10:17 2022
New Revision: 1900930

URL: http://svn.apache.org/viewvc?rev=1900930&view=rev
Log:
PDFBOX-4892: optimize, as suggested by Valery Bokov

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Embedder.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Embedder.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Embedder.java?rev=1900930&r1=1900929&r2=1900930&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Embedder.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Embedder.java Sun May 15 16:10:17 2022
@@ -292,10 +292,11 @@ final class PDCIDFontType2Embedder exten
         int prev = Integer.MIN_VALUE;
         // Use a sorted list to get an optimal width array  
         Set<Integer> keys = new TreeSet<Integer>(cidToGid.keySet());
+        HorizontalMetricsTable horizontalMetricsTable = ttf.getHorizontalMetrics();
         for (int cid : keys)
         {
             int gid = cidToGid.get(cid);
-            long width = Math.round(ttf.getHorizontalMetrics().getAdvanceWidth(gid) * scaling);
+            long width = Math.round(horizontalMetricsTable.getAdvanceWidth(gid) * scaling);
             if (width == 1000)
             {
                 // skip default width
@@ -405,10 +406,11 @@ final class PDCIDFontType2Embedder exten
     {
         int cidMax = ttf.getNumberOfGlyphs();
         int[] gidwidths = new int[cidMax * 2];
+        HorizontalMetricsTable horizontalMetricsTable = ttf.getHorizontalMetrics();
         for (int cid = 0; cid < cidMax; cid++)
         {
             gidwidths[cid * 2] = cid;
-            gidwidths[cid * 2 + 1] = ttf.getHorizontalMetrics().getAdvanceWidth(cid);
+            gidwidths[cid * 2 + 1] = horizontalMetricsTable.getAdvanceWidth(cid);
         }
 
         cidFont.setItem(COSName.W, getWidths(gidwidths));
@@ -527,9 +529,12 @@ final class PDCIDFontType2Embedder exten
 
         int cidMax = ttf.getNumberOfGlyphs();
         int[] gidMetrics = new int[cidMax * 4];
+        GlyphTable glyphTable = ttf.getGlyph();
+        VerticalMetricsTable verticalMetricsTable = ttf.getVerticalMetrics();
+        HorizontalMetricsTable horizontalMetricsTable = ttf.getHorizontalMetrics();
         for (int cid = 0; cid < cidMax; cid++)
         {
-            GlyphData glyph = ttf.getGlyph().getGlyph(cid);
+            GlyphData glyph = glyphTable.getGlyph(cid);
             if (glyph == null)
             {
                 gidMetrics[cid * 4] = Integer.MIN_VALUE;
@@ -537,9 +542,9 @@ final class PDCIDFontType2Embedder exten
             else
             {
                 gidMetrics[cid * 4] = cid;
-                gidMetrics[cid * 4 + 1] = ttf.getVerticalMetrics().getAdvanceHeight(cid);
-                gidMetrics[cid * 4 + 2] = ttf.getHorizontalMetrics().getAdvanceWidth(cid);
-                gidMetrics[cid * 4 + 3] = glyph.getYMaximum() + ttf.getVerticalMetrics().getTopSideBearing(cid);
+                gidMetrics[cid * 4 + 1] = verticalMetricsTable.getAdvanceHeight(cid);
+                gidMetrics[cid * 4 + 2] = horizontalMetricsTable.getAdvanceWidth(cid);
+                gidMetrics[cid * 4 + 3] = glyph.getYMaximum() + verticalMetricsTable.getTopSideBearing(cid);
             }
         }