Browse Source

FOP-3148: NoSuchElementException when using font with no family name

pull/74/head
Simon Steiner 7 months ago
parent
commit
7f01c67a96

+ 6
- 1
fop-core/src/main/java/org/apache/fop/svg/font/FOPFontFamilyResolverImpl.java View File

@@ -21,6 +21,7 @@ package org.apache.fop.svg.font;

import java.io.InputStream;
import java.util.Map;
import java.util.Set;

import org.apache.batik.bridge.FontFace;
import org.apache.batik.gvt.font.GVTFontFace;
@@ -68,7 +69,11 @@ public class FOPFontFamilyResolverImpl implements FOPFontFamilyResolver {
Map<String, Typeface> fonts = fontInfo.getFonts();
for (Typeface font : fonts.values()) {
if (font.hasChar(c)) {
String fontFamily = font.getFamilyNames().iterator().next();
Set<String> familyNames = font.getFamilyNames();
String fontFamily = font.getFontName();
if (!familyNames.isEmpty()) {
fontFamily = familyNames.iterator().next();
}
return new FOPGVTFontFamily(fontInfo, fontFamily,
new FontTriplet(fontFamily, Font.STYLE_NORMAL, Font.WEIGHT_NORMAL),
new GVTFontFace(fontFamily));

+ 9
- 0
fop-core/src/test/java/org/apache/fop/svg/font/FOPFontFamilyResolverTestCase.java View File

@@ -42,6 +42,7 @@ import static org.junit.Assert.assertTrue;
import org.apache.batik.gvt.font.GVTFontFamily;
import org.apache.batik.gvt.font.GVTLineMetrics;

import org.apache.fop.fonts.CustomFont;
import org.apache.fop.fonts.FontInfo;

public class FOPFontFamilyResolverTestCase {
@@ -79,6 +80,14 @@ public class FOPFontFamilyResolverTestCase {
assertNull(family);
}

@Test
public void testGetFamilyThatCanDisplayNoFamily() {
CustomFont font = (CustomFont) fontInfo.getFonts().values().iterator().next();
font.setFamilyNames(Collections.<String>emptySet());
GVTFontFamily family = resolver.getFamilyThatCanDisplay('\u0180');
assertEquals(font.getFontName(), family.getFamilyName());
}

@Test
public void testDeriveFont() {
FOPGVTFontFamily family = resolver.resolve(FontInfoBuilder.DEJAVU_LGC_SERIF);

Loading…
Cancel
Save