diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java index ec360f9dcca..924b1cc417a 100644 --- a/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java +++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/resource/FontRegistry.java @@ -497,7 +497,7 @@ private FontRecord createFont(String symbolicName, FontData[] fonts) { } FontData[] validData = filterData(fonts, display); - if (validData.length == 0) { + if (validData == null || validData.length == 0) { //Nothing specified return null; } diff --git a/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/resources/FontRegistryTest.java b/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/resources/FontRegistryTest.java index 7aa7f7dfcd0..eaf6f98df74 100644 --- a/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/resources/FontRegistryTest.java +++ b/tests/org.eclipse.jface.tests/src/org/eclipse/jface/tests/resources/FontRegistryTest.java @@ -187,6 +187,20 @@ public void get_forNameThatWasNeverRegistered_returnsDefaultFontAndIsStableAfter assertSame(first, second); } + @Test + public void get_forNameRegisteredWithoutAnyFontData_returnsDefaultFont() { + FontRegistry fontRegistry = new FontRegistry(); + // an empty array leaves nothing to filter, so filterData() yields no usable data at all + fontRegistry.put("fontWithoutData", new FontData[0]); + + Font first = fontRegistry.get("fontWithoutData"); + Font second = fontRegistry.get("fontWithoutData"); + + assertSame(fontRegistry.get(JFaceResources.DEFAULT_FONT), first, + "a name that cannot be resolved to any font data must fall back to the default font"); + assertSame(first, second); + } + @Test public void getBoldAndGetItalic_returnSameInstanceOnRepeatedCalls() { FontRegistry fontRegistry = new FontRegistry();