From 9ebede5a554ad7ad1b8961a6dc0883db7f599271 Mon Sep 17 00:00:00 2001 From: Rasmus Andersson Date: Tue, 30 May 2023 13:55:37 -0700 Subject: [PATCH] tooling: make postprocess-designspace.py infer opsz range instead of using hard-coded values --- misc/tools/postprocess-designspace.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/misc/tools/postprocess-designspace.py b/misc/tools/postprocess-designspace.py index af3d3e6c4..fbe76a364 100644 --- a/misc/tools/postprocess-designspace.py +++ b/misc/tools/postprocess-designspace.py @@ -46,12 +46,26 @@ def update_version(ufo): def fix_opsz_range(designspace): - # TODO: find extremes by looking at the source - for a in designspace.axes: - if a.tag == "opsz": - a.minimum = 14 - a.maximum = 32 + opsz_min = 1000000 + opsz_max = 0 + opsz_name = '' + opsz_axis = None + + for opsz_axis in designspace.axes: + if opsz_axis.tag == "opsz": + opsz_name = opsz_axis.name break + + for instance in designspace.instances: + opsz_value = instance.location[opsz_name] + if opsz_value < opsz_min: + opsz_min = opsz_value + if opsz_value > opsz_max: + opsz_max = opsz_value + + opsz_axis.minimum = opsz_min + opsz_axis.maximum = opsz_max + return designspace