@@ -256,13 +256,13 @@ def _transformer(cls, tokens, slant, extend):
256256 def fontname (name ):
257257 result = name
258258 if slant :
259- result += '_Slant_' + str (int (1000 * slant ))
259+ result += b '_Slant_' + bytes (int (1000 * slant ))
260260 if extend != 1.0 :
261- result += '_Extend_' + str (int (1000 * extend ))
261+ result += b '_Extend_' + bytes (int (1000 * extend ))
262262 return result
263263
264264 def italicangle (angle ):
265- return str (float (angle ) - np .arctan (slant ) / np .pi * 180 )
265+ return bytes (float (angle ) - np .arctan (slant ) / np .pi * 180 )
266266
267267 def fontmatrix (array ):
268268 array = array .lstrip ('[' ).rstrip (']' ).strip ().split ()
@@ -276,31 +276,31 @@ def fontmatrix(array):
276276 newmatrix = np .dot (modifier , oldmatrix )
277277 array [::2 ] = newmatrix [0 :3 , 0 ]
278278 array [1 ::2 ] = newmatrix [0 :3 , 1 ]
279- return '[' + ' ' .join (str (x ) for x in array ) + ']'
279+ return b '[' + ' ' .join (bytes (x ) for x in array ) + b ']'
280280
281281 def replace (fun ):
282282 def replacer (tokens ):
283283 token , value = next (tokens ) # name, e.g., /FontMatrix
284- yield value
284+ yield bytes ( value )
285285 token , value = next (tokens ) # possible whitespace
286286 while token == 'whitespace' :
287- yield value
287+ yield bytes ( value )
288288 token , value = next (tokens )
289289 if value != '[' : # name/number/etc.
290- yield fun (value )
290+ yield bytes ( fun (value ) )
291291 else : # array, e.g., [1 2 3]
292292 array = []
293293 while value != ']' :
294294 array += value
295295 token , value = next (tokens )
296296 array += value
297- yield fun ('' .join (array ))
297+ yield bytes ( fun ('' .join (array ) ))
298298 return replacer
299299
300300 def suppress (tokens ):
301301 for x in itertools .takewhile (lambda x : x [1 ] != 'def' , tokens ):
302302 pass
303- yield ''
303+ yield b ''
304304
305305 table = {'/FontName' : replace (fontname ),
306306 '/ItalicAngle' : replace (italicangle ),
@@ -325,18 +325,10 @@ def transform(self, effects):
325325 multiplier by which the font is to be extended (so values less
326326 than 1.0 condense). Returns a new :class:`Type1Font` object.
327327 """
328- buffer = io .BytesIO ()
329- try :
328+ with io .BytesIO () as buffer :
330329 tokenizer = self ._tokens (self .parts [0 ])
331- for value in self ._transformer (tokenizer ,
332- slant = effects .get ('slant' , 0.0 ),
333- extend = effects .get ('extend' , 1.0 )):
334- if six .PY3 and isinstance (value , int ):
335- value = chr (value )
336- value = value .encode ('latin-1' )
337- buffer .write (value )
338- result = buffer .getvalue ()
339- finally :
340- buffer .close ()
341-
342- return Type1Font ((result , self .parts [1 ], self .parts [2 ]))
330+ transformed = self ._transformer (tokenizer ,
331+ slant = effects .get ('slant' , 0.0 ),
332+ extend = effects .get ('extend' , 1.0 ))
333+ map (buffer .write , transformed )
334+ return Type1Font ((buffer .getvalue (), self .parts [1 ], self .parts [2 ]))
0 commit comments