[merge] Minor
diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py
index a432a3c..28195d1 100644
--- a/Lib/fontTools/merge.py
+++ b/Lib/fontTools/merge.py
@@ -113,21 +113,25 @@
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 @@
'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 @@
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