File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2424import binascii
2525import enum
2626import itertools
27+ import logging
2728import re
2829import struct
2930
3233from matplotlib .cbook import _format_approx
3334from . import _api
3435
36+ _log = logging .getLogger (__name__ )
3537
3638# token types
3739_TokenType = enum .Enum ('_TokenType' ,
@@ -129,13 +131,16 @@ def _split(self, data):
129131 zeros -= 1
130132 idx -= 1
131133 if zeros :
132- raise RuntimeError ('Insufficiently many zeros in Type 1 font' )
134+ # this may have been a problem on old implementations that
135+ # used the zeros as necessary padding
136+ _log .info ('Insufficiently many zeros in Type 1 font' )
133137
134138 # Convert encrypted part to binary (if we read a pfb file, we may end
135139 # up converting binary to hexadecimal to binary again; but if we read
136140 # a pfa file, this part is already in hex, and I am not quite sure if
137141 # even the pfb format guarantees that it will be in binary).
138- binary = binascii .unhexlify (data [len1 :idx + 1 ])
142+ idx1 = len1 + ((idx - len1 + 2 ) & ~ 1 ) # ensure an even number of bytes
143+ binary = binascii .unhexlify (data [len1 :idx1 ])
139144
140145 return data [:len1 ], binary , data [idx + 1 :]
141146
You can’t perform that action at this time.
0 commit comments