Behdad Esfahbod
3746f75d7f
[varLib] Split _add_fvar_avar() into _add_fvar() and _add_avar()
2017-08-03 12:38:23 +01:00
Cosimo Lupo
19c4b377b8
[varLib] add predefined avar mappings to fix rendering in CoreText
...
Fixes https://github.com/googlei18n/fontmake/issues/295
2017-08-02 15:12:26 +01:00
Behdad Esfahbod
f2a1f3446b
[varLib] Minor
2017-08-01 19:06:40 +01:00
Cosimo Lupo
ca1bb10aa8
[varLib] test avar mappings are 'interesting' after normalizing values
...
otherwise we could end up with unnecessary avar tables only containing
the standard maps.
2017-08-01 12:08:44 +01:00
Behdad Esfahbod
24db8b015b
[varLib] Assert that avar -1,0,+1 mappings are as expected if they exist
2017-07-28 15:30:40 +01:00
Jens Kutilek
1136afd304
[varLib] Initialize the avar segment map with required default entries ( #1014 )
...
* Initialize the avar segment map with required default entries
* Set default values only after deciding that a segment map is needed for this axis
* Correct dict update call
2017-07-28 15:25:03 +01:00
Behdad Esfahbod
39ffa74128
Merge pull request #1019 from fonttools/varlib-iup-optimal
...
Varlib iup optimal
2017-07-28 12:09:27 +01:00
Cosimo Lupo
0ad14b67a9
[varLib] fix TypeError: zip object has no len on python3
2017-07-27 17:05:34 +01:00
Behdad Esfahbod
bb6ce80f63
[varLib] Speed up IUP optimizer by detecting more forced points
2017-07-26 14:13:18 -07:00
Behdad Esfahbod
69206e290e
[varLib] "Document" IUP DP algorithm for the case when forced set is empty
2017-07-22 18:48:23 -07:00
Behdad Esfahbod
e5ac044969
[varLib] Speed up IUP DP some more when forced set is empty
...
Pass a maximum lookback of n to the circle-breaking DP of size 2*n.
This should theoretically speed up that DP by a factor of 4 or 8 or something...
Empirically it's far from that, but solidly measurable.
Again, gvar table size got a slight improvement, which I didn't expect... It
might be that my one test is hitting lucky cases with point encodings.. or it
might be just me wishfully thinking so.
2017-07-22 18:46:16 -07:00
Behdad Esfahbod
91e4220193
[varLib] Speed up IUP DP when forced set is empty
...
Drives it into acceptable speed now. Note that I'm getting better
gvar size after this patch, which I didn't expect. So, either this
algorithm or the previous one was buggy. :(
2017-07-22 18:31:10 -07:00
Rob McKaughan
efabd5b049
Move assert outside of if at the bottom of _add_MVAR() per Behdad.
2017-06-22 15:15:58 -07:00
Rob McKaughan
ae451052b8
Changed 'if len(records) > 0' to 'if records' in _add_MVAR()
2017-06-20 15:30:28 -07:00
Rob McKaughan
7ed4c43395
Do not emit MVAR if there are no entries in the variation store
2017-06-20 15:01:23 -07:00
Behdad Esfahbod
7fa1ce1ca7
[varLib] Finish optimal IUP DP, however!
...
This slows down the DP by factor of 8 or so! So, going to replace this last
brute-force step with something else.
2017-05-31 20:29:00 -04:00
Behdad Esfahbod
bd5fa12520
[varLib] A bit more refactoring towards optimal IUP
2017-05-31 20:12:59 -04:00
Behdad Esfahbod
05b1bed63b
[varLib] Towards truly optimal IUP DP solution wrt circularity
2017-05-31 19:58:12 -04:00
Behdad Esfahbod
4a27f60d35
[varLib] More refactoring
2017-05-31 19:22:48 -04:00
Behdad Esfahbod
5ee58772cf
[varLib] Improve IUP DP
...
Previously, it was always encoding first and last point. Now it only always
encodes last point. Soon resolving that too. Shows another 0.5% savings in
gvar table size with Noto Sans Arabic.
2017-05-31 19:14:17 -04:00
Behdad Esfahbod
0b8c9e3a0c
Revert "[varLib] Flip IUP DP to go back-to-front"
...
This reverts commit 3e35441c805b03d6d6eea5b24ce44f555c5fad56.
The DP is cleaner to work out front-to-back.
Will achieve the same effect by flipping the lists in a later commit.
2017-05-31 19:11:30 -04:00
Behdad Esfahbod
28ce62b782
[varLib] Refactor DP code into functions
2017-05-31 19:06:42 -04:00
Behdad Esfahbod
7db5868dba
[varLib] Minor
2017-05-31 19:00:33 -04:00
Behdad Esfahbod
c79c27a841
[varLib] Add commentary of IUP DP mechanism
2017-05-29 16:13:46 -04:00
Behdad Esfahbod
3e35441c80
[varLib] Flip IUP DP to go back-to-front
...
Saves a few bytes (really, a few!).
2017-05-29 16:03:42 -04:00
Behdad Esfahbod
eeb13bba88
[varLib] Prepare IUP DP code to go back-to-front
...
That would produce smaller point numbers, which sometimes, results in
smaller encoding.
2017-05-29 15:59:29 -04:00
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
fd3cd6f367
Merge pull request #969 from fonttools/varlib-iup
...
Varlib iup
2017-05-24 11:44:59 +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
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
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
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
Behdad Esfahbod
656478fc6d
[varLib] Add notes re encoding multilingual names
2017-04-19 11:10:00 -07:00
Behdad Esfahbod
932b938d7d
[varLib] Minor
2017-04-12 21:56:49 -07:00
Behdad Esfahbod
968c25dd7f
[varLib] Generate avar table
...
Fixes https://github.com/fonttools/fonttools/issues/916
2017-04-12 21:54:43 -07:00
Behdad Esfahbod
191cea5965
[varLib] Fixup for 91f4fd90d4fdee293052d9d226a31baa2e7edda8
...
Oops! Too many Axis classes.
2017-04-12 21:54:43 -07:00
Behdad Esfahbod
0fa41c14b9
[varLib] Check all master and instance locations are valid
...
Ie. they don't specify any unknown axes, and location is within
axis minimum/maximum. We also allow master / instance locations
to not specify some axes, and we fill in the axis default for those.
2017-04-12 21:54:43 -07:00
Behdad Esfahbod
9034f4f3f1
[varLib] Rewrite axis configuration code
...
We do not accept nonstandard axes if <axes> element is not present.
Breaks one test. Needs updated expectations.
Soon we'll be generating avar as well and all will be better, much better.
2017-04-12 21:54:43 -07:00
Behdad Esfahbod
e73cc7ae34
[varLib] Move code around
2017-04-12 21:54:43 -07:00