Author: ssteiner
Date: Mon Jul 25 09:59:08 2016
New Revision: 1753972
URL: http://svn.apache.org/viewvc?rev=1753972&view=rev
Log:
FOP-2633: Generate bold/italic versions of fonts for PDF
Modified:
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CustomFont.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/DefaultFontConfig.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/DefaultFontConfigurator.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/EmbedFontInfo.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontLoader.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/LazyFont.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/BitmapRendererConfig.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/PNGRendererConfig.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/TIFFRendererConfig.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/intermediate/IFRendererConfig.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/java2d/Java2DRendererConfig.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pcl/PCLRendererConfig.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFPainter.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFRendererConfig.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSRendererConfig.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/txt/TxtRendererConfig.java
xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/TTFFontLoaderTestCase.java
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/svg/font/FontInfoBuilder.java
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CustomFont.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CustomFont.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CustomFont.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CustomFont.java Mon Jul 25 09:59:08 2016
@@ -80,6 +80,7 @@ public abstract class CustomFont extends
/** the character map, mapping Unicode ranges to glyph indices. */
protected List<CMapSegment> cmap = new ArrayList<CMapSegment>();
private boolean useAdvanced = true;
+ private boolean simulateStyle;
/**
* @param resourceResolver the URI resource resolver for controlling file access
@@ -490,6 +491,17 @@ public abstract class CustomFont extends
this.useAdvanced = enabled;
}
+ /**
+ * {@inheritDoc}
+ */
+ public void setSimulateStyle(boolean enabled) {
+ this.simulateStyle = enabled;
+ }
+
+ public boolean getSimulateStyle() {
+ return this.simulateStyle;
+ }
+
/** {@inheritDoc} */
public void putKerningEntry(Integer key, Map<Integer, Integer> value) {
if (kerning == null) {
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/DefaultFontConfig.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/DefaultFontConfig.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/DefaultFontConfig.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/DefaultFontConfig.java Mon Jul 25 09:59:08 2016
@@ -69,6 +69,12 @@ public final class DefaultFontConfig imp
}
/** {@inheritDoc} */
+ public DefaultFontConfig parse(Configuration cfg, boolean strict,
+ FontEventAdapter eventAdapter) throws FOPException {
+ return new ParserHelper(cfg, strict, eventAdapter).instance;
+ }
+
+ /** {@inheritDoc} */
public FontConfig parse(Configuration cfg, FontManager fontManager, boolean strict,
EventProducer eventProducer) throws FOPException {
return parse(cfg, strict);
@@ -81,10 +87,17 @@ public final class DefaultFontConfig imp
private Configuration config;
private Configuration fontInfoCfg;
+ private FontEventAdapter eventAdapter;
private DefaultFontConfig instance;
private ParserHelper(Configuration cfg, boolean strict) throws FOPException {
+ this(cfg, strict, null);
+ }
+
+ private ParserHelper(Configuration cfg, boolean strict, FontEventAdapter eventAdapter)
+ throws FOPException {
+ this.eventAdapter = eventAdapter;
if (cfg == null || cfg.getChild("fonts", false) == null) {
instance = null;
} else {
@@ -118,6 +131,7 @@ public final class DefaultFontConfig imp
fontCfg.getAttributeAsBoolean("advanced", true),
fontCfg.getAttribute("encoding-mode", EncodingMode.AUTO.getName()),
fontCfg.getAttribute("embedding-mode", EncodingMode.AUTO.getName()),
+ fontCfg.getAttributeAsBoolean("simulate-style", false),
fontCfg.getAttributeAsBoolean("embed-as-type1", false));
instance.fonts.add(font);
boolean hasTriplets = false;
@@ -131,7 +145,12 @@ public final class DefaultFontConfig imp
LogUtil.handleError(log, "font without font-triplet", strict);
}
try {
- if (font.getEmbedAsType1() && !config.getAttribute("mime").equals("application/postscript")) {
+ if (eventAdapter != null && font.getSimulateStyle()
+ && !config.getAttribute("mime").equals("application/pdf")) {
+ eventAdapter.fontFeatureNotSuppprted(this, "simulate-style", "PDF");
+ }
+ if (eventAdapter != null && font.getEmbedAsType1()
+ && !config.getAttribute("mime").equals("application/postscript")) {
throw new FOPException("The embed-as-type1 attribute is only supported in postscript");
}
} catch (ConfigurationException ex) {
@@ -301,6 +320,7 @@ public final class DefaultFontConfig imp
}
private final boolean embedAsType1;
+ private final boolean simulateStyle;
private final List<FontTriplet> tripletList = new ArrayList<FontTriplet>();
@@ -309,7 +329,8 @@ public final class DefaultFontConfig imp
}
private Font(String metrics, String embed, String afm, String pfm, String subFont, boolean kerning,
- boolean advanced, String encodingMode, String embeddingMode, boolean embedAsType1) {
+ boolean advanced, String encodingMode, String embeddingMode, boolean simulateStyle,
+ boolean embedAsType1) {
this.metrics = metrics;
this.embedUri = embed;
this.afm = afm;
@@ -319,6 +340,7 @@ public final class DefaultFontConfig imp
this.advanced = advanced;
this.encodingMode = encodingMode;
this.embeddingMode = embeddingMode;
+ this.simulateStyle = simulateStyle;
this.embedAsType1 = embedAsType1;
}
@@ -370,6 +392,10 @@ public final class DefaultFontConfig imp
return pfm;
}
+ public boolean getSimulateStyle() {
+ return simulateStyle;
+ }
+
public boolean getEmbedAsType1() {
return embedAsType1;
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/DefaultFontConfigurator.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/DefaultFontConfigurator.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/DefaultFontConfigurator.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/DefaultFontConfigurator.java Mon Jul 25 09:59:08 2016
@@ -166,8 +166,9 @@ public class DefaultFontConfigurator imp
}
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, font.getEmbedAsType1());
+ EmbedFontInfo embedFontInfo = new EmbedFontInfo(fontUris, font.isKerning(),
+ font.isAdvanced(), tripletList, subFont, encodingMode, embeddingMode,
+ font.getSimulateStyle(), font.getEmbedAsType1());
if (fontCache != null) {
if (!fontCache.containsFont(embedFontInfo)) {
fontCache.addFont(embedFontInfo, resourceResolver);
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/EmbedFontInfo.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/EmbedFontInfo.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/EmbedFontInfo.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/EmbedFontInfo.java Mon Jul 25 09:59:08 2016
@@ -42,12 +42,14 @@ public class EmbedFontInfo implements Se
private final EncodingMode encodingMode;
/** the requested embedding mode for this font */
private final EmbeddingMode embeddingMode;
+ /** simulates bold or italic on a regular font */
+ private final boolean simulateStyle;
+ private final boolean embedAsType1;
/** the PostScript name of the font */
protected String postScriptName;
/** the sub-fontname of the font (used for TrueType Collections, null otherwise) */
protected String subFontName;
- private boolean embedAsType1;
/** the list of associated font triplets */
private List<FontTriplet> fontTriplets;
@@ -67,8 +69,8 @@ public class EmbedFontInfo implements Se
* @param encodingMode the encoding mode to use for this font
*/
public EmbedFontInfo(FontUris fontUris, boolean kerning, boolean advanced,
- List<FontTriplet> fontTriplets, String subFontName,
- EncodingMode encodingMode, EmbeddingMode embeddingMode, boolean embedAsType1) {
+ List<FontTriplet> fontTriplets, String subFontName, EncodingMode encodingMode,
+ EmbeddingMode embeddingMode, boolean simulateStyle, boolean embedAsType1) {
this.kerning = kerning;
this.advanced = advanced;
this.fontTriplets = fontTriplets;
@@ -76,6 +78,7 @@ public class EmbedFontInfo implements Se
this.encodingMode = encodingMode;
this.embeddingMode = embeddingMode;
this.fontUris = fontUris;
+ this.simulateStyle = simulateStyle;
this.embedAsType1 = embedAsType1;
}
@@ -90,7 +93,7 @@ public class EmbedFontInfo implements Se
public EmbedFontInfo(FontUris fontUris, boolean kerning, boolean advanced,
List<FontTriplet> fontTriplets, String subFontName) {
this(fontUris, kerning, advanced, fontTriplets, subFontName, EncodingMode.AUTO,
- EmbeddingMode.AUTO, false);
+ EmbeddingMode.AUTO, false, false);
}
/**
@@ -196,6 +199,14 @@ public class EmbedFontInfo implements Se
return this.encodingMode;
}
+ /**
+ * Determines whether the font can simulate a style such as bold or italic.
+ * @return true if the font is being simulated as a different style.
+ */
+ public boolean getSimulateStyle() {
+ return this.simulateStyle;
+ }
+
public boolean getEmbedAsType1() {
return embedAsType1;
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java Mon Jul 25 09:59:08 2016
@@ -71,4 +71,9 @@ public class FontEventAdapter implements
getEventProducer().svgTextStrokedAsShapes(source, fontFamily);
}
+ /** {@inheritDoc} */
+ public void fontFeatureNotSuppprted(Object source, String feature, String onlySupportedIn) {
+ getEventProducer().fontFeatureNotSuppprted(source, feature, onlySupportedIn);
+ }
+
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java Mon Jul 25 09:59:08 2016
@@ -87,4 +87,13 @@ public interface FontEventProducer exten
*/
void svgTextStrokedAsShapes(Object source, String fontFamily);
+ /**
+ * A method to warn the user that the feature they are trying to use is not supported with either the renderer or
+ * other setting.
+ * @param source
+ * @param feature The feature that has caused the not supported issue
+ * @param onlySupportedIn The renderer / setting that this feature works with.
+ * @event.severity ERROR
+ */
+ void fontFeatureNotSuppprted(Object source, String feature, String onlySupportedIn);
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontLoader.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontLoader.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontLoader.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontLoader.java Mon Jul 25 09:59:08 2016
@@ -92,7 +92,7 @@ public abstract class FontLoader {
public static CustomFont loadFont(FontUris fontUris, String subFontName,
boolean embedded, EmbeddingMode embeddingMode, EncodingMode encodingMode,
boolean useKerning, boolean useAdvanced, InternalResourceResolver resourceResolver,
- boolean embedAsType1) throws IOException {
+ boolean simulateStyle, boolean embedAsType1) throws IOException {
boolean type1 = isType1(fontUris.getEmbed());
FontLoader loader;
if (type1) {
@@ -104,7 +104,7 @@ public abstract class FontLoader {
resourceResolver);
} else {
loader = new OFFontLoader(fontUris.getEmbed(), subFontName, embedded, embeddingMode,
- encodingMode, useKerning, useAdvanced, resourceResolver, embedAsType1);
+ encodingMode, useKerning, useAdvanced, resourceResolver, simulateStyle, embedAsType1);
}
return loader.getFont();
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/LazyFont.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/LazyFont.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/LazyFont.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/LazyFont.java Mon Jul 25 09:59:08 2016
@@ -47,6 +47,7 @@ public class LazyFont extends Typeface i
private final boolean useKerning;
private final boolean useAdvanced;
+ private boolean simulateStyle;
private boolean embedAsType1;
private final EncodingMode encodingMode;
private final EmbeddingMode embeddingMode;
@@ -73,6 +74,7 @@ public class LazyFont extends Typeface i
} else {
this.useAdvanced = fontInfo.getAdvanced();
}
+ this.simulateStyle = fontInfo.getSimulateStyle();
this.embedAsType1 = fontInfo.getEmbedAsType1();
this.encodingMode = fontInfo.getEncodingMode() != null ? fontInfo.getEncodingMode()
: EncodingMode.AUTO;
@@ -115,8 +117,8 @@ public class LazyFont extends Typeface i
if (fontUris.getEmbed() == null) {
throw new RuntimeException("Cannot load font. No font URIs available.");
}
- realFont = FontLoader.loadFont(fontUris, subFontName, embedded,
- embeddingMode, encodingMode, useKerning, useAdvanced, resourceResolver, embedAsType1);
+ realFont = FontLoader.loadFont(fontUris, subFontName, embedded, embeddingMode,
+ encodingMode, useKerning, useAdvanced, resourceResolver, simulateStyle, embedAsType1);
}
if (realFont instanceof FontDescriptor) {
realFontDescriptor = (FontDescriptor) realFont;
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/autodetect/FontInfoFinder.java Mon Jul 25 09:59:08 2016
@@ -223,7 +223,7 @@ public class FontInfoFinder {
try {
OFFontLoader ttfLoader = new OFFontLoader(fontURI, fontName, true,
EmbeddingMode.AUTO, EncodingMode.AUTO, useKerning, useAdvanced,
- resourceResolver, false);
+ resourceResolver, false, false);
customFont = ttfLoader.getFont();
if (this.eventListener != null) {
customFont.setEventListener(this.eventListener);
@@ -251,7 +251,7 @@ public class FontInfoFinder {
try {
FontUris fontUris = new FontUris(fontURI, null);
customFont = FontLoader.loadFont(fontUris, null, true, EmbeddingMode.AUTO, EncodingMode.AUTO,
- useKerning, useAdvanced, resourceResolver, false);
+ useKerning, useAdvanced, resourceResolver, false, false);
if (this.eventListener != null) {
customFont.setEventListener(this.eventListener);
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java Mon Jul 25 09:59:08 2016
@@ -32,6 +32,7 @@ import org.apache.fop.apps.io.InternalRe
import org.apache.fop.fonts.CFFToType1Font;
import org.apache.fop.fonts.CIDFontType;
import org.apache.fop.fonts.CMapSegment;
+import org.apache.fop.fonts.CustomFont;
import org.apache.fop.fonts.EmbeddingMode;
import org.apache.fop.fonts.EncodingMode;
import org.apache.fop.fonts.FontLoader;
@@ -52,6 +53,7 @@ public class OFFontLoader extends FontLo
private final String subFontName;
private EncodingMode encodingMode;
private EmbeddingMode embeddingMode;
+ private boolean simulateStyle;
private boolean embedAsType1;
/**
@@ -60,7 +62,8 @@ public class OFFontLoader extends FontLo
* @param resourceResolver the resource resolver for font URI resolution
*/
public OFFontLoader(URI fontFileURI, InternalResourceResolver resourceResolver) {
- this(fontFileURI, null, true, EmbeddingMode.AUTO, EncodingMode.AUTO, true, true, resourceResolver, false);
+ this(fontFileURI, null, true, EmbeddingMode.AUTO, EncodingMode.AUTO, true, true, resourceResolver, false,
+ false);
}
/**
@@ -74,14 +77,16 @@ public class OFFontLoader extends FontLo
* @param useKerning true to enable loading kerning info if available, false to disable
* @param useAdvanced true to enable loading advanced info if available, false to disable
* @param resolver the FontResolver for font URI resolution
+ * @param simulateStyle Determines whether to simulate font styles if a font does not support those by default.
*/
public OFFontLoader(URI fontFileURI, String subFontName, boolean embedded,
EmbeddingMode embeddingMode, EncodingMode encodingMode, boolean useKerning,
- boolean useAdvanced, InternalResourceResolver resolver, boolean embedAsType1) {
+ boolean useAdvanced, InternalResourceResolver resolver, boolean simulateStyle, boolean embedAsType1) {
super(fontFileURI, embedded, useKerning, useAdvanced, resolver);
this.subFontName = subFontName;
this.encodingMode = encodingMode;
this.embeddingMode = embeddingMode;
+ this.simulateStyle = simulateStyle;
this.embedAsType1 = embedAsType1;
if (this.encodingMode == EncodingMode.AUTO) {
this.encodingMode = EncodingMode.CID; //Default to CID mode for TrueType
@@ -134,6 +139,7 @@ public class OFFontLoader extends FontLo
isCid = false;
}
+ CustomFont font;
if (isCid) {
if (otf instanceof OTFFile && embedAsType1) {
multiFont = new CFFToType1Font(resourceResolver, embeddingMode);
@@ -143,10 +149,13 @@ public class OFFontLoader extends FontLo
multiFont.setIsOTFFile(otf instanceof OTFFile);
returnFont = multiFont;
multiFont.setTTCName(ttcFontName);
+ font = multiFont;
} else {
singleFont = new SingleByteFont(resourceResolver, embeddingMode);
returnFont = singleFont;
+ font = singleFont;
}
+ font.setSimulateStyle(simulateStyle);
returnFont.setFontURI(fontFileURI);
if (!otf.getEmbedFontName().equals("")) {
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/BitmapRendererConfig.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/BitmapRendererConfig.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/BitmapRendererConfig.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/BitmapRendererConfig.java Mon Jul 25 09:59:08 2016
@@ -29,6 +29,7 @@ import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fonts.DefaultFontConfig;
import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
+import org.apache.fop.fonts.FontEventAdapter;
import org.apache.fop.render.RendererConfig;
import org.apache.fop.render.java2d.Java2DRendererConfig;
import org.apache.fop.render.java2d.Java2DRendererConfig.Java2DRendererConfigParser;
@@ -139,7 +140,8 @@ public class BitmapRendererConfig implem
public BitmapRendererConfig build(FOUserAgent userAgent, Configuration cfg)
throws FOPException {
BitmapRendererConfig config = new BitmapRendererConfig(new DefaultFontConfigParser()
- .parse(cfg, userAgent.validateStrictly()));
+ .parse(cfg, userAgent.validateStrictly(),
+ new FontEventAdapter(userAgent.getEventBroadcaster())));
build(config, userAgent, cfg);
return config;
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/PNGRendererConfig.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/PNGRendererConfig.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/PNGRendererConfig.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/PNGRendererConfig.java Mon Jul 25 09:59:08 2016
@@ -25,6 +25,7 @@ import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fonts.DefaultFontConfig;
import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
+import org.apache.fop.fonts.FontEventAdapter;
/**
* The PNG renderer configuration data object.
@@ -43,7 +44,8 @@ public final class PNGRendererConfig ext
public PNGRendererConfig build(FOUserAgent userAgent, Configuration cfg)
throws FOPException {
return new PNGRendererConfig(new DefaultFontConfigParser().parse(cfg,
- userAgent.validateStrictly()));
+ userAgent.validateStrictly(),
+ new FontEventAdapter(userAgent.getEventBroadcaster())));
}
/** {@inheritDoc} */
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/TIFFRendererConfig.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/TIFFRendererConfig.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/TIFFRendererConfig.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/bitmap/TIFFRendererConfig.java Mon Jul 25 09:59:08 2016
@@ -30,6 +30,7 @@ import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.MimeConstants;
import org.apache.fop.fonts.DefaultFontConfig;
import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
+import org.apache.fop.fonts.FontEventAdapter;
import org.apache.fop.render.RendererConfigOption;
import static org.apache.fop.render.bitmap.TIFFCompressionValue.PACKBITS;
@@ -111,7 +112,8 @@ public final class TIFFRendererConfig ex
/** {@inheritDoc} */
public TIFFRendererConfig build(FOUserAgent userAgent, Configuration cfg) throws FOPException {
config = new TIFFRendererConfig(new DefaultFontConfigParser()
- .parse(cfg, userAgent.validateStrictly()));
+ .parse(cfg, userAgent.validateStrictly(),
+ new FontEventAdapter(userAgent.getEventBroadcaster())));
super.build(config, userAgent, cfg);
if (cfg != null) {
setParam(TIFFRendererOption.COMPRESSION,
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/intermediate/IFRendererConfig.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/intermediate/IFRendererConfig.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/intermediate/IFRendererConfig.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/intermediate/IFRendererConfig.java Mon Jul 25 09:59:08 2016
@@ -26,6 +26,7 @@ import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fonts.DefaultFontConfig;
import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
import org.apache.fop.fonts.FontConfig;
+import org.apache.fop.fonts.FontEventAdapter;
import org.apache.fop.render.RendererConfig;
/**
@@ -52,7 +53,8 @@ public final class IFRendererConfig impl
public RendererConfig build(FOUserAgent userAgent, Configuration cfg)
throws FOPException {
return new IFRendererConfig(new DefaultFontConfigParser().parse(cfg,
- userAgent.validateStrictly()));
+ userAgent.validateStrictly(),
+ new FontEventAdapter(userAgent.getEventBroadcaster())));
}
/** {@inheritDoc} */
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/java2d/ConfiguredFontCollection.java Mon Jul 25 09:59:08 2016
@@ -87,7 +87,7 @@ public class ConfiguredFontCollection im
configFontInfo.getSubFontName(), true,
configFontInfo.getEmbeddingMode(), configFontInfo.getEncodingMode(),
configFontInfo.getKerning(), configFontInfo.getAdvanced(), resourceResolver,
- configFontInfo.getEmbedAsType1());
+ configFontInfo.getSimulateStyle(), configFontInfo.getEmbedAsType1());
font = new CustomFontMetricsMapper(fontMetrics);
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/java2d/Java2DRendererConfig.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/java2d/Java2DRendererConfig.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/java2d/Java2DRendererConfig.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/java2d/Java2DRendererConfig.java Mon Jul 25 09:59:08 2016
@@ -27,6 +27,7 @@ import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fonts.DefaultFontConfig;
import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
+import org.apache.fop.fonts.FontEventAdapter;
import org.apache.fop.render.RendererConfig;
import static org.apache.fop.render.java2d.Java2DRendererOption.JAVA2D_TRANSPARENT_PAGE_BACKGROUND;
@@ -68,7 +69,8 @@ public final class Java2DRendererConfig
public Java2DRendererConfig build(FOUserAgent userAgent, Configuration cfg)
throws FOPException {
Java2DRendererConfig config = new Java2DRendererConfig(new DefaultFontConfigParser()
- .parse(cfg, userAgent.validateStrictly()));
+ .parse(cfg, userAgent.validateStrictly(),
+ new FontEventAdapter(userAgent.getEventBroadcaster())));
boolean value = cfg.getChild(
JAVA2D_TRANSPARENT_PAGE_BACKGROUND.getName(), true).getValueAsBoolean(false);
config.params.put(JAVA2D_TRANSPARENT_PAGE_BACKGROUND, value);
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pcl/PCLRendererConfig.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pcl/PCLRendererConfig.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pcl/PCLRendererConfig.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pcl/PCLRendererConfig.java Mon Jul 25 09:59:08 2016
@@ -29,6 +29,7 @@ import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.MimeConstants;
import org.apache.fop.fonts.DefaultFontConfig;
import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
+import org.apache.fop.fonts.FontEventAdapter;
import org.apache.fop.render.RendererConfig;
import static org.apache.fop.render.pcl.Java2DRendererOption.DISABLE_PJL;
@@ -88,7 +89,8 @@ public final class PCLRendererConfig imp
/** {@inheritDoc} */
public PCLRendererConfig build(FOUserAgent userAgent, Configuration cfg) throws FOPException {
PCLRendererConfig config = new PCLRendererConfig(new DefaultFontConfigParser()
- .parse(cfg, userAgent.validateStrictly()));
+ .parse(cfg, userAgent.validateStrictly(),
+ new FontEventAdapter(userAgent.getEventBroadcaster())));
configure(cfg, config);
return config;
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFPainter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFPainter.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFPainter.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFPainter.java Mon Jul 25 09:59:08 2016
@@ -39,6 +39,7 @@ import org.apache.xmlgraphics.image.load
import org.apache.xmlgraphics.image.loader.ImageSessionContext;
import org.apache.fop.ResourceEventProducer;
+import org.apache.fop.fonts.CustomFont;
import org.apache.fop.fonts.Font;
import org.apache.fop.fonts.FontTriplet;
import org.apache.fop.fonts.LazyFont;
@@ -458,9 +459,21 @@ public class PDFPainter extends Abstract
PDFTextUtil textutil = generator.getTextUtil();
textutil.updateTf(fontKey, fontSize, tf.isMultiByte());
+ double shear = 0;
+ boolean simulateStyle = tf instanceof CustomFont && ((CustomFont) tf).getSimulateStyle();
+ if (simulateStyle) {
+ if (triplet.getWeight() == 700) {
+ generator.add("q\n");
+ generator.add("2 Tr 0.31543 w\n");
+ }
+ if (triplet.getStyle().equals("italic")) {
+ shear = 0.3333;
+ }
+ }
+
generator.updateCharacterSpacing(letterSpacing / 1000f);
- textutil.writeTextMatrix(new AffineTransform(1, 0, 0, -1, x / 1000f, y / 1000f));
+ textutil.writeTextMatrix(new AffineTransform(1, 0, shear, -1, x / 1000f, y / 1000f));
int l = text.length();
int dxl = (dx != null ? dx.length : 0);
@@ -504,6 +517,9 @@ public class PDFPainter extends Abstract
}
textutil.writeTJ();
+ if (simulateStyle && triplet.getWeight() == 700) {
+ generator.add("Q\n");
+ }
}
private static int[] paZero = new int[4];
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFRendererConfig.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFRendererConfig.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFRendererConfig.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/pdf/PDFRendererConfig.java Mon Jul 25 09:59:08 2016
@@ -27,6 +27,7 @@ import java.util.Map;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -35,6 +36,7 @@ import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.MimeConstants;
import org.apache.fop.fonts.DefaultFontConfig;
import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
+import org.apache.fop.fonts.FontEventAdapter;
import org.apache.fop.pdf.PDFEncryptionParams;
import org.apache.fop.pdf.PDFFilterList;
import org.apache.fop.render.RendererConfig;
@@ -117,8 +119,14 @@ public final class PDFRendererConfig imp
if (cfg != null) {
configure(cfg, userAgent, strict);
}
- pdfConfig = new PDFRendererConfig(new DefaultFontConfigParser().parse(cfg, strict),
- new PDFRendererOptionsConfig(configOptions, encryptionConfig));
+ if (userAgent == null) {
+ pdfConfig = new PDFRendererConfig(new DefaultFontConfigParser().parse(cfg, strict),
+ new PDFRendererOptionsConfig(configOptions, encryptionConfig));
+ } else {
+ pdfConfig = new PDFRendererConfig(new DefaultFontConfigParser().parse(cfg, strict,
+ new FontEventAdapter(userAgent.getEventBroadcaster())),
+ new PDFRendererOptionsConfig(configOptions, encryptionConfig));
+ }
}
private void parseAndPut(PDFRendererOption option, Configuration cfg) {
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSRendererConfig.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSRendererConfig.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSRendererConfig.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSRendererConfig.java Mon Jul 25 09:59:08 2016
@@ -32,6 +32,7 @@ import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.MimeConstants;
import org.apache.fop.fonts.DefaultFontConfig;
import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
+import org.apache.fop.fonts.FontEventAdapter;
import org.apache.fop.render.RendererConfig;
import org.apache.fop.util.LogUtil;
@@ -113,7 +114,8 @@ public final class PSRendererConfig impl
private ParserHelper(Configuration cfg, FOUserAgent userAgent)
throws ConfigurationException, FOPException {
config = new PSRendererConfig(new DefaultFontConfigParser().parse(cfg,
- userAgent.validateStrictly()));
+ userAgent.validateStrictly(),
+ new FontEventAdapter(userAgent.getEventBroadcaster())));
if (cfg != null) {
setBoolConfigParam(cfg, AUTO_ROTATE_LANDSCAPE);
setConfigParameter(LANGUAGE_LEVEL,
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/txt/TxtRendererConfig.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/txt/TxtRendererConfig.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/txt/TxtRendererConfig.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/txt/TxtRendererConfig.java Mon Jul 25 09:59:08 2016
@@ -28,6 +28,7 @@ import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.MimeConstants;
import org.apache.fop.fonts.DefaultFontConfig;
import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
+import org.apache.fop.fonts.FontEventAdapter;
import org.apache.fop.render.RendererConfig;
import org.apache.fop.render.RendererConfigOption;
@@ -81,7 +82,7 @@ public final class TxtRendererConfig imp
/** {@inheritDoc} */
public TxtRendererConfig build(FOUserAgent userAgent, Configuration cfg) throws FOPException {
TxtRendererConfig config = new TxtRendererConfig(new DefaultFontConfigParser().parse(cfg,
- userAgent.validateStrictly()));
+ userAgent.validateStrictly(), new FontEventAdapter(userAgent.getEventBroadcaster())));
if (cfg != null) {
TxtRendererOption option = TxtRendererOption.ENCODING;
String value = cfg.getChild(option.getName(), true).getValue(null);
Modified: xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml Mon Jul 25 09:59:08 2016
@@ -22,4 +22,5 @@
<message key="glyphNotAvailable">Glyph "{ch}" (0x{ch,hex}[, {ch,glyph-name}]) not available in font "{fontName}".</message>
<message key="fontDirectoryNotFound">The font directory {dir} could not be found.</message>
<message key="svgTextStrokedAsShapes">The SVG text for font {fontFamily} will be stroked as shapes.</message>
+ <message key="fontFeatureNotSuppprted">The {feature} property is only supported in {onlySupportedIn}.</message>
</catalogue>
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/DejaVuLGCSerifTestCase.java Mon Jul 25 09:59:08 2016
@@ -49,7 +49,7 @@ public class DejaVuLGCSerifTestCase {
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,
- false, false, resolver, false);
+ false, false, resolver, false, false);
}
/**
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/EmbedFontInfoTestCase.java Mon Jul 25 09:59:08 2016
@@ -53,7 +53,8 @@ public class EmbedFontInfoTestCase {
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, false);
+ sut = new EmbedFontInfo(fontUris, kerning, useAdvanced, triplets, subFontName, encMode,
+ embedMode, false, false);
}
@Test
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java Mon Jul 25 09:59:08 2016
@@ -51,7 +51,7 @@ public class OTFToType1TestCase {
InternalResourceResolver rr = ResourceResolverFactory.createDefaultInternalResourceResolver(
new File(".").toURI());
CustomFont realFont = FontLoader.loadFont(new FontUris(new File(s).toURI(), null), null, true,
- EmbeddingMode.SUBSET, EncodingMode.AUTO, true, true, rr, true);
+ EmbeddingMode.SUBSET, EncodingMode.AUTO, true, true, rr, false, true);
realFont.mapChar('d');
InputStream is = ((CFFToType1Font)realFont).getInputStreams().get(0);
return Type1Font.createWithPFB(is);
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/TTFFontLoaderTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/TTFFontLoaderTestCase.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/TTFFontLoaderTestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/TTFFontLoaderTestCase.java Mon Jul 25 09:59:08 2016
@@ -50,12 +50,13 @@ public class TTFFontLoaderTestCase {
boolean useKerning = true;
OFFontLoader fontLoader = new OFFontLoader(absoluteFilePath, fontName, embedded,
- EmbeddingMode.AUTO, EncodingMode.AUTO, useKerning, useComplexScriptFeatures, resourceResolver, false);
+ EmbeddingMode.AUTO, EncodingMode.AUTO, useKerning, useComplexScriptFeatures,
+ resourceResolver, false, false);
assertTrue(fontLoader.getFont().hasKerningInfo());
useKerning = false;
fontLoader = new OFFontLoader(absoluteFilePath, fontName, embedded, EmbeddingMode.AUTO,
- EncodingMode.AUTO, useKerning, useComplexScriptFeatures, resourceResolver, false);
+ EncodingMode.AUTO, useKerning, useComplexScriptFeatures, resourceResolver, false, false);
assertFalse(fontLoader.getFont().hasKerningInfo());
}
}
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/pdf/PDFPainterTestCase.java Mon Jul 25 09:59:08 2016
@@ -38,9 +38,13 @@ import static org.mockito.Mockito.when;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.fo.Constants;
+import org.apache.fop.fonts.FontInfo;
+import org.apache.fop.fonts.FontTriplet;
+import org.apache.fop.fonts.MultiByteFont;
import org.apache.fop.pdf.PDFDocument;
import org.apache.fop.pdf.PDFProfile;
import org.apache.fop.pdf.PDFStructElem;
+import org.apache.fop.pdf.PDFTextUtil;
import org.apache.fop.render.RenderingContext;
import org.apache.fop.render.intermediate.IFContext;
import org.apache.fop.render.intermediate.IFException;
@@ -51,7 +55,7 @@ import junit.framework.Assert;
public class PDFPainterTestCase {
private FOUserAgent foUserAgent;
- private PDFContentGenerator pdfContentGenerator;
+ private PDFContentGenerator pdfContentGenerator;
private PDFDocumentHandler pdfDocumentHandler;
private PDFPainter pdfPainter;
private PDFStructElem elem = new PDFStructElem();
@@ -73,17 +77,17 @@ public class PDFPainterTestCase {
verify(pdfContentGenerator, times(16)).add(endsWith(" c "));
}
- private void createPDFPainter(boolean value) {
- mockFOUserAgent(value);
+ private void createPDFPainter(boolean accessibility) {
+ mockFOUserAgent(accessibility);
mockPDFContentGenerator();
mockPDFDocumentHandler();
PDFLogicalStructureHandler handler = mock(PDFLogicalStructureHandler.class);
pdfPainter = new PDFPainter(pdfDocumentHandler, handler);
}
- private void mockFOUserAgent(boolean value) {
+ private void mockFOUserAgent(boolean accessibility) {
foUserAgent = mock(FOUserAgent.class);
- when(foUserAgent.isAccessibilityEnabled()).thenReturn(value);
+ when(foUserAgent.isAccessibilityEnabled()).thenReturn(accessibility);
}
private void mockPDFContentGenerator() {
@@ -132,4 +136,46 @@ public class PDFPainterTestCase {
return renderingContext;
}
}
+
+ @Test
+ public void testSimulateStyle() throws IFException {
+ FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
+ foUserAgent = fopFactory.newFOUserAgent();
+ mockPDFContentGenerator();
+ final StringBuilder sb = new StringBuilder();
+ PDFTextUtil pdfTextUtil = new PDFTextUtil() {
+ protected void write(String code) {
+ sb.append(code);
+ }
+ protected void write(StringBuffer code) {
+ sb.append(code);
+ }
+ };
+ pdfTextUtil.beginTextObject();
+
+ when(pdfContentGenerator.getTextUtil()).thenReturn(pdfTextUtil);
+ PDFDocumentHandler pdfDocumentHandler = new PDFDocumentHandler(new IFContext(foUserAgent)) {
+ PDFContentGenerator getGenerator() {
+ return pdfContentGenerator;
+ }
+ };
+
+ pdfDocumentHandler.setResult(new StreamResult(new ByteArrayOutputStream()));
+ pdfDocumentHandler.startDocument();
+ pdfDocumentHandler.startPage(0, "", "", new Dimension());
+ FontInfo fi = new FontInfo();
+ fi.addFontProperties("f1", new FontTriplet("a", "italic", 700));
+ MultiByteFont font = new MultiByteFont(null, null);
+ font.setSimulateStyle(true);
+ fi.addMetrics("f1", font);
+ pdfDocumentHandler.setFontInfo(fi);
+ MyPDFPainter pdfPainter = new MyPDFPainter(pdfDocumentHandler, null);
+ pdfPainter.setFont("a", "italic", 700, null, 12, null);
+ pdfPainter.drawText(0, 0, 0, 0, null, "test");
+
+ Assert.assertEquals(sb.toString(), "BT\n/f1 0.012 Tf\n1 0 0.3333 -1 0 0 Tm [<0000000000000000>] TJ\n");
+ verify(pdfContentGenerator).add("q\n");
+ verify(pdfContentGenerator).add("2 Tr 0.31543 w\n");
+ verify(pdfContentGenerator).add("Q\n");
+ }
}
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/svg/font/FontInfoBuilder.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/svg/font/FontInfoBuilder.java?rev=1753972&r1=1753971&r2=1753972&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/svg/font/FontInfoBuilder.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/svg/font/FontInfoBuilder.java Mon Jul 25 09:59:08 2016
@@ -83,7 +83,7 @@ class FontInfoBuilder {
URI baseURI = new File("test/resources/fonts/ttf").toURI();
InternalResourceResolver resolver = ResourceResolverFactory.createDefaultInternalResourceResolver(baseURI);
OFFontLoader fontLoader = new OFFontLoader(new URI(filename), null, true,
- EmbeddingMode.AUTO, EncodingMode.AUTO, true, useAdvanced, resolver, false);
+ EmbeddingMode.AUTO, EncodingMode.AUTO, true, useAdvanced, resolver, false, false);
FontMetrics font = fontLoader.getFont();
registerFont(font, "F" + fontKey++, fontName);
return this;
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.