Author: ssteiner
Date: Mon Mar 13 14:18:09 2017
New Revision: 1786698

URL: http://svn.apache.org/viewvc?rev=1786698&view=rev
Log:
Cleanup OTFSubsetFile

Modified:
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/cff/CFFDataReader.java
    
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/cff/CFFDataReader.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/cff/CFFDataReader.java?rev=1786698&r1=1786697&r2=1786698&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/cff/CFFDataReader.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/cff/CFFDataReader.java
 Mon Mar 13 14:18:09 2017
@@ -508,7 +508,7 @@ public class CFFDataReader {
         Format1Encoding newEncoding = new Format1Encoding();
         newEncoding.setFormat(format);
         newEncoding.setNumEntries(numEntries);
-        LinkedHashMap<Integer, Integer> ranges = new LinkedHashMap<Integer, 
Integer>();
+        Map<Integer, Integer> ranges = new LinkedHashMap<Integer, Integer>();
         for (int i = 0; i < numEntries; i++) {
             int first = cffData.readCard8();
             int left = cffData.readCard8();
@@ -555,7 +555,7 @@ public class CFFDataReader {
         newFDs.setFormat(3);
         int rangeCount = cffData.readCard16();
         newFDs.setRangeCount(rangeCount);
-        LinkedHashMap<Integer, Integer> ranges = new LinkedHashMap<Integer, 
Integer>();
+        Map<Integer, Integer> ranges = new LinkedHashMap<Integer, Integer>();
         for (int i = 0; i < rangeCount; i++) {
             int first = cffData.readCard16();
             int fd = cffData.readCard8();
@@ -567,7 +567,7 @@ public class CFFDataReader {
     }
 
     private List<FontDict> parseCIDData() throws IOException {
-        ArrayList<FontDict> fdFonts = new ArrayList<FontDict>();
+        List<FontDict> fdFonts = new ArrayList<FontDict>();
         if (topDict.get("ROS") != null) {
             DICTEntry fdArray = topDict.get("FDArray");
             if (fdArray != null) {
@@ -577,7 +577,7 @@ public class CFFDataReader {
                     FontDict newFontDict = new FontDict();
 
                     byte[] fdData = fontDicts.getValue(i);
-                    LinkedHashMap<String, DICTEntry> fdEntries = 
parseDictData(fdData);
+                    Map<String, DICTEntry> fdEntries = parseDictData(fdData);
                     newFontDict.setByteData(fontDicts.getValuePosition(i), 
fontDicts.getValueLength(i));
                     DICTEntry fontFDEntry = fdEntries.get("FontName");
                     if (fontFDEntry != null) {
@@ -601,7 +601,7 @@ public class CFFDataReader {
         cffData.setPosition(privateFDOffset);
         byte[] privateDict = cffData.readBytes(privateFDLength);
         newFontDict.setPrivateDictData(privateFDOffset, privateFDLength);
-        LinkedHashMap<String, DICTEntry> privateEntries = 
parseDictData(privateDict);
+        Map<String, DICTEntry> privateEntries = parseDictData(privateDict);
         DICTEntry subroutines = privateEntries.get("Subrs");
         if (subroutines != null) {
             CFFIndexData localSubrs = readIndex(privateFDOffset
@@ -625,7 +625,7 @@ public class CFFDataReader {
             int offset = privateEntry.getOperands().get(1).intValue();
             cffData.setPosition(offset);
             byte[] privateData = cffData.readBytes(length);
-            LinkedHashMap<String, DICTEntry> privateDict = 
parseDictData(privateData);
+            Map<String, DICTEntry> privateDict = parseDictData(privateData);
             DICTEntry localSubrsEntry = privateDict.get("Subrs");
             if (localSubrsEntry != null) {
                 int localOffset = offset + 
localSubrsEntry.getOperands().get(0).intValue();
@@ -803,13 +803,13 @@ public class CFFDataReader {
     }
 
     public class Format1Encoding extends CustomEncoding {
-        private LinkedHashMap<Integer, Integer> ranges;
+        private Map<Integer, Integer> ranges;
 
-        public void setRanges(LinkedHashMap<Integer, Integer> ranges) {
+        public void setRanges(Map<Integer, Integer> ranges) {
             this.ranges = ranges;
         }
 
-        public LinkedHashMap<Integer, Integer> getRanges() {
+        public Map<Integer, Integer> getRanges() {
             return ranges;
         }
     }
@@ -840,7 +840,7 @@ public class CFFDataReader {
 
     public class Format3FDSelect extends FDSelect {
         private int rangeCount;
-        private LinkedHashMap<Integer, Integer> ranges;
+        private Map<Integer, Integer> ranges;
         private int sentinelGID;
 
         public void setRangeCount(int rangeCount) {
@@ -851,11 +851,11 @@ public class CFFDataReader {
             return rangeCount;
         }
 
-        public void setRanges(LinkedHashMap<Integer, Integer> ranges) {
+        public void setRanges(Map<Integer, Integer> ranges) {
             this.ranges = ranges;
         }
 
-        public LinkedHashMap<Integer, Integer> getRanges() {
+        public Map<Integer, Integer> getRanges() {
             return ranges;
         }
 

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=1786698&r1=1786697&r2=1786698&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 14:18:09 2017
@@ -19,6 +19,7 @@
 
 package org.apache.fop.fonts.truetype;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -68,7 +69,7 @@ public class OTFSubSetFile extends OTFSu
 
     /** For fonts which have an FDSelect or ROS flag in Top Dict, this is used 
to store the
      * local subroutine indexes for each group as opposed to the above 
subsetLocalIndexSubr */
-    private ArrayList<List<byte[]>> fdSubrs;
+    private List<List<byte[]>> fdSubrs;
 
     /** 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. */
@@ -239,7 +240,7 @@ public class OTFSubSetFile extends OTFSu
     }
 
     protected List<Integer> storeFDStrings(List<Integer> uniqueNewRefs) throws 
IOException {
-        ArrayList<Integer> fontNameSIDs = new ArrayList<Integer>();
+        List<Integer> fontNameSIDs = new ArrayList<Integer>();
         List<FontDict> fdFonts = cffReader.getFDFonts();
         for (Integer uniqueNewRef : uniqueNewRefs) {
             FontDict fdFont = fdFonts.get(uniqueNewRef);
@@ -253,7 +254,7 @@ public class OTFSubSetFile extends OTFSu
     }
 
     protected void writeTopDICT() throws IOException {
-        LinkedHashMap<String, DICTEntry> topDICT = 
cffReader.getTopDictEntries();
+        Map<String, DICTEntry> topDICT = cffReader.getTopDictEntries();
         List<String> topDictStringEntries = Arrays.asList("version", "Notice", 
"Copyright",
                 "FullName", "FamilyName", "Weight", "PostScript");
         for (Map.Entry<String, DICTEntry> dictEntry : topDICT.entrySet()) {
@@ -495,7 +496,7 @@ public class OTFSubSetFile extends OTFSu
         List<FontDict> fdFonts = cffReader.getFDFonts();
         for (int i = 0; i < uniqueNewRefs.size(); i++) {
             FontDict curFDFont = fdFonts.get(uniqueNewRefs.get(i));
-            HashMap<String, DICTEntry> fdPrivateDict = cffReader.parseDictData(
+            Map<String, DICTEntry> fdPrivateDict = cffReader.parseDictData(
                     curFDFont.getPrivateDictData());
             int privateDictOffset = currentPos;
             privateDictOffsets.add(privateDictOffset);
@@ -623,7 +624,7 @@ public class OTFSubSetFile extends OTFSu
          */
         protected Log log = LogFactory.getLog(Type2Parser.class);
 
-        private ArrayList<BytesNumber> stack = new ArrayList<BytesNumber>();
+        private List<BytesNumber> stack = new ArrayList<BytesNumber>();
         private int hstemCount;
         private int vstemCount;
         private int lastOp = -1;
@@ -834,84 +835,76 @@ public class OTFSubSetFile extends OTFSu
     }
 
     private byte[] constructNewRefData(int curDataPos, byte[] currentData, 
BytesNumber operand,
-            int fullSubsetIndexSize, int curSubsetIndexSize, int[] 
operatorCode) {
+            int fullSubsetIndexSize, int curSubsetIndexSize, int[] 
operatorCode) throws IOException {
         //Create the new array with the modified reference
-        byte[] newData;
+        ByteArrayOutputStream newData = new ByteArrayOutputStream();
         int startRef = curDataPos - operand.getNumBytes();
         int length = operand.getNumBytes() + 1;
-        byte[] preBytes = new byte[startRef];
-        System.arraycopy(currentData, 0, preBytes, 0, startRef);
         int newBias = getBias(fullSubsetIndexSize);
         int newRef = curSubsetIndexSize - newBias;
         byte[] newRefBytes = createNewRef(newRef, operatorCode, -1, false);
-        newData = concatArray(preBytes, newRefBytes);
-        byte[] postBytes = new byte[currentData.length - (startRef + length)];
-        System.arraycopy(currentData, startRef + length, postBytes, 0,
-                currentData.length - (startRef + length));
-        return concatArray(newData, postBytes);
+        newData.write(currentData, 0, startRef);
+        newData.write(newRefBytes);
+        newData.write(currentData, startRef + length, currentData.length - 
(startRef + length));
+        return newData.toByteArray();
     }
 
     public static byte[] createNewRef(int newRef, int[] operatorCode, int 
forceLength, boolean isDict) {
-        byte[] newRefBytes;
-        int sizeOfOperator = operatorCode.length;
+        ByteArrayOutputStream newRefBytes = new ByteArrayOutputStream();
         if ((forceLength == -1 && newRef >= -107 && newRef <= 107) || 
forceLength == 1) {
-            newRefBytes = new byte[1 + sizeOfOperator];
             //The index values are 0 indexed
-            newRefBytes[0] = (byte)(newRef + 139);
-            for (int i = 0; i < operatorCode.length; i++) {
-                newRefBytes[1 + i] = (byte)operatorCode[i];
+            newRefBytes.write(newRef + 139);
+            for (int i : operatorCode) {
+                newRefBytes.write(i);
             }
         } else if ((forceLength == -1 && newRef >= -1131 && newRef <= 1131) || 
forceLength == 2) {
-            newRefBytes = new byte[2 + sizeOfOperator];
             if (newRef <= -876) {
-                newRefBytes[0] = (byte)254;
+                newRefBytes.write(254);
             } else if (newRef <= -620) {
-                newRefBytes[0] = (byte)253;
+                newRefBytes.write(253);
             } else if (newRef <= -364) {
-                newRefBytes[0] = (byte)252;
+                newRefBytes.write(252);
             } else if (newRef <= -108) {
-                newRefBytes[0] = (byte)251;
+                newRefBytes.write(251);
             } else if (newRef <= 363) {
-                newRefBytes[0] = (byte)247;
+                newRefBytes.write(247);
             } else if (newRef <= 619) {
-                newRefBytes[0] = (byte)248;
+                newRefBytes.write(248);
             } else if (newRef <= 875) {
-                newRefBytes[0] = (byte)249;
+                newRefBytes.write(249);
             } else {
-                newRefBytes[0] = (byte)250;
+                newRefBytes.write(250);
             }
             if (newRef > 0) {
-                newRefBytes[1] = (byte)(newRef - 108);
+                newRefBytes.write(newRef - 108);
             } else {
-                newRefBytes[1] = (byte)(-newRef - 108);
+                newRefBytes.write(-newRef - 108);
             }
-            for (int i = 0; i < operatorCode.length; i++) {
-                newRefBytes[2 + i] = (byte)operatorCode[i];
+            for (int i : operatorCode) {
+                newRefBytes.write(i);
             }
         } else if ((forceLength == -1 && newRef >= -32768 && newRef <= 32767) 
|| forceLength == 3) {
-            newRefBytes = new byte[3 + sizeOfOperator];
-            newRefBytes[0] = 28;
-            newRefBytes[1] = (byte)(newRef >> 8);
-            newRefBytes[2] = (byte)newRef;
-            for (int i = 0; i < operatorCode.length; i++) {
-                newRefBytes[3 + i] = (byte)operatorCode[i];
+            newRefBytes.write(28);
+            newRefBytes.write(newRef >> 8);
+            newRefBytes.write(newRef);
+            for (int i : operatorCode) {
+                newRefBytes.write(i);
             }
         } else {
-            newRefBytes = new byte[5 + sizeOfOperator];
             if (isDict) {
-                newRefBytes[0] = 29;
+                newRefBytes.write(29);
             } else {
-                newRefBytes[0] = (byte)255;
+                newRefBytes.write(255);
             }
-            newRefBytes[1] = (byte)(newRef >> 24);
-            newRefBytes[2] = (byte)(newRef >> 16);
-            newRefBytes[3] = (byte)(newRef >> 8);
-            newRefBytes[4] = (byte)newRef;
-            for (int i = 0; i < operatorCode.length; i++) {
-                newRefBytes[5 + i] = (byte)operatorCode[i];
+            newRefBytes.write(newRef >> 24);
+            newRefBytes.write(newRef >> 16);
+            newRefBytes.write(newRef >> 8);
+            newRefBytes.write(newRef);
+            for (int i : operatorCode) {
+                newRefBytes.write(i);
             }
         }
-        return newRefBytes;
+        return newRefBytes.toByteArray();
     }
 
     protected int writeIndex(List<byte[]> dataArray) {
@@ -1114,7 +1107,7 @@ public class OTFSubSetFile extends OTFSu
 
     protected void updateCIDOffsets(int topDictDataOffset, int fdArrayOffset, 
int fdSelectOffset,
             int charsetOffset, int charStringOffset, int encodingOffset) {
-        LinkedHashMap<String, DICTEntry> topDict = 
cffReader.getTopDictEntries();
+        Map<String, DICTEntry> topDict = cffReader.getTopDictEntries();
 
         DICTEntry fdArrayEntry = topDict.get("FDArray");
         if (fdArrayEntry != null) {



---------------------------------------------------------------------
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