public void setFontProperties(Properties fontProperties)
            throws IllegalArgumentException {
        String errorString = "Error parsing font properties ";
        try {
            fontList = new ArrayList<Object[]>(150);
            Enumeration fonts = fontProperties.propertyNames();
            String name;
            String family;
            Integer decorations;
            String path;
            StringTokenizer tokens;
            // read in font information
            while (fonts.hasMoreElements()) {
                name = (String) fonts.nextElement();
                tokens = new StringTokenizer((String) fontProperties.get(name), "|");
                // get family, decoration and path tokens
                family = tokens.nextToken();
                decorations = new Integer(tokens.nextToken());
                path = tokens.nextToken();
                if (name != null && family != null && path != null) {
                    fontList.add(new Object[]{name, family, decorations, path});
                } else {
                    throw new IllegalArgumentException(errorString);
                }
            }
            sortFontListByName();
        } catch (Throwable e) {
            logger.log(Level.FINE, "Error setting font properties ", e);
            throw new IllegalArgumentException(errorString);
        }
    }