aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2014-03-28 14:58:12 -0700
committerBehdad Esfahbod <behdad@behdad.org>2014-03-28 14:58:12 -0700
commit201a68182159fdf58cf54472ef5f4ea4260984e4 (patch)
tree0e16282cabc08965b71ce62243fe8052c9ab8123
parent0e235becc52d6048dde39f3bb400c617877302d7 (diff)
downloadfonttools-201a68182159fdf58cf54472ef5f4ea4260984e4.tar.gz
[merge] Minor
-rw-r--r--Lib/fontTools/merge.py34
1 files changed, 19 insertions, 15 deletions
diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py
index a432a3ce..28195d1f 100644
--- a/Lib/fontTools/merge.py
+++ b/Lib/fontTools/merge.py
@@ -113,21 +113,25 @@ def mergeObjects(lst):
return returnTable
-def mergeBits(bitmap, lst):
- lst = list(lst)
- returnValue = 0
- for bitNumber in range(bitmap['size']):
- try:
- mergeLogic = bitmap[bitNumber]
- except KeyError:
+def mergeBits(bitmap):
+
+ def wrapper(lst):
+ lst = list(lst)
+ returnValue = 0
+ for bitNumber in range(bitmap['size']):
try:
- mergeLogic = bitmap['*']
+ mergeLogic = bitmap[bitNumber]
except KeyError:
- raise Exception("Don't know how to merge bit %s" % bitNumber)
- shiftedBit = 1 << bitNumber
- mergedValue = mergeLogic(bool(item & shiftedBit) for item in lst)
- returnValue |= mergedValue << bitNumber
- return returnValue
+ try:
+ mergeLogic = bitmap['*']
+ except KeyError:
+ raise Exception("Don't know how to merge bit %s" % bitNumber)
+ shiftedBit = 1 << bitNumber
+ mergedValue = mergeLogic(bool(item & shiftedBit) for item in lst)
+ returnValue |= mergedValue << bitNumber
+ return returnValue
+
+ return wrapper
@_add_method(DefaultTable, allowDefaultTable=True)
@@ -176,7 +180,7 @@ ttLib.getTableClass('head').mergeMap = {
'fontRevision': max,
'checkSumAdjustment': lambda lst: 0, # We need *something* here
'magicNumber': equal,
- 'flags': lambda lst: mergeBits(headFlagsMergeBitMap, lst),
+ 'flags': mergeBits(headFlagsMergeBitMap),
'unitsPerEm': equal,
'created': current_time,
'modified': current_time,
@@ -235,7 +239,7 @@ def mergeOs2FsType(lst):
elif lst[i] == 0:
lst[i] = 0x000C
- fsType = mergeBits(os2FsTypeMergeBitMap, lst)
+ fsType = mergeBits(os2FsTypeMergeBitMap)(lst)
# unset bits 2 and 3 if bit 1 is set (some font is "no embedding")
if fsType & 0x0002:
fsType &= ~0x000C