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
FontRecord fontRecord;
        if (result == null) {
			fontRecord = defaultFontRecord();
		} else {
			fontRecord = createFont(symbolicName, (FontData[]) result);
		}
        if (fontRecord == null) {
			fontRecord = defaultFontRecord();
		}
        stringToFontRecord.put(symbolicName, fontRecord);
        return fontRecord;
    }
    /* (non-Javadoc)
     * @see org.eclipse.jface.resource.ResourceRegistry#getKeySet()
     */
    public Set getKeySet() {
        return Collections.unmodifiableSet(stringToFontData.keySet());
    }
    /* (non-Javadoc)
     * @see org.eclipse.jface.resource.ResourceRegistry#hasValueFor(java.lang.String)
     */
    public boolean hasValueFor(String fontKey) {
        return stringToFontData.containsKey(fontKey);
    }
    /* (non-Javadoc)
     * @see org.eclipse.jface.resource.ResourceRegistry#clearCaches()
     */
    protected void clearCaches() {
        Iterator iterator = stringToFontRecord.values().iterator();
        while (iterator.hasNext()) {