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
* @param name the name of the preference
     * @param value the new current value of the preference
     */
    public static void setValue(IPreferenceStore store, String name,
            FontData value) {
        setValue(store, name, new FontData[] { value });
    }
    /**
     * Sets the current value of the preference with the given name
     * in the given preference store. This method also sets the corresponding
     * key in the JFace font registry to the value and fires a 
     * property change event to listeners on the preference store.
     * 
     * <p>
     * Note that this API does not update any other settings that may
     * be dependant upon it. Only the value in the preference store 
     * and in the font registry is updated.
     * </p> 
     * @param store the preference store
     * @param name the name of the preference
     * @param value the new current value of the preference
     * 
     * @see #putValue(IPreferenceStore, String, FontData[])
     */
    public static void setValue(IPreferenceStore store, String name,
            FontData[] value) {
        FontData[] oldValue = getFontDataArray(store, name);
        
        if (!Arrays.equals(oldValue, value)) {
            store.putValue(name, getStoredRepresentation(value));