From 785ace252f252ff211330e93635631931d68b890 Mon Sep 17 00:00:00 2001 From: Robert Meyer Date: Mon, 10 Feb 2014 16:21:03 +0000 Subject: [PATCH] FOP-2252: OpenType CFF - Remove need for patch to fontbox git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1566674 13f79535-47bb-0310-9956-ffa450edef68 --- lib/fontbox-1.8.4-patched.jar | Bin 208442 -> 205376 bytes .../apache/fop/fonts/truetype/OTFFile.java | 76 ++++- .../fop/fonts/truetype/OTFSubSetFile.java | 31 +- .../fonts/truetype/OTFSubSetFileTestCase.java | 291 ++++++++++++++++-- 4 files changed, 362 insertions(+), 36 deletions(-) diff --git a/lib/fontbox-1.8.4-patched.jar b/lib/fontbox-1.8.4-patched.jar index 489acb8ac7938f11de177525064878dec3adbd17..f608b44094fa91ce62d302e1a1e13ca7a6409a87 100644 GIT binary patch delta 59775 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 delta 63052 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

>!CAn8YFo&TOP#bT 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 DlDB;( diff --git a/src/java/org/apache/fop/fonts/truetype/OTFFile.java b/src/java/org/apache/fop/fonts/truetype/OTFFile.java index 3976b5994..ab9654beb 100644 --- a/src/java/org/apache/fop/fonts/truetype/OTFFile.java +++ b/src/java/org/apache/fop/fonts/truetype/OTFFile.java @@ -20,11 +20,17 @@ package org.apache.fop.fonts.truetype; import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; import org.apache.fontbox.cff.CFFDataInput; import org.apache.fontbox.cff.CFFFont; -import org.apache.fontbox.cff.CFFFont.Mapping; import org.apache.fontbox.cff.CFFParser; +import org.apache.fontbox.cff.charset.CFFCharset; public class OTFFile extends OpenFont { @@ -45,17 +51,77 @@ public class OTFFile extends OpenFont { @Override protected void updateBBoxAndOffset() throws IOException { + List gidMappings = getGIDMappings(fileFont); + Map sidNames = constructNameMap(gidMappings); UnicodeMapping[] mappings = unicodeMappings.toArray(new UnicodeMapping[0]); for (int i = 0; i < mappings.length; i++) { int glyphIdx = mappings[i].getGlyphIndex(); - Mapping m = fileFont.getGIDMappings().get(glyphIdx); - int[] bbox = fileFont.getBoundingBox(m.getSID()); - String name = fileFont.getNameOfCharFromCode(m.getSID()); - mtxTab[glyphIdx].setBoundingBox(bbox); + Mapping m = gidMappings.get(glyphIdx); + String name = sidNames.get(m.getSID()); mtxTab[glyphIdx].setName(name); } } + private List getGIDMappings(CFFFont font) { + List gidMappings = new ArrayList(); + Mapping notdef = new Mapping(); + gidMappings.add(notdef); + for (CFFCharset.Entry entry : font.getCharset().getEntries()) { + String name = entry.getName(); + byte[] bytes = font.getCharStringsDict().get(name); + if (bytes == null) { + continue; + } + Mapping mapping = new Mapping(); + mapping.setSID(entry.getSID()); + mapping.setName(name); + mapping.setBytes(bytes); + gidMappings.add(mapping); + } + return gidMappings; + } + + private Map constructNameMap(Collection mappings) { + Map sidNames = new HashMap(); + Iterator it = mappings.iterator(); + while (it.hasNext()) { + Mapping mapping = it.next(); + sidNames.put(mapping.getSID(), mapping.getName()); + } + return sidNames; + } + + private static class Mapping { + private int sid; + private String name; + private byte[] bytes; + + public void setSID(int sid) { + this.sid = sid; + } + + public int getSID() { + return sid; + } + + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setBytes(byte[] bytes) { + this.bytes = bytes; + } + + public byte[] getBytes() { + return bytes; + } + } + + @Override protected void initializeFont(FontFileReader in) throws IOException { fontFile = in; diff --git a/src/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java b/src/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java index 4d0cce67a..9cb3458c8 100644 --- a/src/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java +++ b/src/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java @@ -861,7 +861,6 @@ public class OTFSubSetFile extends OTFFile { return hdrTotal + total; } - private BytesNumber readNumber(int b0, byte[] input, int curPos) throws IOException { if (b0 == 28) { int b1 = input[curPos + 1] & 0xff; @@ -887,7 +886,7 @@ public class OTFSubSetFile extends OTFFile { /** * A class used to store the last number operand and also it's size in bytes */ - private static final class BytesNumber { + static class BytesNumber { private int number; private int numBytes; @@ -908,6 +907,26 @@ public class OTFSubSetFile extends OTFFile { this.number = -1; this.numBytes = -1; } + + public String toString() { + return Integer.toString(number); + } + + @Override + public boolean equals(Object entry) { + assert entry instanceof BytesNumber; + BytesNumber bnEntry = (BytesNumber)entry; + return this.number == bnEntry.getNumber() + && this.numBytes == bnEntry.getNumBytes(); + } + + @Override + public int hashCode() { + int hash = 1; + hash = hash * 17 + number; + hash = hash * 31 + numBytes; + return hash; + } } private void writeCharsetTable(boolean cidFont) throws IOException { @@ -1094,4 +1113,12 @@ public class OTFSubSetFile extends OTFFile { System.arraycopy(output, 0, ret, 0, realSize); return ret; } + + /** + * Returns the parsed CFF data for the original font. + * @return The CFFDataReader contaiing the parsed data + */ + public CFFDataReader getCFFReader() { + return cffReader; + } } diff --git a/test/java/org/apache/fop/fonts/truetype/OTFSubSetFileTestCase.java b/test/java/org/apache/fop/fonts/truetype/OTFSubSetFileTestCase.java index c555ebc20..8c92b5f63 100644 --- a/test/java/org/apache/fop/fonts/truetype/OTFSubSetFileTestCase.java +++ b/test/java/org/apache/fop/fonts/truetype/OTFSubSetFileTestCase.java @@ -20,6 +20,8 @@ package org.apache.fop.fonts.truetype; import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -27,18 +29,15 @@ import java.util.Map; import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import org.apache.fontbox.cff.CFFDataInput; import org.apache.fontbox.cff.CFFFont; -import org.apache.fontbox.cff.CFFParser; -import org.apache.fontbox.cff.IndexData; -import org.apache.fontbox.cff.Type2CharStringParser; import org.apache.fop.fonts.cff.CFFDataReader; import org.apache.fop.fonts.cff.CFFDataReader.CFFIndexData; import org.apache.fop.fonts.cff.CFFDataReader.DICTEntry; +import org.apache.fop.fonts.truetype.OTFSubSetFile.BytesNumber; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class OTFSubSetFileTestCase extends OTFFileTestCase { @@ -47,10 +46,6 @@ public class OTFSubSetFileTestCase extends OTFFileTestCase { private byte[] sourceSansData; CFFDataReader cffReaderHeitiStd; - public OTFSubSetFileTestCase() throws IOException { - super(); - } - /** * Initialises the test by creating the font subset. A CFFDataReader is * also created based on the subset data for use in the tests. @@ -80,9 +75,14 @@ public class OTFSubSetFileTestCase extends OTFFileTestCase { public void testCharStringIndex() throws IOException { assertEquals(256, cffReaderSourceSans.getCharStringIndex().getNumObjects()); assertTrue(checkCorrectOffsets(cffReaderSourceSans.getCharStringIndex())); - validateCharStrings(cffReaderSourceSans); + validateCharStrings(cffReaderSourceSans, sourceSansSubset.getCFFReader()); } + /** + * Checks the index data to ensure that the offsets are valid + * @param indexData The index data to check + * @return Returns true if it is found to be valid + */ private boolean checkCorrectOffsets(CFFIndexData indexData) { int last = 0; for (int i = 0; i < indexData.getOffsets().length; i++) { @@ -94,34 +94,267 @@ public class OTFSubSetFileTestCase extends OTFFileTestCase { return true; } - private void validateCharStrings(CFFDataReader cffReader) throws IOException { + /** + * Validates the subset font CharString data by comparing it with the original. + * @param subsetCFF The subset CFFDataReader containing the CharString data + * @param origCFF The original CFFDataReader containing the CharString data + * @throws IOException + */ + private void validateCharStrings(CFFDataReader subsetCFF, CFFDataReader origCFF) + throws IOException { CFFFont sourceSansOriginal = sourceSansProBold.fileFont; + CFFIndexData charStrings = subsetCFF.getCharStringIndex(); Map origCharStringData = sourceSansOriginal.getCharStringsDict(); - IndexData origGlobalIndex = sourceSansOriginal.getGlobalSubrIndex(); - IndexData origLocalIndex = sourceSansOriginal.getLocalSubrIndex(); + for (int i = 0; i < charStrings.getNumObjects(); i++) { + byte[] origCharData = origCharStringData.get(origCharStringData.keySet().toArray( + new String[0])[i]); + byte[] charData = charStrings.getValue(i); + List origOperands = getFullCharString(origCharData, origCFF); + List subsetOperands = getFullCharString(charData, subsetCFF); + for (int j = 0;j < origOperands.size();j++) { + assertTrue(origOperands.get(j).equals(subsetOperands.get(j))); + } + } + } + + /** + * Recursively reads and constructs the full CharString for comparison + * @param data The original byte data of the CharString + * @param cffData The CFFDataReader containing the subroutine indexes + * @return Returns a list of parsed operands and operators + * @throws IOException + */ + private List getFullCharString(byte[] data, CFFDataReader cffData) throws IOException { + CFFIndexData localIndexSubr = cffData.getLocalIndexSubr(); + CFFIndexData globalIndexSubr = cffData.getGlobalIndexSubr(); + boolean hasLocalSubroutines = localIndexSubr != null && localIndexSubr.getNumObjects() > 0; + boolean hasGlobalSubroutines = globalIndexSubr != null && globalIndexSubr.getNumObjects() > 0; + ArrayList operands = new ArrayList(); + for (int dataPos = 0; dataPos < data.length; dataPos++) { + int b0 = data[dataPos] & 0xff; + if (b0 == 10 && hasLocalSubroutines) { + int subrNumber = getSubrNumber(localIndexSubr.getNumObjects(), + operands.get(operands.size() - 1).getNumber()); + byte[] subr = localIndexSubr.getValue(subrNumber); + List subrOperands = getFullCharString(subr, cffData); + operands = mergeOperands(operands, subrOperands); + } else if (b0 == 29 && hasGlobalSubroutines) { + int subrNumber = getSubrNumber(globalIndexSubr.getNumObjects(), + operands.get(operands.size() - 1).getNumber()); + byte[] subr = globalIndexSubr.getValue(subrNumber); + ArrayList subrOperands = (ArrayList)getFullCharString(subr, cffData); + operands = mergeOperands(operands, subrOperands); + } else if ((b0 >= 0 && b0 <= 27) || (b0 >= 29 && b0 <= 31)) { + int size = 1; + int b1 = -1; + if (b0 == 12) { + b1 = data[dataPos++] & 0xff; + size = 2; + } + if (b0 == 19 || b0 == 20) { + dataPos += 1; + size = 2; + } + operands.add(new Operator(b0, size, getOperatorName(b0, b1))); + } else if (b0 == 28 || (b0 >= 32 && b0 <= 255)) { + operands.add(readNumber(b0, data, dataPos)); + dataPos += operands.get(operands.size() - 1).getNumBytes() - 1; + } + } + return operands; + } + + /** + * Merges two lists of operands. This is typically used to merge the CharString + * data with that of a parsed and referenced subroutine. + * @param charString The parsed CharString data so far + * @param subroutine The parsed elements from a subroutine + * @return Returns a merged list of both CharString and subroutine elements. + */ + private ArrayList mergeOperands(List charString, + List subroutine) { + BytesNumber[] charStringOperands = charString.toArray(new BytesNumber[0]); + BytesNumber[] subroutineOperands = subroutine.toArray(new BytesNumber[0]); + BytesNumber[] mergeData = new BytesNumber[charStringOperands.length - 1 + + subroutineOperands.length - 1]; + System.arraycopy(charStringOperands, 0, mergeData, 0, charStringOperands.length - 1); + System.arraycopy(subroutineOperands, 0, mergeData, charStringOperands.length - 1, + subroutineOperands.length - 1); + ArrayList hello = new ArrayList(); + hello.addAll(Arrays.asList(mergeData)); + return hello; + } - CFFDataInput globalSubrs = new CFFDataInput(cffReader.getGlobalIndexSubr().getByteData()); - CFFDataInput localSubrs = new CFFDataInput(cffReader.getLocalIndexSubr().getByteData()); + /** + * Parses a number from one or more bytes + * @param b0 The first byte to identify how to interpret the number + * @param input The original byte data containing the number + * @param curPos The current position of the number + * @return Returns the number + * @throws IOException + */ + private BytesNumber readNumber(int b0, byte[] input, int curPos) throws IOException { + if (b0 == 28) { + int b1 = input[curPos + 1] & 0xff; + int b2 = input[curPos + 2] & 0xff; + return new BytesNumber(Integer.valueOf((short) (b1 << 8 | b2)), 3); + } else if (b0 >= 32 && b0 <= 246) { + return new BytesNumber(Integer.valueOf(b0 - 139), 1); + } else if (b0 >= 247 && b0 <= 250) { + int b1 = input[curPos + 1] & 0xff; + return new BytesNumber(Integer.valueOf((b0 - 247) * 256 + b1 + 108), 2); + } else if (b0 >= 251 && b0 <= 254) { + int b1 = input[curPos + 1] & 0xff; + return new BytesNumber(Integer.valueOf(-(b0 - 251) * 256 - b1 - 108), 2); + } else if (b0 == 255) { + int b1 = input[curPos + 1] & 0xff; + int b2 = input[curPos + 2] & 0xff; + return new BytesNumber(Integer.valueOf((short)(b1 << 8 | b2)), 5); + } else { + throw new IllegalArgumentException(); + } + } - IndexData globalIndexData = CFFParser.readIndexData(globalSubrs); - IndexData localIndexData = CFFParser.readIndexData(localSubrs); + /** + * Gets the subroutine number according to the number of subroutines + * and the provided operand. + * @param numSubroutines The number of subroutines used to calculate the + * subroutine reference. + * @param operand The operand for the subroutine + * @return Returns the calculated subroutine number + */ + private int getSubrNumber(int numSubroutines, int operand) { + int bias = getBias(numSubroutines); + return bias + operand; + } - CFFIndexData charStrings = cffReader.getCharStringIndex(); - for (int i = 0; i < charStrings.getNumObjects(); i++) { - byte[] charData = charStrings.getValue(i); - Type2CharStringParser parser = new Type2CharStringParser(); + /** + * Gets the bias give the number of subroutines. This is used in the + * calculation to determine a subroutine's number + * @param subrCount The number of subroutines for a given index + * @return Returns the bias value + */ + private int getBias(int subrCount) { + if (subrCount < 1240) { + return 107; + } else if (subrCount < 33900) { + return 1131; + } else { + return 32768; + } + } - byte[] origCharData = origCharStringData.get(origCharStringData.keySet().toArray( - new String[0])[i]); - List origSeq = parser.parse(origCharData, origGlobalIndex, origLocalIndex); + /** + * A class representing an operator from the CharString data + */ + private class Operator extends BytesNumber { + private String opName = ""; - List subsetSeq = parser.parse(charData, globalIndexData, localIndexData); + public Operator(int number, int numBytes, String opName) { + super(number, numBytes); + this.opName = opName; + } + public String toString() { + return String.format("[%s]", opName); + } + } - //Validates the subset glyph render routines against the originals - assertEquals(origSeq, subsetSeq); + /** + * Gets the identifying name for the given operator. This is primarily + * used for debugging purposes. See the Type 2 CharString Format specification + * document (Technical Note #5177) Appendix A (Command Codes). + * @param operator The operator code + * @param codeb The second byte of the operator + * @return Returns the operator name. + */ + private String getOperatorName(int operator, int operatorB) { + switch (operator) { + case 0: return "Reserved"; + case 1: return "hstem"; + case 2: return "Reserved"; + case 3: return "vstem"; + case 4: return "vmoveto"; + case 5: return "rlineto"; + case 6: return "hlineto"; + case 7: return "vlineto"; + case 8: return "rrcurveto"; + case 9: return "Reserved"; + case 10: return "callsubr"; + case 11: return "return"; + case 12: return getDoubleOpName(operatorB); + case 13: return "Reserved"; + case 14: return "enchar"; + case 15: + case 16: + case 17: return "Reserved"; + case 18: return "hstemhm"; + case 19: return "hintmask"; + case 20: return "cntrmask"; + case 21: return "rmoveto"; + case 22: return "hmoveto"; + case 23: return "vstemhm"; + case 24: return "rcurveline"; + case 25: return "rlinecurve"; + case 26: return "vvcurveto"; + case 27: return "hhcurveto"; + case 28: return "shortint"; + case 29: return "callgsubr"; + case 30: return "vhcurveto"; + case 31: return "hvcurveto"; + default: return "Unknown"; } } + /** + * Gets the name of a double byte operator code + * @param operator The second byte of the operator + * @return Returns the name + */ + private String getDoubleOpName(int operator) { + switch (operator) { + case 0: + case 1: + case 2: return "Reserved"; + case 3: return "and"; + case 4: return "or"; + case 5: return "not"; + case 6: + case 7: + case 8: return "Reserved"; + case 9: return "abs"; + case 10: return "add"; + case 11: return "sub"; + case 12: return "div"; + case 13: return "Reserved"; + case 14: return "neg"; + case 15: return "eq"; + case 16: + case 17: return "Reserved"; + case 18: return "drop"; + case 19: return "Reserved"; + case 20: return "put"; + case 21: return "get"; + case 22: return "ifelse"; + case 23: return "random"; + case 24: return "mul"; + case 25: return "Reserved"; + case 26: return "sqrt"; + case 27: return "dup"; + case 28: return "exch"; + case 29: return "index"; + case 30: return "roll"; + case 31: + case 32: + case 33: return "Reserved"; + case 34: return "hflex"; + case 35: return "flex"; + case 36: return "hflex1"; + case 37: return "flex1"; + case 38: return "Reserved"; + default: return "Unknown"; + } + } + /** * Validates the String index data and size * @throws IOException -- 2.39.5