Adds decoder for OnebyteIdentityH/V instead of using default CMap
parent
f1a4dcea88
commit
5a0d8db052
|
@ -131,6 +131,15 @@ class IdentityCMap(CMapBase):
|
||||||
return ()
|
return ()
|
||||||
|
|
||||||
|
|
||||||
|
class IdentityCMapByte(IdentityCMap):
|
||||||
|
|
||||||
|
def decode(self, code):
|
||||||
|
n = len(code)
|
||||||
|
if n:
|
||||||
|
return struct.unpack('>%dB' % n, code)
|
||||||
|
else:
|
||||||
|
return ()
|
||||||
|
|
||||||
## UnicodeMap
|
## UnicodeMap
|
||||||
##
|
##
|
||||||
class UnicodeMap(CMapBase):
|
class UnicodeMap(CMapBase):
|
||||||
|
@ -252,6 +261,10 @@ class CMapDB(object):
|
||||||
return IdentityCMap(WMode=0)
|
return IdentityCMap(WMode=0)
|
||||||
elif name == 'Identity-V':
|
elif name == 'Identity-V':
|
||||||
return IdentityCMap(WMode=1)
|
return IdentityCMap(WMode=1)
|
||||||
|
elif name == 'OneByteIdentityH':
|
||||||
|
return IdentityCMapByte(WMode=0)
|
||||||
|
elif name == 'OneByteIdentityV':
|
||||||
|
return IdentityCMapByte(WMode=1)
|
||||||
try:
|
try:
|
||||||
return klass._cmap_cache[name]
|
return klass._cmap_cache[name]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
|
|
@ -128,7 +128,13 @@ class Type1FontHeaderParser(PSStackParser):
|
||||||
|
|
||||||
|
|
||||||
NIBBLES = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'e', 'e-', None, '-')
|
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
|
## CFFFont
|
||||||
## (Format specified in Adobe Technical Note: #5176
|
## (Format specified in Adobe Technical Note: #5176
|
||||||
|
@ -723,7 +729,7 @@ class PDFCIDFont(PDFFont):
|
||||||
raise PDFFontError('CMapName unspecified for encoding')
|
raise PDFFontError('CMapName unspecified for encoding')
|
||||||
cmap_name = 'unknown'
|
cmap_name = 'unknown'
|
||||||
if cmap_name in IDENTITY_ENCODER:
|
if cmap_name in IDENTITY_ENCODER:
|
||||||
return CMapDB.get_cmap(cmap_name)
|
return CMapDB.get_cmap(IDENTITY_ENCODER[cmap_name])
|
||||||
else:
|
else:
|
||||||
return CMap()
|
return CMap()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue