diff --git a/Lib/fontTools/feaLib/parser.py b/Lib/fontTools/feaLib/parser.py index f7a5574fe8a..50e3d65ae27 100644 --- a/Lib/fontTools/feaLib/parser.py +++ b/Lib/fontTools/feaLib/parser.py @@ -1881,8 +1881,15 @@ def parse_conditionset_(self): if axis in conditions: raise FeatureLibError(f"Repeated condition for axis {axis}", self.cur_token_location_) - min_value = self.expect_number_(variable=False) - max_value = self.expect_number_(variable=False) + if self.next_token_type_ is Lexer.FLOAT: + min_value = self.expect_float_() + elif self.next_token_type_ is Lexer.NUMBER: + min_value = self.expect_number_(variable=False) + + if self.next_token_type_ is Lexer.FLOAT: + max_value = self.expect_float_() + elif self.next_token_type_ is Lexer.NUMBER: + max_value = self.expect_number_(variable=False) self.expect_symbol_(";") conditions[axis] = (min_value, max_value) diff --git a/Tests/feaLib/parser_test.py b/Tests/feaLib/parser_test.py index 7d52cc2f02f..5907064e7f4 100644 --- a/Tests/feaLib/parser_test.py +++ b/Tests/feaLib/parser_test.py @@ -1866,6 +1866,12 @@ def test_conditionset_same_axis(self): self.parse, "conditionset heavy { wght 700 900; wght 100 200; } heavy;") + def test_conditionset_float(self): + doc = self.parse("conditionset heavy { wght 700.0 900.0; } heavy;") + value = doc.statements[0] + self.assertEqual(value.conditions["wght"], (700.0, 900.0)) + self.assertEqual(value.asFea(), "conditionset heavy {\n wght 700.0 900.0;\n} heavy;\n") + def test_variation(self): doc = self.parse("variation rvrn heavy { sub a by b; } rvrn;") value = doc.statements[0]