Author: lehmi Date: Sun Feb 26 14:38:51 2017 New Revision: 1784450 URL: http://svn.apache.org/viewvc?rev=1784450&view=rev Log: PDFBOX-3579: use fraction value instead of ignoring it
Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java?rev=1784450&r1=1784449&r2=1784450&view=diff ============================================================================== --- pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java (original) +++ pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/cff/Type2CharStringParser.java Sun Feb 26 14:38:51 2017 @@ -208,7 +208,7 @@ public class Type2CharStringParser return new CharStringCommand(b0); } - private Integer readNumber(int b0, DataInput input) throws IOException + private Number readNumber(int b0, DataInput input) throws IOException { if (b0 == 28) @@ -230,15 +230,13 @@ public class Type2CharStringParser int b1 = input.readUnsignedByte(); return -(b0 - 251) * 256 - b1 - 108; - } + } else if (b0 == 255) { short value = input.readShort(); - // The lower bytes are representing the digits after - // the decimal point and aren't needed in this context - input.readUnsignedByte(); - input.readUnsignedByte(); - return (int) value; + // The lower bytes are representing the digits after the decimal point + double fraction = input.readUnsignedShort() / 65535d; + return value + fraction; } else {