maybe, but that isn't good enough; i think you need to code for the case
that the cache wasn't removed, and do the cleanup if it hasn't

On Tue, Nov 11, 2014 at 4:49 PM, Luis Bernardo <lmpmberna...@gmail.com>
wrote:

>
> 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 <gl...@skynav.com> 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, <lberna...@apache.org> 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: fop-commits-unsubscr...@xmlgraphics.apache.org
>>> For additional commands, e-mail: fop-commits-h...@xmlgraphics.apache.org
>>>
>>>
>>
>
>

Reply via email to