gmazza      2003/12/12 14:37:39

  Modified:    src/java/org/apache/fop/pdf PDFResources.java
               src/java/org/apache/fop/render PrintRenderer.java
               src/java/org/apache/fop/render/mif MIFHandler.java
               src/java/org/apache/fop/render/pdf PDFRenderer.java
               src/java/org/apache/fop/render/ps
                        AbstractPSDocumentGraphics2D.java
                        PSDocumentGraphics2D.java PSRenderer.java
               src/java/org/apache/fop/render/rtf RTFHandler.java
               src/java/org/apache/fop/render/xml XMLRenderer.java
               src/java/org/apache/fop/svg PDFDocumentGraphics2D.java
                        PDFGraphics2D.java
  Added:       src/java/org/apache/fop/fonts EmbedFontInfo.java
                        FontSetup.java FontTriplet.java
  Removed:     src/java/org/apache/fop/render/pdf EmbedFontInfo.java
                        FontSetup.java FontTriplet.java
  Log:
  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.)
  
  Revision  Changes    Path
  1.1                  xml-fop/src/java/org/apache/fop/fonts/EmbedFontInfo.java
  
  Index: EmbedFontInfo.java
  ===================================================================
  /*
   * $Id: EmbedFontInfo.java,v 1.1 2003/12/12 22:37:38 gmazza Exp $
   * ============================================================================
   *                    The Apache Software License, Version 1.1
   * ============================================================================
   * 
   * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without modifica-
   * tion, are permitted provided that the following conditions are met:
   * 
   * 1. Redistributions of source code must retain the above copyright notice,
   *    this list of conditions and the following disclaimer.
   * 
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   * 
   * 3. The end-user documentation included with the redistribution, if any, must
   *    include the following acknowledgment: "This product includes software
   *    developed by the Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself, if
   *    and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "FOP" and "Apache Software Foundation" must not be used to
   *    endorse or promote products derived from this software without prior
   *    written permission. For written permission, please contact
   *    [EMAIL PROTECTED]
   * 
   * 5. Products derived from this software may not be called "Apache", nor may
   *    "Apache" appear in their name, without prior written permission of the
   *    Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
   * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   * ============================================================================
   * 
   * This software consists of voluntary contributions made by many individuals
   * on behalf of the Apache Software Foundation and was originally created by
   * James Tauber <[EMAIL PROTECTED]>. For more information on the Apache
   * Software Foundation, please see <http://www.apache.org/>.
   */ 
  package org.apache.fop.fonts;
  
  import java.util.List;
  
  /**
   * FontInfo contains meta information on fonts (where is the metrics file etc.)
   */
  public class EmbedFontInfo {
      
      private String metricsFile, embedFile;
      private boolean kerning;
      private List fontTriplets;
  
      /**
       * Main constructor
       * @param metricsFile Path to the xml file containing font metrics
       * @param kerning True if kerning should be enabled
       * @param fontTriplets List of font triplets to associate with this font
       * @param embedFile Path to the embeddable font file (may be null)
       */
      public EmbedFontInfo(String metricsFile, boolean kerning,
                      List fontTriplets, String embedFile) {
          this.metricsFile = metricsFile;
          this.embedFile = embedFile;
          this.kerning = kerning;
          this.fontTriplets = fontTriplets;
      }
  
      /**
       * Returns the path to the metrics file
       * @return the metrics file path
       */
      public String getMetricsFile() {
          return metricsFile;
      }
  
      /**
       * Returns the path to the embeddable font file
       * @return the font file path
       */
      public String getEmbedFile() {
          return embedFile;
      }
  
      /**
       * Determines if kerning is enabled
       * @return True if enabled
       */
      public boolean getKerning() {
          return kerning;
      }
  
      /**
       * Returns the list of font triplets associated with this font.
       * @return List of font triplets
       */
      public List getFontTriplets() {
          return fontTriplets;
      }
  
  }
  
  
  
  
  1.1                  xml-fop/src/java/org/apache/fop/fonts/FontSetup.java
  
  Index: FontSetup.java
  ===================================================================
  /*
   * $Id: FontSetup.java,v 1.1 2003/12/12 22:37:38 gmazza Exp $
   * ============================================================================
   *                    The Apache Software License, Version 1.1
   * ============================================================================
   *
   * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without modifica-
   * tion, are permitted provided that the following conditions are met:
   *
   * 1. Redistributions of source code must retain the above copyright notice,
   *    this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   *
   * 3. The end-user documentation included with the redistribution, if any, must
   *    include the following acknowledgment: "This product includes software
   *    developed by the Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself, if
   *    and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "FOP" and "Apache Software Foundation" must not be used to
   *    endorse or promote products derived from this software without prior
   *    written permission. For written permission, please contact
   *    [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache", nor may
   *    "Apache" appear in their name, without prior written permission of the
   *    Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
   * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   * ============================================================================
   *
   * This software consists of voluntary contributions made by many individuals
   * on behalf of the Apache Software Foundation and was originally created by
   * James Tauber <[EMAIL PROTECTED]>. For more information on the Apache
   * Software Foundation, please see <http://www.apache.org/>.
   */
  package org.apache.fop.fonts;
  
  // FOP
  import org.apache.fop.apps.Document;
  
  // FOP (base 14 fonts)
  import org.apache.fop.fonts.base14.Helvetica;
  import org.apache.fop.fonts.base14.HelveticaBold;
  import org.apache.fop.fonts.base14.HelveticaOblique;
  import org.apache.fop.fonts.base14.HelveticaBoldOblique;
  import org.apache.fop.fonts.base14.TimesRoman;
  import org.apache.fop.fonts.base14.TimesBold;
  import org.apache.fop.fonts.base14.TimesItalic;
  import org.apache.fop.fonts.base14.TimesBoldItalic;
  import org.apache.fop.fonts.base14.Courier;
  import org.apache.fop.fonts.base14.CourierBold;
  import org.apache.fop.fonts.base14.CourierOblique;
  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;
  
  /**
   * 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
   */
  public class FontSetup {
  
      /**
       * Sets up the font info object.
       *
       * Adds metrics for basic fonts and useful family-style-weight
       * triplets for lookup.
       *
       * @param fontInfo the font info object to set up
       * @param embedList ???
       */
      public static void setup(Document fontInfo, List embedList) {
  
          fontInfo.addMetrics("F1", new Helvetica());
          fontInfo.addMetrics("F2", new HelveticaOblique());
          fontInfo.addMetrics("F3", new HelveticaBold());
          fontInfo.addMetrics("F4", new HelveticaBoldOblique());
          fontInfo.addMetrics("F5", new TimesRoman());
          fontInfo.addMetrics("F6", new TimesItalic());
          fontInfo.addMetrics("F7", new TimesBold());
          fontInfo.addMetrics("F8", new TimesBoldItalic());
          fontInfo.addMetrics("F9", new Courier());
          fontInfo.addMetrics("F10", new CourierOblique());
          fontInfo.addMetrics("F11", new CourierBold());
          fontInfo.addMetrics("F12", new CourierBoldOblique());
          fontInfo.addMetrics("F13", new Symbol());
          fontInfo.addMetrics("F14", new ZapfDingbats());
  
          // Custom type 1 fonts step 1/2
          // fontInfo.addMetrics("F15", new OMEP());
          // fontInfo.addMetrics("F16", new GaramondLightCondensed());
          // fontInfo.addMetrics("F17", new BauerBodoniBoldItalic());
  
          /* any is treated as serif */
          fontInfo.addFontProperties("F5", "any", "normal", Font.NORMAL);
          fontInfo.addFontProperties("F6", "any", "italic", Font.NORMAL);
          fontInfo.addFontProperties("F6", "any", "oblique", Font.NORMAL);
          fontInfo.addFontProperties("F7", "any", "normal", Font.BOLD);
          fontInfo.addFontProperties("F8", "any", "italic", Font.BOLD);
          fontInfo.addFontProperties("F8", "any", "oblique", Font.BOLD);
  
          fontInfo.addFontProperties("F1", "sans-serif", "normal", Font.NORMAL);
          fontInfo.addFontProperties("F2", "sans-serif", "oblique", Font.NORMAL);
          fontInfo.addFontProperties("F2", "sans-serif", "italic", Font.NORMAL);
          fontInfo.addFontProperties("F3", "sans-serif", "normal", Font.BOLD);
          fontInfo.addFontProperties("F4", "sans-serif", "oblique", Font.BOLD);
          fontInfo.addFontProperties("F4", "sans-serif", "italic", Font.BOLD);
          fontInfo.addFontProperties("F5", "serif", "normal", Font.NORMAL);
          fontInfo.addFontProperties("F6", "serif", "oblique", Font.NORMAL);
          fontInfo.addFontProperties("F6", "serif", "italic", Font.NORMAL);
          fontInfo.addFontProperties("F7", "serif", "normal", Font.BOLD);
          fontInfo.addFontProperties("F8", "serif", "oblique", Font.BOLD);
          fontInfo.addFontProperties("F8", "serif", "italic", Font.BOLD);
          fontInfo.addFontProperties("F9", "monospace", "normal", Font.NORMAL);
          fontInfo.addFontProperties("F10", "monospace", "oblique", Font.NORMAL);
          fontInfo.addFontProperties("F10", "monospace", "italic", Font.NORMAL);
          fontInfo.addFontProperties("F11", "monospace", "normal", Font.BOLD);
          fontInfo.addFontProperties("F12", "monospace", "oblique", Font.BOLD);
          fontInfo.addFontProperties("F12", "monospace", "italic", Font.BOLD);
  
          fontInfo.addFontProperties("F1", "Helvetica", "normal", Font.NORMAL);
          fontInfo.addFontProperties("F2", "Helvetica", "oblique", Font.NORMAL);
          fontInfo.addFontProperties("F2", "Helvetica", "italic", Font.NORMAL);
          fontInfo.addFontProperties("F3", "Helvetica", "normal", Font.BOLD);
          fontInfo.addFontProperties("F4", "Helvetica", "oblique", Font.BOLD);
          fontInfo.addFontProperties("F4", "Helvetica", "italic", Font.BOLD);
          fontInfo.addFontProperties("F5", "Times", "normal", Font.NORMAL);
          fontInfo.addFontProperties("F6", "Times", "oblique", Font.NORMAL);
          fontInfo.addFontProperties("F6", "Times", "italic", Font.NORMAL);
          fontInfo.addFontProperties("F7", "Times", "normal", Font.BOLD);
          fontInfo.addFontProperties("F8", "Times", "oblique", Font.BOLD);
          fontInfo.addFontProperties("F8", "Times", "italic", Font.BOLD);
          fontInfo.addFontProperties("F9", "Courier", "normal", Font.NORMAL);
          fontInfo.addFontProperties("F10", "Courier", "oblique", Font.NORMAL);
          fontInfo.addFontProperties("F10", "Courier", "italic", Font.NORMAL);
          fontInfo.addFontProperties("F11", "Courier", "normal", Font.BOLD);
          fontInfo.addFontProperties("F12", "Courier", "oblique", Font.BOLD);
          fontInfo.addFontProperties("F12", "Courier", "italic", Font.BOLD);
          fontInfo.addFontProperties("F13", "Symbol", "normal", Font.NORMAL);
          fontInfo.addFontProperties("F14", "ZapfDingbats", "normal", Font.NORMAL);
  
          // Custom type 1 fonts step 2/2
          // fontInfo.addFontProperties("F15", "OMEP", "normal", FontInfo.NORMAL);
          // fontInfo.addFontProperties("F16", "Garamond-LightCondensed", "normal", 
FontInfo.NORMAL);
          // fontInfo.addFontProperties("F17", "BauerBodoni", "italic", FontInfo.BOLD);
  
          /* for compatibility with PassiveTex */
          fontInfo.addFontProperties("F5", "Times-Roman", "normal", Font.NORMAL);
          fontInfo.addFontProperties("F6", "Times-Roman", "oblique", Font.NORMAL);
          fontInfo.addFontProperties("F6", "Times-Roman", "italic", Font.NORMAL);
          fontInfo.addFontProperties("F7", "Times-Roman", "normal", Font.BOLD);
          fontInfo.addFontProperties("F8", "Times-Roman", "oblique", Font.BOLD);
          fontInfo.addFontProperties("F8", "Times-Roman", "italic", Font.BOLD);
          fontInfo.addFontProperties("F5", "Times Roman", "normal", Font.NORMAL);
          fontInfo.addFontProperties("F6", "Times Roman", "oblique", Font.NORMAL);
          fontInfo.addFontProperties("F6", "Times Roman", "italic", Font.NORMAL);
          fontInfo.addFontProperties("F7", "Times Roman", "normal", Font.BOLD);
          fontInfo.addFontProperties("F8", "Times Roman", "oblique", Font.BOLD);
          fontInfo.addFontProperties("F8", "Times Roman", "italic", Font.BOLD);
          fontInfo.addFontProperties("F9", "Computer-Modern-Typewriter",
                                     "normal", Font.NORMAL);
  
          /* Add configured fonts */
          addConfiguredFonts(fontInfo, embedList, 15);
      }
  
      /**
       * Add fonts from configuration file starting with
       * internalnames F<num>
       * @param fontInfo the font info object to set up
       * @param fontInfos ???
       * @param num starting index for internal font numbering
       */
      public static void addConfiguredFonts(Document fontInfo, List fontInfos, int 
num) {
          if (fontInfos == null) {
              return; //No fonts to process
          }
  
          String internalName = null;
          //FontReader reader = null;
  
          for (int i = 0; i < fontInfos.size(); i++) {
              EmbedFontInfo configFontInfo = (EmbedFontInfo)fontInfos.get(i);
  
              String metricsFile = configFontInfo.getMetricsFile();
              if (metricsFile != null) {
                  internalName = "F" + num;
                  num++;
                  /*
                  reader = new FontReader(metricsFile);
                  reader.useKerning(configFontInfo.getKerning());
                  reader.setFontEmbedPath(configFontInfo.getEmbedFile());
                  fontInfo.addMetrics(internalName, reader.getFont());
                  */
                  LazyFont font = new LazyFont(configFontInfo.getEmbedFile(),
                                               metricsFile,
                                               configFontInfo.getKerning());
                  fontInfo.addMetrics(internalName, font);
  
                  List triplets = configFontInfo.getFontTriplets();
                  for (int c = 0; c < triplets.size(); c++) {
                      FontTriplet triplet = (FontTriplet)triplets.get(c);
  
                      int weight = FontUtil.parseCSS2FontWeight(triplet.getWeight());
                      //System.out.println("Registering: "+triplet+" weight="+weight);
                      fontInfo.addFontProperties(internalName,
                                                 triplet.getName(),
                                                 triplet.getStyle(),
                                                 weight);
                  }
              }
          }
      }
  
      /**
       * Builds a list of EmbedFontInfo objects for use with the setup() method.
       * @param cfg Configuration object
       * @return List the newly created list of fonts
       * @throws ConfigurationException if something's wrong with the config data
       */
      public static List buildFontListFromConfiguration(Configuration cfg)
              throws ConfigurationException {
          List fontList = new java.util.ArrayList();
          Configuration[] font = cfg.getChildren("font");
          for (int i = 0; i < font.length; i++) {
              Configuration[] triple = font[i].getChildren("font-triplet");
              List tripleList = new java.util.ArrayList();
              for (int j = 0; j < triple.length; j++) {
                  tripleList.add(new FontTriplet(triple[j].getAttribute("name"),
                                                 triple[j].getAttribute("weight"),
                                                 triple[j].getAttribute("style")));
              }
  
              EmbedFontInfo efi;
              efi = new EmbedFontInfo(font[i].getAttribute("metrics-url"),
                                      font[i].getAttributeAsBoolean("kerning", false),
                                      tripleList, font[i].getAttribute("embed-url", 
null));
  
              fontList.add(efi);
          }
          return fontList;
      }
  }
  
  
  
  
  1.1                  xml-fop/src/java/org/apache/fop/fonts/FontTriplet.java
  
  Index: FontTriplet.java
  ===================================================================
  /*
   * $Id: FontTriplet.java,v 1.1 2003/12/12 22:37:38 gmazza Exp $
   * ============================================================================
   *                    The Apache Software License, Version 1.1
   * ============================================================================
   * 
   * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without modifica-
   * tion, are permitted provided that the following conditions are met:
   * 
   * 1. Redistributions of source code must retain the above copyright notice,
   *    this list of conditions and the following disclaimer.
   * 
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   * 
   * 3. The end-user documentation included with the redistribution, if any, must
   *    include the following acknowledgment: "This product includes software
   *    developed by the Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself, if
   *    and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "FOP" and "Apache Software Foundation" must not be used to
   *    endorse or promote products derived from this software without prior
   *    written permission. For written permission, please contact
   *    [EMAIL PROTECTED]
   * 
   * 5. Products derived from this software may not be called "Apache", nor may
   *    "Apache" appear in their name, without prior written permission of the
   *    Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
   * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   * ============================================================================
   * 
   * This software consists of voluntary contributions made by many individuals
   * on behalf of the Apache Software Foundation and was originally created by
   * James Tauber <[EMAIL PROTECTED]>. For more information on the Apache
   * Software Foundation, please see <http://www.apache.org/>.
   */ 
  package org.apache.fop.fonts;
  
  /**
   * FontTriplet contains information on name, weight, style of one font
   */
  public class FontTriplet {
      
      private String name, weight, style;
      
      /**
       * Creates a new font triplet.
       * @param name font name
       * @param weight font weight (normal, bold etc.)
       * @param style font style (normal, italic etc.)
       */
      public FontTriplet(String name, String weight, String style) {
          this.name = name;
          this.weight = weight;
          this.style = style;
      }
  
      /**
       * Returns the font name.
       * @return the font name
       */
      public String getName() {
          return name;
      }
  
      /**
       * Returns the font weight.
       * @return the font weight
       */
      public String getWeight() {
          return weight;
      }
  
      /**
       * Returns the font style.
       * @return the font style
       */
      public String getStyle() {
          return style;
      }
      
      /**
       * @see java.lang.Object#toString()
       */
      public String toString() {
          return getName() + "," + getStyle() + "," + getWeight();
      }
  }
  
  
  
  
  1.3       +25 -0     xml-fop/src/java/org/apache/fop/pdf/PDFResources.java
  
  Index: PDFResources.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/pdf/PDFResources.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PDFResources.java 27 Mar 2003 10:44:05 -0000      1.2
  +++ PDFResources.java 12 Dec 2003 22:37:39 -0000      1.3
  @@ -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;
  @@ -108,6 +112,27 @@
        */
       public void addFont(PDFFont font) {
           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));
  +        }
       }
   
       /**
  
  
  
  1.6       +1 -1      xml-fop/src/java/org/apache/fop/render/PrintRenderer.java
  
  Index: PrintRenderer.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/PrintRenderer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PrintRenderer.java        20 Aug 2003 18:09:45 -0000      1.5
  +++ PrintRenderer.java        12 Dec 2003 22:37:39 -0000      1.6
  @@ -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;
  
  
  
  1.2       +3 -3      xml-fop/src/java/org/apache/fop/render/mif/MIFHandler.java
  
  Index: MIFHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/mif/MIFHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MIFHandler.java   1 Nov 2003 23:08:51 -0000       1.1
  +++ MIFHandler.java   12 Dec 2003 22:37:39 -0000      1.2
  @@ -74,6 +74,7 @@
   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 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);
       }
   
       /**
  
  
  
  1.25      +3 -2      xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java
  
  Index: PDFRenderer.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- PDFRenderer.java  24 Nov 2003 19:07:35 -0000      1.24
  +++ PDFRenderer.java  12 Dec 2003 22:37:39 -0000      1.25
  @@ -94,6 +94,7 @@
   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 @@
        * @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.2       +3 -3      
xml-fop/src/java/org/apache/fop/render/ps/AbstractPSDocumentGraphics2D.java
  
  Index: AbstractPSDocumentGraphics2D.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/render/ps/AbstractPSDocumentGraphics2D.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractPSDocumentGraphics2D.java 7 Nov 2003 22:19:19 -0000       1.1
  +++ AbstractPSDocumentGraphics2D.java 12 Dec 2003 22:37:39 -0000      1.2
  @@ -61,7 +61,7 @@
   //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.9       +1 -1      
xml-fop/src/java/org/apache/fop/render/ps/PSDocumentGraphics2D.java
  
  Index: PSDocumentGraphics2D.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/render/ps/PSDocumentGraphics2D.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- PSDocumentGraphics2D.java 7 Nov 2003 22:19:19 -0000       1.8
  +++ PSDocumentGraphics2D.java 12 Dec 2003 22:37:39 -0000      1.9
  @@ -57,7 +57,7 @@
   
   //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
  
  
  
  1.19      +3 -3      xml-fop/src/java/org/apache/fop/render/ps/PSRenderer.java
  
  Index: PSRenderer.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/ps/PSRenderer.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- PSRenderer.java   7 Nov 2003 22:19:19 -0000       1.18
  +++ PSRenderer.java   12 Dec 2003 22:37:39 -0000      1.19
  @@ -72,6 +72,7 @@
   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 @@
        * @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;
       }
   
       /**
  
  
  
  1.8       +3 -3      xml-fop/src/java/org/apache/fop/render/rtf/RTFHandler.java
  
  Index: RTFHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/rtf/RTFHandler.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- RTFHandler.java   22 Nov 2003 17:40:14 -0000      1.7
  +++ RTFHandler.java   12 Dec 2003 22:37:39 -0000      1.8
  @@ -103,6 +103,7 @@
   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 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);
       }
   
  
  
  
  1.12      +2 -3      xml-fop/src/java/org/apache/fop/render/xml/XMLRenderer.java
  
  Index: XMLRenderer.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/xml/XMLRenderer.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- XMLRenderer.java  28 Oct 2003 04:22:14 -0000      1.11
  +++ XMLRenderer.java  12 Dec 2003 22:37:39 -0000      1.12
  @@ -92,6 +92,7 @@
   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 @@
        * @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() {
  
  
  
  1.7       +2 -2      xml-fop/src/java/org/apache/fop/svg/PDFDocumentGraphics2D.java
  
  Index: PDFDocumentGraphics2D.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/svg/PDFDocumentGraphics2D.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- PDFDocumentGraphics2D.java        20 Aug 2003 18:09:46 -0000      1.6
  +++ PDFDocumentGraphics2D.java        12 Dec 2003 22:37:39 -0000      1.7
  @@ -59,7 +59,7 @@
   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 @@
           }
           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);
  
  
  
  1.12      +8 -5      xml-fop/src/java/org/apache/fop/svg/PDFGraphics2D.java
  
  Index: PDFGraphics2D.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/svg/PDFGraphics2D.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- PDFGraphics2D.java        13 Sep 2003 14:23:40 -0000      1.11
  +++ PDFGraphics2D.java        12 Dec 2003 22:37:39 -0000      1.12
  @@ -66,7 +66,7 @@
   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 @@
       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 @@
           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,
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to