Skip to content

Commit 7f01c67

Browse files
FOP-3148: NoSuchElementException when using font with no family name
1 parent fa89ae7 commit 7f01c67

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

fop-core/src/main/java/org/apache/fop/svg/font/FOPFontFamilyResolverImpl.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.io.InputStream;
2323
import java.util.Map;
24+
import java.util.Set;
2425

2526
import org.apache.batik.bridge.FontFace;
2627
import org.apache.batik.gvt.font.GVTFontFace;
@@ -68,7 +69,11 @@ public FOPGVTFontFamily getFamilyThatCanDisplay(char c) {
6869
Map<String, Typeface> fonts = fontInfo.getFonts();
6970
for (Typeface font : fonts.values()) {
7071
if (font.hasChar(c)) {
71-
String fontFamily = font.getFamilyNames().iterator().next();
72+
Set<String> familyNames = font.getFamilyNames();
73+
String fontFamily = font.getFontName();
74+
if (!familyNames.isEmpty()) {
75+
fontFamily = familyNames.iterator().next();
76+
}
7277
return new FOPGVTFontFamily(fontInfo, fontFamily,
7378
new FontTriplet(fontFamily, Font.STYLE_NORMAL, Font.WEIGHT_NORMAL),
7479
new GVTFontFace(fontFamily));

fop-core/src/test/java/org/apache/fop/svg/font/FOPFontFamilyResolverTestCase.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import org.apache.batik.gvt.font.GVTFontFamily;
4343
import org.apache.batik.gvt.font.GVTLineMetrics;
4444

45+
import org.apache.fop.fonts.CustomFont;
4546
import org.apache.fop.fonts.FontInfo;
4647

4748
public class FOPFontFamilyResolverTestCase {
@@ -79,6 +80,14 @@ public void testGetFamilyThatCanDisplay() {
7980
assertNull(family);
8081
}
8182

83+
@Test
84+
public void testGetFamilyThatCanDisplayNoFamily() {
85+
CustomFont font = (CustomFont) fontInfo.getFonts().values().iterator().next();
86+
font.setFamilyNames(Collections.<String>emptySet());
87+
GVTFontFamily family = resolver.getFamilyThatCanDisplay('\u0180');
88+
assertEquals(font.getFontName(), family.getFamilyName());
89+
}
90+
8291
@Test
8392
public void testDeriveFont() {
8493
FOPGVTFontFamily family = resolver.resolve(FontInfoBuilder.DEJAVU_LGC_SERIF);

0 commit comments

Comments
 (0)