improved API for creating AFM files from scratch
git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@134 4cde692c-a291-49d1-8350-778aa11640f8
diff --git a/Lib/fontTools/afmLib.py b/Lib/fontTools/afmLib.py
index 5cf5c8a..e927b6b 100644
--- a/Lib/fontTools/afmLib.py
+++ b/Lib/fontTools/afmLib.py
@@ -8,7 +8,7 @@
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 @@
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 @@
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 @@
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"):