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