[feaLib] Reject language
and script
within feature aalt
and size
This commit is contained in:
parent
792a958d6c
commit
a3783e1095
@ -193,6 +193,10 @@ class Builder(object):
|
||||
raise FeatureLibError(
|
||||
"Within a named lookup block, it is not allowed "
|
||||
"to change the language", location)
|
||||
if self.cur_feature_name_ in ('aalt', 'size'):
|
||||
raise FeatureLibError(
|
||||
"Language statements are not allowed "
|
||||
"within \"feature %s\"" % self.cur_feature_name_, location)
|
||||
self.cur_lookup_ = None
|
||||
if include_default:
|
||||
langsys = set(self.get_default_language_systems_())
|
||||
@ -206,6 +210,10 @@ class Builder(object):
|
||||
raise FeatureLibError(
|
||||
"Within a named lookup block, it is not allowed "
|
||||
"to change the script", location)
|
||||
if self.cur_feature_name_ in ('aalt', 'size'):
|
||||
raise FeatureLibError(
|
||||
"Script statements are not allowed "
|
||||
"within \"feature %s\"" % self.cur_feature_name_, location)
|
||||
self.cur_lookup_ = None
|
||||
self.script_ = script
|
||||
self.lookup_flag_ = 0
|
||||
|
@ -149,6 +149,12 @@ class BuilderTest(unittest.TestCase):
|
||||
self.assertEqual(builder.language_systems,
|
||||
{('DFLT', 'dflt'), ('cyrl', 'dflt')})
|
||||
|
||||
def test_script_in_aalt_feature(self):
|
||||
self.assertRaisesRegex(
|
||||
FeatureLibError,
|
||||
"Script statements are not allowed within \"feature aalt\"",
|
||||
self.build, "feature aalt { script latn; } aalt;")
|
||||
|
||||
def test_script_in_lookup_block(self):
|
||||
self.assertRaisesRegex(
|
||||
FeatureLibError,
|
||||
@ -156,6 +162,12 @@ class BuilderTest(unittest.TestCase):
|
||||
"to change the script",
|
||||
self.build, "lookup Foo { script latn; } Foo;")
|
||||
|
||||
def test_script_in_size_feature(self):
|
||||
self.assertRaisesRegex(
|
||||
FeatureLibError,
|
||||
"Script statements are not allowed within \"feature size\"",
|
||||
self.build, "feature size { script latn; } size;")
|
||||
|
||||
def test_language(self):
|
||||
builder = Builder(None, TTFont())
|
||||
builder.add_language_system(None, 'latn', 'FRA ')
|
||||
@ -169,6 +181,12 @@ class BuilderTest(unittest.TestCase):
|
||||
self.assertEqual(builder.language_systems,
|
||||
{('latn', 'FRA '), ('cyrl', 'BGR ')})
|
||||
|
||||
def test_language_in_aalt_feature(self):
|
||||
self.assertRaisesRegex(
|
||||
FeatureLibError,
|
||||
"Language statements are not allowed within \"feature aalt\"",
|
||||
self.build, "feature aalt { language FRA; } aalt;")
|
||||
|
||||
def test_language_in_lookup_block(self):
|
||||
self.assertRaisesRegex(
|
||||
FeatureLibError,
|
||||
@ -176,6 +194,12 @@ class BuilderTest(unittest.TestCase):
|
||||
"to change the language",
|
||||
self.build, "lookup Foo { language RUS; } Foo;")
|
||||
|
||||
def test_language_in_size_feature(self):
|
||||
self.assertRaisesRegex(
|
||||
FeatureLibError,
|
||||
"Language statements are not allowed within \"feature size\"",
|
||||
self.build, "feature size { language FRA; } size;")
|
||||
|
||||
def test_lookup_already_defined(self):
|
||||
self.assertRaisesRegex(
|
||||
FeatureLibError,
|
||||
|
Loading…
x
Reference in New Issue
Block a user