FOP-2904: Handle object for boundingbox
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop-pdf-images/trunk@1872811 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/java/org/apache/fop/render/pdf/pdfbox/FOPPDFMultiByteFont.java b/src/java/org/apache/fop/render/pdf/pdfbox/FOPPDFMultiByteFont.java
index 873902f..9a1f52a 100644
--- a/src/java/org/apache/fop/render/pdf/pdfbox/FOPPDFMultiByteFont.java
+++ b/src/java/org/apache/fop/render/pdf/pdfbox/FOPPDFMultiByteFont.java
@@ -307,8 +307,11 @@
for (Map.Entry<COSName, COSBase> n : dict.entrySet()) {
readFontBBox(n.getValue());
if (n.getKey() == COSName.FONT_BBOX) {
- COSArray w = (COSArray)n.getValue();
- float[] bboxf = w.toFloatArray();
+ COSBase bboxArray = n.getValue();
+ if (bboxArray instanceof COSObject) {
+ bboxArray = ((COSObject) bboxArray).getObject();
+ }
+ float[] bboxf = ((COSArray)bboxArray).toFloatArray();
int[] bbox = new int[bboxf.length];
for (int i = 0; i < bbox.length; i++) {
bbox[i] = (int)bboxf[i];
diff --git a/test/java/org/apache/fop/render/pdf/FOPPDFSingleMultiByteFontTestCase.java b/test/java/org/apache/fop/render/pdf/FOPPDFSingleMultiByteFontTestCase.java
index d164c63..c7ad2d8 100644
--- a/test/java/org/apache/fop/render/pdf/FOPPDFSingleMultiByteFontTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/FOPPDFSingleMultiByteFontTestCase.java
@@ -31,8 +31,11 @@
import org.apache.fontbox.ttf.GlyphData;
import org.apache.fontbox.ttf.GlyphTable;
import org.apache.fontbox.type1.Type1Font;
+import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSNumber;
+import org.apache.pdfbox.cos.COSObject;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
@@ -194,4 +197,23 @@
return getFont(fontData);
}
}
+
+ @Test
+ public void testBBox() throws IOException {
+ COSDictionary dict = new COSDictionary();
+ COSArray array = new COSArray();
+ array.add(COSNumber.get("1"));
+ dict.setItem(COSName.FONT_BBOX, new COSObject(array));
+ FOPPDFMultiByteFont multiByteFont = new NoAddFontFOPPDFMultiByteFont(dict, "");
+ Assert.assertEquals(multiByteFont.getFontBBox()[0], 1);
+ }
+
+ private static class NoAddFontFOPPDFMultiByteFont extends FOPPDFMultiByteFont {
+ NoAddFontFOPPDFMultiByteFont(COSDictionary fontData, String name) throws IOException {
+ super(fontData, name);
+ }
+ public String addFont(COSDictionary fontData) {
+ return null;
+ }
+ };
}