MCPcopy Index your code
hub / github.com/clips/pattern / __init__

Method __init__

pattern/web/pdf/pdffont.py:269–347  ·  view source on GitHub ↗
(self, name, fp)

Source from the content-addressed store, hash-verified

267 return iter( self[i] for i in xrange(len(self)) )
268
269 def __init__(self, name, fp):
270 self.name = name
271 self.fp = fp
272 # Header
273 (_major,_minor,hdrsize,offsize) = struct.unpack('BBBB', self.fp.read(4))
274 self.fp.read(hdrsize-4)
275 # Name INDEX
276 self.name_index = self.INDEX(self.fp)
277 # Top DICT INDEX
278 self.dict_index = self.INDEX(self.fp)
279 # String INDEX
280 self.string_index = self.INDEX(self.fp)
281 # Global Subr INDEX
282 self.subr_index = self.INDEX(self.fp)
283 # Top DICT DATA
284 self.top_dict = getdict(self.dict_index[0])
285 (charset_pos,) = self.top_dict.get(15, [0])
286 (encoding_pos,) = self.top_dict.get(16, [0])
287 (charstring_pos,) = self.top_dict.get(17, [0])
288 # CharStrings
289 self.fp.seek(charstring_pos)
290 self.charstring = self.INDEX(self.fp)
291 self.nglyphs = len(self.charstring)
292 # Encodings
293 self.code2gid = {}
294 self.gid2code = {}
295 self.fp.seek(encoding_pos)
296 format = self.fp.read(1)
297 if format == '\x00':
298 # Format 0
299 (n,) = struct.unpack('B', self.fp.read(1))
300 for (code,gid) in enumerate(struct.unpack('B'*n, self.fp.read(n))):
301 self.code2gid[code] = gid
302 self.gid2code[gid] = code
303 elif format == '\x01':
304 # Format 1
305 (n,) = struct.unpack('B', self.fp.read(1))
306 code = 0
307 for i in xrange(n):
308 (first,nleft) = struct.unpack('BB', self.fp.read(2))
309 for gid in xrange(first,first+nleft+1):
310 self.code2gid[code] = gid
311 self.gid2code[gid] = code
312 code += 1
313 else:
314 raise ValueError('unsupported encoding format: %r' % format)
315 # Charsets
316 self.name2gid = {}
317 self.gid2name = {}
318 self.fp.seek(charset_pos)
319 format = self.fp.read(1)
320 if format == '\x00':
321 # Format 0
322 n = self.nglyphs-1
323 for (gid,sid) in enumerate(struct.unpack('>'+'H'*n, self.fp.read(2*n))):
324 gid += 1
325 name = self.getstr(sid)
326 self.name2gid[name] = gid

Callers 5

__init__Method · 0.45
__init__Method · 0.45
__init__Method · 0.45
__init__Method · 0.45
__init__Method · 0.45

Calls 6

getstrMethod · 0.95
getdictFunction · 0.85
lenFunction · 0.85
readMethod · 0.45
getMethod · 0.45
seekMethod · 0.45

Tested by

no test coverage detected