Take AxisDescriptor (or objects conforming to its interface) in addFvar

This commit is contained in:
Simon Cozens 2021-02-11 15:44:54 +00:00
parent 8a58225e6d
commit 731f6a3107

View File

@ -634,8 +634,9 @@ class FontBuilder(object):
axes (list): See below. axes (list): See below.
instances (list): See below. instances (list): See below.
The axes should be a list of iterables; each axis should be supplied ``axes`` should be a list as axes, with each axis either supplied as
in the format ```tupletag, minValue, defaultValue, maxValue, name``. a py:class:`.designspaceLib.AxisDescriptor` object, or a tuple in the
format ```tupletag, minValue, defaultValue, maxValue, name``.
The ``name`` is either a string, or a dict, mapping language codes The ``name`` is either a string, or a dict, mapping language codes
to strings, to allow localized name table entries. to strings, to allow localized name table entries.
@ -843,16 +844,33 @@ def buildCmapSubTable(cmapping, format, platformID, platEncID):
def addFvar(font, axes, instances): def addFvar(font, axes, instances):
from .ttLib.tables._f_v_a_r import Axis, NamedInstance from .ttLib.tables._f_v_a_r import Axis, NamedInstance
from .designspaceLib import AxisDescriptor
assert axes assert axes
fvar = newTable('fvar') fvar = newTable("fvar")
nameTable = font['name'] nameTable = font["name"]
for tag, minValue, defaultValue, maxValue, name in axes: for axis_def in axes:
axis = Axis() axis = Axis()
axis.axisTag = tag
axis.minValue, axis.defaultValue, axis.maxValue = minValue, defaultValue, maxValue if isinstance(axis_def, tuple):
(
axis.axisTag,
axis.minValue,
axis.defaultValue,
axis.maxValue,
name,
) = axis_def
else:
(axis.axisTag, axis.minValue, axis.defaultValue, axis.maxValue, name) = (
axis_def.tag,
axis_def.minimum,
axis_def.default,
axis_def.maximum,
axis_def.name,
)
if isinstance(name, str): if isinstance(name, str):
name = dict(en=name) name = dict(en=name)