varLib. replace slower pointsDiffer() with models.AllEqual()

This commit is contained in:
ReadRoberts 2018-11-19 17:38:52 -08:00
parent 8d40bf8448
commit c5def97cd8
2 changed files with 5 additions and 7 deletions

View File

@ -12,6 +12,7 @@ from fontTools.cffLib import (TopDictIndex,
from fontTools.cffLib.cff2mergePen import CFF2CharStringMergePen
from fontTools.ttLib import newTable
from fontTools import varLib
from fontTools.varLib.models import allEqual
def addCFFVarStore(varFont, varModel):
@ -105,10 +106,6 @@ def lib_convertCFFToCFF2(cff, otFont):
cff.decompile(file, otFont, isCFF2=True)
def pointsDiffer(pointList):
return not (max(pointList) == min(pointList))
def convertCFFtoCFF2(varFont):
# Convert base font to a single master CFF2 font.
cffTable = varFont['CFF ']
@ -187,7 +184,7 @@ def merge_PrivateDicts(topDict, region_top_dicts, num_masters, var_model):
for val_list in values:
rel_list = [(val - prev_val_list[i]) for (
i, val) in enumerate(val_list)]
if (not any_points_differ) and pointsDiffer(rel_list):
if (not any_points_differ) and not allEqual(rel_list):
any_points_differ = True
prev_val_list = val_list
deltas = var_model.getDeltas(rel_list)
@ -203,7 +200,7 @@ def merge_PrivateDicts(topDict, region_top_dicts, num_masters, var_model):
dataList = [data[0] for data in dataList]
else:
values = [pd.rawDict[key] for pd in pds]
if pointsDiffer(values):
if not allEqual(values):
dataList = var_model.getDeltas(values)
else:
dataList = values[0]

View File

@ -4,6 +4,7 @@ from fontTools.pens.t2CharStringPen import T2CharStringPen, t2c_round
from fontTools.cffLib.specializer import (commandsToProgram,
specializeCommands)
from fontTools.cffLib import maxStackLimit
from fontTools.varLib.models import allEqual
class MergeTypeError(TypeError):
@ -271,7 +272,7 @@ class CFF2CharStringMergePen(T2CharStringPen):
prev_coord = x0 if is_x else y0
rel_coord = [pt[0] - pt[1] for pt in zip(coord, prev_coord)]
if max(rel_coord) == min(rel_coord):
if allEqual(rel_coord):
rel_coord = rel_coord[0]
rel_coords.append(rel_coord)
if is_x: