4125 Commits

Author SHA1 Message Date
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
Jens Kutilek
92c8b3f754 Add test and test data for mutator with interpolated points 2017-05-18 16:40:33 -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
af041259ee Fix tests for recent changes 2017-05-18 16:06:10 -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
6accfa1776
Update changelog 2017-05-17 15:14:48 +01:00
Cosimo Lupo
faa899f9e9
[specializer_test] temporarily disable failing tests
Let's appease the bots for now.
Later on we can add tests for invalid args number for each operator so specializer.py module can reach 100 coverage.
2017-05-16 23:01:00 +01:00
Cosimo Lupo
ced61f787c Merge pull request #964 from anthrotype/coords-as-double
[_g_l_y_f] fix float precision loss in GlyphCoordinates
2017-05-16 17:16:15 +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
Cosimo Lupo
1c9198e3f0
[_g_l_y_f] add test for GlyphCoordinates' float precision loss issue (#964) 2017-05-16 10:34:37 +01:00
Miguel Sousa
5d981cae0a [cffLib.specializer_test] Additional tests 2017-05-08 15:49:56 -07:00
Miguel Sousa
3c29ff73a7 [cffLib.specializer_test] Tests for missing arguments 2017-05-08 15:49:47 -07:00
Miguel Sousa
1d3ac1add4 [cffLib.specializer_test] TODO 2017-05-08 15:49:39 -07: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
a8b841a4a9 [cffLib.specizalier_test] Add a few more tests 2017-05-07 22:04:17 -06:00
Behdad Esfahbod
041384a0e8 [cffLib.specializer_test] Add tests for peephole optimization 2017-05-07 13:08:41 -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
Miguel Sousa
2f14200a89 [cffLib.specializer_test] specializeProgram tests
The failing tests are due to missed optimization opportunities.
The current tests are not hitting some edge cases.
2017-05-07 03:14:24 -07:00
Miguel Sousa
2f7f36e2f4 [cffLib.specializer_test] charstring extras 2017-05-07 00:23:12 -07:00
Miguel Sousa
3f9eeec58d [cffLib.specializer] Fix DeprecationWarnings in py3 2017-05-06 23:20:11 -07:00
Miguel Sousa
9617f5f26b [cffLib.specializer_test] generalizeProgram tests 2017-05-06 22:57:37 -07:00
Behdad Esfahbod
c017063d40 Merge pull request #948 from fonttools/cffOpSpecializer
CFF operator specializer
2017-05-06 17:55:10 -06:00
Behdad Esfahbod
8432c04bb1 [cffLib.specializer] Remove -3 hack that was to match AFDKO 2017-05-06 17:54:05 -06:00
Behdad Esfahbod
2fd2e4a7cf [cffLib.specializer] Add TODO item 2017-05-06 14:14:54 -06:00
Behdad Esfahbod
0e94f909a6 [pens.t2CharStringPen] Disallow glyph width in CFF2 2017-05-06 13:16:07 -06:00
Behdad Esfahbod
2abacb9366 [pens.t2CharString] Bump CFF2 stack size from 193 to 513
That's happening in the next version of OpenType spec (and maxstack
operator deprecated.)
2017-05-06 13:14:25 -06:00
Behdad Esfahbod
0bf5044d12 [cffLib.specializer] Implement width extraction in programToCommands()
Test:

./fonttools cffLib.specializer 7 0 8 rmoveto 1 2 3 4 5 0 rrcurvet
2017-05-06 13:12:58 -06:00
Behdad Esfahbod
bef46993f6 [cffLib.specializer] Use bool() cast instead of comparison to 0
Makes it work on custom types better.
2017-05-06 05:02:22 -06:00
Behdad Esfahbod
d1d36ce66b [cffLib.specializer] Minor 2017-05-06 04:58:59 -06:00
Behdad Esfahbod
4b5c1be29b [pens.t2CharStringPen] Add CFF2 mode 2017-05-06 04:54:07 -06:00
Behdad Esfahbod
72ec474f74 [pens.t2CharStringPen] Simplify drastically 2017-05-06 04:50:24 -06:00