diff --git a/Lib/fontTools/cffLib/cff2_merge_funcs.py b/Lib/fontTools/cffLib/cff2_merge_funcs.py index 5c2312a3c..983f22312 100644 --- a/Lib/fontTools/cffLib/cff2_merge_funcs.py +++ b/Lib/fontTools/cffLib/cff2_merge_funcs.py @@ -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] diff --git a/Lib/fontTools/cffLib/cff2mergePen.py b/Lib/fontTools/cffLib/cff2mergePen.py index a89181d9a..2d2ddfe1c 100644 --- a/Lib/fontTools/cffLib/cff2mergePen.py +++ b/Lib/fontTools/cffLib/cff2mergePen.py @@ -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: