]> source.dussan.org Git - poi.git/commitdiff
If the Escher layer is asked to draw text with an invalid font, throw a much more...
authorNick Burch <nick@apache.org>
Thu, 9 Aug 2007 14:27:06 +0000 (14:27 +0000)
committerNick Burch <nick@apache.org>
Thu, 9 Aug 2007 14:27:06 +0000 (14:27 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@564219 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/usermodel/FontDetails.java
src/testcases/org/apache/poi/hssf/usermodel/TestEscherGraphics2d.java

index 2faaef5abce52fab69d0bbedb96f9f6c7a766fa4..6a8172821b93c578b9998850f5eee296e66cee45 100644 (file)
@@ -95,6 +95,14 @@ public class FontDetails
         String heightStr = fontMetricsProps.getProperty( "font." + fontName + ".height");
         String widthsStr = fontMetricsProps.getProperty( "font." + fontName + ".widths");
         String charactersStr = fontMetricsProps.getProperty( "font." + fontName + ".characters");
+
+        // Ensure that this is a font we know about
+        if(heightStr == null || widthsStr == null || charactersStr == null) {
+            // We don't know all we need to about this font
+            // Since we don't know its sizes, we can't work with it
+            throw new IllegalArgumentException("The supplied FontMetrics doesn't know about the font '" + fontName + "', so we can't use it. Please add it to your font metrics file (see StaticFontMetrics.getFontDetails");
+        }
+
         int height = Integer.parseInt(heightStr);
         FontDetails d = new FontDetails(fontName, height);
         String[] charactersStrArray = split(charactersStr, ",", -1);
index 1ed9f8fabb0beb02954040eaeb8a2fd199911eb9..ddbe4b0a8fead7a888324b6f8b5ed7287cbf9548 100644 (file)
@@ -50,6 +50,20 @@ public class TestEscherGraphics2d extends TestCase
         graphics.drawString("This is a test", 10, 10);
         HSSFTextbox t = (HSSFTextbox) escherGroup.getChildren().get(0);
         assertEquals("This is a test", t.getString().getString().toString());
+
+               // Check that with a valid font, it's still ok
+               Font font = new Font("Forte", Font.PLAIN, 12);
+               graphics.setFont(font);
+        graphics.drawString("This is another test", 10, 10);
+
+               // But with an invalid font, we get an exception
+               font = new Font("IamAmadeUPfont", Font.PLAIN, 22);
+               graphics.setFont(font);
+               try {
+                       graphics.drawString("This is another test", 10, 10);
+                       fail();
+               } catch(IllegalArgumentException e) {
+               }
     }
 
     public void testFillRect() throws Exception