You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by me...@apache.org on 2012/04/10 10:39:32 UTC

svn commit: r1311638 - in /xmlgraphics/fop/trunk: src/java/org/apache/fop/afp/fonts/AFPFont.java src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java src/java/org/apache/fop/afp/fonts/RasterFont.java status.xml

Author: mehdi
Date: Tue Apr 10 08:39:31 2012
New Revision: 1311638

URL: http://svn.apache.org/viewvc?rev=1311638&view=rev
Log:
Bug in AFP font metrics that performed integer arithmetic when it should have been double arithemetic.

Also added some generics to the surrounding classes

Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/AFPFont.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/RasterFont.java
    xmlgraphics/fop/trunk/status.xml

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/AFPFont.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/AFPFont.java?rev=1311638&r1=1311637&r2=1311638&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/AFPFont.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/AFPFont.java Tue Apr 10 08:39:31 2012
@@ -19,6 +19,7 @@
 
 package org.apache.fop.afp.fonts;
 
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
@@ -62,8 +63,8 @@ public abstract class AFPFont extends Ty
     }
 
     /** {@inheritDoc} */
-    public Set getFamilyNames() {
-        Set s = new java.util.HashSet();
+    public Set<String> getFamilyNames() {
+        Set<String> s = new HashSet<String>();
         s.add(this.name);
         return s;
     }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java?rev=1311638&r1=1311637&r2=1311638&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java Tue Apr 10 08:39:31 2012
@@ -285,12 +285,12 @@ public abstract class CharacterSetBuilde
                 CharacterSetOrientation[] characterSetOrientations
                     = processFontOrientation(structuredFieldReader);
 
-                int metricNormalizationFactor;
+                double metricNormalizationFactor;
                 if (fontControl.isRelative()) {
                     metricNormalizationFactor = 1;
                 } else {
                     int dpi = fontControl.getDpi();
-                    metricNormalizationFactor = 1000 * 72000
+                    metricNormalizationFactor = 1000.0d * 72000.0d
                         / fontDescriptor.getNominalFontSizeInMillipoints() / dpi;
                 }
 

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/RasterFont.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/RasterFont.java?rev=1311638&r1=1311637&r2=1311638&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/RasterFont.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/RasterFont.java Tue Apr 10 08:39:31 2012
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.SortedMap;
+import java.util.TreeMap;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -39,9 +40,8 @@ public class RasterFont extends AFPFont 
     /** Static logging instance */
     protected static final Log LOG = LogFactory.getLog("org.apache.fop.afp.fonts");
 
-    private final SortedMap/*<Integer,CharacterSet>*/ charSets
-            = new java.util.TreeMap/*<Integer,CharacterSet>*/();
-    private Map/*<Integer,CharacterSet>*/ substitutionCharSets;
+    private final SortedMap<Integer, CharacterSet> charSets = new TreeMap<Integer, CharacterSet>();
+    private Map<Integer, CharacterSet> substitutionCharSets;
 
     private CharacterSet charSet = null;
 
@@ -92,8 +92,8 @@ public class RasterFont extends AFPFont 
             // No match or substitution found, but there exist entries
             // for other sizes
             // Get char set with nearest, smallest font size
-            SortedMap smallerSizes = charSets.headMap(requestedSize);
-            SortedMap largerSizes = charSets.tailMap(requestedSize);
+            SortedMap<Integer, CharacterSet> smallerSizes = charSets.headMap(requestedSize);
+            SortedMap<Integer, CharacterSet> largerSizes = charSets.tailMap(requestedSize);
             int smallerSize = smallerSizes.isEmpty() ? 0
                     : ((Integer)smallerSizes.lastKey()).intValue();
             int largerSize = largerSizes.isEmpty() ? Integer.MAX_VALUE
@@ -112,7 +112,7 @@ public class RasterFont extends AFPFont 
                 // Add the substitute mapping, so subsequent calls will
                 // find it immediately
                 if (substitutionCharSets == null) {
-                    substitutionCharSets = new HashMap();
+                    substitutionCharSets = new HashMap<Integer, CharacterSet>();
                 }
                 substitutionCharSets.put(requestedSize, csm);
                 // do not output the warning if the font size is closer to an integer less than 0.1
@@ -140,9 +140,9 @@ public class RasterFont extends AFPFont 
      * @return the first character in this font.
      */
     public int getFirstChar() {
-        Iterator it = charSets.values().iterator();
+        Iterator<CharacterSet> it = charSets.values().iterator();
         if (it.hasNext()) {
-            CharacterSet csm = (CharacterSet) it.next();
+            CharacterSet csm = it.next();
             return csm.getFirstChar();
         } else {
             String msg = "getFirstChar() - No character set found for font:" + getFontName();
@@ -157,9 +157,9 @@ public class RasterFont extends AFPFont 
      */
     public int getLastChar() {
 
-        Iterator it = charSets.values().iterator();
+        Iterator<CharacterSet> it = charSets.values().iterator();
         if (it.hasNext()) {
-            CharacterSet csm = (CharacterSet) it.next();
+            CharacterSet csm = it.next();
             return csm.getLastChar();
         } else {
             String msg = "getLastChar() - No character set found for font:" + getFontName();

Modified: xmlgraphics/fop/trunk/status.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/status.xml?rev=1311638&r1=1311637&r2=1311638&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/status.xml (original)
+++ xmlgraphics/fop/trunk/status.xml Tue Apr 10 08:39:31 2012
@@ -62,6 +62,10 @@
       documents. Example: the fix of marks layering will be such a case when it's done.
     -->
     <release version="FOP Trunk" date="TBD">
+      <action context="Code" dev="MH" type="fix">
+        Bug in AFP font metrics that performed integer arithmetic when it should have been
+	double arithemetic.
+      </action>
       <action context="Code" dev="GA" type="fix" fixes-bug="49754" due-to="Simon Pepping">
         Bring clone() in line with the recommendations in Object.clone().
       </action>



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org