10140 Commits

Author SHA1 Message Date
Cosimo Lupo
276f6aaf44 [subset] keep and don't prune CPAL if OT-SVG table is present
Fixes #2814

or at least is a workaround until a proper 'fix'
2022-09-14 12:55:40 -06:00
Cosimo Lupo
1f8803af96
Merge pull request #2812 from fonttools/instancer-no-featurevars
[instancer] downgrade GSUB/GPOS version if there are no FeatureVariations after instancing (2)
2022-09-13 10:57:53 +01:00
Cosimo Lupo
87bbb64061
[instancer] downgrade GSUB/GPOS version if there are no FeatureVariations after instancing
same as https://github.com/fonttools/fonttools/pull/2811 but moved the logic to _instantiateFeatureVariations directly, instead of after it
2022-09-13 10:44:26 +01:00
pyup-bot
ccf9bdffd0 Update scipy from 1.9.0 to 1.9.1 2022-09-12 17:11:03 +01:00
Cosimo Lupo
ecb8ee9104
Merge pull request #2807 from fonttools/subset-no-lazy
subset: add --no-lazy option to load font eagerly as TTFont(lazy=False)
2022-09-12 11:59:01 +01:00
Cosimo Lupo
25a05c72ab subset: add --no-lazy option to load font eagerly as TTFont(lazy=False) 2022-09-08 15:42:34 +01:00
Cosimo Lupo
ebeffeba13
Merge pull request #2803 from fonttools/colr-without-varidxmap
don't add no-op DeltaSetIndexMap when not needed
2022-09-05 18:38:18 +01:00
Cosimo Lupo
e4b3394a38 [varLib] omit optional COLR.VarIndexMap for identity mapping
Fixes #2800
2022-09-05 17:18:29 +01:00
Cosimo Lupo
964df076e1 varLib_test: test we don't add no-op DeltaSetIndexMap when not needed
https://github.com/fonttools/fonttools/issues/2800
2022-09-05 17:15:51 +01:00
Simon Cozens
d48d858c2c
Speed up cache key construction in variableScalar (#2801) 2022-09-05 15:41:01 +01:00
Simon Cozens
64fd837ca1
Allow multiple value record types in the same pairpos table (#2776)
* Use buildPairPosClassesSubtable's ability to promote value records (see #2772)

* Add tests for #2772
2022-09-05 14:44:50 +01:00
Simon Cozens
5d5c16207b
Speed up varscalar with caching (#2798)
* 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
2022-09-05 14:27:08 +01:00
Simon Cozens
17feda4608
Cythonize lexer (#2799) 2022-09-05 12:58:00 +01:00
Cosimo Lupo
876f87e4be
Merge pull request #2797 from daltonmaag/fix-unbounded-conditions
Avoid crash when handling unbounded conditions during designspace splitting
2022-09-01 18:57:45 +01:00
Harry Dalton
bbb26c2cea Confirm split functions can handle unbounded conditions with absent keys
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.
2022-09-01 17:34:51 +01:00
Harry Dalton
2da2653837 Allow "minimum"/"maximum" keys to be missing, as well as None
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.
2022-09-01 17:21:04 +01:00
Harry Dalton
fef9e9a071 Fix handling of unbounded conditions
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.
2022-09-01 13:49:58 +01:00
Harry Dalton
d1ec8e6979 Test that DS5 splitting code handles unbounded conditions gracefully
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.
2022-09-01 13:41:44 +01:00
Miguel Sousa
1306a71db3
Merge pull request #2786 from fonttools/msousa-bad-post-format-1
Don't crash when `post` format 1 is improperly used
2022-08-31 08:52:49 -07:00
Miguel Sousa
96c9250cf8 Update warning message [skip ci] 2022-08-31 08:52:17 -07:00
Cosimo Lupo
fc984ff7e7
Merge pull request #2794 from fonttools/gvar-ensure-decompiled
[gvar] be non lazy for TTFont.lazy=False, add ensureDecompiled
2022-08-31 15:13:14 +01:00
Cosimo Lupo
36de9df3cc [gvar] be non lazy for TTFont.lazy=False, add ensureDecompiled
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.
2022-08-31 11:10:50 +01:00
Miguel Sousa
a2efac012c Add warning log 2022-08-30 23:56:03 -07:00
Miguel Sousa
0e9c48e6ab Don't crash when post format 1 is improperly used
Fixes #2736
2022-08-30 09:14:03 -07:00
Just van Rossum
55192edb0c
Merge pull request #2789 from fonttools/varglyphset-refactor
[ttGlyphSet] Refactor/rebuild class hierarchy
2022-08-30 12:49:32 +02:00
Just van Rossum
8fa79f3c68 Use ABC baseclass, instead of ABCMeta metaclass 2022-08-30 12:02:43 +02:00
Just van Rossum
a4f3cb1c98 drawPoints can have an implementation that calls draw using SegmentToPointPen 2022-08-30 12:00:50 +02:00
Just van Rossum
7ae37322cd make _TTGlyph an abstract base class, with draw and drawPoints abstract methods 2022-08-30 11:47:39 +02:00
Just van Rossum
b1441c583b Add test for non-VF exception 2022-08-30 09:26:16 +02:00
Just van Rossum
da539e5c4d use fixture for test font 2022-08-30 08:56:24 +02:00
Just van Rossum
86e4f2bf94 test file for font.normalizeLocation() 2022-08-30 08:49:36 +02:00
Just van Rossum
d2f0611fea test font.normalizeLocation() 2022-08-30 08:49:36 +02:00
Just van Rossum
6ec0177f1f tweak getGlyphSet() doct string, using backticks, and fixing a typo 2022-08-30 08:49:36 +02:00
Just van Rossum
6d2a9904c4 Add TTFont.normalizeLocation() as a public method. 2022-08-30 08:49:36 +02:00
Just van Rossum
cca0faae74 oops, look at 'normalized' flag again 2022-08-30 08:49:36 +02:00
Just van Rossum
0c68a5621a move normalization of location to TTFont 2022-08-30 08:49:36 +02:00
Just van Rossum
42a8d5cbdf no need for if expression 2022-08-30 08:49:36 +02:00
Just van Rossum
7aa4c0fb29 Avoid glyphSetClass variable; reads a little bit better 2022-08-30 08:49:36 +02:00
Just van Rossum
8fb071a403 remove redundant initializer 2022-08-30 08:49:36 +02:00
Just van Rossum
b45d9b014a simplify class selection logic 2022-08-30 08:49:36 +02:00
Just van Rossum
65814c3ccd inline haveCFF condition 2022-08-30 08:49:36 +02:00
Just van Rossum
d5db47e09d minor cleanup 2022-08-30 08:49:36 +02:00
Just van Rossum
b818e1494f Refactor ttGlyphSet.py
- 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
2022-08-30 08:49:36 +02:00
Behdad Esfahbod
c04afbedaf [varLib.interpolatable] Fix naming of varfont masters 2022-08-29 17:08:30 -06:00
Behdad Esfahbod
250cec869e [interpolatable] Compare all masters to first master
Reduces number of errors reported.
2022-08-29 17:03:11 -06:00
Just van Rossum
4abf2ee8c6
Merge pull request #2788 from fonttools/varglyphset-spaces
[ttVarGlyphSet] Convert tabs to spaces
2022-08-29 19:33:23 +02:00
Just van Rossum
8932ab427f Convert tabs to spaces 2022-08-29 19:28:46 +02:00
Just van Rossum
633bc2732f
Merge pull request #2784 from fonttools/varglyphset-cff
[ttVarGlyphSet] Support CFF
2022-08-29 19:26:14 +02:00
Behdad Esfahbod
24bd200b6e [ttGlyphSet-CFF] Cache instancer 2022-08-27 13:32:19 -06:00
Behdad Esfahbod
bcd637bd1a [ttGlyphSet-cff] Remove rounding 2022-08-27 12:20:15 -06:00