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

View File

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