varLib. replace slower pointsDiffer() with models.AllEqual()
This commit is contained in:
parent
8d40bf8448
commit
c5def97cd8
@ -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]
|
||||||
|
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user