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
}
        
        return (FontData[]) good.toArray(new FontData[good.size()]);    	
    }
    
    /**
     * Creates a new font with the given font datas or <code>null</code>
     * if there is no data.
     * @return FontRecord for the new Font or <code>null</code>.
     */
    private FontRecord createFont(String symbolicName, FontData[] fonts) {
        Display display = Display.getCurrent();
        if (display == null) {
        	return null;
        }
        if (cleanOnDisplayDisposal && !displayDisposeHooked) {
        	hookDisplayDispose(display);
        }
        FontData[] validData = filterData(fonts, display);
        if (validData.length == 0) {
             
            return null;
        } 
        
        put(symbolicName, validData, false);
        Font newFont = new Font(display, validData);
        return new FontRecord(newFont, validData);
    }
    /**
     * Calculates the default font and returns the result.