diff --git a/Lib/fontTools/afmLib.py b/Lib/fontTools/afmLib.py index 5cf5c8aef..e927b6bd4 100644 --- a/Lib/fontTools/afmLib.py +++ b/Lib/fontTools/afmLib.py @@ -8,7 +8,7 @@ import re import string import types -__version__ = "$Id: afmLib.py,v 1.2 2001-04-30 14:40:17 Just Exp $" +__version__ = "$Id: afmLib.py,v 1.3 2001-06-24 15:11:31 Just Exp $" # every single line starts with a "word" @@ -189,7 +189,7 @@ class AFM: assert len(components) == ncomponents self._composites[charname] = components - def write(self, path, sep = '\r'): + def write(self, path, sep='\r'): import time lines = [ "StartFontMetrics 2.0", "Comment Generated by afmLib, version %s; at %s" % @@ -281,6 +281,12 @@ class AFM: def comments(self): return self._comments + def addComment(self, comment): + self._comments.append(comment) + + def addComposite(self, glyphName, components): + self._composites[glyphName] = components + def __getattr__(self, attr): if self._attrs.has_key(attr): return self._attrs[attr] @@ -294,19 +300,42 @@ class AFM: else: self._attrs[attr] = value + def __delattr__(self, attr): + # all attrs *not* starting with "_" are consider to be AFM keywords + if attr[:1] == "_": + try: + del self.__dict__[attr] + except KeyError: + raise AttributeError, attr + else: + try: + del self._attrs[attr] + except KeyError: + raise AttributeError, attr + def __getitem__(self, key): if type(key) == types.TupleType: # key is a tuple, return the kernpair - if self._kerning.has_key(key): - return self._kerning[key] - else: - raise KeyError, "no kerning pair: " + str(key) + return self._kerning[key] else: # return the metrics instead - if self._chars.has_key(key): - return self._chars[key] - else: - raise KeyError, "metrics index " + str(key) + " out of range" + return self._chars[key] + + def __setitem__(self, key, value): + if type(key) == types.TupleType: + # key is a tuple, set kernpair + self._kerning[key] = value + else: + # set char metrics + self._chars[key] = value + + def __delitem__(self, key): + if type(key) == types.TupleType: + # key is a tuple, del kernpair + del self._kerning[key] + else: + # del char metrics + del self._chars[key] def __repr__(self): if hasattr(self, "FullName"):