Browse Source

Moved FontSetup and two helper classes from render.pdf to fonts package.

FontSetup has the PDF fonts as the default, but this class can be extended
if/when another renderer needs its own font setups.  (Cannot do this, however,
for AWT's FontSetup at the moment, because its setup() has a different
signature.)


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197031 13f79535-47bb-0310-9956-ffa450edef68
pull/30/head
Glen Mazza 20 years ago
parent
commit
f80b5592ce

src/java/org/apache/fop/render/pdf/EmbedFontInfo.java → src/java/org/apache/fop/fonts/EmbedFontInfo.java View File

@@ -1,5 +1,5 @@
/*
* $Id: EmbedFontInfo.java,v 1.4 2003/03/07 09:46:32 jeremias Exp $
* $Id$
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
@@ -48,7 +48,7 @@
* James Tauber <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.render.pdf;
package org.apache.fop.fonts;

import java.util.List;


src/java/org/apache/fop/render/pdf/FontSetup.java → src/java/org/apache/fop/fonts/FontSetup.java View File

@@ -1,5 +1,5 @@
/*
* $Id: FontSetup.java,v 1.22 2003/03/07 09:46:32 jeremias Exp $
* $Id$
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
@@ -48,19 +48,11 @@
* James Tauber <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.render.pdf;
package org.apache.fop.fonts;

// FOP
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.fop.fonts.Font;
import org.apache.fop.fonts.Typeface;
import org.apache.fop.fonts.FontDescriptor;
import org.apache.fop.fonts.FontUtil;
import org.apache.fop.fonts.LazyFont;
import org.apache.fop.apps.Document;
import org.apache.fop.pdf.PDFDocument;
import org.apache.fop.pdf.PDFResources;

// FOP (base 14 fonts)
import org.apache.fop.fonts.base14.Helvetica;
import org.apache.fop.fonts.base14.HelveticaBold;
@@ -77,13 +69,17 @@ import org.apache.fop.fonts.base14.CourierBoldOblique;
import org.apache.fop.fonts.base14.Symbol;
import org.apache.fop.fonts.base14.ZapfDingbats;

import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;

// Java
import java.util.Map;
import java.util.Iterator;
import java.util.List;

/**
* sets up the PDF fonts.
* Default fonts for FOP application; currently this uses PDF's fonts
* by default.
*
* Assigns the font (with metrics) to internal names like "F1" and
* assigns family-style-weight triplets to the fonts
@@ -242,30 +238,6 @@ public class FontSetup {
}
}

/**
* Add the fonts in the font info to the PDF document
*
* @param doc PDF document to add fonts to
* @param resources PDFResources object to attach the font to
* @param fontInfo font info object to get font information from
*/
public static void addToResources(PDFDocument doc, PDFResources resources,
Document fontInfo) {
Map fonts = fontInfo.getUsedFonts();
Iterator e = fonts.keySet().iterator();
while (e.hasNext()) {
String f = (String)e.next();
Typeface font = (Typeface)fonts.get(f);
FontDescriptor desc = null;
if (font instanceof FontDescriptor) {
desc = (FontDescriptor)font;
}
resources.addFont(doc.getFactory().makeFont(
f, font.getFontName(), font.getEncoding(), font, desc));
}
}


/**
* Builds a list of EmbedFontInfo objects for use with the setup() method.
* @param cfg Configuration object

src/java/org/apache/fop/render/pdf/FontTriplet.java → src/java/org/apache/fop/fonts/FontTriplet.java View File

@@ -1,5 +1,5 @@
/*
* $Id: FontTriplet.java,v 1.2 2003/03/07 09:46:32 jeremias Exp $
* $Id$
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
@@ -48,7 +48,7 @@
* James Tauber <jtauber@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.render.pdf;
package org.apache.fop.fonts;

/**
* FontTriplet contains information on name, weight, style of one font

+ 25
- 0
src/java/org/apache/fop/pdf/PDFResources.java View File

@@ -50,6 +50,10 @@
*/
package org.apache.fop.pdf;

import org.apache.fop.apps.Document;
import org.apache.fop.fonts.Typeface;
import org.apache.fop.fonts.FontDescriptor;

// Java
import java.util.Iterator;
import java.util.Map;
@@ -110,6 +114,27 @@ public class PDFResources extends PDFObject {
this.fonts.put(font.getName(), font);
}

/**
* Add the fonts in the font info to this PDF document's Font Resources.
*
* @param doc PDF document to add fonts to
* @param fontInfo font info object to get font information from
*/
public void addFonts(PDFDocument doc, Document fontInfo) {
Map fonts = fontInfo.getUsedFonts();
Iterator e = fonts.keySet().iterator();
while (e.hasNext()) {
String f = (String)e.next();
Typeface font = (Typeface)fonts.get(f);
FontDescriptor desc = null;
if (font instanceof FontDescriptor) {
desc = (FontDescriptor)font;
}
addFont(doc.getFactory().makeFont(
f, font.getFontName(), font.getEncoding(), font, desc));
}
}

/**
* Add a PDFGState to the resources.
*

+ 1
- 1
src/java/org/apache/fop/render/PrintRenderer.java View File

@@ -51,9 +51,9 @@
package org.apache.fop.render;

// FOP
import org.apache.fop.render.pdf.FontSetup;
import org.apache.fop.apps.Document;
import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.fonts.FontSetup;

// Java
import java.util.List;

+ 2
- 2
src/java/org/apache/fop/render/mif/MIFHandler.java View File

@@ -74,6 +74,7 @@ import org.apache.fop.fo.pagination.Flow;
import org.apache.fop.fo.pagination.PageSequence;
import org.apache.fop.fo.pagination.PageSequenceMaster;
import org.apache.fop.fo.pagination.SimplePageMaster;
import org.apache.fop.fonts.FontSetup;
import org.xml.sax.SAXException;

// TODO: do we really want every method throwing a SAXException
@@ -102,8 +103,7 @@ public class MIFHandler extends FOInputHandler {
public MIFHandler(Document doc, OutputStream os) {
super(doc);
outStream = os;
// use pdf fonts for now, this is only for resolving names
org.apache.fop.render.pdf.FontSetup.setup(doc, null);
FontSetup.setup(doc, null);
}

/**

+ 3
- 2
src/java/org/apache/fop/render/pdf/PDFRenderer.java View File

@@ -94,6 +94,7 @@ import org.apache.fop.fo.properties.BackgroundRepeat;
import org.apache.fop.fo.properties.RuleStyle;
import org.apache.fop.fonts.Typeface;
import org.apache.fop.fonts.Font;
import org.apache.fop.fonts.FontSetup;
import org.apache.fop.fonts.FontMetrics;
import org.apache.fop.image.FopImage;
import org.apache.fop.image.ImageFactory;
@@ -295,8 +296,8 @@ public class PDFRenderer extends PrintRenderer {
* @see org.apache.fop.render.Renderer#stopRenderer()
*/
public void stopRenderer() throws IOException {
FontSetup.addToResources(pdfDoc, pdfDoc.getResources(),
(org.apache.fop.apps.Document)fontInfo);
pdfDoc.getResources().addFonts(pdfDoc,
(org.apache.fop.apps.Document) fontInfo);
pdfDoc.outputTrailer(ostream);

this.pdfDoc = null;

+ 1
- 1
src/java/org/apache/fop/render/ps/AbstractPSDocumentGraphics2D.java View File

@@ -61,7 +61,7 @@ import java.io.IOException;
//FOP
import org.apache.fop.apps.Document;
import org.apache.fop.fonts.Font;
import org.apache.fop.render.pdf.FontSetup;
import org.apache.fop.fonts.FontSetup;

/**
* This class is a wrapper for the <tt>PSGraphics2D</tt> that

+ 1
- 1
src/java/org/apache/fop/render/ps/PSDocumentGraphics2D.java View File

@@ -57,7 +57,7 @@ import java.io.IOException;

//FOP
import org.apache.fop.apps.Document;
import org.apache.fop.render.pdf.FontSetup;
import org.apache.fop.fonts.FontSetup;

/**
* This class is a wrapper for the <tt>PSGraphics2D</tt> that

+ 3
- 3
src/java/org/apache/fop/render/ps/PSRenderer.java View File

@@ -72,6 +72,7 @@ import org.apache.fop.area.inline.ForeignObject;
import org.apache.fop.area.inline.TextArea;
import org.apache.fop.datatypes.ColorType;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fonts.FontSetup;
import org.apache.fop.fonts.Typeface;
import org.apache.fop.apps.Document;
import org.apache.fop.render.AbstractRenderer;
@@ -262,9 +263,8 @@ public class PSRenderer extends AbstractRenderer {
* @param foTreeControl the font info object to set up
*/
public void setupFontInfo(FOTreeControl foTreeControl) {
/* use PDF's font setup to get PDF metrics */
org.apache.fop.render.pdf.FontSetup.setup((Document)foTreeControl, null);
this.fontInfo = (Document)foTreeControl;
FontSetup.setup((Document) foTreeControl, null);
this.fontInfo = (Document) foTreeControl;
}

/**

+ 2
- 2
src/java/org/apache/fop/render/rtf/RTFHandler.java View File

@@ -103,6 +103,7 @@ import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfTable;
import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfTableRow;
import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfTableCell;
import org.apache.fop.render.rtf.rtflib.rtfdoc.IRtfTableContainer;
import org.apache.fop.fonts.FontSetup;
import org.xml.sax.SAXException;

/**
@@ -143,8 +144,7 @@ public class RTFHandler extends FOInputHandler {
public RTFHandler(Document doc, OutputStream os) {
super(doc);
this.os = os;
// use pdf fonts for now, this is only for resolving names
org.apache.fop.render.pdf.FontSetup.setup(doc, null);
FontSetup.setup(doc, null);
log.warn(ALPHA_WARNING);
}


+ 2
- 3
src/java/org/apache/fop/render/xml/XMLRenderer.java View File

@@ -92,6 +92,7 @@ import org.apache.fop.area.inline.Leader;
import org.apache.fop.area.inline.Space;
import org.apache.fop.area.inline.Viewport;
import org.apache.fop.area.inline.TextArea;
import org.apache.fop.fonts.FontSetup;
import org.apache.fop.fo.properties.RuleStyle;
import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.fo.pagination.Region;
@@ -211,9 +212,7 @@ public class XMLRenderer extends AbstractRenderer {
* @param fontInfo the font info object to set up
*/
public void setupFontInfo(FOTreeControl foTreeControl) {

/* use PDF's font setup to get PDF metrics */
org.apache.fop.render.pdf.FontSetup.setup((Document)foTreeControl, null);
FontSetup.setup((Document) foTreeControl, null);
}

private boolean isCoarseXml() {

+ 2
- 2
src/java/org/apache/fop/svg/PDFDocumentGraphics2D.java View File

@@ -59,7 +59,7 @@ import org.apache.fop.pdf.PDFNumber;
import org.apache.fop.pdf.PDFResources;
import org.apache.fop.pdf.PDFColor;
import org.apache.fop.pdf.PDFAnnotList;
import org.apache.fop.render.pdf.FontSetup;
import org.apache.fop.fonts.FontSetup;
import org.apache.avalon.framework.CascadingRuntimeException;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configurable;
@@ -308,7 +308,7 @@ public class PDFDocumentGraphics2D extends PDFGraphics2D
}
this.pdfDoc.addObject(currentPage);
if (fontInfo != null) {
FontSetup.addToResources(pdfDoc, pdfDoc.getResources(), fontInfo);
pdfDoc.getResources().addFonts(pdfDoc, fontInfo);
}
this.pdfDoc.output(outputStream);
pdfDoc.outputTrailer(outputStream);

+ 8
- 5
src/java/org/apache/fop/svg/PDFGraphics2D.java View File

@@ -66,7 +66,7 @@ import org.apache.fop.pdf.PDFAnnotList;
import org.apache.fop.pdf.BitmapImage;
import org.apache.fop.apps.Document;
import org.apache.fop.fonts.Font;
import org.apache.fop.render.pdf.FontSetup;
import org.apache.fop.fonts.FontSetup;
import org.apache.fop.fonts.FontMetrics;
import org.apache.fop.fonts.LazyFont;
import org.apache.fop.image.JpegImage;
@@ -964,12 +964,12 @@ public class PDFGraphics2D extends AbstractGraphics2D {
private void createPattern(PatternPaint pp, boolean fill) {
Rectangle2D rect = pp.getPatternRect();

Document fi = new Document(null);
FontSetup.setup(fi, null);
Document fontInfo = new Document(null);
FontSetup.setup(fontInfo, null);

PDFResources res = pdfDoc.getFactory().makeResources();
PDFResourceContext context = new PDFResourceContext(res);
PDFGraphics2D pattGraphic = new PDFGraphics2D(textAsShapes, fi,
PDFGraphics2D pattGraphic = new PDFGraphics2D(textAsShapes, fontInfo,
pdfDoc, context, pageRef,
"", 0);
pattGraphic.gc = (GraphicContext)this.gc.clone();
@@ -1008,7 +1008,10 @@ public class PDFGraphics2D extends AbstractGraphics2D {
translate.add(new Double(flatmatrix[4]));
translate.add(new Double(flatmatrix[5]));

FontSetup.addToResources(pdfDoc, res, fi);
/** @todo see if pdfDoc and res can be linked here,
(currently res <> PDFDocument's resources) so addFonts()
can be moved to PDFDocument class */
res.addFonts(pdfDoc, fontInfo);

PDFPattern myPat = pdfDoc.getFactory().makePattern(
resourceContext, 1, res, 1, 1, bbox,

Loading…
Cancel
Save