diff --git a/pdfminer/cmapdb.py b/pdfminer/cmapdb.py index c3403d1..f7f4a0b 100644 --- a/pdfminer/cmapdb.py +++ b/pdfminer/cmapdb.py @@ -131,6 +131,15 @@ class IdentityCMap(CMapBase): return () +class IdentityCMapByte(IdentityCMap): + + def decode(self, code): + n = len(code) + if n: + return struct.unpack('>%dB' % n, code) + else: + return () + ## UnicodeMap ## class UnicodeMap(CMapBase): @@ -252,6 +261,10 @@ class CMapDB(object): return IdentityCMap(WMode=0) elif name == 'Identity-V': return IdentityCMap(WMode=1) + elif name == 'OneByteIdentityH': + return IdentityCMapByte(WMode=0) + elif name == 'OneByteIdentityV': + return IdentityCMapByte(WMode=1) try: return klass._cmap_cache[name] except KeyError: diff --git a/pdfminer/pdffont.py b/pdfminer/pdffont.py index 9f24afb..17b80cd 100644 --- a/pdfminer/pdffont.py +++ b/pdfminer/pdffont.py @@ -128,7 +128,13 @@ class Type1FontHeaderParser(PSStackParser): NIBBLES = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'e', 'e-', None, '-') -IDENTITY_ENCODER = ('Identity-H', 'Identity-V') +IDENTITY_ENCODER = {'Identity-H':'Identity-H', + 'Identity-V':'Identity-V', + 'DLIdent-H':'Identity-H', + 'DLIdent-V':'Identity-V', + 'OneByteIdentityH':'OneByteIdentityH', + 'OneByteIdentityV':'OneByteIdentityV', + } ## CFFFont ## (Format specified in Adobe Technical Note: #5176 @@ -723,7 +729,7 @@ class PDFCIDFont(PDFFont): raise PDFFontError('CMapName unspecified for encoding') cmap_name = 'unknown' if cmap_name in IDENTITY_ENCODER: - return CMapDB.get_cmap(cmap_name) + return CMapDB.get_cmap(IDENTITY_ENCODER[cmap_name]) else: return CMap()