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 2023/12/11 14:46:41 UTC
svn commit: r1914539 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java
Author: tilman
Date: Mon Dec 11 14:46:41 2023
New Revision: 1914539
URL: http://svn.apache.org/viewvc?rev=1914539&view=rev
Log:
PDFBOX-5695: DRY refactoring, by Axel Howind
Modified:
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java
Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java?rev=1914539&r1=1914538&r2=1914539&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Mon Dec 11 14:46:41 2023
@@ -83,12 +83,12 @@ public class Type2CharStringParser
int b0 = input.readUnsignedByte();
if (b0 == CALLSUBR && localSubroutineIndexProvided)
{
- processCallSubr(globalSubrIndex, localSubrIndex);
- }
+ processCallSubr(globalSubrIndex, localSubrIndex, localSubrIndex);
+ }
else if (b0 == CALLGSUBR && globalSubroutineIndexProvided)
{
- processCallGSubr(globalSubrIndex, localSubrIndex);
- }
+ processCallSubr(globalSubrIndex, localSubrIndex, globalSubrIndex);
+ }
else if ( (b0 >= 0 && b0 <= 27) || (b0 >= 29 && b0 <= 31))
{
sequence.add(readCommand(b0, input));
@@ -105,33 +105,14 @@ public class Type2CharStringParser
return sequence;
}
- private void processCallSubr(byte[][] globalSubrIndex, byte[][] localSubrIndex)
- throws IOException
- {
- int subrNumber = calculateSubrNumber((Integer) sequence.remove(sequence.size() - 1),
- localSubrIndex.length);
- if (subrNumber < localSubrIndex.length)
- {
- byte[] subrBytes = localSubrIndex[subrNumber];
- parseSequence(subrBytes, globalSubrIndex, localSubrIndex);
- Object lastItem = sequence.get(sequence.size() - 1);
- if (lastItem instanceof CharStringCommand
- && Type2KeyWord.RET == ((CharStringCommand) lastItem).getType2KeyWord())
- {
- // remove "return" command
- sequence.remove(sequence.size() - 1);
- }
- }
- }
-
- private void processCallGSubr(byte[][] globalSubrIndex, byte[][] localSubrIndex)
+ private void processCallSubr(byte[][] globalSubrIndex, byte[][] localSubrIndex, byte[][] subrIndex)
throws IOException
{
int subrNumber = calculateSubrNumber((Integer) sequence.remove(sequence.size() - 1),
- globalSubrIndex.length);
- if (subrNumber < globalSubrIndex.length)
+ subrIndex.length);
+ if (subrNumber < subrIndex.length)
{
- byte[] subrBytes = globalSubrIndex[subrNumber];
+ byte[] subrBytes = subrIndex[subrNumber];
parseSequence(subrBytes, globalSubrIndex, localSubrIndex);
Object lastItem = sequence.get(sequence.size() - 1);
if (lastItem instanceof CharStringCommand