]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Attempt at making the remapComposite "more readable".
authorJeremias Maerki <jeremias@apache.org>
Wed, 27 Jul 2011 12:37:29 +0000 (12:37 +0000)
committerJeremias Maerki <jeremias@apache.org>
Wed, 27 Jul 2011 12:37:29 +0000 (12:37 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1151447 13f79535-47bb-0310-9956-ffa450edef68

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

index 9fcfe72cc7dd3aacbc5b1e200da12dadeb51111c..f0c4da4086ed8e30a6035d44675d9dea111c797e 100644 (file)
@@ -528,11 +528,16 @@ public class TTFSubSetFile extends TTFFile {
         }
         TTFMtxEntry mtxEntry = mtxTab[glyphIdx.intValue()];
         long offset = glyphOffset + mtxEntry.getOffset() + 10;
-        if (remappedComposites.contains(offset)) {
-            return;
+
+        //Avoid duplicate remapping (see javadoc for remappedComposites above)
+        if (!remappedComposites.contains(offset)) {
+            remappedComposites.add(offset);
+            innerRemapComposite(in, glyphs, offset);
         }
-        remappedComposites.add(offset);
+    }
 
+    private void innerRemapComposite(FontFileReader in, Map<Integer, Integer> glyphs, long offset)
+            throws IOException {
         Integer compositeIdx = null;
         int flags = 0;
         boolean moreComposites = true;
@@ -806,15 +811,15 @@ public class TTFSubSetFile extends TTFFile {
      * Read a unsigned short value at given position
      */
     private int readUShort(int pos) {
-        int ret = (int)output[pos];
+        int ret = output[pos];
         if (ret < 0) {
             ret += 256;
         }
         ret = ret << 8;
-        if ((int)output[pos + 1] < 0) {
-            ret |= (int)output[pos + 1] + 256;
+        if (output[pos + 1] < 0) {
+            ret |= output[pos + 1] + 256;
         } else {
-            ret |= (int)output[pos + 1];
+            ret |= output[pos + 1];
         }
 
         return ret;
@@ -837,7 +842,7 @@ public class TTFSubSetFile extends TTFFile {
      */
     private int maxPow2(int max) {
         int i = 0;
-        while (Math.pow(2, (double)i) < max) {
+        while (Math.pow(2, i) < max) {
             i++;
         }
 
@@ -845,7 +850,7 @@ public class TTFSubSetFile extends TTFFile {
     }
 
     private int log2(int num) {
-        return (int)(Math.log((double)num) / Math.log(2));
+        return (int)(Math.log(num) / Math.log(2));
     }
 
 
@@ -864,10 +869,10 @@ public class TTFSubSetFile extends TTFFile {
         long sum = 0;
 
         for (int i = 0; i < size; i += 4) {
-            int l = (int)(output[start + i] << 24);
-            l += (int)(output[start + i + 1] << 16);
-            l += (int)(output[start + i + 2] << 16);
-            l += (int)(output[start + i + 3] << 16);
+            int l = (output[start + i] << 24);
+            l += (output[start + i + 1] << 16);
+            l += (output[start + i + 2] << 16);
+            l += (output[start + i + 3] << 16);
             sum += l;
             if (sum > 0xffffffff) {
                 sum = sum - 0xffffffff;