Exemple #1
0
def buildVarCoDesignSpaceDocument(ufo, ufoPath, axes, axisNames):
    from fontTools.designspaceLib import DesignSpaceDocument

    globalAxisNames = set(axes.keys())
    globalAxes = [
        dict(
            name=axisNames[axisTag],
            tag=axisTag,
            minimum=minValue,
            default=defaultValue,
            maximum=maxValue,
        ) for axisTag, (minValue, defaultValue, maxValue) in axes.items()
    ]

    globalAxisMapping = {
        axis["tag"]: (axis["name"], axis["minimum"], axis["maximum"])
        for axis in globalAxes
    }

    doc = DesignSpaceDocument()

    localAxes = set()
    for layerName in ufo.layers.keys():
        if layerName == "public.default":
            location = {}
            layerName = None
        else:
            location = parseLayerName(layerName)
        for axisName, axisValue in location.items():
            if axisName not in globalAxisNames:
                localAxes.add(axisName)

        unnormalizedLocation = {}
        for axisName, axisValue in location.items():
            if axisName in globalAxisMapping:
                axisName, minimum, maximum = globalAxisMapping[axisName]
                axisValue = minimum + (maximum - minimum) * axisValue
            unnormalizedLocation[axisName] = axisValue

        doc.addSourceDescriptor(path=ufoPath,
                                layerName=layerName,
                                location=unnormalizedLocation)

    for axisDict in globalAxes:
        doc.addAxisDescriptor(**axisDict)

    for axisName in sorted(localAxes):
        assert axisName.startswith("V")
        assert len(axisName) == 4
        doc.addAxisDescriptor(name=axisName,
                              tag=axisName,
                              minimum=-1,
                              default=0,
                              maximum=1,
                              hidden=True)
    return doc
def test_addAxisDescriptor_discrete():
    ds = DesignSpaceDocument()

    axis = ds.addAxisDescriptor(
        name="Italic",
        tag="ital",
        values=[0, 1],
        default=0,
        hidden=True,
        map=[(0, -12), (1, 0)],
        axisOrdering=3,
        axisLabels=[
            AxisLabelDescriptor(
                name="Roman",
                userValue=0,
                elidable=True,
                olderSibling=True,
                linkedUserValue=1,
                labelNames={"fr": "Romain"},
            )
        ],
    )

    assert ds.axes[0] is axis
    assert_descriptors_equal(
        [axis],
        [
            DiscreteAxisDescriptor(
                tag="ital",
                name="Italic",
                values=[0, 1],
                default=0,
                hidden=True,
                map=[(0, -12), (1, 0)],
                axisOrdering=3,
                axisLabels=[
                    AxisLabelDescriptor(
                        name="Roman",
                        userValue=0,
                        elidable=True,
                        olderSibling=True,
                        linkedUserValue=1,
                        labelNames={"fr": "Romain"},
                    )
                ],
            )
        ],
    )
Exemple #3
0
def test_addAxisDescriptor():
    ds = DesignSpaceDocument()

    axis = ds.addAxisDescriptor(name="Weight",
                                tag="wght",
                                minimum=100,
                                default=400,
                                maximum=900)

    assert ds.axes[0] is axis
    assert isinstance(axis, AxisDescriptor)
    assert axis.name == "Weight"
    assert axis.tag == "wght"
    assert axis.minimum == 100
    assert axis.default == 400
    assert axis.maximum == 900