]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Adjustments for the font refactoring
authorJeremias Maerki <jeremias@apache.org>
Wed, 8 Jan 2003 13:56:37 +0000 (13:56 +0000)
committerJeremias Maerki <jeremias@apache.org>
Wed, 8 Jan 2003 13:56:37 +0000 (13:56 +0000)
Removal/commenting out of some dead code
Lots of Javadocs
Fixed Checkstyle errors

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@195821 13f79535-47bb-0310-9956-ffa450edef68

src/org/apache/fop/layout/FontDescriptor.java [deleted file]
src/org/apache/fop/layout/FontInfo.java
src/org/apache/fop/layout/FontMetric.java [deleted file]
src/org/apache/fop/layout/FontState.java

diff --git a/src/org/apache/fop/layout/FontDescriptor.java b/src/org/apache/fop/layout/FontDescriptor.java
deleted file mode 100644 (file)
index 5e05703..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * $Id$
- * Copyright (C) 2001 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.layout;
-
-import java.util.HashMap;
-
-public interface FontDescriptor {
-
-    // Required
-    public int getAscender();     // Ascent in pdf spec
-    public int getCapHeight();
-    public int getDescender();    // Descent in pdf spec
-    public int getFlags();
-    public int[] getFontBBox();
-    public String fontName();     // should be getFontName(). not?
-    public int getItalicAngle();
-    public int getStemV();
-
-    public boolean hasKerningInfo();
-    public HashMap getKerningInfo();
-    public boolean isEmbeddable();
-    public byte getSubType();
-    public org.apache.fop.pdf.PDFStream getFontFile(int objNum);
-    // Optional - but needed to calculate font-size-adjust...
-    // public int getXHeight();
-
-}
-
-
index 93971d6fc0669de614f57b95a05cd150695dea91..92872d4a999d0d405e3a9db387fc4c930b3cf4cb 100644 (file)
@@ -1,41 +1,70 @@
 /*
  * $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.layout;
 
-import java.util.HashMap;
+// Java
+import java.util.Map;
+
+// FOP
+import org.apache.fop.fonts.FontMetrics;
 
 /**
- * The fontinfo for the layout and rendering of a fo document.
+ * The FontInfo for the layout and rendering of a fo document.
  * This stores the list of available fonts that are setup by
  * the renderer. The font name can be retrieved for the
  * family style and weight.
+ * <br>
  * Currently font supported font-variant small-caps is not
  * implemented.
  */
 public class FontInfo {
+    
+    /** Default fallback key */
     public static final String DEFAULT_FONT = "any,normal,400";
+    /** Normal font weight */
     public static final int NORMAL = 400;
+    /** Bold font weight */
     public static final int BOLD = 700;
 
-    private HashMap usedFonts;
-    private HashMap triplets;    // look up a font-triplet to find a font-name
-    private HashMap fonts;    // look up a font-name to get a font (that implements FontMetric at least)
+    /** Map containing fonts that have been used */
+    private Map usedFonts;
+    
+    /** look up a font-triplet to find a font-name */
+    private Map triplets;
+    
+    /** look up a font-name to get a font (that implements FontMetrics at least) */
+    private Map fonts;
 
+    /**
+     * Main constructor
+     */
     public FontInfo() {
-        this.triplets = new HashMap();
-        this.fonts = new HashMap();
-        this.usedFonts = new HashMap();
+        this.triplets = new java.util.HashMap();
+        this.fonts = new java.util.HashMap();
+        this.usedFonts = new java.util.HashMap();
     }
 
+    /**
+     * Checks if the font setup is valid (At least the ultimate fallback font 
+     * must be registered.)
+     * @return True if valid
+     */
     public boolean isSetupValid() {
         return triplets.containsKey(DEFAULT_FONT);
     }
 
+    /**
+     * Adds a new font triplet.
+     * @param name internal key
+     * @param family font family name
+     * @param style font style (normal, italic, oblique...)
+     * @param weight font weight
+     */
     public void addFontProperties(String name, String family, String style,
                                   int weight) {
         /*
@@ -47,7 +76,12 @@ public class FontInfo {
         this.triplets.put(key, name);
     }
 
-    public void addMetrics(String name, FontMetric metrics) {
+    /**
+     * Adds font metrics for a specific font.
+     * @param name internal key
+     * @param metrics metrics to register
+     */
+    public void addMetrics(String name, FontMetrics metrics) {
         // add the given metrics as a font with the given name
 
         this.fonts.put(name, metrics);
@@ -55,10 +89,15 @@ public class FontInfo {
 
     /**
      * Lookup a font.
-     * Locate the font name for a given familyi, style and weight.
+     * <br>
+     * Locate the font name for a given family, style and weight.
      * The font name can then be used as a key as it is unique for
      * the associated document.
      * This also adds the font to the list of used fonts.
+     * @param family font family
+     * @param style font style
+     * @param weight font weight
+     * @return internal key
      */
     public String fontLookup(String family, String style,
                              int weight) {
@@ -66,18 +105,18 @@ public class FontInfo {
         // first try given parameters
         key = createFontKey(family, style, weight);
         String f = (String)triplets.get(key);
-        if(f == null) {
+        if (f == null) {
             // then adjust weight, favouring normal or bold
             f = findAdjustWeight(family, style, weight);
 
             // then try any family with orig weight
-            if(f == null) {
+            if (f == null) {
                 key = createFontKey("any", style, weight);
                 f = (String)triplets.get(key);
             }
 
             // then try any family with adjusted weight
-            if(f == null) {
+            if (f == null) {
                 f = findAdjustWeight(family, style, weight);
             }
 
@@ -93,35 +132,39 @@ public class FontInfo {
     /**
      * Find a font with a given family and style by trying
      * different font weights according to the spec.
+     * @param family font family
+     * @param style font style
+     * @param weight font weight
+     * @return internal key
      */
     public String findAdjustWeight(String family, String style,
                              int weight) {
         String key;
         String f = null;
         int newWeight = weight;
-        if(newWeight < 400) {
-            while(f == null && newWeight > 0) {
+        if (newWeight < 400) {
+            while (f == null && newWeight > 0) {
                 newWeight -= 100;
                 key = createFontKey(family, style, newWeight);
                 f = (String)triplets.get(key);
             }
-        } else if(newWeight == 500) {
+        } else if (newWeight == 500) {
             key = createFontKey(family, style, 400);
             f = (String)triplets.get(key);
-        } else if(newWeight > 500) {
-            while(f == null && newWeight < 1000) {
+        } else if (newWeight > 500) {
+            while (f == null && newWeight < 1000) {
                 newWeight += 100;
                 key = createFontKey(family, style, newWeight);
                 f = (String)triplets.get(key);
             }
             newWeight = weight;
-            while(f == null && newWeight > 400) {
+            while (f == null && newWeight > 400) {
                 newWeight -= 100;
                 key = createFontKey(family, style, newWeight);
                 f = (String)triplets.get(key);
             }
         }
-        if(f == null) {
+        if (f == null) {
             key = createFontKey(family, style, 400);
             f = (String)triplets.get(key);
         }
@@ -129,35 +172,56 @@ public class FontInfo {
         return f;
     }
 
+    /**
+     * Determines if a particular font is available.
+     * @param family font family
+     * @param style font style
+     * @param weight font weight
+     * @return True if available
+     */
     public boolean hasFont(String family, String style, int weight) {
         String key = createFontKey(family, style, weight);
         return this.triplets.containsKey(key);
     }
 
     /**
-     * Creates a key from the given strings
+     * Creates a key from the given strings.
+     * @param family font family
+     * @param style font style
+     * @param weight font weight
+     * @return internal key
      */
     public static String createFontKey(String family, String style,
                                        int weight) {
         return family + "," + style + "," + weight;
     }
 
-    public HashMap getFonts() {
-        return this.fonts;
+    /**
+     * Gets a Map of all registred fonts.
+     * @return a read-only Map with font key/FontMetrics pairs
+     */
+    public Map getFonts() {
+        return java.util.Collections.unmodifiableMap(this.fonts);
     }
 
     /**
      * This is used by the renderers to retrieve all the
      * fonts used in the document.
      * This is for embedded font or creating a list of used fonts.
+     * @return a read-only Map with font key/FontMetrics pairs
      */
-    public HashMap getUsedFonts() {
+    public Map getUsedFonts() {
         return this.usedFonts;
     }
 
-    public FontMetric getMetricsFor(String fontName) {
+    /**
+     * Returns the FontMetrics for a particular font
+     * @param fontName internal key
+     * @return font metrics
+     */
+    public FontMetrics getMetricsFor(String fontName) {
         usedFonts.put(fontName, fonts.get(fontName));
-        return (FontMetric)fonts.get(fontName);
+        return (FontMetrics)fonts.get(fontName);
     }
 }
 
diff --git a/src/org/apache/fop/layout/FontMetric.java b/src/org/apache/fop/layout/FontMetric.java
deleted file mode 100644 (file)
index 99c15b7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * $Id$
- * Copyright (C) 2001 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.layout;
-
-/**
- * interface for font metric classes
- */
-public interface FontMetric {
-
-    public int getAscender(int size);
-    public int getCapHeight(int size);
-    public int getDescender(int size);
-    public int getXHeight(int size);
-
-    public int getFirstChar();
-    public int getLastChar();
-
-    /**
-     * return width (in 1/1000ths of point size) of character at
-     * code point i
-     */
-    public int width(int i, int size);
-
-    /**
-     * Return the array of widths.
-     * This is used to get an array for inserting in an output format.
-     * It should not be used for lookup.
-     */
-    public int[] getWidths(int size);
-}
index 6349e049a5013df83f0fa2e4b233956c89592259..37e7b1dd0a8d0d1f9602702163919b85f3485bcc 100644 (file)
 /*
  * $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.layout;
 
-import java.util.HashMap;
-import org.apache.fop.render.pdf.CodePointMapping;
+import java.util.Map;
 
+import org.apache.fop.fonts.CodePointMapping;
+import org.apache.fop.fonts.FontMetrics;
+
+/**
+ * This class holds font state information and provides access to the font 
+ * metrics.
+ */
 public class FontState {
 
-    private String _fontName;
-    private int _fontSize;
-    private String _fontFamily;
-    private String _fontStyle;
-    private int _fontWeight;
+    private String fontName;
+    private int fontSize;
+    //private String fontFamily;
+    //private String fontStyle;
+    //private int fontWeight;
 
     /**
      * normal or small-caps font
      */
-    private int _fontVariant;
-
-    private FontMetric _metric;
-
-    private static HashMap EMPTY_HASHMAP = new HashMap();
+    //private int fontVariant;
 
+    private FontMetrics metric;
 
-    public FontState(String key, FontMetric met, int fontSize) {
-        _fontSize = fontSize;
-        _fontName = key;
-        _metric = met;
+    /**
+     * Main constructor
+     * @param key key of the font
+     * @param met font metrics
+     * @param fontSize font size
+     */
+    public FontState(String key, FontMetrics met, int fontSize) {
+        this.fontName = key;
+        this.metric = met;
+        this.fontSize = fontSize;
     }
 
+    /**
+     * Returns the font's ascender.
+     * @return the ascender
+     */
     public int getAscender() {
-        return _metric.getAscender(_fontSize) / 1000;
+        return metric.getAscender(fontSize) / 1000;
     }
 
+    /**
+     * Returns the font's CapHeight.
+     * @return the capital height
+     */
     public int getCapHeight() {
-        return _metric.getCapHeight(_fontSize) / 1000;
+        return metric.getCapHeight(fontSize) / 1000;
     }
 
+    /**
+     * Returns the font's Descender.
+     * @return the descender
+     */
     public int getDescender() {
-        return _metric.getDescender(_fontSize) / 1000;
+        return metric.getDescender(fontSize) / 1000;
     }
 
+    /**
+     * Returns the font's name.
+     * @return the font name
+     */
     public String getFontName() {
-        return _fontName;
+        return fontName;
     }
 
+    /**
+     * Returns the font size
+     * @return the font size
+     */
     public int getFontSize() {
-        return _fontSize;
+        return fontSize;
     }
 
+    /**
+     * Returns the XHeight
+     * @return the XHeight
+     */
     public int getXHeight() {
-        return _metric.getXHeight(_fontSize) / 1000;
+        return metric.getXHeight(fontSize) / 1000;
     }
 
-    public HashMap getKerning() {
-        if (_metric instanceof FontDescriptor) {
-            HashMap ret = ((FontDescriptor)_metric).getKerningInfo();
-            if (ret != null)
-                return ret;
+    /**
+     * Returns the font's kerning table
+     * @return the kerning table
+     */
+    public Map getKerning() {
+        Map ret = metric.getKerningInfo();
+        if (ret != null) {
+            return ret;
+        } else {
+            return java.util.Collections.EMPTY_MAP;
         }
-        return EMPTY_HASHMAP;
     }
 
-    public int width(int charnum) {
+    /**
+     * Returns the width of a character
+     * @param charnum character to look up
+     * @return width of the character
+     */
+    public int getWidth(int charnum) {
         // returns width of given character number in millipoints
-        return (_metric.width(charnum, _fontSize) / 1000);
+        return (metric.getWidth(charnum, fontSize) / 1000);
     }
 
     /**
-     * Map a java character (unicode) to a font character
-     * Default uses CodePointMapping
+     * Map a java character (unicode) to a font character.
+     * Default uses CodePointMapping.
+     * @param c character to map
+     * @return the mapped character
      */
     public char mapChar(char c) {
 
-        if (_metric instanceof org.apache.fop.render.pdf.Font) {
-            return ((org.apache.fop.render.pdf.Font)_metric).mapChar(c);
+        if (metric instanceof org.apache.fop.fonts.Font) {
+            return ((org.apache.fop.fonts.Font)metric).mapChar(c);
         }
 
         // Use default CodePointMapping
@@ -93,18 +137,23 @@ public class FontState {
         return c;
     }
 
+    /**
+     * @see java.lang.Object#toString()
+     */
     public String toString() {
         StringBuffer sbuf = new StringBuffer();
         sbuf.append('(');
-        sbuf.append(_fontFamily);
-        sbuf.append(',');
-        sbuf.append(_fontName);
+        /*
+        sbuf.append(fontFamily);
+        sbuf.append(',');*/
+        sbuf.append(fontName);
         sbuf.append(',');
-        sbuf.append(_fontSize);
+        sbuf.append(fontSize);
+        /*
         sbuf.append(',');
-        sbuf.append(_fontStyle);
+        sbuf.append(fontStyle);
         sbuf.append(',');
-        sbuf.append(_fontWeight);
+        sbuf.append(fontWeight);*/
         sbuf.append(')');
         return sbuf.toString();
     }