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/12/19 14:01:39 UTC
svn commit: r1646697 -
/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
Author: jahewson
Date: Fri Dec 19 13:01:38 2014
New Revision: 1646697
URL: http://svn.apache.org/r1646697
Log:
PDFBOX-2571: Use identity charset for CFF fonts with missing charset
Modified:
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java?rev=1646697&r1=1646696&r2=1646697&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cff/CFFParser.java Fri Dec 19 13:01:38 2014
@@ -383,15 +383,15 @@ public class CFFParser
if (charsetEntry != null)
{
int charsetId = charsetEntry.getNumber(0).intValue();
- if (charsetId == 0)
+ if (isCIDFont && charsetId == 0)
{
charset = CFFISOAdobeCharset.getInstance();
}
- else if (charsetId == 1)
+ else if (isCIDFont && charsetId == 1)
{
charset = CFFExpertCharset.getInstance();
}
- else if (charsetId == 2)
+ else if (isCIDFont && charsetId == 2)
{
charset = CFFExpertSubsetCharset.getInstance();
}
@@ -406,11 +406,10 @@ public class CFFParser
if (isCIDFont)
{
// a CID font with no charset does not default to any predefined charset
- charset = new EmptyCharset();
+ charset = new EmptyCharset(charStringsIndex.getCount());
}
else
{
- //FIXME PDFBOX-2571
charset = CFFISOAdobeCharset.getInstance();
}
}
@@ -1289,10 +1288,16 @@ public class CFFParser
*/
private static class EmptyCharset extends EmbeddedCharset
{
- protected EmptyCharset()
+ protected EmptyCharset(int numCharStrings)
{
super(true);
addCID(0 ,0); // .notdef
+
+ // Adobe Reader treats CID as GID, PDFBOX-2571 p11.
+ for (int i = 1; i <= numCharStrings; i++)
+ {
+ addCID(i, i);
+ }
}
@Override