Author: ssteiner
Date: Mon Mar 13 11:03:42 2017
New Revision: 1786659

URL: http://svn.apache.org/viewvc?rev=1786659&view=rev
Log:
OTF code cleanup

Added:
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetWriter.java
   (with props)
Modified:
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java?rev=1786659&r1=1786658&r2=1786659&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java
 Mon Mar 13 11:03:42 2017
@@ -50,18 +50,14 @@ import org.apache.fop.fonts.cff.CFFDataR
  * The OpenType specification can be found at the Microsoft
  * Typography site: http://www.microsoft.com/typography/otspec/
  */
-public class OTFSubSetFile extends OTFFile {
-
-    protected byte[] output;
-    protected int currentPos;
-    private int realSize;
+public class OTFSubSetFile extends OTFSubSetWriter {
 
     /** A map containing each glyph to be included in the subset
       * with their existing and new GID's **/
-    protected LinkedHashMap<Integer, Integer> subsetGlyphs = new 
LinkedHashMap<Integer, Integer>();
+    protected Map<Integer, Integer> subsetGlyphs = new LinkedHashMap<Integer, 
Integer>();
 
     /** A map of the new GID to SID used to construct the charset table **/
-    protected LinkedHashMap<Integer, Integer> gidToSID;
+    protected Map<Integer, Integer> gidToSID;
 
     protected CFFIndexData localIndexSubr;
     protected CFFIndexData globalIndexSubr;
@@ -76,7 +72,7 @@ public class OTFSubSetFile extends OTFFi
 
     /** The subset FD Select table used to store the mappings between glyphs 
and their
      * associated FDFont object which point to a private dict and local 
subroutines. */
-    private LinkedHashMap<Integer, FDIndexReference> subsetFDSelect;
+    private Map<Integer, FDIndexReference> subsetFDSelect;
 
     /** A list of unique subroutines from the global / local subroutine 
indexes */
     protected List<Integer> localUniques;
@@ -152,7 +148,7 @@ public class OTFSubSetFile extends OTFFi
         createCFF();
     }
 
-    private LinkedHashMap<Integer, Integer> sortByValue(Map<Integer, Integer> 
map) {
+    private Map<Integer, Integer> sortByValue(Map<Integer, Integer> map) {
         List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, 
Integer>>(map.entrySet());
         Collections.sort(list, new Comparator<Entry<Integer, Integer>>() {
              public int compare(Entry<Integer, Integer> o1, Entry<Integer, 
Integer> o2) {
@@ -160,7 +156,7 @@ public class OTFSubSetFile extends OTFFi
              }
         });
 
-       LinkedHashMap<Integer, Integer> result = new LinkedHashMap<Integer, 
Integer>();
+       Map<Integer, Integer> result = new LinkedHashMap<Integer, Integer>();
        for (Entry<Integer, Integer> entry : list) {
            result.put(entry.getKey(), entry.getValue());
        }
@@ -256,19 +252,6 @@ public class OTFSubSetFile extends OTFFi
         return fontNameSIDs;
     }
 
-    protected void writeBytes(byte[] out) {
-        for (byte anOut : out) {
-            writeByte(anOut);
-        }
-    }
-
-    protected void writeBytes(byte[] out, int offset, int length) {
-        for (int i = offset; i < offset + length; i++) {
-            output[currentPos++] = out[i];
-            realSize++;
-        }
-    }
-
     protected void writeTopDICT() throws IOException {
         LinkedHashMap<String, DICTEntry> topDICT = 
cffReader.getTopDictEntries();
         List<String> topDictStringEntries = Arrays.asList("version", "Notice", 
"Copyright",
@@ -301,18 +284,18 @@ public class OTFSubSetFile extends OTFFi
         }
         int sidBStringIndex = stringIndexData.size() + 390;
         byte[] cidEntryByteData = dictEntry.getByteData();
-        cidEntryByteData = updateOffset(cidEntryByteData, 0, 
dictEntry.getOperandLengths().get(0),
+        updateOffset(cidEntryByteData, 0, dictEntry.getOperandLengths().get(0),
                 sidAStringIndex);
-        cidEntryByteData = updateOffset(cidEntryByteData, 
dictEntry.getOperandLengths().get(0),
+        updateOffset(cidEntryByteData, dictEntry.getOperandLengths().get(0),
                 dictEntry.getOperandLengths().get(1), sidBStringIndex);
-        cidEntryByteData = updateOffset(cidEntryByteData, 
dictEntry.getOperandLengths().get(0)
+        updateOffset(cidEntryByteData, dictEntry.getOperandLengths().get(0)
                 + dictEntry.getOperandLengths().get(1), 
dictEntry.getOperandLengths().get(2), 0);
         writeBytes(cidEntryByteData);
     }
 
     protected void writeCIDCount(DICTEntry dictEntry) throws IOException {
         byte[] cidCountByteData = dictEntry.getByteData();
-        cidCountByteData = updateOffset(cidCountByteData, 0, 
dictEntry.getOperandLengths().get(0),
+        updateOffset(cidCountByteData, 0, dictEntry.getOperandLengths().get(0),
                 subsetGlyphs.size());
         writeBytes(cidCountByteData);
     }
@@ -518,7 +501,7 @@ public class OTFSubSetFile extends OTFFi
             privateDictOffsets.add(privateDictOffset);
             byte[] fdPrivateDictByteData = curFDFont.getPrivateDictData();
             if (fdPrivateDict.get("Subrs") != null) {
-                fdPrivateDictByteData = updateOffset(fdPrivateDictByteData, 
fdPrivateDict.get("Subrs").getOffset(),
+                updateOffset(fdPrivateDictByteData, 
fdPrivateDict.get("Subrs").getOffset(),
                         fdPrivateDict.get("Subrs").getOperandLength(),
                         fdPrivateDictByteData.length);
             }
@@ -550,11 +533,11 @@ public class OTFSubSetFile extends OTFFi
             byte[] fdFontByteData = fdFont.getByteData();
             Map<String, DICTEntry> fdFontDict = 
cffReader.parseDictData(fdFontByteData);
             //Update the SID to the FontName
-            fdFontByteData = updateOffset(fdFontByteData, 
fdFontDict.get("FontName").getOffset() - 1,
+            updateOffset(fdFontByteData, 
fdFontDict.get("FontName").getOffset() - 1,
                     fdFontDict.get("FontName").getOperandLengths().get(0),
                     fontNameSIDs.get(i));
             //Update the Private dict reference
-            fdFontByteData = updateOffset(fdFontByteData, 
fdFontDict.get("Private").getOffset()
+            updateOffset(fdFontByteData, fdFontDict.get("Private").getOffset()
                     + fdFontDict.get("Private").getOperandLengths().get(0),
                     fdFontDict.get("Private").getOperandLengths().get(1),
                     privateDictOffsets.get(i));
@@ -685,7 +668,6 @@ public class OTFSubSetFile extends OTFFi
             int posDelta = 0;
             if ((b0 >= 0 && b0 <= 27) || (b0 >= 29 && b0 <= 31)) {
                 if (b0 == 12) {
-                    dataPos += 1;
                     log.warn("May not guess the operand count correctly.");
                     posDelta = 1;
                 } else if (b0 == 1 || b0 == 18) {
@@ -932,15 +914,6 @@ public class OTFSubSetFile extends OTFFi
         return newRefBytes;
     }
 
-    public static byte[] concatArray(byte[] a, byte[] b) {
-        int aLen = a.length;
-        int bLen = b.length;
-        byte[] c = new byte[aLen + bLen];
-        System.arraycopy(a, 0, c, 0, aLen);
-        System.arraycopy(b, 0, c, aLen, bLen);
-        return c;
-    }
-
     protected int writeIndex(List<byte[]> dataArray) {
         int hdrTotal = 3;
         //2 byte number of items
@@ -1106,14 +1079,14 @@ public class OTFSubSetFile extends OTFFi
         if (privateDICT != null) {
             //Private index offset in the top dict
             int oldPrivateOffset = dataTopDictOffset + 
privateEntry.getOffset();
-            output = updateOffset(output, oldPrivateOffset + 
privateEntry.getOperandLengths().get(0),
+            updateOffset(output, oldPrivateOffset + 
privateEntry.getOperandLengths().get(0),
                     privateEntry.getOperandLengths().get(1), 
privateDictOffset);
 
             //Update the local subroutine index offset in the private dict
             DICTEntry subroutines = privateDICT.get("Subrs");
             if (subroutines != null) {
                 int oldLocalSubrOffset = privateDictOffset + 
subroutines.getOffset();
-                output = updateOffset(output, oldLocalSubrOffset, 
subroutines.getOperandLength(),
+                updateOffset(output, oldLocalSubrOffset, 
subroutines.getOperandLength(),
                         (localIndexOffset - privateDictOffset));
             }
         }
@@ -1124,18 +1097,18 @@ public class OTFSubSetFile extends OTFFi
         //Charset offset in the top dict
         DICTEntry charset = topDICT.get("charset");
         int oldCharsetOffset = dataTopDictOffset + charset.getOffset();
-        output = updateOffset(output, oldCharsetOffset, 
charset.getOperandLength(), charsetOffset);
+        updateOffset(output, oldCharsetOffset, charset.getOperandLength(), 
charsetOffset);
 
         //Char string index offset in the private dict
         DICTEntry charString = topDICT.get("CharStrings");
         int oldCharStringOffset = dataTopDictOffset + charString.getOffset();
-        output = updateOffset(output, oldCharStringOffset, 
charString.getOperandLength(), charStringOffset);
+        updateOffset(output, oldCharStringOffset, 
charString.getOperandLength(), charStringOffset);
 
         DICTEntry encodingEntry = topDICT.get("Encoding");
         if (encodingEntry != null && 
encodingEntry.getOperands().get(0).intValue() != 0
                 && encodingEntry.getOperands().get(0).intValue() != 1) {
             int oldEncodingOffset = dataTopDictOffset + 
encodingEntry.getOffset();
-            output = updateOffset(output, oldEncodingOffset, 
encodingEntry.getOperandLength(), encodingOffset);
+            updateOffset(output, oldEncodingOffset, 
encodingEntry.getOperandLength(), encodingOffset);
         }
     }
 
@@ -1145,20 +1118,20 @@ public class OTFSubSetFile extends OTFFi
 
         DICTEntry fdArrayEntry = topDict.get("FDArray");
         if (fdArrayEntry != null) {
-            output = updateOffset(output, topDictDataOffset + 
fdArrayEntry.getOffset() - 1,
+            updateOffset(output, topDictDataOffset + fdArrayEntry.getOffset() 
- 1,
                     fdArrayEntry.getOperandLength(), fdArrayOffset);
         }
 
         DICTEntry fdSelect = topDict.get("FDSelect");
         if (fdSelect != null) {
-            output = updateOffset(output, topDictDataOffset + 
fdSelect.getOffset() - 1,
+            updateOffset(output, topDictDataOffset + fdSelect.getOffset() - 1,
                     fdSelect.getOperandLength(), fdSelectOffset);
         }
 
         updateFixedOffsets(topDict, topDictDataOffset, charsetOffset, 
charStringOffset, encodingOffset);
     }
 
-    protected byte[] updateOffset(byte[] out, int position, int length, int 
replacement) {
+    protected void updateOffset(byte[] out, int position, int length, int 
replacement) {
         switch (length) {
         case 1:
             out[position] = (byte)(replacement + 139);
@@ -1201,62 +1174,6 @@ public class OTFSubSetFile extends OTFFi
             break;
         default:
         }
-        return out;
-    }
-
-    /**
-     * Appends a byte to the output array,
-     * updates currentPost but not realSize
-     */
-    protected void writeByte(int b) {
-        output[currentPos++] = (byte)b;
-        realSize++;
-    }
-
-    /**
-     * Appends a USHORT to the output array,
-     * updates currentPost but not realSize
-     */
-    protected void writeCard16(int s) {
-        byte b1 = (byte)((s >> 8) & 0xff);
-        byte b2 = (byte)(s & 0xff);
-        writeByte(b1);
-        writeByte(b2);
-    }
-
-    private void writeThreeByteNumber(int s) {
-        byte b1 = (byte)((s >> 16) & 0xFF);
-        byte b2 = (byte)((s >> 8) & 0xFF);
-        byte b3 = (byte)(s & 0xFF);
-        writeByte(b1);
-        writeByte(b2);
-        writeByte(b3);
-    }
-
-    /**
-     * Appends a ULONG to the output array,
-     * at the given position
-     */
-    private void writeULong(int s) {
-        byte b1 = (byte)((s >> 24) & 0xff);
-        byte b2 = (byte)((s >> 16) & 0xff);
-        byte b3 = (byte)((s >> 8) & 0xff);
-        byte b4 = (byte)(s & 0xff);
-        writeByte(b1);
-        writeByte(b2);
-        writeByte(b3);
-        writeByte(b4);
-    }
-
-    /**
-     * Returns a subset of the fonts (readFont() MUST be called first in order 
to create the
-     * subset).
-     * @return byte array
-     */
-    public byte[] getFontSubset() {
-        byte[] ret = new byte[realSize];
-        System.arraycopy(output, 0, ret, 0, realSize);
-        return ret;
     }
 
     /**

Added: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetWriter.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetWriter.java?rev=1786659&view=auto
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetWriter.java
 (added)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetWriter.java
 Mon Mar 13 11:03:42 2017
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id$ */
+package org.apache.fop.fonts.truetype;
+
+import java.io.IOException;
+
+public class OTFSubSetWriter extends OTFFile {
+    protected int currentPos;
+    protected int realSize;
+    protected byte[] output;
+
+    public OTFSubSetWriter() throws IOException {
+        super();
+    }
+
+    public static byte[] concatArray(byte[] a, byte[] b) {
+        int aLen = a.length;
+        int bLen = b.length;
+        byte[] c = new byte[aLen + bLen];
+        System.arraycopy(a, 0, c, 0, aLen);
+        System.arraycopy(b, 0, c, aLen, bLen);
+        return c;
+    }
+
+    /**
+     * Appends a byte to the output array,
+     * updates currentPost but not realSize
+     */
+    protected void writeByte(int b) {
+        output[currentPos++] = (byte)b;
+        realSize++;
+    }
+
+    /**
+     * Appends a USHORT to the output array,
+     * updates currentPost but not realSize
+     */
+    protected void writeCard16(int s) {
+        byte b1 = (byte)((s >> 8) & 0xff);
+        byte b2 = (byte)(s & 0xff);
+        writeByte(b1);
+        writeByte(b2);
+    }
+
+    protected void writeThreeByteNumber(int s) {
+        byte b1 = (byte)((s >> 16) & 0xFF);
+        byte b2 = (byte)((s >> 8) & 0xFF);
+        byte b3 = (byte)(s & 0xFF);
+        writeByte(b1);
+        writeByte(b2);
+        writeByte(b3);
+    }
+
+    /**
+     * Appends a ULONG to the output array,
+     * at the given position
+     */
+    protected void writeULong(int s) {
+        byte b1 = (byte)((s >> 24) & 0xff);
+        byte b2 = (byte)((s >> 16) & 0xff);
+        byte b3 = (byte)((s >> 8) & 0xff);
+        byte b4 = (byte)(s & 0xff);
+        writeByte(b1);
+        writeByte(b2);
+        writeByte(b3);
+        writeByte(b4);
+    }
+
+
+    protected void writeBytes(byte[] out) {
+        for (byte anOut : out) {
+            writeByte(anOut);
+        }
+    }
+
+    protected void writeBytes(byte[] out, int offset, int length) {
+        for (int i = offset; i < offset + length; i++) {
+            output[currentPos++] = out[i];
+            realSize++;
+        }
+    }
+
+    /**
+     * Returns a subset of the fonts (readFont() MUST be called first in order 
to create the
+     * subset).
+     * @return byte array
+     */
+    public byte[] getFontSubset() {
+        byte[] ret = new byte[realSize];
+        System.arraycopy(output, 0, ret, 0, realSize);
+        return ret;
+    }
+}

Propchange: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetWriter.java
------------------------------------------------------------------------------
    svn:eol-style = native



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

Reply via email to