Open
Description
Hello again - we observed one other issue when trying to experimentally compile one of our larger library fonts with fontc at Dalton Maag.
A particular arrangement of deltas succeeds with fontmake but crashes fontc compilation with an IUP error:
[... ThreadId(1) fontc ERROR] IUP error for glyph: AchievedInvalidState("No best solution identified")
error: process didn't exit successfully: `...\fontc.exe .../Deltas.designspace` (exit code: 1)
Reproducing
As with the earlier issue (#1115), the original font is proprietary and so we've made an independent minimal reproducer to share and use here.
- ZIP containing designspace and UFO
- Original script used to construct them:
from fontTools.designspaceLib import (
AxisDescriptor,
DesignSpaceDocument,
InstanceDescriptor,
SourceDescriptor,
)
from ufoLib2 import Font
from ufoLib2.objects import Contour, Point
# Deltas that trigger the IUP crash
# (more minimal deltas are probably possible, but at this point I struggled to
# use fewer while still triggering the crash)
DELTAS = [
Point(x=0, y=0, type="line"),
Point(x=1, y=0, type="line"),
Point(x=1, y=0, type="line"),
Point(x=0, y=1, type="line"),
Point(x=0, y=0, type="line"),
Point(x=1, y=0, type="line"),
Point(x=1, y=3, type="line"),
Point(x=2, y=0, type="line"),
Point(x=2, y=3, type="line"),
Point(x=0, y=0, type="line"),
Point(x=0, y=0, type="line"),
Point(x=0, y=3, type="line"),
]
# Create designspace with weight axis
doc = DesignSpaceDocument()
doc.addAxis(
AxisDescriptor(tag="wght", name="Weight", minimum=400, maximum=700, default=400)
)
# Create a glyph with all points at origin in one source, and all points at
# particular offsets in another.
for style, weight, points in [
("Regular", 400, DELTAS),
("Bold", 700, [Point(x=0, y=0, type="line") for _ in range(len(DELTAS))]),
]:
ufo = Font()
inner = ufo.newGlyph("glyph")
inner.contours.append(Contour(points))
ufo.save(f"{style}.ufo", overwrite=True)
doc.addSource(SourceDescriptor(path=f"{style}.ufo", location={"Weight": weight}))
doc.addInstance(InstanceDescriptor(styleName=style, location={"Weight": weight}))
doc.write("Deltas.designspace")
Metadata
Assignees
Labels
No labels