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 2021/03/14 06:38:45 UTC
svn commit: r1887618 -
/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
Author: tilman
Date: Sun Mar 14 06:38:45 2021
New Revision: 1887618
URL: http://svn.apache.org/viewvc?rev=1887618&view=rev
Log:
PDFBOX-4892: improve performance, as suggested by valerybokov
Modified:
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java?rev=1887618&r1=1887617&r2=1887618&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java Sun Mar 14 06:38:45 2021
@@ -119,7 +119,7 @@ public class CFFParser
stringIndex = readStringIndexData(input);
byte[][] globalSubrIndex = readIndexData(input);
- List<CFFFont> fonts = new ArrayList<>();
+ List<CFFFont> fonts = new ArrayList<>(nameIndex.length);
for (int i = 0; i < nameIndex.length; i++)
{
CFFFont font = parseFont(input, nameIndex[i], topDictIndex[i]);
@@ -278,7 +278,7 @@ public class CFFParser
}
else if (b0 == 30)
{
- entry.operands.add(readRealNumber(input, b0));
+ entry.operands.add(readRealNumber(input));
}
else if (b0 >= 32 && b0 <= 254)
{
@@ -338,19 +338,18 @@ public class CFFParser
}
}
- /**
- * @param b0
- */
- private static Double readRealNumber(CFFDataInput input, int b0) throws IOException
+ private static Double readRealNumber(CFFDataInput input) throws IOException
{
StringBuilder sb = new StringBuilder();
boolean done = false;
boolean exponentMissing = false;
boolean hasExponent = false;
+ int[] nibbles = new int[2];
while (!done)
{
int b = input.readUnsignedByte();
- int[] nibbles = { b / 16, b % 16 };
+ nibbles[0] = b / 16;
+ nibbles[1] = b % 16;
for (int nibble : nibbles)
{
switch (nibble)