]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
FOP-2424: Allow for type1 afm/pfm files to be in a different path than the pfb file
authorLuis Bernardo <lbernardo@apache.org>
Mon, 10 Nov 2014 11:18:43 +0000 (11:18 +0000)
committerLuis Bernardo <lbernardo@apache.org>
Mon, 10 Nov 2014 11:18:43 +0000 (11:18 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1637817 13f79535-47bb-0310-9956-ffa450edef68

12 files changed:
src/foschema/fop-configuration.xsd
src/java/org/apache/fop/fonts/DefaultFontConfig.java
src/java/org/apache/fop/fonts/DefaultFontConfigurator.java
src/java/org/apache/fop/fonts/EmbedFontInfo.java
src/java/org/apache/fop/fonts/FontLoader.java
src/java/org/apache/fop/fonts/FontUris.java [new file with mode: 0644]
src/java/org/apache/fop/fonts/LazyFont.java
src/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java
src/java/org/apache/fop/fonts/type1/Type1FontLoader.java
src/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java
test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java
test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java

index 656aecc207118f897e1b3d2b7103e3cd2326e754..2201016d1e0af7097ca57ef9874c584158225959 100644 (file)
     </xsd:sequence>
     <xsd:attribute name="metrics-url" type="xsd:anyURI" use="optional"/>
     <xsd:attribute name="embed-url" type="xsd:anyURI" use="optional"/>
+    <xsd:attribute name="embed-url-afm" type="xsd:anyURI" use="optional"/>
+    <xsd:attribute name="embed-url-pfm" type="xsd:anyURI" use="optional"/>
     <xsd:attribute name="sub-font" type="xsd:string" use="optional"/>
     <xsd:attribute name="embedding-mode" use="optional">
       <xsd:simpleType>
index 375db34df34c4f730aef83e4382423d642adb5f5..72d2280a8f1770b7c729f9af94b79cc930fd9aa8 100644 (file)
@@ -108,11 +108,13 @@ public final class DefaultFontConfig implements FontConfig {
                             strict);
                     continue;
                 }
-                Font font = new Font(fontCfg.getAttribute("metrics-url", null), embed,
-                        fontCfg.getAttribute("sub-font", null), fontCfg.getAttributeAsBoolean(
-                                "kerning", true), fontCfg.getAttributeAsBoolean("advanced", true),
-                        fontCfg.getAttribute("encoding-mode", EncodingMode.AUTO.getName()),
-                        fontCfg.getAttribute("embedding-mode", EncodingMode.AUTO.getName()));
+                Font font = new Font(fontCfg.getAttribute("metrics-url", null), embed, fontCfg.getAttribute(
+                        "embed-url-afm", null), fontCfg.getAttribute("embed-url-pfm", null),
+                        fontCfg.getAttribute("sub-font", null),
+                        fontCfg.getAttributeAsBoolean("kerning", true), fontCfg.getAttributeAsBoolean(
+                                "advanced", true), fontCfg.getAttribute("encoding-mode",
+                                EncodingMode.AUTO.getName()), fontCfg.getAttribute("embedding-mode",
+                                EncodingMode.AUTO.getName()));
                 instance.fonts.add(font);
                 boolean hasTriplets = false;
                 for (Configuration tripletCfg : fontCfg.getChildren("font-triplet")) {
@@ -269,6 +271,10 @@ public final class DefaultFontConfig implements FontConfig {
 
         private final String embedUri;
 
+        private String afm;
+
+        private String pfm;
+
         private final String subFont;
 
         private final boolean kerning;
@@ -289,10 +295,12 @@ public final class DefaultFontConfig implements FontConfig {
             return Collections.unmodifiableList(tripletList);
         }
 
-        private Font(String metrics, String embed, String subFont, boolean kerning,
+        private Font(String metrics, String embed, String afm, String pfm, String subFont, boolean kerning,
                 boolean advanced, String encodingMode, String embeddingMode) {
             this.metrics = metrics;
             this.embedUri = embed;
+            this.afm = afm;
+            this.pfm = pfm;
             this.subFont = subFont;
             this.kerning = kerning;
             this.advanced = advanced;
@@ -339,5 +347,13 @@ public final class DefaultFontConfig implements FontConfig {
         public String getEmbeddingMode() {
             return embeddingMode;
         }
+
+        public String getAfm() {
+            return afm;
+        }
+
+        public String getPfm() {
+            return pfm;
+        }
     }
 }
index 9534ef8adcebfebdbd2430e6e92245a39fbd5657..4a8b11f7417530e44cc64fa2de44e30a15e8fbcc 100644 (file)
@@ -144,10 +144,16 @@ public class DefaultFontConfigurator implements FontConfigurator<EmbedFontInfo>
             throws FOPException, URISyntaxException {
         String embed = font.getEmbedURI();
         String metrics = font.getMetrics();
-        String subFont = font.getSubFont();
-        URI metricsUri = metrics == null ? null : InternalResourceResolver.cleanURI(metrics);
+        String afm = font.getAfm();
+        String pfm = font.getPfm();
         URI embedUri = InternalResourceResolver.cleanURI(embed);
+        URI metricsUri = metrics == null ? null : InternalResourceResolver.cleanURI(metrics);
+        URI afmUri = (afm == null) ? null : InternalResourceResolver.cleanURI(afm);
+        URI pfmUri = (pfm == null) ? null : InternalResourceResolver.cleanURI(pfm);
+        FontUris fontUris = (afmUri != null || pfmUri != null) ? new FontUris(embedUri, metricsUri, afmUri,
+                pfmUri) : new FontUris(embedUri, metricsUri);
 
+        String subFont = font.getSubFont();
         List<FontTriplet> tripletList = font.getTripletList();
 
         // no font triplet info
@@ -160,8 +166,8 @@ public class DefaultFontConfigurator implements FontConfigurator<EmbedFontInfo>
         }
         EncodingMode encodingMode = EncodingMode.getValue(font.getEncodingMode());
         EmbeddingMode embeddingMode = EmbeddingMode.getValue(font.getEmbeddingMode());
-        EmbedFontInfo embedFontInfo = new EmbedFontInfo(metricsUri, font.isKerning(),
-                font.isAdvanced(), tripletList, embedUri, subFont, encodingMode, embeddingMode);
+        EmbedFontInfo embedFontInfo = new EmbedFontInfo(fontUris, font.isKerning(), font.isAdvanced(),
+                tripletList, subFont, encodingMode, embeddingMode);
         if (fontCache != null) {
             if (!fontCache.containsFont(embedFontInfo)) {
                 fontCache.addFont(embedFontInfo, resourceResolver);
index 5af3fc5bafcf254869e37461174ec34ae72da86c..24b218f8d110e571b04450dd7bf9b5b6c961dbd3 100644 (file)
@@ -34,8 +34,6 @@ public class EmbedFontInfo implements Serializable {
     /** Serialization Version UID */
     private static final long serialVersionUID = 8755432068669997369L;
 
-    protected final URI metricsURI;
-    protected final URI embedURI;
     /** false, to disable kerning */
     protected final boolean kerning;
     /** false, to disable advanced typographic features */
@@ -55,6 +53,8 @@ public class EmbedFontInfo implements Serializable {
 
     private transient boolean embedded = true;
 
+    private FontUris fontUris;
+
     /**
      * Main constructor
      * @param metricsURI the URI of the XML resource containing font metrics
@@ -65,26 +65,42 @@ public class EmbedFontInfo implements Serializable {
      * @param subFontName the sub-fontname used for TrueType Collections (null otherwise)
      * @param encodingMode the encoding mode to use for this font
      */
-    public EmbedFontInfo(URI metricsURI, boolean kerning, boolean advanced,
-            List<FontTriplet> fontTriplets, URI embedURI, String subFontName,
+    public EmbedFontInfo(FontUris fontUris, boolean kerning, boolean advanced,
+            List<FontTriplet> fontTriplets, String subFontName,
             EncodingMode encodingMode, EmbeddingMode embeddingMode) {
-        this.metricsURI = metricsURI;
-        this.embedURI = embedURI;
         this.kerning = kerning;
         this.advanced = advanced;
         this.fontTriplets = fontTriplets;
         this.subFontName = subFontName;
         this.encodingMode = encodingMode;
         this.embeddingMode = embeddingMode;
+        this.fontUris = fontUris;
+    }
+
+    /**
+<<<<<<< HEAD
+=======
+     * Main constructor
+     * @param metricsURI the URI of the XML resource containing font metrics
+     * @param kerning True if kerning should be enabled
+     * @param fontTriplets List of font triplets to associate with this font
+     * @param embedURI Path to the embeddable font file (may be null)
+     * @param subFontName the sub-fontname used for TrueType Collections (null otherwise)
+     */
+    public EmbedFontInfo(FontUris fontUris, boolean kerning, boolean advanced,
+            List<FontTriplet> fontTriplets, String subFontName) {
+        this(fontUris, kerning, advanced, fontTriplets, subFontName, EncodingMode.AUTO,
+                EmbeddingMode.AUTO);
     }
 
     /**
+>>>>>>> 9c3c942... added uris for afm and pfm font files
      * Returns the URI of the metrics XML resource
      *
      * @return the metrics file path
      */
     public URI getMetricsURI() {
-        return metricsURI;
+        return fontUris.getMetrics();
     }
 
     /**
@@ -93,7 +109,7 @@ public class EmbedFontInfo implements Serializable {
      * @return the font resource URI
      */
     public URI getEmbedURI() {
-        return embedURI;
+        return fontUris.getEmbed();
     }
 
     /**
@@ -150,7 +166,7 @@ public class EmbedFontInfo implements Serializable {
      * @return true if the font is embedded, false if it is referenced.
      */
     public boolean isEmbedded() {
-        if (embedURI == null) {
+        if (fontUris.getEmbed() == null) {
             return false;
         } else {
             return this.embedded;
@@ -189,7 +205,7 @@ public class EmbedFontInfo implements Serializable {
 
     /** {@inheritDoc} */
     public String toString() {
-        return "metrics-uri=" + metricsURI + ", embed-uri=" + embedURI
+        return "metrics-uri=" + fontUris.getMetrics() + ", embed-uri=" + fontUris.getEmbed()
             + ", kerning=" + kerning
             + ", advanced=" + advanced
             + ", enc-mode=" + encodingMode
@@ -198,4 +214,7 @@ public class EmbedFontInfo implements Serializable {
             + (isEmbedded() ? "" : ", NOT embedded");
     }
 
+    public FontUris getFontUris() {
+        return fontUris;
+    }
 }
index a04ee6d5fbbd08225083274c8bed1e9b164f7d87..92656ca2d5c4320e3bdd14d37ca041570ffd1816 100644 (file)
@@ -89,20 +89,20 @@ public abstract class FontLoader {
      * @return the newly loaded font
      * @throws IOException In case of an I/O error
      */
-    public static CustomFont loadFont(URI fontFileURI, String subFontName,
+    public static CustomFont loadFont(FontUris fontUris, String subFontName,
             boolean embedded, EmbeddingMode embeddingMode, EncodingMode encodingMode,
             boolean useKerning, boolean useAdvanced, InternalResourceResolver resourceResolver) throws IOException {
-        boolean type1 = isType1(fontFileURI);
+        boolean type1 = isType1(fontUris.getEmbed());
         FontLoader loader;
         if (type1) {
             if (encodingMode == EncodingMode.CID) {
                 throw new IllegalArgumentException(
                         "CID encoding mode not supported for Type 1 fonts");
             }
-            loader = new Type1FontLoader(fontFileURI, embedded, embeddingMode, useKerning,
+            loader = new Type1FontLoader(fontUris, embedded, embeddingMode, useKerning,
                     resourceResolver);
         } else {
-            loader = new OFFontLoader(fontFileURI, subFontName, embedded, embeddingMode,
+            loader = new OFFontLoader(fontUris.getEmbed(), subFontName, embedded, embeddingMode,
                     encodingMode, useKerning, useAdvanced, resourceResolver);
         }
         return loader.getFont();
diff --git a/src/java/org/apache/fop/fonts/FontUris.java b/src/java/org/apache/fop/fonts/FontUris.java
new file mode 100644 (file)
index 0000000..fe0dfc2
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.fonts;
+
+import java.io.Serializable;
+import java.net.URI;
+
+public class FontUris implements Serializable {
+
+    private static final long serialVersionUID = 8571060588775532701L;
+
+    private final URI embed;
+    private final URI metrics;
+    private final URI afm;
+    private final URI pfm;
+
+    public FontUris(URI embed, URI metrics, URI afm, URI pfm) {
+        this.embed = embed;
+        this.metrics = metrics;
+        this.afm = afm;
+        this.pfm = pfm;
+    }
+
+    public FontUris(URI embed, URI metrics) {
+        this.embed = embed;
+        this.metrics = metrics;
+        this.afm = null;
+        this.pfm = null;
+    }
+
+    public URI getEmbed() {
+        return embed;
+    }
+
+    public URI getMetrics() {
+        return metrics;
+    }
+
+    public URI getAfm() {
+        return afm;
+    }
+
+    public URI getPfm() {
+        return pfm;
+    }
+
+}
+
index 323a46cf14831ad180553d8400a32adea00e262b..06b106534e176dc60c8759d818ecbcce7deaeb8a 100644 (file)
@@ -43,8 +43,8 @@ public class LazyFont extends Typeface implements FontDescriptor, Substitutable,
 
     private static Log log = LogFactory.getLog(LazyFont.class);
 
-    private final URI metricsURI;
-    private final URI fontEmbedURI;
+    private final FontUris fontUris;
+
     private final boolean useKerning;
     private final boolean useAdvanced;
     private final EncodingMode encodingMode;
@@ -64,8 +64,8 @@ public class LazyFont extends Typeface implements FontDescriptor, Substitutable,
      */
     public LazyFont(EmbedFontInfo fontInfo, InternalResourceResolver resourceResolver,
             boolean useComplexScripts) {
-        this.metricsURI = fontInfo.getMetricsURI();
-        this.fontEmbedURI = fontInfo.getEmbedURI();
+
+        this.fontUris = fontInfo.getFontUris();
         this.useKerning = fontInfo.getKerning();
         if (resourceResolver != null) {
             this.useAdvanced = useComplexScripts;
@@ -85,8 +85,8 @@ public class LazyFont extends Typeface implements FontDescriptor, Substitutable,
     public String toString() {
         StringBuffer sbuf = new StringBuffer(super.toString());
         sbuf.append('{');
-        sbuf.append("metrics-url=" + metricsURI);
-        sbuf.append(",embed-url=" + fontEmbedURI);
+        sbuf.append("metrics-url=" + fontUris.getMetrics());
+        sbuf.append(",embed-url=" + fontUris.getEmbed());
         sbuf.append(",kerning=" + useKerning);
         sbuf.append(",advanced=" + useAdvanced);
         sbuf.append('}');
@@ -96,36 +96,36 @@ public class LazyFont extends Typeface implements FontDescriptor, Substitutable,
     private void load(boolean fail) {
         if (!isMetricsLoaded) {
             try {
-                if (metricsURI != null) {
+                if (fontUris.getMetrics() != null) {
                     /**@todo Possible thread problem here */
                     FontReader reader = null;
-                    InputStream in = resourceResolver.getResource(metricsURI);
+                    InputStream in = resourceResolver.getResource(fontUris.getMetrics());
                     InputSource src = new InputSource(in);
-                    src.setSystemId(metricsURI.toASCIIString());
+                    src.setSystemId(fontUris.getMetrics().toASCIIString());
                     reader = new FontReader(src, resourceResolver);
                     reader.setKerningEnabled(useKerning);
                     reader.setAdvancedEnabled(useAdvanced);
                     if (this.embedded) {
-                        reader.setFontEmbedURI(fontEmbedURI);
+                        reader.setFontEmbedURI(fontUris.getEmbed());
                     }
                     realFont = reader.getFont();
                 } else {
-                    if (fontEmbedURI == null) {
+                    if (fontUris.getEmbed() == null) {
                         throw new RuntimeException("Cannot load font. No font URIs available.");
                     }
-                    realFont = FontLoader.loadFont(fontEmbedURI, subFontName, embedded,
+                    realFont = FontLoader.loadFont(fontUris, subFontName, embedded,
                             embeddingMode, encodingMode, useKerning, useAdvanced, resourceResolver);
                 }
                 if (realFont instanceof FontDescriptor) {
                     realFontDescriptor = (FontDescriptor) realFont;
                 }
             } catch (FOPException fopex) {
-                log.error("Failed to read font metrics file " + metricsURI, fopex);
+                log.error("Failed to read font metrics file " + fontUris.getMetrics(), fopex);
                 if (fail) {
                     throw new RuntimeException(fopex);
                 }
             } catch (IOException ioex) {
-                log.error("Failed to read font metrics file " + metricsURI, ioex);
+                log.error("Failed to read font metrics file " + fontUris.getMetrics(), ioex);
                 if (fail) {
                     throw new RuntimeException(ioex);
                 }
@@ -498,6 +498,5 @@ public class LazyFont extends Typeface implements FontDescriptor, Substitutable,
         }
         return realFont.isMultiByte();
     }
-
 }
 
index 21ebd49372e119ad03206334cbefe95fbb202134..a1d65459a7a78810dc5a60bef9ecd49b8a9eea64 100644 (file)
@@ -40,6 +40,7 @@ import org.apache.fop.fonts.FontCache;
 import org.apache.fop.fonts.FontEventListener;
 import org.apache.fop.fonts.FontLoader;
 import org.apache.fop.fonts.FontTriplet;
+import org.apache.fop.fonts.FontUris;
 import org.apache.fop.fonts.FontUtil;
 import org.apache.fop.fonts.MultiByteFont;
 import org.apache.fop.fonts.truetype.FontFileReader;
@@ -141,14 +142,15 @@ public class FontInfoFinder {
      */
     private EmbedFontInfo getFontInfoFromCustomFont(URI fontUri, CustomFont customFont,
             FontCache fontCache, InternalResourceResolver resourceResolver) {
+        FontUris fontUris = new FontUris(fontUri, null);
         List<FontTriplet> fontTripletList = new java.util.ArrayList<FontTriplet>();
         generateTripletsFromFont(customFont, fontTripletList);
         String subFontName = null;
         if (customFont instanceof MultiByteFont) {
             subFontName = ((MultiByteFont) customFont).getTTCName();
         }
-        EmbedFontInfo fontInfo = new EmbedFontInfo(null, customFont.isKerningEnabled(),
-                customFont.isAdvancedEnabled(), fontTripletList, fontUri, subFontName,
+        EmbedFontInfo fontInfo = new EmbedFontInfo(fontUris, customFont.isKerningEnabled(),
+                customFont.isAdvancedEnabled(), fontTripletList, subFontName,
                 EncodingMode.AUTO, EmbeddingMode.AUTO);
         fontInfo.setPostScriptName(customFont.getFontName());
         if (fontCache != null) {
@@ -248,8 +250,9 @@ public class FontInfoFinder {
         } else {
             // The normal case
             try {
-                customFont = FontLoader.loadFont(fontURI, null, true, EmbeddingMode.AUTO,
-                        EncodingMode.AUTO, useKerning, useAdvanced, resourceResolver);
+                FontUris fontUris = new FontUris(fontURI, null);
+                customFont = FontLoader.loadFont(fontUris, null, true, EmbeddingMode.AUTO, EncodingMode.AUTO,
+                        useKerning, useAdvanced, resourceResolver);
                 if (this.eventListener != null) {
                     customFont.setEventListener(this.eventListener);
                 }
index 802c3c033c743448852f74aed576039e7fb292b8..d364462cc595a58bd8e97159e0151076957d77b6 100644 (file)
@@ -22,7 +22,6 @@ package org.apache.fop.fonts.type1;
 import java.awt.geom.RectangularShape;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.HashSet;
 import java.util.List;
@@ -37,6 +36,7 @@ import org.apache.fop.fonts.CodePointMapping;
 import org.apache.fop.fonts.EmbeddingMode;
 import org.apache.fop.fonts.FontLoader;
 import org.apache.fop.fonts.FontType;
+import org.apache.fop.fonts.FontUris;
 import org.apache.fop.fonts.SingleByteEncoding;
 import org.apache.fop.fonts.SingleByteFont;
 
@@ -51,6 +51,8 @@ public class Type1FontLoader extends FontLoader {
 
     private EmbeddingMode embeddingMode;
 
+    private final FontUris fontUris;
+
     /**
      * Constructs a new Type 1 font loader.
      * @param fontFileURI the URI to the PFB file of a Type 1 font
@@ -59,10 +61,11 @@ public class Type1FontLoader extends FontLoader {
      * @param resourceResolver the font resolver used to resolve URIs
      * @throws IOException In case of an I/O error
      */
-    public Type1FontLoader(URI fontFileURI, boolean embedded, EmbeddingMode embeddingMode,
+    public Type1FontLoader(FontUris fontUris, boolean embedded, EmbeddingMode embeddingMode,
             boolean useKerning, InternalResourceResolver resourceResolver) throws IOException {
-        super(fontFileURI, embedded, useKerning, true, resourceResolver);
+        super(fontUris.getEmbed(), embedded, useKerning, true, resourceResolver);
         this.embeddingMode = embeddingMode;
+        this.fontUris = fontUris;
     }
 
     private String getPFMURI(String pfbURI) {
@@ -83,18 +86,26 @@ public class Type1FontLoader extends FontLoader {
         InputStream afmIn = null;
         String fontFileStr = fontFileURI.toASCIIString();
         String partialAfmUri = fontFileStr.substring(0, fontFileStr.length() - 4);
-        String afmUri = null;
-        for (String afmExtension : AFM_EXTENSIONS) {
+        String afmUri = (fontUris.getAfm() != null) ? fontUris.getAfm().toASCIIString() : null;
+        if (afmUri == null) {
+            for (String afmExtension : AFM_EXTENSIONS) {
+                try {
+                    afmUri = partialAfmUri + afmExtension;
+                    afmIn = resourceResolver.getResource(afmUri);
+                    if (afmIn != null) {
+                        break;
+                    }
+                } catch (IOException ioe) {
+                    // Ignore, AFM probably not available under the URI
+                } catch (URISyntaxException e) {
+                    // Ignore, AFM probably not available under the URI
+                }
+            }
+        } else {
             try {
-                afmUri = partialAfmUri + afmExtension;
                 afmIn = resourceResolver.getResource(afmUri);
-                if (afmIn != null) {
-                    break;
-                }
-            } catch (IOException ioe) {
-                // Ignore, AFM probably not available under the URI
             } catch (URISyntaxException e) {
-                // Ignore, AFM probably not available under the URI
+                throw new IOException(e);
             }
         }
         if (afmIn != null) {
@@ -106,7 +117,8 @@ public class Type1FontLoader extends FontLoader {
             }
         }
 
-        String pfmUri = getPFMURI(fontFileStr);
+        String pfmUri = (fontUris.getPfm() == null) ? getPFMURI(fontFileStr) : fontUris.getPfm()
+                .toASCIIString();
         InputStream pfmIn = null;
         try {
             pfmIn = resourceResolver.getResource(pfmUri);
index 0b410873b8c78fc7135c481092a622470bd84388..b9b7539fc830adce6fdd16c1cb9e372a67d856a2 100644 (file)
@@ -33,6 +33,7 @@ import org.apache.fop.fonts.FontCollection;
 import org.apache.fop.fonts.FontInfo;
 import org.apache.fop.fonts.FontLoader;
 import org.apache.fop.fonts.FontTriplet;
+import org.apache.fop.fonts.FontUris;
 import org.apache.fop.fonts.LazyFont;
 
 /**
@@ -81,10 +82,10 @@ public class ConfiguredFontCollection implements FontCollection {
                     InputStream fontSource = resourceResolver.getResource(fontURI);
                     font = new CustomFontMetricsMapper(fontMetrics, fontSource);
                 } else {
-                    CustomFont fontMetrics = FontLoader.loadFont(fontURI, null, true,
+                    FontUris fontUris = new FontUris(fontURI, null);
+                    CustomFont fontMetrics = FontLoader.loadFont(fontUris, null, true,
                             configFontInfo.getEmbeddingMode(), configFontInfo.getEncodingMode(),
-                            configFontInfo.getKerning(), configFontInfo.getAdvanced(),
-                            resourceResolver);
+                            configFontInfo.getKerning(), configFontInfo.getAdvanced(), resourceResolver);
                     font = new CustomFontMetricsMapper(fontMetrics);
                 }
 
index 4c89d00da185c3869475b6c2622bf9f68a38ab20..c4b471ee597ef3c4bb1a18f0ce2d41998f9e8885 100644 (file)
@@ -47,7 +47,8 @@ public class DejaVuLGCSerifTestCase {
     @Before
     public void setUp() throws Exception {
         File file = new File("test/resources/fonts/ttf/DejaVuLGCSerif.ttf");
-        font = FontLoader.loadFont(file.toURI(), "", true, EmbeddingMode.AUTO, EncodingMode.AUTO,
+        FontUris fontUris = new FontUris(file.toURI(), null);
+        font = FontLoader.loadFont(fontUris, "", true, EmbeddingMode.AUTO, EncodingMode.AUTO,
                 false, false, resolver);
     }
 
index c8099f860dd3d088b1a210e9d72057eba56abfff..e4179f1f6bf40150a0d5a29999a222bcadb414f3 100644 (file)
@@ -52,8 +52,8 @@ public class EmbedFontInfoTestCase {
     public void setUp() {
         List<FontTriplet> triplets = new ArrayList<FontTriplet>();
         triplets.add(triplet);
-        sut = new EmbedFontInfo(metricsURI, kerning, useAdvanced, triplets, embedURI, subFontName,
-                encMode, embedMode);
+        FontUris fontUris = new FontUris(embedURI, metricsURI);
+        sut = new EmbedFontInfo(fontUris, kerning, useAdvanced, triplets, subFontName, encMode, embedMode);
     }
 
     @Test
@@ -82,8 +82,9 @@ public class EmbedFontInfoTestCase {
 
     @Test
     public void testQuirkyBoundaryCasesIsEmbedded() {
-        sut = new EmbedFontInfo(metricsURI, kerning, useAdvanced, sut.getFontTriplets(), null,
-                subFontName, encMode, embedMode);
+        FontUris fontUris = new FontUris(null, metricsURI);
+        sut = new EmbedFontInfo(fontUris, kerning, useAdvanced, sut.getFontTriplets(), subFontName, encMode,
+                embedMode);
         sut.setEmbedded(true);
         assertFalse(sut.isEmbedded());