Bug 230360 [JFace] FontRegistry does not play nicely with non-UI threads
This method does: ... Display current = Display.getCurrent(); if (current == null) { Shell shell = new Shell(); } This code will _always_ fail because Shell will execute if (!display.isValidThread ()) Which is always TRUE because "current" was null.
bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java
}
    /**
     * Table of known fonts, keyed by symbolic font name
     * (key type: <code>String</code>, 
     *  value type: <code>FontRecord</code>.
     */
    private Map stringToFontRecord = new HashMap(7);
    /**
     * Table of known font data, keyed by symbolic font name
     * (key type: <code>String</code>, 
     *  value type: <code>org.eclipse.swt.graphics.FontData[]</code>).
     */
    private Map stringToFontData = new HashMap(7);
    /**
     * Collection of Fonts that are now stale to be disposed
     * when it is safe to do so (i.e. on shutdown).
     * @see List
     */
    private List staleFonts = new ArrayList();
    /**
     * Runnable that cleans up the manager on disposal of the display.
     */
    protected Runnable displayRunnable = new Runnable() {
        public void run() {
            clearCaches();
        }
    };
	private boolean displayDisposeHooked;
	private final boolean cleanOnDisplayDisposal;
    /**