]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Fix for bug 16257 (bad ascender/descender in XML font metrics)
authorJeremias Maerki <jeremias@apache.org>
Tue, 21 Jan 2003 10:44:36 +0000 (10:44 +0000)
committerJeremias Maerki <jeremias@apache.org>
Tue, 21 Jan 2003 10:44:36 +0000 (10:44 +0000)
Ascender and Descender are now read from the OS/2 table if the values in the hhea table are zero.

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

src/org/apache/fop/fonts/truetype/TTFFile.java

index 1efe0f88caaa602d4a1a7ae81b9bcda20249d572..e1140e947bff8dbab4c26a9d06c4dac30c5bd853 100644 (file)
@@ -83,6 +83,8 @@ public class TTFFile extends AbstractLogEnabled {
 
     private int ansiWidth[];
     private Map ansiIndex;
+    
+    private TTFDirTabEntry currentDirTab;
 
     /**
      * Position inputstream to position indicated
@@ -93,10 +95,10 @@ public class TTFFile extends AbstractLogEnabled {
         TTFDirTabEntry dt = (TTFDirTabEntry)dirTabs.get(name);
         if (dt == null) {
             getLogger().error("Dirtab " + name + " not found.");
-            return;
+        } else {
+            in.seekSet(dt.getOffset() + offset);
+            this.currentDirTab = dt;
         }
-
-        in.seekSet(dt.getOffset() + offset);
     }
 
     /**
@@ -711,6 +713,16 @@ public class TTFFile extends AbstractLogEnabled {
         in.skip(2 + 2 + 3 * 2 + 8 * 2);
         nhmtx = in.readTTFUShort();
         getLogger().debug("Number of horizontal metrics: " + nhmtx);
+
+        //Check OS/2 table for ascender/descender if necessary
+        if (ascender == 0 || descender == 0) {
+            seekTab(in, "OS/2", 68);
+            if (this.currentDirTab.getLength() >= 78) {
+                ascender = in.readTTFShort(); //sTypoAscender
+                descender = in.readTTFShort(); //sTypoDescender
+            }
+        }
+
     }
 
     /**