jeremias    2003/01/08 06:02:48

  Modified:    src/org/apache/fop/render/pdf EmbedFontInfo.java
                        FontReader.java FontSetup.java PDFRenderer.java
  Removed:     src/org/apache/fop/render/pdf CIDFont.java CMap.java
                        Font.java
               src/org/apache/fop/render/pdf/fonts BFEntry.java
                        LazyFont.java MultiByteFont.java
                        SingleByteFont.java package.html
  Log:
  Second part of font refactoring:
  Moved most of the non-PDF-specific classes to the fonts package.
  Makes dependencies clearer
  First step towards the centralized font registry
  
  Lots of Javadocs
  Fixed Checkstyle errors
  
  Revision  Changes    Path
  1.3       +30 -6     xml-fop/src/org/apache/fop/render/pdf/EmbedFontInfo.java
  
  Index: EmbedFontInfo.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/EmbedFontInfo.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- EmbedFontInfo.java        1 Nov 2002 10:49:35 -0000       1.2
  +++ EmbedFontInfo.java        8 Jan 2003 14:02:47 -0000       1.3
  @@ -1,43 +1,67 @@
   /*
    * $Id$
  - * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
  + * Copyright (C) 2001-2003 The Apache Software Foundation. All rights reserved.
    * For details on use and redistribution please refer to the
    * LICENSE file included with these sources.
    */
   
   package org.apache.fop.render.pdf;
   
  -import java.util.ArrayList;
  +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 ArrayList fontTriplets;
  +    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,
  -                    ArrayList fontTriplets, String embedFile) {
  +                    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;
       }
   
  -    public ArrayList getFontTriplets() {
  +    /**
  +     * Returns the list of font triplets associated with this font.
  +     * @return List of font triplets
  +     */
  +    public List getFontTriplets() {
           return fontTriplets;
       }
   
  
  
  
  1.7       +97 -137   xml-fop/src/org/apache/fop/render/pdf/FontReader.java
  
  Index: FontReader.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/FontReader.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FontReader.java   4 Sep 2002 08:36:36 -0000       1.6
  +++ FontReader.java   8 Jan 2003 14:02:47 -0000       1.7
  @@ -1,25 +1,33 @@
   /*
    * $Id$
  - * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
  + * Copyright (C) 2001-2003 The Apache Software Foundation. All rights reserved.
    * For details on use and redistribution please refer to the
    * LICENSE file included with these sources.
    */
   
   package org.apache.fop.render.pdf;
  -import org.apache.fop.render.pdf.fonts.*;
  -import org.xml.sax.helpers.DefaultHandler;
  +
  +//Java
  +import java.util.List;
  +import java.util.Map;
  +import java.io.IOException;
  +
  +//SAX
   import org.xml.sax.XMLReader;
   import org.xml.sax.SAXException;
  -import org.xml.sax.InputSource;
   import org.xml.sax.Locator;
   import org.xml.sax.Attributes;
  -import java.io.IOException;
  -import java.util.Enumeration;
  -import java.util.ArrayList;
  -import java.util.HashMap;
  -import org.apache.fop.pdf.PDFWArray;
  -import org.apache.fop.pdf.PDFCIDFont;
  +import org.xml.sax.helpers.DefaultHandler;
  +
  +//FOP
   import org.apache.fop.apps.FOPException;
  +import org.apache.fop.fonts.BFEntry;
  +import org.apache.fop.fonts.CIDFontType;
  +import org.apache.fop.fonts.CustomFont;
  +import org.apache.fop.fonts.Font;
  +import org.apache.fop.fonts.FontType;
  +import org.apache.fop.fonts.MultiByteFont;
  +import org.apache.fop.fonts.SingleByteFont;
   
   /**
    * Class for reading a metric.xml file and creating a font object.
  @@ -32,19 +40,20 @@
    * </pre>
    */
   public class FontReader extends DefaultHandler {
  +    
       private Locator locator = null;
       private boolean isCID = false;
  +    private CustomFont returnFont = null;
       private MultiByteFont multiFont = null;
       private SingleByteFont singleFont = null;
  -    private Font returnFont = null;
  -    private String text = null;
  +    private StringBuffer text = new StringBuffer();
   
  -    private ArrayList cidWidths = null;
  +    private List cidWidths = null;
       private int cidWidthIndex = 0;
   
  -    private HashMap currentKerning = null;
  +    private Map currentKerning = null;
   
  -    private ArrayList bfranges = null;
  +    private List bfranges = null;
   
       private void createFont(String path) throws FOPException {
           XMLReader parser = null;
  @@ -54,8 +63,9 @@
           } catch (Exception e) {
               throw new FOPException(e);
           }
  -        if (parser == null)
  +        if (parser == null) {
               throw new FOPException("Unable to create SAX parser");
  +        }
   
           try {
               parser.setFeature("http://xml.org/sax/features/namespace-prefixes";,
  @@ -78,23 +88,17 @@
       }
   
       /**
  -     * Sets the path to embed a font. a null value disables font embedding
  +     * Sets the path to embed a font. A null value disables font embedding.
        */
       public void setFontEmbedPath(String path) {
  -        if (isCID)
  -            multiFont.embedFileName = path;
  -        else
  -            singleFont.embedFileName = path;
  +        returnFont.setEmbedFileName(path);
       }
   
       /**
        * Enable/disable use of kerning for the font
        */
  -    public void useKerning(boolean kern) {
  -        if (isCID)
  -            multiFont.useKerning = true;
  -        else
  -            singleFont.useKerning = true;
  +    public void setKerningEnabled(boolean enabled) {
  +        returnFont.setKerningEnabled(enabled);
       }
   
   
  @@ -128,52 +132,40 @@
                   isCID = true;
               } else if ("TRUETYPE".equals(attributes.getValue("type"))) {
                   singleFont = new SingleByteFont();
  -                singleFont.subType = org.apache.fop.pdf.PDFFont.TRUETYPE;
  +                singleFont.setFontType(FontType.TRUETYPE);
                   returnFont = singleFont;
                   isCID = false;
               } else {
                   singleFont = new SingleByteFont();
  -                singleFont.subType = org.apache.fop.pdf.PDFFont.TYPE1;
  +                singleFont.setFontType(FontType.TYPE1);
                   returnFont = singleFont;
                   isCID = false;
               }
           } else if ("embed".equals(localName)) {
  -            if (isCID) {
  -                // This *is* annoying... should create a common
  -                // interface for sing/multibytefonts...
  -                multiFont.embedFileName = attributes.getValue("file");
  -                multiFont.embedResourceName = attributes.getValue("class");
  -            } else {
  -                singleFont.embedFileName = attributes.getValue("file");
  -                singleFont.embedResourceName = attributes.getValue("class");
  -            }
  +            returnFont.setEmbedFileName(attributes.getValue("file"));
  +            returnFont.setEmbedResourceName(attributes.getValue("class"));
           } else if ("cid-widths".equals(localName)) {
               cidWidthIndex = getInt(attributes.getValue("start-index"));
  -            cidWidths = new ArrayList();
  +            cidWidths = new java.util.ArrayList();
           } else if ("kerning".equals(localName)) {
  -            currentKerning = new HashMap();
  -            if (isCID)
  -                multiFont.kerning.put(new Integer(attributes.getValue("kpx1")),
  -                                      currentKerning);
  -            else
  -                singleFont.kerning.put(new Integer(attributes.getValue("kpx1")),
  -                                       currentKerning);
  +            currentKerning = new java.util.HashMap();
  +            returnFont.putKerningEntry(new Integer(attributes.getValue("kpx1")),
  +                                        currentKerning);
           } else if ("bfranges".equals(localName)) {
  -            bfranges = new ArrayList();
  +            bfranges = new java.util.ArrayList();
           } else if ("bf".equals(localName)) {
  -            BFEntry entry = new BFEntry();
  -            entry.unicodeStart = getInt(attributes.getValue("us"));
  -            entry.unicodeEnd = getInt(attributes.getValue("ue"));
  -            entry.glyphStartIndex = getInt(attributes.getValue("gi"));
  +            BFEntry entry = new BFEntry(getInt(attributes.getValue("us")),
  +                                        getInt(attributes.getValue("ue")),
  +                                        getInt(attributes.getValue("gi")));
               bfranges.add(entry);
           } else if ("wx".equals(localName)) {
               cidWidths.add(new Integer(attributes.getValue("w")));
           } else if ("widths".equals(localName)) {
  -            singleFont.width = new int[256];
  +            //singleFont.width = new int[256];
           } else if ("char".equals(localName)) {
               try {
  -                singleFont.width[Integer.parseInt(attributes.getValue("idx"))] =
  -                    Integer.parseInt(attributes.getValue("wdt"));
  +                singleFont.setWidth( Integer.parseInt(attributes.getValue("idx")), 
  +                        Integer.parseInt(attributes.getValue("wdt")));
               } catch (NumberFormatException ne) {
                   System.out.println("Malformed width in metric file: "
                                      + ne.getMessage());
  @@ -188,87 +180,57 @@
           int ret = 0;
           try {
               ret = Integer.parseInt(str);
  -        } catch (Exception e) {}
  +        } catch (Exception e) {
  +            /**@todo log this exception */
  +        }
           return ret;
       }
   
       public void endElement(String uri, String localName, String qName) {
  -        if ("font-name".equals(localName))
  -            if (isCID)
  -                multiFont.fontName = text;
  -            else
  -                singleFont.fontName = text;
  -        if ("ttc-name".equals(localName) && isCID)
  -            multiFont.ttcName = text;
  -        else if ("cap-height".equals(localName))
  -            if (isCID)
  -                multiFont.capHeight = getInt(text);
  -            else
  -                singleFont.capHeight = getInt(text);
  -        else if ("x-height".equals(localName))
  -            if (isCID)
  -                multiFont.xHeight = getInt(text);
  -            else
  -                singleFont.xHeight = getInt(text);
  -        else if ("ascender".equals(localName))
  -            if (isCID)
  -                multiFont.ascender = getInt(text);
  -            else
  -                singleFont.ascender = getInt(text);
  -        else if ("descender".equals(localName))
  -            if (isCID)
  -                multiFont.descender = getInt(text);
  -            else
  -                singleFont.descender = getInt(text);
  -        else if ("left".equals(localName))
  -            if (isCID)
  -                multiFont.fontBBox[0] = getInt(text);
  -            else
  -                singleFont.fontBBox[0] = getInt(text);
  -        else if ("bottom".equals(localName))
  -            if (isCID)
  -                multiFont.fontBBox[1] = getInt(text);
  -            else
  -                singleFont.fontBBox[1] = getInt(text);
  -        else if ("right".equals(localName))
  -            if (isCID)
  -                multiFont.fontBBox[2] = getInt(text);
  -            else
  -                singleFont.fontBBox[2] = getInt(text);
  -        else if ("first-char".equals(localName))
  -            singleFont.firstChar = getInt(text);
  -        else if ("last-char".equals(localName))
  -            singleFont.lastChar = getInt(text);
  -        else if ("top".equals(localName))
  -            if (isCID)
  -                multiFont.fontBBox[3] = getInt(text);
  -            else
  -                singleFont.fontBBox[3] = getInt(text);
  -        else if ("flags".equals(localName))
  -            if (isCID)
  -                multiFont.flags = getInt(text);
  -            else
  -                singleFont.flags = getInt(text);
  -        else if ("stemv".equals(localName))
  -            if (isCID)
  -                multiFont.stemV = getInt(text);
  -            else
  -                singleFont.stemV = getInt(text);
  -        else if ("italic-angle".equals(localName))
  -            if (isCID)
  -                multiFont.italicAngle = getInt(text);
  -            else
  -                singleFont.italicAngle = getInt(text);
  -        else if ("missing-width".equals(localName))
  -            if (isCID)
  -                multiFont.missingWidth = getInt(text);
  -            else
  -                singleFont.missingWidth = getInt(text);
  -        else if ("cid-type".equals(localName)) {
  -            if ("CIDFontType2".equals(text))
  -                multiFont.cidType = PDFCIDFont.CID_TYPE2;
  +        if ("font-name".equals(localName)) {
  +            returnFont.setFontName(text.toString());
  +        } else if ("ttc-name".equals(localName) && isCID) {
  +            multiFont.setTTCName(text.toString());
  +        } else if ("cap-height".equals(localName)) {
  +            returnFont.setCapHeight(getInt(text.toString()));
  +        } else if ("x-height".equals(localName)) {
  +            returnFont.setXHeight(getInt(text.toString()));
  +        } else if ("ascender".equals(localName)) {
  +            returnFont.setAscender(getInt(text.toString()));
  +        } else if ("descender".equals(localName)) {
  +            returnFont.setDescender(getInt(text.toString()));
  +        } else if ("left".equals(localName)) {
  +            int[] bbox = returnFont.getFontBBox();
  +            bbox[0] = getInt(text.toString());
  +            returnFont.setFontBBox(bbox);
  +        } else if ("bottom".equals(localName)) {
  +            int[] bbox = returnFont.getFontBBox();
  +            bbox[1] = getInt(text.toString());
  +            returnFont.setFontBBox(bbox);
  +        } else if ("right".equals(localName)) {
  +            int[] bbox = returnFont.getFontBBox();
  +            bbox[2] = getInt(text.toString());
  +            returnFont.setFontBBox(bbox);
  +        } else if ("top".equals(localName)) {
  +            int[] bbox = returnFont.getFontBBox();
  +            bbox[3] = getInt(text.toString());
  +            returnFont.setFontBBox(bbox);
  +        } else if ("first-char".equals(localName)) {
  +            returnFont.setFirstChar(getInt(text.toString()));
  +        } else if ("last-char".equals(localName)) {
  +            returnFont.setLastChar(getInt(text.toString()));
  +        } else if ("flags".equals(localName)) {
  +            returnFont.setFlags(getInt(text.toString()));
  +        } else if ("stemv".equals(localName)) {
  +            returnFont.setStemV(getInt(text.toString()));
  +        } else if ("italic-angle".equals(localName)) {
  +            returnFont.setItalicAngle(getInt(text.toString()));
  +        } else if ("missing-width".equals(localName)) {
  +            returnFont.setMissingWidth(getInt(text.toString()));
  +        } else if ("cid-type".equals(localName)) {
  +            multiFont.setCIDType(CIDFontType.byName(text.toString()));
           } else if ("default-width".equals(localName)) {
  -            multiFont.defaultWidth = getInt(text);
  +            multiFont.setDefaultWidth(getInt(text.toString()));
           } else if ("cid-widths".equals(localName)) {
               int[] wds = new int[cidWidths.size()];
               int j = 0;
  @@ -277,19 +239,17 @@
                   wds[j++] = i.intValue();
               }
   
  -            multiFont.warray.addEntry(cidWidthIndex, wds);
  -            multiFont.width = wds;
  +            multiFont.addCIDWidthEntry(cidWidthIndex, wds);
  +            multiFont.setWidthArray(wds);
   
           } else if ("bfranges".equals(localName)) {
  -            multiFont.bfentries = (BFEntry[])bfranges.toArray(new BFEntry[0]);
  +            multiFont.setBFEntries((BFEntry[])bfranges.toArray(new BFEntry[0]));
           }
  -
  +        text.setLength(0); //Reset text buffer (see characters())
       }
   
       public void characters(char[] ch, int start, int length) {
  -        char c[] = new char[length];
  -        System.arraycopy(ch, start, c, 0, length);
  -        text = new String(c);
  +        text.append(ch, start, length);
       }
   
   }
  
  
  
  1.21      +75 -54    xml-fop/src/org/apache/fop/render/pdf/FontSetup.java
  
  Index: FontSetup.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/FontSetup.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- FontSetup.java    29 Nov 2002 23:18:57 -0000      1.20
  +++ FontSetup.java    8 Jan 2003 14:02:47 -0000       1.21
  @@ -1,6 +1,6 @@
   /*
    * $Id$
  - * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
  + * Copyright (C) 2001-2003 The Apache Software Foundation. All rights reserved.
    * For details on use and redistribution please refer to the
    * LICENSE file included with these sources.
    */
  @@ -8,16 +8,32 @@
   package org.apache.fop.render.pdf;
   
   // FOP
  -import org.apache.fop.render.pdf.fonts.*;
  +import org.apache.fop.fonts.Font;
  +import org.apache.fop.fonts.FontDescriptor;
  +import org.apache.fop.fonts.LazyFont;
   import org.apache.fop.layout.FontInfo;
  -import org.apache.fop.layout.FontDescriptor;
   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;
  +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;
   
   // Java
  -import java.util.HashMap;
  +import java.util.Map;
   import java.util.Iterator;
  -import java.util.ArrayList;
  +import java.util.List;
   
   /**
    * sets up the PDF fonts.
  @@ -28,14 +44,15 @@
   public class FontSetup {
   
       /**
  -     * sets up the font info object.
  +     * Sets up the font info object.
        *
  -     * adds metrics for basic fonts and useful family-style-weight
  -     * triplets for lookup
  +     * 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(FontInfo fontInfo, ArrayList embedList) {
  +    public static void setup(FontInfo fontInfo, List embedList) {
   
           fontInfo.addMetrics("F1", new Helvetica());
           fontInfo.addMetrics("F2", new HelveticaOblique());
  @@ -133,63 +150,67 @@
       /**
        * 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(FontInfo fontInfo, ArrayList fontInfos, 
int num) {
  -        if (fontInfos == null)
  -            return;
  +    public static void addConfiguredFonts(FontInfo fontInfo, List fontInfos, int 
num) {
  +        if (fontInfos == null) {
  +            return; //No fonts to process
  +        }
   
           String internalName = null;
  -        FontReader reader = null;
  +        //FontReader reader = null;
   
  -        for (int count = 0; count < fontInfos.size(); count++) {
  -            EmbedFontInfo configFontInfo =
  -                (EmbedFontInfo)fontInfos.get(count);
  -
  -                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);
  -
  -                    ArrayList triplets = configFontInfo.getFontTriplets();
  -                    for (int c = 0; c < triplets.size(); c++) {
  -                        FontTriplet triplet = (FontTriplet)triplets.get(c);
  -
  -                        int weight = 400;
  -                        try {
  -                            weight = Integer.parseInt(triplet.getWeight());
  -                            weight = ((int)weight/100) * 100;
  -                            if(weight < 100) weight = 100;
  -                            if(weight > 900) weight = 900;
  -                        } catch(NumberFormatException nfe) {
  -
  -                        }
  -                        fontInfo.addFontProperties(internalName,
  -                                                   triplet.getName(),
  -                                                   triplet.getStyle(),
  -                                                   weight);
  +        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 = 400;
  +                    try {
  +                        weight = Integer.parseInt(triplet.getWeight());
  +                        weight = ((int)weight / 100) * 100;
  +                        weight = Math.min(weight, 100);
  +                        weight = Math.max(weight, 900);
  +                    } catch (NumberFormatException nfe) {
  +                        /**@todo log this exception */
                       }
  +                    fontInfo.addFontProperties(internalName,
  +                                               triplet.getName(),
  +                                               triplet.getStyle(),
  +                                               weight);
                   }
  +            }
           }
       }
   
       /**
  -     * add the fonts in the font info to the PDF document
  +     * 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, 
FontInfo fontInfo) {
  -        HashMap fonts = fontInfo.getUsedFonts();
  +        Map fonts = fontInfo.getUsedFonts();
           Iterator e = fonts.keySet().iterator();
           while (e.hasNext()) {
               String f = (String)e.next();
  @@ -198,8 +219,8 @@
               if (font instanceof FontDescriptor) {
                   desc = (FontDescriptor)font;
               }
  -            resources.addFont(doc.makeFont(f, font.fontName(),
  -                                           font.encoding(), font, desc));
  +            resources.addFont(doc.makeFont(f, font.getFontName(),
  +                                           font.getEncoding(), font, desc));
           }
       }
   }
  
  
  
  1.134     +17 -19    xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java
  
  Index: PDFRenderer.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v
  retrieving revision 1.133
  retrieving revision 1.134
  diff -u -r1.133 -r1.134
  --- PDFRenderer.java  18 Dec 2002 14:50:35 -0000      1.133
  +++ PDFRenderer.java  8 Jan 2003 14:02:47 -0000       1.134
  @@ -1,6 +1,6 @@
   /*
    * $Id$
  - * Copyright (C) 2001-2002 The Apache Software Foundation. All rights reserved.
  + * Copyright (C) 2001-2003 The Apache Software Foundation. All rights reserved.
    * For details on use and redistribution please refer to the
    * LICENSE file included with these sources.
    */
  @@ -18,6 +18,8 @@
   import org.apache.fop.apps.Version;
   import org.apache.fop.fo.properties.RuleStyle;
   import org.apache.fop.fo.properties.BackgroundRepeat;
  +import org.apache.fop.fonts.*;
  +import org.apache.fop.fonts.FontMetrics;
   import org.apache.fop.pdf.PDFStream;
   import org.apache.fop.pdf.PDFDocument;
   import org.apache.fop.pdf.PDFInfo;
  @@ -51,11 +53,9 @@
   import org.apache.fop.area.inline.Leader;
   import org.apache.fop.area.inline.InlineParent;
   import org.apache.fop.layout.FontState;
  -import org.apache.fop.layout.FontMetric;
   import org.apache.fop.traits.BorderProps;
   import org.apache.fop.datatypes.ColorType;
   
  -import org.apache.avalon.framework.configuration.Configurable;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
   
  @@ -67,9 +67,8 @@
   import java.awt.Color;
   import java.awt.geom.Rectangle2D;
   import java.awt.geom.AffineTransform;
  -import java.util.HashMap;
  +import java.util.Map;
   import java.util.List;
  -import java.util.ArrayList;
   
   /*
   todo:
  @@ -103,15 +102,15 @@
        * this is used for prepared pages that cannot be immediately
        * rendered
        */
  -    protected HashMap pages = null;
  +    protected Map pages = null;
   
       /**
        * Page references are stored using the PageViewport as the key
        * when a reference is made the PageViewport is used
        * for pdf this means we need the pdf page reference
        */
  -    protected HashMap pageReferences = new HashMap();
  -    protected HashMap pvReferences = new HashMap();
  +    protected Map pageReferences = new java.util.HashMap();
  +    protected Map pvReferences = new java.util.HashMap();
   
       private String producer = "FOP";
   
  @@ -149,7 +148,7 @@
       protected int currentFontSize = 0;
       protected int pageHeight;
   
  -    protected HashMap filterMap = new HashMap();
  +    protected Map filterMap = new java.util.HashMap();
   
       /**
        * true if a TJ command is left to be written
  @@ -192,7 +191,7 @@
       public void configure(Configuration conf) throws ConfigurationException {
           Configuration filters = conf.getChild("filterList");
           Configuration[] filt = filters.getChildren("value");
  -        ArrayList filterList = new ArrayList();
  +        List filterList = new java.util.ArrayList();
           for (int i = 0; i < filt.length; i++) {
               String name = filt[i].getValue();
               filterList.add(name);
  @@ -203,7 +202,7 @@
           Configuration[] font = conf.getChildren("font");
           for (int i = 0; i < font.length; i++) {
               Configuration[] triple = font[i].getChildren("font-triplet");
  -            ArrayList tripleList = new ArrayList();
  +            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("style"),
  @@ -216,7 +215,7 @@
                                       tripleList, font[i].getAttribute("embed-url"));
   
               if(fontList == null) {
  -                fontList = new ArrayList();
  +                fontList = new java.util.ArrayList();
               }
               fontList.add(efi);
           }
  @@ -354,7 +353,7 @@
           currentPage = this.pdfDoc.makePage(this.pdfResources,
                                              (int) Math.round(w / 1000), (int) 
Math.round(h / 1000));
           if (pages == null) {
  -            pages = new HashMap();
  +            pages = new java.util.HashMap();
           }
           pages.put(page, currentPage);
           pageReferences.put(page.getKey(), currentPage.referencePDF());
  @@ -840,7 +839,7 @@
   
           String s = word.getWord();
   
  -        FontMetric metrics = fontInfo.getMetricsFor(name);
  +        FontMetrics metrics = fontInfo.getMetricsFor(name);
           FontState fs = new FontState(name, metrics, size);
           escapeText(s, fs, useMultiByte, pdf);
           pdf.append(endText);
  @@ -856,8 +855,7 @@
           String endText = useMultiByte ? "> " : ") ";
   
           boolean kerningAvailable = false;
  -        HashMap kerning = null;
  -        kerning = fs.getKerning();
  +        Map kerning = fs.getKerning();
           if (kerning != null && !kerning.isEmpty()) {
               kerningAvailable = true;
           }
  @@ -922,8 +920,8 @@
       }
   
       private void addKerning(StringBuffer buf, Integer ch1, Integer ch2,
  -                            HashMap kerning, String startText, String endText) {
  -        HashMap kernPair = (HashMap) kerning.get(ch1);
  +                            Map kerning, String startText, String endText) {
  +        Map kernPair = (Map) kerning.get(ch1);
   
           if (kernPair != null) {
               Integer width = (Integer) kernPair.get(ch2);
  
  
  

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

Reply via email to