Beispiel #1
0
 def makeFont(axisTags):
     """['opsz', 'wdth'] --> ttFont"""
     fvar = table__f_v_a_r()
     for tag in axisTags:
         axis = Axis()
         axis.axisTag = tag
         fvar.axes.append(axis)
     return {"fvar": fvar}
Beispiel #2
0
 def makeFont(axisTags):
     """['opsz', 'wdth'] --> ttFont"""
     fvar = table__f_v_a_r()
     for tag in axisTags:
         axis = Axis()
         axis.axisTag = tag
         fvar.axes.append(axis)
     return {"fvar": fvar}
Beispiel #3
0
 def test_fromXML(self):
     fvar = table__f_v_a_r()
     fvar.fromXML("Axis", {}, [("AxisTag", {}, ["opsz"])], ttFont=None)
     fvar.fromXML("Axis", {}, [("AxisTag", {}, ["slnt"])], ttFont=None)
     fvar.fromXML("NamedInstance", {"nameID": "765"}, [], ttFont=None)
     fvar.fromXML("NamedInstance", {"nameID": "234"}, [], ttFont=None)
     self.assertEqual(["opsz", "slnt"], [a.axisTag for a in fvar.axes])
     self.assertEqual([765, 234], [i.nameID for i in fvar.instances])
Beispiel #4
0
 def test_fromXML(self):
     fvar = table__f_v_a_r()
     fvar.fromXML("Axis", {}, [("AxisTag", {}, ["opsz"])], ttFont=None)
     fvar.fromXML("Axis", {}, [("AxisTag", {}, ["slnt"])], ttFont=None)
     fvar.fromXML("NamedInstance", {"nameID": "765"}, [], ttFont=None)
     fvar.fromXML("NamedInstance", {"nameID": "234"}, [], ttFont=None)
     self.assertEqual(["opsz", "slnt"], [a.axisTag for a in fvar.axes])
     self.assertEqual([765, 234], [i.nameID for i in fvar.instances])
Beispiel #5
0
 def test_fromXML(self):
     fvar = table__f_v_a_r()
     for name, attrs, content in parseXML(
             '<Axis>'
             '    <AxisTag>opsz</AxisTag>'
             '</Axis>'
             '<Axis>'
             '    <AxisTag>slnt</AxisTag>'
             '</Axis>'
             '<NamedInstance subfamilyNameID="765"/>'
             '<NamedInstance subfamilyNameID="234"/>'):
         fvar.fromXML(name, attrs, content, ttFont=None)
     self.assertEqual(["opsz", "slnt"], [a.axisTag for a in fvar.axes])
     self.assertEqual([765, 234], [i.subfamilyNameID for i in fvar.instances])
Beispiel #6
0
 def test_fromXML(self):
     fvar = table__f_v_a_r()
     for name, attrs, content in parseXML(
             '<Axis>'
             '    <AxisTag>opsz</AxisTag>'
             '</Axis>'
             '<Axis>'
             '    <AxisTag>slnt</AxisTag>'
             '</Axis>'
             '<NamedInstance subfamilyNameID="765"/>'
             '<NamedInstance subfamilyNameID="234"/>'):
         fvar.fromXML(name, attrs, content, ttFont=None)
     self.assertEqual(["opsz", "slnt"], [a.axisTag for a in fvar.axes])
     self.assertEqual([765, 234], [i.subfamilyNameID for i in fvar.instances])
Beispiel #7
0
def _add_fvar(font, axes, instances):
    assert "fvar" not in font
    font['fvar'] = fvar = table__f_v_a_r()

    for tag in sorted(axes.keys()):
        axis = Axis()
        axis.axisTag = tag
        name, axis.minValue, axis.defaultValue, axis.maxValue = axes[tag]
        axis.nameID = _AddName(font, name).nameID
        fvar.axes.append(axis)

    for name, coordinates in instances:
        inst = NamedInstance()
        inst.nameID = _AddName(font, name).nameID
        inst.coordinates = coordinates
        fvar.instances.append(inst)
Beispiel #8
0
def _add_fvar(font, axes, instances):
	assert "fvar" not in font
	font['fvar'] = fvar = table__f_v_a_r()

	for tag in sorted(axes.keys()):
		axis = Axis()
		axis.axisTag = tag
		name, axis.minValue, axis.defaultValue, axis.maxValue = axes[tag]
		axis.nameID = _AddName(font, name).nameID
		fvar.axes.append(axis)

	for name, coordinates in instances:
		inst = NamedInstance()
		inst.nameID = _AddName(font, name).nameID
		inst.coordinates = coordinates
		fvar.instances.append(inst)
def AddFontVariations(font):
    assert "fvar" not in font
    fvar = font["fvar"] = table__f_v_a_r()

    weight = Axis()
    weight.axisTag = "wght"
    weight.nameID = AddName(font, "Weight").nameID
    weight.minValue, weight.defaultValue, weight.maxValue = (100, 400, 900)
    fvar.axes.append(weight)

    # https://www.microsoft.com/typography/otspec/os2.htm#wtc
    for name, wght in (("Thin", 100), ("Light", 300), ("Regular", 400),
                       ("Bold", 700), ("Black", 900)):
        inst = NamedInstance()
        inst.nameID = AddName(font, name).nameID
        inst.coordinates = {"wght": wght}
        fvar.instances.append(inst)
Beispiel #10
0
def MakeFont():
    axes = [("wght", "Weight", 100, 400, 900), ("wdth", "Width", 50, 100, 200)]
    instances = [("Light", 300, 100), ("Light Condensed", 300, 75)]
    fvarTable = table__f_v_a_r()
    font = {"fvar": fvarTable}
    for tag, name, minValue, defaultValue, maxValue in axes:
        axis = Axis()
        axis.axisTag = tag
        axis.defaultValue = defaultValue
        axis.minValue, axis.maxValue = minValue, maxValue
        axis.axisNameID = AddName(font, name).nameID
        fvarTable.axes.append(axis)
    for name, weight, width in instances:
        inst = NamedInstance()
        inst.subfamilyNameID = AddName(font, name).nameID
        inst.coordinates = {"wght": weight, "wdth": width}
        fvarTable.instances.append(inst)
    return font
Beispiel #11
0
def MakeFont():
    axes = [("wght", "Weight", 100, 400, 900), ("wdth", "Width", 50, 100, 200)]
    instances = [("Light", 300, 100), ("Light Condensed", 300, 75)]
    fvarTable = table__f_v_a_r()
    font = {"fvar": fvarTable}
    for tag, name, minValue, defaultValue, maxValue in axes:
        axis = Axis()
        axis.axisTag = tag
        axis.defaultValue = defaultValue
        axis.minValue, axis.maxValue = minValue, maxValue
        axis.nameID = AddName(font, name).nameID
        fvarTable.axes.append(axis)
    for name, weight, width in instances:
        inst = NamedInstance()
        inst.nameID = AddName(font, name).nameID
        inst.coordinates = {"wght": weight, "wdth": width}
        fvarTable.instances.append(inst)
    return font
Beispiel #12
0
def AddFontVariations(font):
    assert "fvar" not in font
    fvar = font["fvar"] = table__f_v_a_r()

    weight = Axis()
    weight.axisTag = "wght"
    weight.nameID = AddName(font, "Weight").nameID
    weight.minValue, weight.defaultValue, weight.maxValue = (100, 400, 900)
    fvar.axes.append(weight)

    # https://www.microsoft.com/typography/otspec/os2.htm#wtc
    for name, wght in (
            ("Thin", 100),
            ("Light", 300),
            ("Regular", 400),
            ("Bold", 700),
            ("Black", 900)):
        inst = NamedInstance()
        inst.nameID = AddName(font, name).nameID
        inst.coordinates = {"wght": wght}
        fvar.instances.append(inst)
Beispiel #13
0
 def test_decompile(self):
     fvar = table__f_v_a_r()
     fvar.decompile(FVAR_DATA, ttFont={"fvar": fvar})
     self.assertEqual(["wght", "wdth"], [a.axisTag for a in fvar.axes])
     self.assertEqual([259, 260], [i.subfamilyNameID for i in fvar.instances])
Beispiel #14
0
 def test_decompile(self):
     fvar = table__f_v_a_r()
     fvar.decompile(FVAR_DATA, ttFont={"fvar": fvar})
     self.assertEqual(["wght", "wdth"], [a.axisTag for a in fvar.axes])
     self.assertEqual([259, 260], [i.nameID for i in fvar.instances])