Skip to content

Commit 9249b69

Browse files
committed
PDFBOX-5987: preprocess DIV commands
git-svn-id: https://svn.apache.org/repos/asf/pdfbox/trunk@1925086 13f79535-47bb-0310-9956-ffa450edef68
1 parent 7bf2a5e commit 9249b69

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

fontbox/src/main/java/org/apache/fontbox/cff/Type2CharString.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,33 @@ private void convertType1ToType2(List<Object> sequence)
7676
{
7777
pathCount = 0;
7878
List<Number> numbers = new ArrayList<>();
79-
sequence.forEach(obj -> {
79+
80+
List<Object> newSequence = new ArrayList<>(sequence.size());
81+
for (int i = 0; i < sequence.size(); ++i)
82+
{
83+
if (sequence.get(i) == CharStringCommand.DIV && i >= 2)
84+
{
85+
Object num = sequence.get(i - 2);
86+
Object den = sequence.get(i - 1);
87+
if (num instanceof Number && den instanceof Number)
88+
{
89+
float f = ((Number) num).floatValue() / ((Number) den).floatValue();
90+
newSequence.remove(newSequence.size() - 1);
91+
newSequence.remove(newSequence.size() - 1);
92+
newSequence.add(f);
93+
}
94+
else
95+
{
96+
newSequence.add(sequence.get(i)); // GIGO
97+
}
98+
}
99+
else
100+
{
101+
newSequence.add(sequence.get(i));
102+
}
103+
}
104+
105+
newSequence.forEach(obj -> {
80106
if (obj instanceof CharStringCommand)
81107
{
82108
List<Number> results = convertType2Command(numbers, (CharStringCommand) obj);

0 commit comments

Comments
 (0)