2856 Commits

Author SHA1 Message Date
Behdad Esfahbod
c87c592d9e [varLib] Minor IUP renaming
Same functionality
2017-05-29 15:29:20 -04:00
Behdad Esfahbod
db8d0eeb5f [varLib] Speed up IUP optimization DP by 7.5x! 2017-05-29 15:06:55 -04:00
Behdad Esfahbod
2e80784ca7 [varLib] Use geometric distance for tolerance calculations 2017-05-28 23:45:36 -07:00
Behdad Esfahbod
1d148b10c5 [varLib] Start implementing optimal IUP solution
Not optimal right now, since first and last point are always included.
Also rather slow.  Takes about 12s for NotoSansArabic, and saves just
one percent in gvar size with a tolerance of 0.5 font units.
2017-05-28 23:45:36 -07:00
Cosimo Lupo
9785e0e92d
Bump version: 3.13.0 → 3.13.1.dev0 2017-05-24 11:56:18 +01:00
Cosimo Lupo
6fc7671360
Release 3.13.0 2017-05-24 11:52:11 +01:00
Cosimo Lupo
fd3cd6f367 Merge pull request #969 from fonttools/varlib-iup
Varlib iup
2017-05-24 11:44:59 +01:00
Cosimo Lupo
41fb1ba1bc Merge pull request #975 from googlei18n/master
[varLib.interpolate_layout] Allow disabling avar mapping
2017-05-24 10:07:08 +01:00
Cosimo Lupo
a4861a16cc
use logging.warning() instead of deprecated logging.warn()
functionality is identical, the latter is deprecated:
https://docs.python.org/3/library/logging.html#logging.Logger.warning
2017-05-24 09:49:37 +01:00
Khaled Hosny
61670fc652 Use logging module for these warnings
Not sure if warnings module was used intentionally here, but the
messages looked odd compared to other FontTools messages.
2017-05-24 10:00:55 +02:00
Behdad Esfahbod
c96f83cc30 [varLib.interpolate_layout] Allow disabling avar mapping
See https://github.com/fonttools/fonttools/issues/950#issuecomment-303641054
2017-05-24 00:26:35 -07:00
Behdad Esfahbod
dbc54a2429 [varLib.models] Mark VariationModel.interpolateFromDeltasAndScalars static
This correctly reflects that all we need to interpolate is deltas and
scalars.
2017-05-23 01:01:07 -07:00
Behdad Esfahbod
39d059ef08 Revert "[varLib.models] Minor"
This reverts commit 49df768cd3d1dd2c39933e3c07d214013d50ef60.

That was accidentally pushed!
2017-05-23 00:54:23 -07:00
Behdad Esfahbod
7ee1d2e2d5 [varLib.merger] In InstancerMerger, compute scalars once
Using new VariationModel API to separate scalar calculation from
interpolation.
2017-05-23 00:54:11 -07:00
Behdad Esfahbod
bc546dec10 [varLib.models] Add VariationModel.interpolateFromMastersAndScalars() 2017-05-23 00:54:11 -07:00
Behdad Esfahbod
53b7ea4612 [varLib.models] Add VariationModel.interpolateFromDeltasAndScalars() 2017-05-23 00:54:11 -07:00
Behdad Esfahbod
489c80c83b [varLib.models] Add VariationModel.getScalars()
To factor out scalar computation out of each interpolation.
2017-05-23 00:54:11 -07:00
Behdad Esfahbod
adc4fe960e [varLib.models] Remove unused line 2017-05-23 00:54:11 -07:00
Behdad Esfahbod
fdbe93e33c [varLib.models] Minor; move computing scalars out of inner loop 2017-05-23 00:54:11 -07:00
Behdad Esfahbod
49df768cd3 [varLib.models] Minor 2017-05-23 00:31:48 -07:00
Behdad Esfahbod
a08fb27f17 [varLib.models] Minor 2017-05-23 00:26:53 -07:00
Behdad Esfahbod
0ed2df3f22 [varLib.interpolate_layout] Import designspace-loading logic from varLib
When varLib was updated for avar table, this was not.  Share code such
that they don't get out of sync again.  All of this to be made into
proper API some time...
2017-05-22 19:40:20 -07:00
Behdad Esfahbod
245d457fe6 [varLib.interpolate_layout] Change finder to master_finder
To be in line with varLib.build().
2017-05-22 18:46:41 -07:00
Behdad Esfahbod
81498e5baf [varLib] Fix bug with recombining PairPosClass2 subtables that don't
Ouch.  I have no idea why I made two separate if's to begin with, but the
continue should have also been aligned with the inner block...

Fixes root cause of https://github.com/fonttools/fonttools/issues/914
but now we hit an unimplemented feature there...
2017-05-20 23:03:25 -07:00
Behdad Esfahbod
997c073e26 [varLib.mutator] Implement IUP 2017-05-20 22:13:51 -07:00
Behdad Esfahbod
10ff112e6a [varLib.mutator] Inching towards implementing IUP 2017-05-20 21:08:11 -07:00
Behdad Esfahbod
462b7f8683 [cffLib.specializer] When copying iterables, cast to list specifically
See 41445b8449
2017-05-20 18:34:20 -07:00
Behdad Esfahbod
bfb4a2c648 [varLib] Pass down tolerance to IUP routines 2017-05-18 16:29:02 -07:00
Behdad Esfahbod
74f6715f27 [varLib] Minor speedup 2017-05-18 16:08:36 -07:00
Behdad Esfahbod
3db5be2195 [gvar] Remove GlyphCoordinates.__abs__()
It's not wel-defined, as abs typically is supposed to return a scalar...

Also combine the tolerance-check with the zero-check in varLib.
2017-05-18 16:06:10 -07:00
Behdad Esfahbod
e46f94950c Change GlyphCoordinates.__bool__() semantics...
...to match those of other iterables.

I confused myself once already by having "if not delta" where delta was a list,
not GlyphCoordinates...
2017-05-18 16:06:10 -07:00
Behdad Esfahbod
e8571ee5e0 [varLib] Only use sparse points (ala IUP encoding) if cheaper
For now, this makes us encode one point per contour if feasible.
2017-05-18 16:06:10 -07:00
Behdad Esfahbod
f8c970568c [varLib] Fix assert condition in _optimize_delta for empty contours 2017-05-18 16:06:10 -07:00
Behdad Esfahbod
52e2e2f930 [varLib] make _optimize_contour work with lists 2017-05-18 16:06:10 -07:00
Behdad Esfahbod
3ece5d842c [TupleVariation] Copy items in constructor
Avoids surprises when aller modifies those same objects.
2017-05-18 16:06:10 -07:00
Behdad Esfahbod
11227eb481 [varLib] Fix assert message 2017-05-18 16:06:10 -07:00
Behdad Esfahbod
a5b1285223 [varLib] Start IUP-optimization code 2017-05-18 16:06:10 -07:00
Cosimo Lupo
0ff0d022e0
Bump version: 3.12.1 → 3.12.2.dev0 2017-05-18 11:38:34 +01:00
Cosimo Lupo
7545539bf5
Release 3.12.1 2017-05-18 11:37:31 +01:00
Behdad Esfahbod
7ade0096de [pens.t2CharStringPen] Call BasePen constructor
Fixes https://github.com/fonttools/fonttools/issues/965
2017-05-17 17:06:00 -07:00
Cosimo Lupo
1ced13124a
Bump version: 3.12.0 → 3.12.1.dev0 2017-05-17 15:16:33 +01:00
Cosimo Lupo
f798f52236
Release 3.12.0 2017-05-17 15:15:16 +01:00
Cosimo Lupo
71486bc0a9
[_g_l_y_f] use 'd' instead of 'f' as array.array typecode in GlyphCoordinates
Fixes #963
2017-05-16 10:50:56 +01:00
Behdad Esfahbod
4fd719159a [cffLib.specializer] Enforce minimum number of arguments in all ops 2017-05-08 14:09:02 -06:00
Behdad Esfahbod
0cbe43483d [cffLib.specializer] Fix width-extraction code when stack is empty 2017-05-08 14:06:26 -06:00
Behdad Esfahbod
a3743828ce [cffLib.specializer] Default ignoreErrors to False
Ouch.  I meant False.  I think I changed it to True for testing and accidentally committed it.
2017-05-08 14:05:10 -06:00
Behdad Esfahbod
a71639f8b6 [cffLib.specializer] Add minor TODO items 2017-05-08 13:01:43 -06:00
Cosimo Lupo
41445b8449
t2CharStringPen: specializeCommands expects command args to be list, not tuples
In the docstring of programToCommands, it says that:

> Each command is a two-tuple of commandname,arg-list

Previously the T2CharStringPen was passing command args as tuples instead
of lists to the specializeCommands function with option generalizeFirst=False,
which would only make a shallow copy of the input commands to modify them
in place. The problem is that it attempted to call list-only methods, leading
to errors like:

File "fontTools/cffLib/specializer.py", line 432, in specializeCommands
    args.insert(pos, 0)
AttributeError: 'tuple' object has no attribute 'insert'

Since the expectation of the code here and elsewhere is that args is a
list, it makes sense that the T2 pen passes lists instead of tuples to the
specializeCommands function.
2017-05-08 10:51:39 +01:00
Behdad Esfahbod
30b804003e [cffLib.specializer] Add programToString and stringToProgram from _test.py 2017-05-07 22:12:19 -06:00
Behdad Esfahbod
3720c6e020 [cffLib.specializer] Fix combining of more ops into rlinecurve / rcurveline
Fixes failing tests.
2017-05-07 12:54:31 -06:00