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;
+        }
+    };
 }