Exemple #1
0
 def test_toXML(self):
     font = MakeFont()
     inst = NamedInstance()
     inst.nameID = AddName(font, "Light Condensed").nameID
     inst.coordinates = {"wght": 0.7, "wdth": 0.5}
     writer = XMLWriter(StringIO())
     inst.toXML(writer, font)
     self.assertEqual([
         '', '<!-- Light Condensed -->',
         '<NamedInstance nameID="%s">' % inst.nameID,
         '<coord axis="wght" value="0.7"/>',
         '<coord axis="wdth" value="0.5"/>', '</NamedInstance>'
     ], xml_lines(writer))
Exemple #2
0
 def test_toXML(self):
     font = MakeFont()
     inst = NamedInstance()
     inst.nameID = AddName(font, "Light Condensed").nameID
     inst.coordinates = {"wght": 0.7, "wdth": 0.5}
     writer = XMLWriter(StringIO())
     inst.toXML(writer, font)
     self.assertEqual([
         '',
         '<!-- Light Condensed -->',
         '<NamedInstance nameID="%s">' % inst.nameID,
           '<coord axis="wght" value="0.7"/>',
           '<coord axis="wdth" value="0.5"/>',
         '</NamedInstance>'
     ], xml_lines(writer))
Exemple #3
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)
Exemple #4
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)
Exemple #6
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
Exemple #7
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
Exemple #8
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)
Exemple #9
0
 def test_compile(self):
     inst = NamedInstance()
     inst.nameID = 345
     inst.coordinates = {"wght": 0.7, "wdth": 0.5}
     self.assertEqual(FVAR_INSTANCE_DATA, inst.compile(["wght", "wdth"]))
Exemple #10
0
 def test_compile(self):
     inst = NamedInstance()
     inst.nameID = 345
     inst.coordinates = {"wght": 0.7, "wdth": 0.5}
     self.assertEqual(FVAR_INSTANCE_DATA, inst.compile(["wght", "wdth"]))