You need to remove the cache (the .fop directory under your home).

On 11/11/14, 8:23 AM, Glenn Adams wrote:
I fixed the problem below, but still getting other NPEs, so it looks pretty broken. I'm reverting your commit. I guess you didn't run junit before doing the commit.

On Tue, Nov 11, 2014 at 2:59 PM, Glenn Adams <[email protected] <mailto:[email protected]>> wrote:

    Your commit broke the build (junit). Getting an NPE at highlight
    diff below when fontUris is null when running

    Testsuite: org.apache.fop.BasicTranscoderTestSuite
    Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed:
    2.131 sec
    Testcase: testGenericPDFTranscoder took 1.578 sec
            Caused an ERROR
    Error while setting up PDFDocumentGraphics2D
    Enclosed Exception:
    null
    org.apache.batik.transcoder.TranscoderException: Error while
    setting up PDFDocumentGraphics2D
    Enclosed Exception:
    null
    at org.apache.fop.svg.PDFTranscoder.transcode(PDFTranscoder.java:137)
    at
    org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source)
    at
    org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
    at
    
org.apache.fop.AbstractBasicTranscoderTest.testGenericPDFTranscoder(AbstractBasicTranscoderTest.java:71)


    @@ -150,7 +166,7 @@ public class EmbedFontInfo implements Se
        * @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;


    On Mon, Nov 10, 2014 at 6:18 PM, <[email protected]
    <mailto:[email protected]>> wrote:

        Author: lbernardo
        Date: Mon Nov 10 11:18:43 2014
        New Revision: 1637817

        URL: http://svn.apache.org/r1637817
        Log:
        FOP-2424: Allow for type1 afm/pfm files to be in a different
        path than the pfb file

        Added:
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontUris.java
         (with props)
        Modified:
        xmlgraphics/fop/trunk/src/foschema/fop-configuration.xsd
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/DefaultFontConfig.java
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/DefaultFontConfigurator.java
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/EmbedFontInfo.java
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontLoader.java
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/LazyFont.java
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/type1/Type1FontLoader.java
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java
        
xmlgraphics/fop/trunk/test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java
        
xmlgraphics/fop/trunk/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java

        Modified: xmlgraphics/fop/trunk/src/foschema/fop-configuration.xsd
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/foschema/fop-configuration.xsd?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        --- xmlgraphics/fop/trunk/src/foschema/fop-configuration.xsd
        (original)
        +++ xmlgraphics/fop/trunk/src/foschema/fop-configuration.xsd
        Mon Nov 10 11:18:43 2014
        @@ -283,6 +283,8 @@
             </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>

        Modified:
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/DefaultFontConfig.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/DefaultFontConfig.java?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        ---
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/DefaultFontConfig.java
        (original)
        +++
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/DefaultFontConfig.java
        Mon Nov 10 11:18:43 2014
        @@ -108,11 +108,13 @@ public final class DefaultFontConfig imp
                                     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 imp

                 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 imp
                     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 imp
                 public String getEmbeddingMode() {
                     return embeddingMode;
                 }
        +
        +        public String getAfm() {
        +            return afm;
        +        }
        +
        +        public String getPfm() {
        +            return pfm;
        +        }
             }
         }

        Modified:
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/DefaultFontConfigurator.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/DefaultFontConfigurator.java?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        ---
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/DefaultFontConfigurator.java
        (original)
        +++
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/DefaultFontConfigurator.java
        Mon Nov 10 11:18:43 2014
        @@ -144,10 +144,16 @@ public class DefaultFontConfigurator imp
                     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 imp
                 }
                 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);

        Modified:
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/EmbedFontInfo.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/EmbedFontInfo.java?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        ---
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/EmbedFontInfo.java
        (original)
        +++
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/EmbedFontInfo.java
        Mon Nov 10 11:18:43 2014
        @@ -34,8 +34,6 @@ public class EmbedFontInfo implements Se
             /** 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 Se

             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 Se
              * @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 Se
              * @return the font resource URI
              */
             public URI getEmbedURI() {
        -        return embedURI;
        +        return fontUris.getEmbed();
             }

             /**
        @@ -150,7 +166,7 @@ public class EmbedFontInfo implements Se
              * @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 Se

             /** {@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 Se
                     + (isEmbedded() ? "" : ", NOT embedded");
             }

        +    public FontUris getFontUris() {
        +        return fontUris;
        +    }
         }

        Modified:
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontLoader.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontLoader.java?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        ---
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontLoader.java
        (original)
        +++
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontLoader.java
        Mon Nov 10 11:18:43 2014
        @@ -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();

        Added:
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontUris.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontUris.java?rev=1637817&view=auto
        
==============================================================================
        ---
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontUris.java
        (added)
        +++
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontUris.java
        Mon Nov 10 11:18:43 2014
        @@ -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;
        +    }
        +
        +}
        +

        Propchange:
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontUris.java
        
------------------------------------------------------------------------------
            svn:mime-type = text/plain

        Modified:
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/LazyFont.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/LazyFont.java?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        ---
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/LazyFont.java
        (original)
        +++
        xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/LazyFont.java
        Mon Nov 10 11:18:43 2014
        @@ -43,8 +43,8 @@ public class LazyFont extends Typeface i

             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 i
              */
             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 i
             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 i
             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 i
                 }
                 return realFont.isMultiByte();
             }
        -
         }


        Modified:
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        ---
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java
        (original)
        +++
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java
        Mon Nov 10 11:18:43 2014
        @@ -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);
                         }

        Modified:
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/type1/Type1FontLoader.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/type1/Type1FontLoader.java?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        ---
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/type1/Type1FontLoader.java
        (original)
        +++
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/type1/Type1FontLoader.java
        Mon Nov 10 11:18:43 2014
        @@ -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.CodePointMap
         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 Fon

             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 Fon
              * @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 Fon
                 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 Fon
                     }
                 }

        -        String pfmUri = getPFMURI(fontFileStr);
        +        String pfmUri = (fontUris.getPfm() == null) ?
        getPFMURI(fontFileStr) : fontUris.getPfm()
        +                .toASCIIString();
                 InputStream pfmIn = null;
                 try {
                     pfmIn = resourceResolver.getResource(pfmUri);

        Modified:
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        ---
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java
        (original)
        +++
        
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java
        Mon Nov 10 11:18:43 2014
        @@ -33,6 +33,7 @@ import org.apache.fop.fonts.FontCollecti
         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 im
                             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);
                         }


        Modified:
        
xmlgraphics/fop/trunk/test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        ---
        
xmlgraphics/fop/trunk/test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java
        (original)
        +++
        
xmlgraphics/fop/trunk/test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java
        Mon Nov 10 11:18:43 2014
        @@ -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);
             }


        Modified:
        
xmlgraphics/fop/trunk/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java
        URL:
        
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java?rev=1637817&r1=1637816&r2=1637817&view=diff
        
==============================================================================
        ---
        
xmlgraphics/fop/trunk/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java
        (original)
        +++
        
xmlgraphics/fop/trunk/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java
        Mon Nov 10 11:18:43 2014
        @@ -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());




        ---------------------------------------------------------------------
        To unsubscribe, e-mail:
        [email protected]
        <mailto:[email protected]>
        For additional commands, e-mail:
        [email protected]
        <mailto:[email protected]>




Reply via email to