Applied upstream as r3028 r3025 r3024
[PyX/mjg.git] / pyx / dvi / encfile.py
blob04bcfe216aa011226609001b08bcae3efb93ae1d
1 from pyx import reader
3 class ENFfileError(Exception):
4 pass
6 class ENCfile:
8 def __init__(self, filename):
9 encfile = open(filename, "rb")
10 c = reader.PStokenizer(encfile.read(), "")
11 encfile.close()
13 # name of encoding
14 self.name = c.gettoken()
15 token = c.gettoken()
16 if token != "[":
17 raise ENCfileError("cannot parse encoding file '%s', expecting '[' got '%s'" % (filename, token))
18 self.vector = []
19 for i in range(256):
20 token = c.gettoken()
21 if token == "]":
22 raise ENCfileError("not enough charcodes in encoding file '%s'" % filename)
23 if not token[0] == "/":
24 raise ENCfileError("token does not start with / in encoding file '%s'" % filename)
25 self.vector.append(token[1:])
26 if c.gettoken() != "]":
27 raise ENCfileError("too many charcodes in encoding file '%s'" % filename)
28 token = c.gettoken()
29 if token != "def":
30 raise ENCfileError("cannot parse encoding file '%s', expecting 'def' got '%s'" % (filename, token))