58 Commits

Author SHA1 Message Date
Behdad Esfahbod
7daf9ef298 [CFF] Whitespace 2018-11-29 14:08:53 -05:00
ReadRoberts
c2abd045b3 [varLib.mutator] Add interpolation of glyph metrics.
Added interpolation of glyph advance width, from HVAR/hmtx, and derivation of new LSB.
Updated tests to match.
Needed to cherrypick from another branch an update for psCharstrings to allow the CFFSubr.draw() method to work.
2018-11-20 12:44:21 -08:00
ReadRoberts
92b5e0faaa [varLib.mutator] Fix changes lost during cherry-picking. 2018-11-19 20:35:34 -08:00
ReadRoberts
272244a822 [varLib.mutator] Merge with master head. 2018-11-19 20:12:45 -08:00
ReadRoberts
fddd5b2bae [varLib.mutator] Interpolating CFF2 tables. Makes fixes per recommendations
varLib.py. restore import of 'fontTools.misc.py23 import *'
varStore.py. Rename 'applyScalar' to 'interpolateFromDeltasAndScalars', and refactor common code with __git__item to a static method.
mutator.py. Update to reflect function name change to interpolateFromDeltasAndScalars. Changed some logic from one line to several lines for readability, and i to avoid flake8 warnings about line too long.
2018-11-19 20:06:16 -08:00
ReadRoberts
d43ebd5e49 [varLib.mutator] Add support for interpolating CFF2 tables
Add handling of CFF2 table to mutator.py

Add public method applyScalars() to varStore.py::VarStoreInstancer()
2018-11-19 20:06:03 -08:00
Behdad Esfahbod
a766d8d91e [varLib.mutator] Mutate GDEF itself 2018-11-19 16:45:30 -05:00
Behdad Esfahbod
0218e07f76 [varLib.mutator] Move some code out of merger 2018-11-19 16:38:27 -05:00
Nyshadh Reddy Rachamallu
69c3f2c001 Fix unwanted white space changes 2018-11-16 18:11:25 -05:00
Nyshadh Reddy Rachamallu
3512c8b77f Avoid has_key; move break statement 2018-11-16 17:49:17 -05:00
Nyshadh Reddy Rachamallu
be793c80b9 stack data should follow same order as fvar; fix maxStackElements calculation 2018-11-16 15:33:33 -05:00
Nyshadh Reddy Rachamallu
e756d3eb52 Restructure code 2018-11-16 14:12:26 -05:00
Nyshadh Reddy Rachamallu
dbfba397e0 maxp attributes maxInstructionDefs and maxStackElements should be modified when idef is added 2018-11-16 13:01:38 -05:00
Nyshadh Reddy Rachamallu
512bccf49e Add IDEF for GETVARIATION opcode 2018-11-15 15:18:03 -05:00
Cosimo Lupo
c960a361a8
mutator: use piecewiseLinearMap instead of _DesignspaceAxis._map 2018-09-11 18:07:15 +02:00
Cosimo Lupo
8c597b5375
mutator: round to closest width class
this is the mapping between the half of each percentage intervals and
the associated usWidthClass:

{56.25: 1,
 68.75: 2,
 81.25: 3,
 93.75: 4,
 106.25: 5,
 118.75: 6,
 137.5: 7,
 175.0: 8}

Notice how wdth=80 (in the adjusted test case) will fall in width class
3, instead of 4, because it is < 81.25, thus closer to the nominal 75
than to 87.5.
2018-06-19 14:16:17 +01:00
Cosimo Lupo
0234b9dbd5
mutator: also clamp usWeightClass between valid 1...1000 2018-06-18 19:45:20 +01:00
Cosimo Lupo
dbe08a62ad
mutator: set usWeightClass, usWidthClass and italicAngle
https://github.com/fonttools/fonttools/issues/1264
2018-06-18 19:40:30 +01:00
Cosimo Lupo
d570fc038a
use otRound when rounding visual coordinates or deltas
So we now round towards +Infinity in:

- floatToFixed (which fully examplify that quotes from OT spec)
- psCharStrings: when packing floats as fixed 16.16
- t2CharStringPen: when rounding coordinates and advance widths
- subset: when rounding advance widths to compute average
- TupleVariation: rounding gvar deltas
- _g_l_y_f: when rounding coordinates: both in GlyphComponent.{x,y}
  and for GlyphCoordinates.toInt()
- _h_m_t_x: for rounding horiz/vert metrics
- varLib: rounding horiz metrics and deltas
2018-06-14 17:40:11 +01:00
Cosimo Lupo
3fe84a65ea
[varLib.mutator] prune fvar nameIDs from instance's name table
Fixes https://github.com/fonttools/fonttools/issues/1227
2018-04-18 12:35:54 +01:00
Cosimo Lupo
2ef60fa989
varLib.mutator: add -o option, use argparse 2018-03-27 14:06:37 +01:00
Behdad Esfahbod
88343d2367 [varLib.mutator] Fix comment 2018-02-21 14:54:27 -08:00
Cosimo Lupo
4bd57b9844 [mvar] rename MVAR_entries -> MVAR_ENTRIES
I like all-uppercase for global constants
2017-10-22 12:19:24 +01:00
Cosimo Lupo
28bb992c1f replace int(round(...)) with round(...)
We don't need to cast to int when using the round function from py23,
as this is a backport of python3's built-in round and thus it returns
an int when called with a single argument.
2017-10-22 12:03:52 +01:00
Behdad Esfahbod
5eb3cbe2b0 [varLib.mutator] Mutate GPOS
Cleans up GDEF varstore as well.

What's left:

- In none of the varLib.merger Mergers we handle the CaretValueFormat3. That should be done,
  even though no one uses this,

- GPOS/GSUB FeatureVariations are not applied.  Shouldn't be hard.

- 'rvrn' should be folded into 'ccmp' or some other default feature.
2017-10-20 20:13:14 -04:00
Behdad Esfahbod
7494943c1b [varLib.varStore] Add VarStoreInstancer 2017-10-20 20:13:14 -04:00
Behdad Esfahbod
117f8f0eb3 [varLib.mutator] Quantize normalized location to F2Dot14 2017-10-20 20:13:14 -04:00
Behdad Esfahbod
1adacb34f0 [varLib.mutator] Apply avar 2017-10-20 20:13:14 -04:00
Behdad Esfahbod
acd2f490af [mutator] Implement MVAR
Test expectation needs updating.  Leaving for someone else to confirm
the new value is correct and update the test.
2017-10-20 20:13:14 -04:00
Behdad Esfahbod
cca7a79018 [varLib] Adjust for supportScalar() default ot=True change
Fixup for 028ed0125244531215d4d774474d929acda14d49
2017-10-19 10:07:08 -07:00
Behdad Esfahbod
f284b733a9 [varLib] Move IUP code into fontTools.varLib.iup 2017-10-15 18:16:01 -04:00
Cosimo Lupo
ca7c35900b [mutator] Add instantiateVariableFont public function
Towards addressing https://github.com/fonttools/fonttools/issues/1070

The new instantiateVariableFont function takes a variable TTFont and a
dictionary of axes locations and returns a static TTFont instance.

The current code modifies the varfont in-place. To adapt it for
generating multiple instances from the same varfont, for now I simply
resorted to making a copy (can be optionally disabled by setting
inplace=True).

Also, replaced print() with log.info().
2017-10-15 17:43:06 +02:00
Jens Kutilek
80414303d0 Add interpolation of cvt/cvar table 2017-10-05 13:32:06 +02:00
Behdad Esfahbod
f0c58ddf9b [varLib] Remove unused import 2017-08-09 21:43:44 -07:00
Behdad Esfahbod
a1629fa52b [varLib] Update supportScalar() to allow for OpenType-specific contraints
Part of https://github.com/fonttools/fonttools/issues/1020
2017-08-07 17:05:29 -07:00
Behdad Esfahbod
3094926304 [varLib] Minor 2017-07-26 11:56:45 -07:00
Cosimo Lupo
fd3cd6f367 Merge pull request #969 from fonttools/varlib-iup
Varlib iup
2017-05-24 11:44:59 +01: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
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
Jens Kutilek
d1cf59d2c9 Use a namedtuple for maxp values 2017-05-04 12:28:02 +02:00
Jens Kutilek
0eb3bb9d25 Use lambda expression for sorting as per @anthrotype’s suggestion 2017-05-04 12:08:04 +02:00
Jens Kutilek
539ef3786a Sort glyphs by component depth before processing (#945) 2017-05-03 19:13:49 +02:00
Miguel Sousa
af3df891b2 [varLib.mutator] Drop all variable tables 2017-03-04 23:30:37 -08:00
Miguel Sousa
9e4e1ffc44 [varLib.mutator] Revert Include HVAR in the list of tables to remove. 2017-03-04 12:58:00 -08:00
Miguel Sousa
33d12e9406 [varLib.mutator] Change ‘GX’ to ‘variable’. Include HVAR in the list of tables to remove. 2017-03-03 14:49:11 -08:00
Cosimo Lupo
2e2125f173
[minor] remove redundant sys import 2017-01-11 12:24:04 +00:00
Cosimo Lupo
b7bb391033
don't use sys.exit(...) inside main(), but only under if __name__ == "__main__"
The convention is that sys.exit(...) is called only if a module is run as a script,
and that main() entry points use return statements to report exit codes: 0 (or None)
for successful execution, or any non-zero integer for errors.

E.g. see the console scripts generated when installing with pip.
2017-01-11 12:10:58 +00:00
Behdad Esfahbod
4fc2a3e5e1 [varLib] Move code around 2016-09-27 19:49:41 +02:00
Behdad Esfahbod
938129b802 [varLib] Use string.ljust() 2016-09-27 19:49:41 +02:00