Bug 88191 [Preferences] Temporary shell created in PreferenceConverter
org.eclipse.jface.preference.PreferenceConverter has this code to set its default font data: Shell shell = new Shell(); FONTDATA_ARRAY_DEFAULT_DEFAULT = shell.getFont().getFontData(); shell.dispose(); Rather than creating an extra Shell, is it not sufficient to use display.getSystemFont() ?
bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceConverter.java
JFaceResources.getFontRegistry().put(name, value);
            store.firePropertyChangeEvent(name, oldValue, value);
        }
    }
    /**
     * Sets the current value of the preference with the given name
     * in the given preference store. This method does not update
     * the font registry or fire a property change event.
     * 
     * @param store the preference store
     * @param name the name of the preference
     * @param value the new current value of the preference
     * 
     * @see PreferenceConverter#setValue(IPreferenceStore, String, FontData[])
     */
    public static void putValue(IPreferenceStore store, String name,
            FontData[] value) {
        FontData[] oldValue = getFontDataArray(store, name);
        
        if (!Arrays.equals(oldValue, value)) {
            store.putValue(name, getStoredRepresentation(value));
        }
    }
    /**
     * Returns the stored representation of the given array of FontData objects.
     * The stored representation has the form FontData;FontData;
     * Only includes the non-null entries.
     * 
     * @param fontData the array of FontData objects
     * @return the stored representation of the FontData objects