def readLWFN(path, onlyHeader=False): """reads an LWFN font file, returns raw data""" from fontTools.misc.macRes import ResourceReader reader = ResourceReader(path) try: data = [] for res in reader.get('POST', []): code = byteord(res.data[0]) if byteord(res.data[1]) != 0: raise T1Error('corrupt LWFN file') if code in [1, 2]: if onlyHeader and code == 2: break data.append(res.data[2:]) elif code in [3, 5]: break elif code == 4: f = open(path, "rb") data.append(f.read()) f.close() elif code == 0: pass # comment, ignore else: raise T1Error('bad chunk code: ' + repr(code)) finally: reader.close() data = bytesjoin(data) assertType1(data) return data
def readLWFN(path, onlyHeader=False): """reads an LWFN font file, returns raw data""" from fontTools.misc.macRes import ResourceReader reader = ResourceReader(path) try: data = [] for res in reader.get('POST', []): code = byteord(res.data[0]) if byteord(res.data[1]) != 0: raise T1Error('corrupt LWFN file') if code in [1, 2]: if onlyHeader and code == 2: break data.append(res.data[2:]) elif code in [3, 5]: break elif code == 4: with open(path, "rb") as f: data.append(f.read()) elif code == 0: pass # comment, ignore else: raise T1Error('bad chunk code: ' + repr(code)) finally: reader.close() data = bytesjoin(data) assertType1(data) return data
def getSFNTResIndices(path): """Determine whether a file has a 'sfnt' resource fork or not.""" try: reader = ResourceReader(path) indices = reader.getIndices('sfnt') reader.close() return indices except ResourceError: return []
def test_read_datafork(self): with tempfile.NamedTemporaryFile(delete=False) as tmp: tmp.write(TEST_RSRC_FORK) try: reader = ResourceReader(tmp.name) resources = [res for typ in reader.keys() for res in reader[typ]] reader.close() self.assertExpected(resources) finally: os.remove(tmp.name)
def __init__(self, path, res_name_or_index): reader = ResourceReader(path) if isinstance(res_name_or_index, basestring): rsrc = reader.getNamedResource('sfnt', res_name_or_index) else: rsrc = reader.getIndResource('sfnt', res_name_or_index) if rsrc is None: raise ttLib.TTLibError("sfnt resource not found: %s" % res_name_or_index) reader.close() self.rsrc = rsrc super(SFNTResourceReader, self).__init__(rsrc.data) self.name = path
def __init__(self, path, res_name_or_index): reader = ResourceReader(path) if isinstance(res_name_or_index, basestring): rsrc = reader.getNamedResource('sfnt', res_name_or_index) else: rsrc = reader.getIndResource('sfnt', res_name_or_index) if rsrc is None: raise TTLibError("sfnt resource not found: %s" % res_name_or_index) reader.close() self.rsrc = rsrc super(SFNTResourceReader, self).__init__(rsrc.data) self.name = path
def test_read_namedfork_rsrc(self): if sys.platform != 'darwin': self.skipTest('Not supported on "%s"' % sys.platform) tmp = tempfile.NamedTemporaryFile(delete=False) tmp.close() try: with open(tmp.name + '/..namedfork/rsrc', 'wb') as fork: fork.write(TEST_RSRC_FORK) reader = ResourceReader(tmp.name) resources = [res for typ in reader.keys() for res in reader[typ]] reader.close() self.assertExpected(resources) finally: os.remove(tmp.name)