aboutsummaryrefslogtreecommitdiffstats
path: root/fop-core/src/test
diff options
context:
space:
mode:
authorSimon Steiner <ssteiner@apache.org>2024-11-19 10:52:59 +0000
committerSimon Steiner <ssteiner@apache.org>2024-11-19 10:52:59 +0000
commit2f1858567a8d68bd9c09eb33955d2cbae2aa03ac (patch)
tree8b9bd7b6971aae7f5aa6dcd20d9f006194ae8136 /fop-core/src/test
parentb39685b833a0bb031c0da94cc0b0fafbceed3852 (diff)
downloadxmlgraphics-fop-2f1858567a8d68bd9c09eb33955d2cbae2aa03ac.tar.gz
xmlgraphics-fop-2f1858567a8d68bd9c09eb33955d2cbae2aa03ac.zip
FOP-3220: Add option to lazy load fonts for PNG/TIFF/PCL output
Diffstat (limited to 'fop-core/src/test')
-rw-r--r--fop-core/src/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java2
-rw-r--r--fop-core/src/test/java/org/apache/fop/render/java2d/ConfiguredFontCollectionTestCase.java71
2 files changed, 72 insertions, 1 deletions
diff --git a/fop-core/src/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java b/fop-core/src/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java
index 2fb366536..61f2bad7b 100644
--- a/fop-core/src/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java
+++ b/fop-core/src/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java
@@ -54,7 +54,7 @@ public class EmbedFontInfoTestCase {
triplets.add(triplet);
FontUris fontUris = new FontUris(embedURI, metricsURI);
sut = new EmbedFontInfo(fontUris, kerning, useAdvanced, triplets, subFontName, encMode,
- embedMode, false, false, true);
+ embedMode, false, false, true, false);
}
@Test
diff --git a/fop-core/src/test/java/org/apache/fop/render/java2d/ConfiguredFontCollectionTestCase.java b/fop-core/src/test/java/org/apache/fop/render/java2d/ConfiguredFontCollectionTestCase.java
index 7e2f8d4f7..a724972ad 100644
--- a/fop-core/src/test/java/org/apache/fop/render/java2d/ConfiguredFontCollectionTestCase.java
+++ b/fop-core/src/test/java/org/apache/fop/render/java2d/ConfiguredFontCollectionTestCase.java
@@ -22,7 +22,10 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -31,9 +34,14 @@ import org.junit.Test;
import org.apache.commons.io.IOUtils;
+import org.apache.xmlgraphics.io.Resource;
+import org.apache.xmlgraphics.io.ResourceResolver;
+
import org.apache.fop.apps.io.InternalResourceResolver;
import org.apache.fop.apps.io.ResourceResolverFactory;
import org.apache.fop.fonts.EmbedFontInfo;
+import org.apache.fop.fonts.EmbeddingMode;
+import org.apache.fop.fonts.EncodingMode;
import org.apache.fop.fonts.FontInfo;
import org.apache.fop.fonts.FontTriplet;
import org.apache.fop.fonts.FontUris;
@@ -61,6 +69,69 @@ public class ConfiguredFontCollectionTestCase {
}
}
+ @Test
+ public void testLazyLoading() {
+ List<EmbedFontInfo> list = Arrays.asList(
+ addFont("test/resources/fonts/type1/c0419bt_.pfb", "test/resources/fonts/type1/c0419bt_.afm", true),
+ addFont("x1", "x2", true));
+ List<String> fileReads = new ArrayList<>();
+ ConfiguredFontCollection collection = new ConfiguredFontCollection(getResourceResolver(fileReads), list, true);
+ FontInfo fontInfo = new FontInfo();
+ int numOfFonts = collection.setup(0, fontInfo);
+ Assert.assertEquals(numOfFonts, 2);
+ Assert.assertTrue(fileReads.isEmpty());
+ Assert.assertEquals(fontInfo.getFonts().get("F0").getFontName(), "Courier10PitchBT-Roman");
+ Assert.assertEquals(fileReads.size(), 3);
+ Assert.assertTrue(fileReads.get(0).contains("c0419bt_.afm"));
+ Assert.assertTrue(fileReads.get(2).contains("c0419bt_.pfb"));
+ String ex = "";
+ try {
+ fontInfo.getFonts().get("F1").getFontName();
+ } catch (RuntimeException e) {
+ ex = e.getMessage();
+ }
+ Assert.assertTrue(ex.startsWith("Failed to read font file"));
+ Assert.assertEquals(fileReads.size(), 4);
+ }
+
+ @Test
+ public void testNoLazyLoading() {
+ List<EmbedFontInfo> list = Arrays.asList(
+ addFont("test/resources/fonts/type1/c0419bt_.pfb", "test/resources/fonts/type1/c0419bt_.afm", false),
+ addFont("x1", "x2", false));
+ List<String> fileReads = new ArrayList<>();
+ ConfiguredFontCollection collection = new ConfiguredFontCollection(getResourceResolver(fileReads), list, true);
+ FontInfo fontInfo = new FontInfo();
+ int numOfFonts = collection.setup(0, fontInfo);
+ Assert.assertEquals(numOfFonts, 2);
+ Assert.assertEquals(fileReads.size(), 4);
+ Assert.assertEquals(fontInfo.getFonts().get("F0").getFontName(), "Courier10PitchBT-Roman");
+ Assert.assertTrue(fileReads.get(0).contains("c0419bt_.afm"));
+ Assert.assertTrue(fileReads.get(2).contains("c0419bt_.pfb"));
+ Assert.assertTrue(fileReads.get(3).contains("x2"));
+ }
+
+ private InternalResourceResolver getResourceResolver(final List<String> fileReads) {
+ return ResourceResolverFactory.createInternalResourceResolver(new File(".").toURI(),
+ new ResourceResolver() {
+ public Resource getResource(URI uri) throws IOException {
+ fileReads.add(uri.toASCIIString());
+ return new Resource(uri.toURL().openStream());
+ }
+ public OutputStream getOutputStream(URI uri) {
+ return null;
+ }
+ });
+ }
+
+ private EmbedFontInfo addFont(String pfb, String afm, boolean lazyLoad) {
+ File pfbFile = new File(pfb);
+ File afmFile = new File(afm);
+ FontUris fontUris = new FontUris(pfbFile.toURI(), null, afmFile.toURI(), null);
+ return new EmbedFontInfo(fontUris, true, true, new ArrayList<FontTriplet>(), null,
+ EncodingMode.AUTO, EmbeddingMode.AUTO, false, false, true, lazyLoad);
+ }
+
private File getFontFileNoExension(String s) throws IOException {
FileInputStream pfb = new FileInputStream(s);
File tmp = File.createTempFile("fop", "font");