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/08/28 06:58:15 UTC

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

Author: tilman
Date: Sun Aug 28 06:58:15 2022
New Revision: 1903716

URL: http://svn.apache.org/viewvc?rev=1903716&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=1903716&r1=1903715&r2=1903716&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 Aug 28 06:58:15 2022
@@ -238,23 +238,22 @@ final class PDCIDFontType2Embedder exten
 
     private void buildCIDToGIDMap(Map<Integer, Integer> cidToGid) throws IOException
     {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
         int cidMax = Collections.max(cidToGid.keySet());
+        byte buffer[] = new byte[cidMax * 2 + 2];
+        int bi = 0;
         for (int i = 0; i <= cidMax; i++)
         {
-            int gid;
-            if (cidToGid.containsKey(i))
+            Integer gid = cidToGid.get(i);
+            if (gid != null)
             {
-                gid = cidToGid.get(i);
+                buffer[bi]   = (byte) (gid >> 8 & 0xff);
+                buffer[bi+1] = (byte) (gid & 0xff);
             }
-            else
-            {
-                gid = 0;
-            }
-            out.write(new byte[] { (byte)(gid >> 8 & 0xff), (byte)(gid & 0xff) });
+            // else keep 0 initialization
+            bi += 2;
         }
 
-        InputStream input = new ByteArrayInputStream(out.toByteArray());
+        InputStream input = new ByteArrayInputStream(buffer);
         PDStream stream = new PDStream(document, input, COSName.FLATE_DECODE);
 
         cidFont.setItem(COSName.CID_TO_GID_MAP, stream);