8000 Streamline type1font.py · matplotlib/matplotlib@f796024 · GitHub
[go: up one dir, main page]

Skip to content

Commit f796024

Browse files
committed
Streamline type1font.py
1 parent fdf1bb5 commit f796024

File tree

1 file changed

+15
-23
lines changed

1 file changed

+15
-23
lines changed

lib/matplotlib/type1font.py

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)
0