This is still not right. You need to revise the serialVersionUID on
EmbedFontInfo.java due to your making changes in the serialized fields.
Otherwise, end users (who aren't running junit) will still get clobbered
due to differences in the serialized cache and the new EmbedFontInfo
serialization.

On Wed, Nov 26, 2014 at 8:00 AM, <lberna...@apache.org> wrote:

> Author: lbernardo
> Date: Wed Nov 26 15:00:57 2014
> New Revision: 1641827
>
> URL: http://svn.apache.org/r1641827
> Log:
> reapply r1637817 (new ant task removes cache)
>
> Added:
>     xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontUris.java
>  (with props)
> Modified:
>     xmlgraphics/fop/trunk/build.xml
>     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/build.xml
> URL:
> http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/build.xml?rev=1641827&r1=1641826&r2=1641827&view=diff
>
> ==============================================================================
> --- xmlgraphics/fop/trunk/build.xml (original)
> +++ xmlgraphics/fop/trunk/build.xml Wed Nov 26 15:00:57 2014
> @@ -621,7 +621,7 @@ list of possible build targets.
>        <srcfiles refid="transcoder-lib-files"/>
>      </uptodate>
>    </target>
> -  <target name="transcoder-pkg" depends="uptodate-transcoder-pkg,
> compile" description="Generates the jar for the transcoder package for
> Batik" unless="transcoder.pkg.uptodate">
> +  <target name="transcoder-pkg" depends="remove-cache,
> uptodate-transcoder-pkg, compile" description="Generates the jar for the
> transcoder package for Batik" unless="transcoder.pkg.uptodate">
>      <echo message="Creating the jar file
> ${build.dir}/fop-transcoder.jar"/>
>      <property name="fop-transcoder.name" value="FOP Transcoder Package"/>
>      <property name="fop-transcoder.version" value="1.0beta2"/>
> @@ -904,7 +904,7 @@ list of possible build targets.
>    <target name="junit-reduced" depends="junit-userconfig, junit-basic,
> junit-transcoder,
>      junit-text-linebreak, junit-fotree, junit-fonts, junit-render-pdf,
> junit-render-ps,
>      junit-complexscripts, junit-complexscripts-layout"/>
> -  <target name="junit" depends="junit-all" description="Runs all of FOP's
> JUnit tests"
> +  <target name="junit" depends="remove-cache, junit-all"
> description="Runs all of FOP's JUnit tests"
>      if="junit.present">
>      <fail><condition><or><isset property="fop.junit.error"/><isset
>              property="fop.junit.failure"/><not><isset
> @@ -1525,6 +1525,9 @@ NOTE:
>    <target name="clean" description="Cleans the build directory">
>      <delete dir="${build.dir}"/>
>    </target>
> +  <target name="remove-cache" description="Removes the .fop cache
> directory">
> +    <delete dir="${user.home}/.fop" />
> +  </target>
>    <target name="distclean" depends="clean" description="Cleans the
> distribution target directories">
>      <delete dir="${dist.src.dir}"/>
>      <delete dir="${dist.bin.dir}"/>
>
> Modified: xmlgraphics/fop/trunk/src/foschema/fop-configuration.xsd
> URL:
> http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/foschema/fop-configuration.xsd?rev=1641827&r1=1641826&r2=1641827&view=diff
>
> ==============================================================================
> --- xmlgraphics/fop/trunk/src/foschema/fop-configuration.xsd (original)
> +++ xmlgraphics/fop/trunk/src/foschema/fop-configuration.xsd Wed Nov 26
> 15:00:57 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=1641827&r1=1641826&r2=1641827&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
> Wed Nov 26 15:00:57 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=1641827&r1=1641826&r2=1641827&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
> Wed Nov 26 15:00:57 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=1641827&r1=1641826&r2=1641827&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
> Wed Nov 26 15:00:57 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,17 +65,30 @@ 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;
> +    }
> +
> +    /**
> +     * 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);
>      }
>
>      /**
> @@ -84,7 +97,7 @@ public class EmbedFontInfo implements Se
>       * @return the metrics file path
>       */
>      public URI getMetricsURI() {
> -        return metricsURI;
> +        return fontUris.getMetrics();
>      }
>
>      /**
> @@ -93,7 +106,7 @@ public class EmbedFontInfo implements Se
>       * @return the font resource URI
>       */
>      public URI getEmbedURI() {
> -        return embedURI;
> +        return fontUris.getEmbed();
>      }
>
>      /**
> @@ -150,7 +163,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 +202,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 +211,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=1641827&r1=1641826&r2=1641827&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
> Wed Nov 26 15:00:57 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=1641827&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 Wed
> Nov 26 15:00:57 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=1641827&r1=1641826&r2=1641827&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 Wed
> Nov 26 15:00:57 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=1641827&r1=1641826&r2=1641827&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
> Wed Nov 26 15:00:57 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=1641827&r1=1641826&r2=1641827&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
> Wed Nov 26 15:00:57 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=1641827&r1=1641826&r2=1641827&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
> Wed Nov 26 15:00:57 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=1641827&r1=1641826&r2=1641827&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
> Wed Nov 26 15:00:57 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=1641827&r1=1641826&r2=1641827&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
> Wed Nov 26 15:00:57 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