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 the first one regardless. If the list is empty return null. Return
	 * <code>null</code> if one cannot be found.
	 * 
     * @param fonts the font list
     * @param display the display used 
     * @return the font data of the like describe above
	 * 
	 * @deprecated use bestDataArray in order to support Motif multiple entry
	 *             fonts.
	 */
    public FontData bestData(FontData[] fonts, Display display) {
        for (int i = 0; i < fonts.length; i++) {
            FontData fd = fonts[i];
            if (fd == null) {
				break;
			}
            FontData[] fixedFonts = display.getFontList(fd.getName(), false);
            if (isFixedFont(fixedFonts, fd)) {
                return fd;
            }
            FontData[] scalableFonts = display.getFontList(fd.getName(), true);
            if (scalableFonts.length > 0) {
                return fd;
            }
        }
        
        
        if (fonts.length > 0) {
			return fonts[0];
		}