Author: tilman
Date: Tue Nov 25 16:02:05 2025
New Revision: 1929988
Log:
PDFBOX-6105: maxComponentDepth should be at least 1
Modified:
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphTable.java
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/MaximumProfileTable.java
Modified:
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphTable.java
==============================================================================
---
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphTable.java
Tue Nov 25 15:29:43 2025 (r1929987)
+++
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphTable.java
Tue Nov 25 16:02:05 2025 (r1929988)
@@ -174,7 +174,7 @@ public class GlyphTable extends TTFTable
{
if (level > maxp.getMaxComponentDepth())
{
- throw new IOException("composite glyph maximum level reached");
+ throw new IOException("composite glyph maximum level (" +
maxp.getMaxComponentDepth() + ") reached");
}
GlyphData glyph = new GlyphData();
int leftSideBearing = hmt == null ? 0 : hmt.getLeftSideBearing(gid);
Modified:
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/MaximumProfileTable.java
==============================================================================
---
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/MaximumProfileTable.java
Tue Nov 25 15:29:43 2025 (r1929987)
+++
pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/MaximumProfileTable.java
Tue Nov 25 16:02:05 2025 (r1929988)
@@ -18,6 +18,9 @@ package org.apache.fontbox.ttf;
import java.io.IOException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
/**
* This 'maxp'-table is a required table in a TrueType font.
*
@@ -25,6 +28,8 @@ import java.io.IOException;
*/
public class MaximumProfileTable extends TTFTable
{
+ private static final Log LOG =
LogFactory.getLog(MaximumProfileTable.class);
+
/**
* A tag that identifies this table type.
*/
@@ -48,7 +53,6 @@ public class MaximumProfileTable extends
MaximumProfileTable()
{
- super();
}
/**
@@ -289,6 +293,11 @@ public class MaximumProfileTable extends
maxSizeOfInstructions = data.readUnsignedShort();
maxComponentElements = data.readUnsignedShort();
maxComponentDepth = data.readUnsignedShort();
+ if (maxComponentDepth == 0)
+ {
+ LOG.warn("maxComponentDepth is 0, set to 1");
+ maxComponentDepth = 1;
+ }
}
initialized = true;
}