소스 검색

Revert to r1637810 to fix broken build.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1638047 13f79535-47bb-0310-9956-ffa450edef68
pull/28/head
Glenn Adams 9 년 전
부모
커밋
cae32cd9d5

+ 0
- 2
src/foschema/fop-configuration.xsd 파일 보기

@@ -283,8 +283,6 @@
</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>

+ 6
- 22
src/java/org/apache/fop/fonts/DefaultFontConfig.java 파일 보기

@@ -108,13 +108,11 @@ public final class DefaultFontConfig implements FontConfig {
strict);
continue;
}
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()));
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()));
instance.fonts.add(font);
boolean hasTriplets = false;
for (Configuration tripletCfg : fontCfg.getChildren("font-triplet")) {
@@ -271,10 +269,6 @@ public final class DefaultFontConfig implements FontConfig {

private final String embedUri;

private String afm;

private String pfm;

private final String subFont;

private final boolean kerning;
@@ -295,12 +289,10 @@ public final class DefaultFontConfig implements FontConfig {
return Collections.unmodifiableList(tripletList);
}

private Font(String metrics, String embed, String afm, String pfm, String subFont, boolean kerning,
private Font(String metrics, String embed, 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;
@@ -347,13 +339,5 @@ public final class DefaultFontConfig implements FontConfig {
public String getEmbeddingMode() {
return embeddingMode;
}

public String getAfm() {
return afm;
}

public String getPfm() {
return pfm;
}
}
}

+ 4
- 10
src/java/org/apache/fop/fonts/DefaultFontConfigurator.java 파일 보기

@@ -144,16 +144,10 @@ public class DefaultFontConfigurator implements FontConfigurator<EmbedFontInfo>
throws FOPException, URISyntaxException {
String embed = font.getEmbedURI();
String metrics = font.getMetrics();
String afm = font.getAfm();
String pfm = font.getPfm();
URI embedUri = InternalResourceResolver.cleanURI(embed);
String subFont = font.getSubFont();
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);
URI embedUri = InternalResourceResolver.cleanURI(embed);

String subFont = font.getSubFont();
List<FontTriplet> tripletList = font.getTripletList();

// no font triplet info
@@ -166,8 +160,8 @@ public class DefaultFontConfigurator implements FontConfigurator<EmbedFontInfo>
}
EncodingMode encodingMode = EncodingMode.getValue(font.getEncodingMode());
EmbeddingMode embeddingMode = EmbeddingMode.getValue(font.getEmbeddingMode());
EmbedFontInfo embedFontInfo = new EmbedFontInfo(fontUris, font.isKerning(), font.isAdvanced(),
tripletList, subFont, encodingMode, embeddingMode);
EmbedFontInfo embedFontInfo = new EmbedFontInfo(metricsUri, font.isKerning(),
font.isAdvanced(), tripletList, embedUri, subFont, encodingMode, embeddingMode);
if (fontCache != null) {
if (!fontCache.containsFont(embedFontInfo)) {
fontCache.addFont(embedFontInfo, resourceResolver);

+ 10
- 29
src/java/org/apache/fop/fonts/EmbedFontInfo.java 파일 보기

@@ -34,6 +34,8 @@ public class EmbedFontInfo implements Serializable {
/** Serialization Version UID */
private static final long serialVersionUID = 8755432068669997369L;

protected final URI metricsURI;
protected final URI embedURI;
/** false, to disable kerning */
protected final boolean kerning;
/** false, to disable advanced typographic features */
@@ -53,8 +55,6 @@ public class EmbedFontInfo implements Serializable {

private transient boolean embedded = true;

private FontUris fontUris;

/**
* Main constructor
* @param metricsURI the URI of the XML resource containing font metrics
@@ -65,42 +65,26 @@ public class EmbedFontInfo implements Serializable {
* @param subFontName the sub-fontname used for TrueType Collections (null otherwise)
* @param encodingMode the encoding mode to use for this font
*/
public EmbedFontInfo(FontUris fontUris, boolean kerning, boolean advanced,
List<FontTriplet> fontTriplets, String subFontName,
public EmbedFontInfo(URI metricsURI, boolean kerning, boolean advanced,
List<FontTriplet> fontTriplets, URI embedURI, 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 fontUris.getMetrics();
return metricsURI;
}

/**
@@ -109,7 +93,7 @@ public class EmbedFontInfo implements Serializable {
* @return the font resource URI
*/
public URI getEmbedURI() {
return fontUris.getEmbed();
return embedURI;
}

/**
@@ -166,7 +150,7 @@ public class EmbedFontInfo implements Serializable {
* @return true if the font is embedded, false if it is referenced.
*/
public boolean isEmbedded() {
if (fontUris.getEmbed() == null) {
if (embedURI == null) {
return false;
} else {
return this.embedded;
@@ -205,7 +189,7 @@ public class EmbedFontInfo implements Serializable {

/** {@inheritDoc} */
public String toString() {
return "metrics-uri=" + fontUris.getMetrics() + ", embed-uri=" + fontUris.getEmbed()
return "metrics-uri=" + metricsURI + ", embed-uri=" + embedURI
+ ", kerning=" + kerning
+ ", advanced=" + advanced
+ ", enc-mode=" + encodingMode
@@ -214,7 +198,4 @@ public class EmbedFontInfo implements Serializable {
+ (isEmbedded() ? "" : ", NOT embedded");
}

public FontUris getFontUris() {
return fontUris;
}
}

+ 4
- 4
src/java/org/apache/fop/fonts/FontLoader.java 파일 보기

@@ -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(FontUris fontUris, String subFontName,
public static CustomFont loadFont(URI fontFileURI, String subFontName,
boolean embedded, EmbeddingMode embeddingMode, EncodingMode encodingMode,
boolean useKerning, boolean useAdvanced, InternalResourceResolver resourceResolver) throws IOException {
boolean type1 = isType1(fontUris.getEmbed());
boolean type1 = isType1(fontFileURI);
FontLoader loader;
if (type1) {
if (encodingMode == EncodingMode.CID) {
throw new IllegalArgumentException(
"CID encoding mode not supported for Type 1 fonts");
}
loader = new Type1FontLoader(fontUris, embedded, embeddingMode, useKerning,
loader = new Type1FontLoader(fontFileURI, embedded, embeddingMode, useKerning,
resourceResolver);
} else {
loader = new OFFontLoader(fontUris.getEmbed(), subFontName, embedded, embeddingMode,
loader = new OFFontLoader(fontFileURI, subFontName, embedded, embeddingMode,
encodingMode, useKerning, useAdvanced, resourceResolver);
}
return loader.getFont();

+ 0
- 65
src/java/org/apache/fop/fonts/FontUris.java 파일 보기

@@ -1,65 +0,0 @@
/*
* 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;
}

}


+ 15
- 14
src/java/org/apache/fop/fonts/LazyFont.java 파일 보기

@@ -43,8 +43,8 @@ public class LazyFont extends Typeface implements FontDescriptor, Substitutable,

private static Log log = LogFactory.getLog(LazyFont.class);

private final FontUris fontUris;
private final URI metricsURI;
private final URI fontEmbedURI;
private final boolean useKerning;
private final boolean useAdvanced;
private final EncodingMode encodingMode;
@@ -64,8 +64,8 @@ public class LazyFont extends Typeface implements FontDescriptor, Substitutable,
*/
public LazyFont(EmbedFontInfo fontInfo, InternalResourceResolver resourceResolver,
boolean useComplexScripts) {
this.fontUris = fontInfo.getFontUris();
this.metricsURI = fontInfo.getMetricsURI();
this.fontEmbedURI = fontInfo.getEmbedURI();
this.useKerning = fontInfo.getKerning();
if (resourceResolver != null) {
this.useAdvanced = useComplexScripts;
@@ -85,8 +85,8 @@ public class LazyFont extends Typeface implements FontDescriptor, Substitutable,
public String toString() {
StringBuffer sbuf = new StringBuffer(super.toString());
sbuf.append('{');
sbuf.append("metrics-url=" + fontUris.getMetrics());
sbuf.append(",embed-url=" + fontUris.getEmbed());
sbuf.append("metrics-url=" + metricsURI);
sbuf.append(",embed-url=" + fontEmbedURI);
sbuf.append(",kerning=" + useKerning);
sbuf.append(",advanced=" + useAdvanced);
sbuf.append('}');
@@ -96,36 +96,36 @@ public class LazyFont extends Typeface implements FontDescriptor, Substitutable,
private void load(boolean fail) {
if (!isMetricsLoaded) {
try {
if (fontUris.getMetrics() != null) {
if (metricsURI != null) {
/**@todo Possible thread problem here */
FontReader reader = null;
InputStream in = resourceResolver.getResource(fontUris.getMetrics());
InputStream in = resourceResolver.getResource(metricsURI);
InputSource src = new InputSource(in);
src.setSystemId(fontUris.getMetrics().toASCIIString());
src.setSystemId(metricsURI.toASCIIString());
reader = new FontReader(src, resourceResolver);
reader.setKerningEnabled(useKerning);
reader.setAdvancedEnabled(useAdvanced);
if (this.embedded) {
reader.setFontEmbedURI(fontUris.getEmbed());
reader.setFontEmbedURI(fontEmbedURI);
}
realFont = reader.getFont();
} else {
if (fontUris.getEmbed() == null) {
if (fontEmbedURI == null) {
throw new RuntimeException("Cannot load font. No font URIs available.");
}
realFont = FontLoader.loadFont(fontUris, subFontName, embedded,
realFont = FontLoader.loadFont(fontEmbedURI, 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 " + fontUris.getMetrics(), fopex);
log.error("Failed to read font metrics file " + metricsURI, fopex);
if (fail) {
throw new RuntimeException(fopex);
}
} catch (IOException ioex) {
log.error("Failed to read font metrics file " + fontUris.getMetrics(), ioex);
log.error("Failed to read font metrics file " + metricsURI, ioex);
if (fail) {
throw new RuntimeException(ioex);
}
@@ -498,5 +498,6 @@ public class LazyFont extends Typeface implements FontDescriptor, Substitutable,
}
return realFont.isMultiByte();
}

}


+ 4
- 7
src/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java 파일 보기

@@ -40,7 +40,6 @@ 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;
@@ -142,15 +141,14 @@ 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(fontUris, customFont.isKerningEnabled(),
customFont.isAdvancedEnabled(), fontTripletList, subFontName,
EmbedFontInfo fontInfo = new EmbedFontInfo(null, customFont.isKerningEnabled(),
customFont.isAdvancedEnabled(), fontTripletList, fontUri, subFontName,
EncodingMode.AUTO, EmbeddingMode.AUTO);
fontInfo.setPostScriptName(customFont.getFontName());
if (fontCache != null) {
@@ -250,9 +248,8 @@ public class FontInfoFinder {
} else {
// The normal case
try {
FontUris fontUris = new FontUris(fontURI, null);
customFont = FontLoader.loadFont(fontUris, null, true, EmbeddingMode.AUTO, EncodingMode.AUTO,
useKerning, useAdvanced, resourceResolver);
customFont = FontLoader.loadFont(fontURI, null, true, EmbeddingMode.AUTO,
EncodingMode.AUTO, useKerning, useAdvanced, resourceResolver);
if (this.eventListener != null) {
customFont.setEventListener(this.eventListener);
}

+ 13
- 25
src/java/org/apache/fop/fonts/type1/Type1FontLoader.java 파일 보기

@@ -22,6 +22,7 @@ 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;
@@ -36,7 +37,6 @@ import org.apache.fop.fonts.CodePointMapping;
import org.apache.fop.fonts.EmbeddingMode;
import org.apache.fop.fonts.FontLoader;
import org.apache.fop.fonts.FontType;
import org.apache.fop.fonts.FontUris;
import org.apache.fop.fonts.SingleByteEncoding;
import org.apache.fop.fonts.SingleByteFont;

@@ -51,8 +51,6 @@ public class Type1FontLoader extends FontLoader {

private EmbeddingMode embeddingMode;

private final FontUris fontUris;

/**
* Constructs a new Type 1 font loader.
* @param fontFileURI the URI to the PFB file of a Type 1 font
@@ -61,11 +59,10 @@ public class Type1FontLoader extends FontLoader {
* @param resourceResolver the font resolver used to resolve URIs
* @throws IOException In case of an I/O error
*/
public Type1FontLoader(FontUris fontUris, boolean embedded, EmbeddingMode embeddingMode,
public Type1FontLoader(URI fontFileURI, boolean embedded, EmbeddingMode embeddingMode,
boolean useKerning, InternalResourceResolver resourceResolver) throws IOException {
super(fontUris.getEmbed(), embedded, useKerning, true, resourceResolver);
super(fontFileURI, embedded, useKerning, true, resourceResolver);
this.embeddingMode = embeddingMode;
this.fontUris = fontUris;
}

private String getPFMURI(String pfbURI) {
@@ -86,26 +83,18 @@ public class Type1FontLoader extends FontLoader {
InputStream afmIn = null;
String fontFileStr = fontFileURI.toASCIIString();
String partialAfmUri = fontFileStr.substring(0, fontFileStr.length() - 4);
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 {
String 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) {
throw new IOException(e);
// Ignore, AFM probably not available under the URI
}
}
if (afmIn != null) {
@@ -117,8 +106,7 @@ public class Type1FontLoader extends FontLoader {
}
}

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

+ 3
- 4
src/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java 파일 보기

@@ -33,7 +33,6 @@ import org.apache.fop.fonts.FontCollection;
import org.apache.fop.fonts.FontInfo;
import org.apache.fop.fonts.FontLoader;
import org.apache.fop.fonts.FontTriplet;
import org.apache.fop.fonts.FontUris;
import org.apache.fop.fonts.LazyFont;

/**
@@ -82,10 +81,10 @@ public class ConfiguredFontCollection implements FontCollection {
InputStream fontSource = resourceResolver.getResource(fontURI);
font = new CustomFontMetricsMapper(fontMetrics, fontSource);
} else {
FontUris fontUris = new FontUris(fontURI, null);
CustomFont fontMetrics = FontLoader.loadFont(fontUris, null, true,
CustomFont fontMetrics = FontLoader.loadFont(fontURI, null, true,
configFontInfo.getEmbeddingMode(), configFontInfo.getEncodingMode(),
configFontInfo.getKerning(), configFontInfo.getAdvanced(), resourceResolver);
configFontInfo.getKerning(), configFontInfo.getAdvanced(),
resourceResolver);
font = new CustomFontMetricsMapper(fontMetrics);
}


+ 1
- 2
test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java 파일 보기

@@ -47,8 +47,7 @@ public class DejaVuLGCSerifTestCase {
@Before
public void setUp() throws Exception {
File file = new File("test/resources/fonts/ttf/DejaVuLGCSerif.ttf");
FontUris fontUris = new FontUris(file.toURI(), null);
font = FontLoader.loadFont(fontUris, "", true, EmbeddingMode.AUTO, EncodingMode.AUTO,
font = FontLoader.loadFont(file.toURI(), "", true, EmbeddingMode.AUTO, EncodingMode.AUTO,
false, false, resolver);
}


+ 4
- 5
test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java 파일 보기

@@ -52,8 +52,8 @@ public class EmbedFontInfoTestCase {
public void setUp() {
List<FontTriplet> triplets = new ArrayList<FontTriplet>();
triplets.add(triplet);
FontUris fontUris = new FontUris(embedURI, metricsURI);
sut = new EmbedFontInfo(fontUris, kerning, useAdvanced, triplets, subFontName, encMode, embedMode);
sut = new EmbedFontInfo(metricsURI, kerning, useAdvanced, triplets, embedURI, subFontName,
encMode, embedMode);
}

@Test
@@ -82,9 +82,8 @@ public class EmbedFontInfoTestCase {

@Test
public void testQuirkyBoundaryCasesIsEmbedded() {
FontUris fontUris = new FontUris(null, metricsURI);
sut = new EmbedFontInfo(fontUris, kerning, useAdvanced, sut.getFontTriplets(), subFontName, encMode,
embedMode);
sut = new EmbedFontInfo(metricsURI, kerning, useAdvanced, sut.getFontTriplets(), null,
subFontName, encMode, embedMode);
sut.setEmbedded(true);
assertFalse(sut.isEmbedded());


Loading…
취소
저장