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/27 00:07:48 UTC
svn commit: r1620752 -
/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
Author: jahewson
Date: Tue Aug 26 22:07:47 2014
New Revision: 1620752
URL: http://svn.apache.org/r1620752
Log:
PDFBOX-2262: Allow references to external GIDs in non-embedded TTFs
Modified:
pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
Modified: pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java?rev=1620752&r1=1620751&r2=1620752&view=diff
==============================================================================
--- pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java (original)
+++ pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2.java Tue Aug 26 22:07:47 2014
@@ -47,6 +47,7 @@ public class PDCIDFontType2 extends PDCI
private final TrueTypeFont ttf;
private final int[] cid2gid;
+ private final boolean hasIdentityCid2Gid;
private final boolean isEmbedded;
private Matrix fontMatrix;
@@ -87,6 +88,15 @@ public class PDCIDFontType2 extends PDCI
}
cid2gid = readCIDToGIDMap();
+ COSBase map = dict.getDictionaryObject(COSName.CID_TO_GID_MAP);
+ if (map instanceof COSName && ((COSName) map).getName().equals("Identity"))
+ {
+ hasIdentityCid2Gid = true;
+ }
+ else
+ {
+ hasIdentityCid2Gid = false;
+ }
}
@Override
@@ -175,10 +185,23 @@ public class PDCIDFontType2 extends PDCI
CmapSubtable cmap = getUnicodeCmap(ttf.getCmap());
String unicode;
- // non-symbolic behaviour for Type2 TTFs isn't well documented, test with PDFBOX-1422
- if (!parent.isSymbolic()) // todo: but this descendant font has its own flags?
+ if (cid2gid != null || hasIdentityCid2Gid)
{
- // if the font descriptor?s Nonsymbolic flag is set, the conforming reader shall
+ // strange but true, Acrobat allows non-embedded GIDs, test with PDFBOX-2060
+ if (hasIdentityCid2Gid)
+ {
+ return cid;
+ }
+ else
+ {
+ return cid2gid[cid];
+ }
+ }
+ if (!parent.isSymbolic())
+ {
+ // this nonsymbolic behaviour isn't well documented, test with PDFBOX-1422
+
+ // if the font descriptor's Nonsymbolic flag is set, the conforming reader shall
// create a table that maps from character codes to glyph names
String name = null;