macRes: Tools for reading Mac resource forks
Classic Mac OS files are made up of two parts - the “data fork” which contains the file contents proper, and the “resource fork” which contains a number of structured data items called “resources”. Some fonts, such as Mac “font suitcases” and Type 1 LWFN fonts, still use the resource fork for this kind of structured data, and so to read them, fontTools needs to have access to resource forks.
The Inside Macintosh volume More Macintosh Toolbox explains the structure of resource and data forks.
- exception fontTools.misc.macRes.ResourceError[source]
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- class fontTools.misc.macRes.ResourceReader(fileOrPath)[source]
Reader for Mac OS resource forks.
Parses a resource fork and returns resources according to their type. If run on OS X, this will open the resource fork in the filesystem. Otherwise, it will open the file itself and attempt to read it as though it were a resource fork.
The returned object can be indexed by type and iterated over, returning in each case a list of py:class:Resource objects representing all the resources of a certain type.
- property types
A list of the types of resources in the resource fork.
- getIndResource(resType, index)[source]
Return resource of given type located at an index ranging from 1 to the number of resources for that type, or None if not found.
- clear() None. Remove all items from D.
- get(k[, d]) D[k] if k in D, else d. d defaults to None.
- items() a set-like object providing a view on D's items
- pop(k[, d]) v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised.
- popitem() (k, v), remove and return some (key, value) pair
as a 2-tuple; but raise KeyError if D is empty.
- setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D
- update([E, ]**F) None. Update D from mapping/iterable E and F.
If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v
- values() an object providing a view on D's values