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 null;
    }
    /**
     * Find the first valid fontData in the provided list. 
     * If none are valid return the first one regardless.
     * If the list is empty return <code>null</code>.
     * 
     * @param fonts list of fonts
     * @param display the display
     * @return font data like described above
     * @deprecated use filterData in order to preserve 
     * multiple entry fonts on Motif
     */
    public FontData[] bestDataArray(FontData[] fonts, Display display) {
        FontData bestData = bestData(fonts, display);
        if (bestData == null) {
			return null;
		}
        
        FontData[] datas = new FontData[1];
        datas[0] = bestData;
        return datas;
    }
    
    /**
     * Removes from the list all fonts that do not exist in this system.  
     * If none are valid, return the first irregardless.  If the list is 
     * empty return <code>null</code>.