diff --git a/src/fontra_compile/compile_fontmake_action.py b/src/fontra_compile/compile_fontmake_action.py
index 9fd5c05..0e3493b 100644
--- a/src/fontra_compile/compile_fontmake_action.py
+++ b/src/fontra_compile/compile_fontmake_action.py
@@ -25,6 +25,7 @@ class CompileFontMakeAction:
destination: str
options: dict[str, str] = field(default_factory=dict)
setOverlapSimpleFlag: bool = False
+ addMinimalGaspTable: bool = False
ufoTempDir: str | None = None
input: ReadableFontBackend | None = field(init=False, default=None)
@@ -81,6 +82,9 @@ async def process(
addInstances(sourcePath)
addGlyphOrder(sourcePath)
+ if self.addMinimalGaspTable:
+ addMinimalGaspTable(sourcePath)
+
extraArguments = []
for option, value in self.options.items():
extraArguments.append(f"--{option}")
@@ -176,3 +180,20 @@ def addGlyphOrder(designspacePath):
glyphSet = ufo.getGlyphSet()
lib["public.glyphOrder"] = sorted(glyphSet.keys(), key=_glyphSortKeyFunc)
ufo.writeLib(lib)
+
+
+class UFOFontInfo:
+ pass
+
+
+def addMinimalGaspTable(designspacePath):
+ backend = getFileSystemBackend(designspacePath)
+ dsDoc = backend.dsDoc
+ defaultSource = dsDoc.findDefault()
+ ufo = UFOReaderWriter(defaultSource.path)
+ fontInfo = UFOFontInfo()
+ ufo.readInfo(fontInfo)
+ fontInfo.openTypeGaspRangeRecords = [
+ {"rangeMaxPPEM": 0xFFFF, "rangeGaspBehavior": [0, 1, 2, 3]}
+ ]
+ ufo.writeInfo(fontInfo)
diff --git a/tests/data/MutatorSans-fontmake.ttx b/tests/data/MutatorSans-fontmake.ttx
index fb78446..98dd314 100644
--- a/tests/data/MutatorSans-fontmake.ttx
+++ b/tests/data/MutatorSans-fontmake.ttx
@@ -1829,6 +1829,10 @@
+
+
+
+
diff --git a/tests/test_workflow.py b/tests/test_workflow.py
index 5994cd3..ba93e6a 100644
--- a/tests/test_workflow.py
+++ b/tests/test_workflow.py
@@ -95,6 +95,7 @@ async def processGlyph(self, glyph: VariableGlyph) -> VariableGlyph:
options:
flatten-components: # no value
destination: "output-fontmake.ttf"
+ addMinimalGaspTable: true
""",
"MutatorSans-fontmake.ttx",
),