[varLib.avar] Don't require a full .designspace with sources

This commit is contained in:
Behdad Esfahbod 2024-08-02 14:39:41 -06:00
parent 297f73aeaf
commit 0127a235af
2 changed files with 4 additions and 4 deletions

View File

@ -869,7 +869,7 @@ def _add_COLR(font, model, master_fonts, axisTags, colr_layer_reuse=True):
colr.VarIndexMap = builder.buildDeltaSetIndexMap(varIdxes) colr.VarIndexMap = builder.buildDeltaSetIndexMap(varIdxes)
def load_designspace(designspace, log_enabled=True): def load_designspace(designspace, log_enabled=True, *, require_sources=True):
# TODO: remove this and always assume 'designspace' is a DesignSpaceDocument, # TODO: remove this and always assume 'designspace' is a DesignSpaceDocument,
# never a file path, as that's already handled by caller # never a file path, as that's already handled by caller
if hasattr(designspace, "sources"): # Assume a DesignspaceDocument if hasattr(designspace, "sources"): # Assume a DesignspaceDocument
@ -878,7 +878,7 @@ def load_designspace(designspace, log_enabled=True):
ds = DesignSpaceDocument.fromfile(designspace) ds = DesignSpaceDocument.fromfile(designspace)
masters = ds.sources masters = ds.sources
if not masters: if require_sources and not masters:
raise VarLibValidationError("Designspace must have at least one source.") raise VarLibValidationError("Designspace must have at least one source.")
instances = ds.instances instances = ds.instances
@ -978,7 +978,7 @@ def load_designspace(designspace, log_enabled=True):
"More than one base master found in Designspace." "More than one base master found in Designspace."
) )
base_idx = i base_idx = i
if base_idx is None: if require_sources and base_idx is None:
raise VarLibValidationError( raise VarLibValidationError(
"Base master not found; no master at default location?" "Base master not found; no master at default location?"
) )

View File

@ -150,7 +150,7 @@ def main(args=None):
axisTags = [a.axisTag for a in font["fvar"].axes] axisTags = [a.axisTag for a in font["fvar"].axes]
ds = load_designspace(options.designspace) ds = load_designspace(options.designspace, require_sources=False)
if "avar" in font: if "avar" in font:
log.warning("avar table already present, overwriting.") log.warning("avar table already present, overwriting.")