* Speed up varscalar with caching
* Don't use cached_property
* Make model pool a class attribute
* Don't catch things on the values side
* Remove unused import
As we make an effort to support conditions with "minimum" or "maximum"
absent, as well as with "minimum" or "maximum" None, this commit
confirms that the split functions can handle these to some degree also.
Some areas of the library check for both representations, and so doing
this here too means we are less likely to break existing code.
Despite this, flexibility introduces ambiguity, and so if typing gives
us confidence that such an input is unlikely, we could re-review this;
conditions with missing keys are not safe to use across the entire code-
base.
For unbounded conditions, the previous code expects "minimum" or
"maximum" to be entirely absent, whereas actually they will be
consistently present with one having a value of None.
This means that math.inf and -math.inf are never substituted in for the
absent bound, and a crash occurs when the None value propagates.
This commit corrects the behaviour by checking for a value of None,
instead of checking for the presence of the keys, bringing the
behaviour inline with the rest of the library.
Conditions with unbounded values have a "minimum" or "maximum" value of
None.
These tests check that:
a) The public-facing split functions can receive None values without
crashing; and
b) That their internal helper functions correctly translate the None
values to math.inf and -math.inf to express them.
These tests are expected to fail, indicating where a fix is required.
like cmap, or glyf or OTL tables, we need to respect lazy=False flag and decompile everything upfront, also we want to add an ensureDecompiled method (called by TTFont.ensureDecompiled) to allow loading everything in one go even when a font had been opened lazily.
- only differentiate between glyf and CFF/CFF2 implementations, not var vs non-var
- use collections.abc.Mapping to get a more consistent dict-like object with less code
- prefer HVAR metrics over gvar metrics
- move some responsibilities from the _TTGlyphSet objects to the _TTGlyph objects
- adjust some tests to the changes