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]> 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]> 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] >> For additional commands, e-mail: [email protected] >> >> >
