You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/08/19 00:40:05 UTC
svn commit: r1618762 - in /pdfbox/branches/no-awt:
fontbox/src/main/java/org/apache/fontbox/cmap/CodespaceRange.java
pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
Author: jahewson
Date: Mon Aug 18 22:40:05 2014
New Revision: 1618762
URL: http://svn.apache.org/r1618762
Log:
PDFBOX-2262: Added TODOs for variable-byte CMap encodings
Modified:
pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/cmap/CodespaceRange.java
pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
Modified: pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/cmap/CodespaceRange.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/cmap/CodespaceRange.java?rev=1618762&r1=1618761&r2=1618762&view=diff
==============================================================================
--- pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/cmap/CodespaceRange.java (original)
+++ pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/cmap/CodespaceRange.java Mon Aug 18 22:40:05 2014
@@ -90,8 +90,8 @@ public class CodespaceRange
{
for ( int i = 0; i < end.length; i++ )
{
- int endInt = ((int)end[i]) & 0xFF;
- int codeInt = ((int)code[offset + i]) & 0xFF;
+ int endInt = (int)end[i] & 0xFF;
+ int codeInt = (int)code[offset + i] & 0xFF;
if ( endInt < codeInt )
{
return false;
@@ -102,8 +102,8 @@ public class CodespaceRange
{
for ( int i = 0; i < end.length; i++ )
{
- int startInt = ((int)start[i]) & 0xFF;
- int codeInt = ((int)code[offset + i]) & 0xFF;
+ int startInt = (int)start[i] & 0xFF;
+ int codeInt = (int)code[offset + i] & 0xFF;
if ( startInt > codeInt )
{
return false;
Modified: pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java?rev=1618762&r1=1618761&r2=1618762&view=diff
==============================================================================
--- pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java (original)
+++ pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java Mon Aug 18 22:40:05 2014
@@ -417,6 +417,13 @@ public class PDFStreamEngine
// "When the current font is a CIDFont, the string to be shown shall contain pairs of
// bytes representing CIDs, high-order byte first."
+ // fixme: sanity check
+ if (!font.getCMap().getName().equals("Identity-H") &&
+ !font.getCMap().getName().equals("Identity-V"))
+ {
+ throw new UnsupportedOperationException("CMap Not implemented: " + font.getCMap().getName());
+ }
+
// todo: ((PDType0Font)font).getCMap().hasTwoByteMappings() ???
codeLength = 2; // todo: HACK, see "9.7.6.2 CMap Mapping" (also p275 for Identity-H or Identity-V,)
}
@@ -427,6 +434,12 @@ public class PDFStreamEngine
for (int i = 0; i < string.length; i += codeLength)
{
+ // fixme: sanity check
+ if (i + codeLength > string.length)
+ {
+ throw new UnsupportedOperationException("Not enough data: " + string.length + " < " + (i + codeLength));
+ }
+
// Decode the value to a Unicode character
String unicode = font.encode(string, i, codeLength);
int[] charCodes;