Author: tilman
Date: Fri Aug 28 04:06:20 2026
New Revision: 1937544
Log:
PDFBOX-6245: add test for 3654
Modified:
pdfbox/branches/2.0/fontbox/src/test/java/org/apache/fontbox/pfb/PfbParserTest.java
Modified:
pdfbox/branches/2.0/fontbox/src/test/java/org/apache/fontbox/pfb/PfbParserTest.java
==============================================================================
---
pdfbox/branches/2.0/fontbox/src/test/java/org/apache/fontbox/pfb/PfbParserTest.java
Fri Aug 28 04:04:26 2026 (r1937543)
+++
pdfbox/branches/2.0/fontbox/src/test/java/org/apache/fontbox/pfb/PfbParserTest.java
Fri Aug 28 04:06:20 2026 (r1937544)
@@ -16,11 +16,14 @@
*/
package org.apache.fontbox.pfb;
+import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Arrays;
import org.apache.fontbox.encoding.BuiltInEncoding;
+import org.apache.fontbox.encoding.StandardEncoding;
import org.apache.fontbox.type1.Type1Font;
import org.junit.Assert;
@@ -90,6 +93,36 @@ public class PfbParserTest
}
/**
+ * PDFBOX-3654: font with hex encoded binary segment.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testPfbPDFBox3654() throws IOException
+ {
+ File file = new File("target/fonts/KIX-Barcode-Regular.pfb");
+ InputStream is = new FileInputStream(file);
+ byte[] ba = new byte[(int) file.length()];
+ is.read(ba);
+ is.close();
+ Type1Font font = Type1Font.createWithSegments(Arrays.copyOfRange(ba,
0, 1039),
+ Arrays.copyOfRange(ba, 1039, 1039 + 26868));
+ Assert.assertEquals("001.000", font.getVersion());
+ Assert.assertEquals("KIX-Barcode-Regular", font.getFontName());
+ Assert.assertEquals("KIX-Barcode-Regular", font.getFullName());
+ Assert.assertEquals("KIX-Barcode", font.getFamilyName());
+ Assert.assertEquals("", font.getNotice());
+ Assert.assertFalse(font.isFixedPitch());
+ Assert.assertFalse(font.isForceBold());
+ Assert.assertEquals(0f, font.getItalicAngle(), 0);
+ Assert.assertEquals("Regular", font.getWeight());
+ Assert.assertTrue(font.getEncoding() instanceof StandardEncoding);
+ Assert.assertEquals(1039, font.getASCIISegment().length);
+ Assert.assertEquals(26868, font.getBinarySegment().length);
+ Assert.assertEquals(257, font.getCharStringsDict().size());
+ }
+
+ /**
* Test 0 length font.
*/
@Test(expected=IOException.class)