Index: trunk/src/com/kitfox/svg/util/FontSystem.java
===================================================================
--- trunk/src/com/kitfox/svg/util/FontSystem.java	(revision 11525)
+++ trunk/src/com/kitfox/svg/util/FontSystem.java	(revision 14328)
@@ -42,8 +42,10 @@
 import java.awt.Canvas;
 import java.awt.FontMetrics;
+import java.awt.GraphicsEnvironment;
 import java.awt.font.FontRenderContext;
 import java.awt.font.GlyphMetrics;
 import java.awt.font.GlyphVector;
 import java.util.HashMap;
+import java.util.HashSet;
 
 /**
@@ -58,5 +60,34 @@
     HashMap<String, Glyph> glyphCache = new HashMap<String, Glyph>();
     
-    public FontSystem(String fontFamily, int fontStyle, int fontWeight, int fontSize)
+    static HashSet<String> sysFontNames = new HashSet<String>();
+
+    public static boolean checkIfSystemFontExists(String fontName)
+    {
+        if (sysFontNames.isEmpty())
+        {
+            for (String name: GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames())
+            {
+                sysFontNames.add(name);
+            }
+        }
+
+        return sysFontNames.contains(fontName);
+    }
+
+    public static FontSystem createFont(String fontFamily, int fontStyle, int fontWeight, int fontSize)
+    {
+        String[] families = fontFamily.split(",");
+        for (String fontName: families)
+        {
+            if (checkIfSystemFontExists(fontName))
+            {
+                return new FontSystem(fontName, fontStyle, fontWeight, fontSize);
+            }
+        }
+
+        return null;
+    }
+
+    private FontSystem(String fontFamily, int fontStyle, int fontWeight, int fontSize)
     {
         int style;
@@ -82,5 +113,6 @@
                 break;
         }
-        sysFont = new java.awt.Font(fontFamily, style | weight, (int) fontSize);
+
+        sysFont = new java.awt.Font(fontFamily, style | weight, fontSize);
         
         Canvas c = new Canvas();
@@ -100,5 +132,5 @@
         GlyphVector vec = sysFont.createGlyphVector(frc, unicode);
         
-        Glyph glyph = (Glyph)glyphCache.get(unicode);
+        Glyph glyph = glyphCache.get(unicode);
         if (glyph == null)
         {
@@ -107,6 +139,6 @@
 
             GlyphMetrics gm = vec.getGlyphMetrics(0);
-            glyph.setHorizAdvX((int)gm.getAdvanceX());
-            glyph.setVertAdvY((int)gm.getAdvanceY());
+            glyph.setHorizAdvX(gm.getAdvanceX());
+            glyph.setVertAdvY(gm.getAdvanceY());
             glyph.setVertOriginX(0);
             glyph.setVertOriginY(0);
