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/28 22:50:19 UTC
svn commit: r1621202 - in /pdfbox/branches/no-awt:
fontbox/src/main/java/org/apache/fontbox/cff/CFFCharset.java
pdfbox/src/main/java/org/apache/pdfbox/encoding/DictionaryEncoding.java
Author: jahewson
Date: Thu Aug 28 20:50:18 2014
New Revision: 1621202
URL: http://svn.apache.org/r1621202
Log:
PDFBOX-2262: Expose encoding details for debugging
Modified:
pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/cff/CFFCharset.java
pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/encoding/DictionaryEncoding.java
Modified: pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/cff/CFFCharset.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/cff/CFFCharset.java?rev=1621202&r1=1621201&r2=1621202&view=diff
==============================================================================
--- pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/cff/CFFCharset.java (original)
+++ pdfbox/branches/no-awt/fontbox/src/main/java/org/apache/fontbox/cff/CFFCharset.java Thu Aug 28 20:50:18 2014
@@ -33,6 +33,10 @@ public abstract class CFFCharset
private final Map<Integer, Integer> gidToSid = new HashMap<Integer, Integer>();
private final Map<String, Integer> nameToSid = new HashMap<String, Integer>();
+ // inverse
+ private final Map<Integer, Integer> gidToCid = new HashMap<Integer, Integer>();
+ private final Map<Integer, String> gidToName = new HashMap<Integer, String>();
+
/**
* Package-private constructor for use by subclasses.
*
@@ -58,6 +62,7 @@ public abstract class CFFCharset
sidOrCidToGid.put(sid, gid);
gidToSid.put(gid, sid);
nameToSid.put(name, sid);
+ gidToName.put(gid, name);
}
/**
@@ -73,6 +78,7 @@ public abstract class CFFCharset
throw new IllegalStateException("Not a CIDFont");
}
sidOrCidToGid.put(cid, gid);
+ gidToCid.put(gid, cid);
}
/**
@@ -155,4 +161,34 @@ public abstract class CFFCharset
}
return sid;
}
+
+ /**
+ * Returns the PostScript glyph name for the given GID.
+ *
+ * @param gid GID
+ * @return PostScript glyph name
+ */
+ public String getNameForGID(int gid)
+ {
+ if (isCIDFont)
+ {
+ throw new IllegalStateException("Not a Type 1-equivalent font");
+ }
+ return gidToName.get(gid);
+ }
+
+ /**
+ * Returns the CID for the given GID.
+ *
+ * @param gid GID
+ * @return CID
+ */
+ public int getCIDForGID(int gid)
+ {
+ if (!isCIDFont)
+ {
+ throw new IllegalStateException("Not a CIDFont");
+ }
+ return gidToCid.get(gid);
+ }
}
Modified: pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/encoding/DictionaryEncoding.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/encoding/DictionaryEncoding.java?rev=1621202&r1=1621201&r2=1621202&view=diff
==============================================================================
--- pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/encoding/DictionaryEncoding.java (original)
+++ pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/encoding/DictionaryEncoding.java Thu Aug 28 20:50:18 2014
@@ -1,4 +1,5 @@
/*
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
@@ -33,7 +34,7 @@ import org.apache.pdfbox.cos.COSNumber;
public class DictionaryEncoding extends Encoding
{
private final COSDictionary encoding;
- private final String baseEncoding;
+ private final Encoding baseEncoding;
private final Map<Integer, String> differences = new HashMap<Integer, String>();
/**
@@ -47,11 +48,11 @@ public class DictionaryEncoding extends
if (baseEncoding != COSName.STANDARD_ENCODING)
{
encoding.setItem(COSName.BASE_ENCODING, baseEncoding);
- this.baseEncoding = COSName.BASE_ENCODING.getName();
+ this.baseEncoding = Encoding.getInstance(baseEncoding);
}
else
{
- this.baseEncoding = baseEncoding.getName();
+ this.baseEncoding = Encoding.getInstance(baseEncoding);
}
}
@@ -64,18 +65,15 @@ public class DictionaryEncoding extends
{
encoding = fontEncoding;
- Encoding baseEncoding;
if (encoding.containsKey(COSName.BASE_ENCODING))
{
COSName name = encoding.getCOSName(COSName.BASE_ENCODING);
baseEncoding = Encoding.getInstance(name);
- this.baseEncoding = name.getName();
}
else if (isNonSymbolic)
{
// Otherwise, for a nonsymbolic font, it is StandardEncoding
baseEncoding = StandardEncoding.INSTANCE;
- this.baseEncoding = COSName.STANDARD_ENCODING.getName();
}
else
{
@@ -85,7 +83,6 @@ public class DictionaryEncoding extends
{
throw new IllegalArgumentException("Built-in Encoding required for symbolic font");
}
- this.baseEncoding = null;
}
codeToName.putAll( baseEncoding.codeToName );
@@ -112,9 +109,9 @@ public class DictionaryEncoding extends
}
/**
- * Returns the name of the base encoding, or null if using the font's built-in encoding.
+ * Returns the base encoding.
*/
- public String getBaseEncoding()
+ public Encoding getBaseEncoding()
{
return baseEncoding;
}