676 Commits

Author SHA1 Message Date
Cosimo Lupo
5455517689
Merge remote-tracking branch 'origin/master' into partial-instancer 2019-07-31 15:22:48 +01:00
Cosimo Lupo
b59ac7f13e
Revert "Merge pull request #1671 from anthrotype/varlib-single-master-vf"
This reverts commit f3c99cfef211336a9c6921552462ee1661fbcede, reversing
changes made to 1dcb3c2bde86e9977bb384046e594e35ecd18796.
2019-07-29 10:45:25 +01:00
Cosimo Lupo
a5ed37f262
varLib: don't build empty HVAR or gvar tables
Fixes https://github.com/fonttools/fonttools/issues/1670
2019-07-26 13:21:17 +01:00
Behdad Esfahbod
84b9e9c387 [varLib.featureVars] Fix region-merging code on Py3
We should clean up all the various "convert dict to tuple" duplicated
code, but this fixes it for now.  doctest updated.

Fixes https://github.com/fonttools/fonttools/issues/1659
2019-07-09 16:14:01 -07:00
Miguel Sousa
e1f0d1ae09 varLib CFF fixes (#1653)
* varLib.cff: Apply conv_to_int() to all the values

* varLib: Don't hardcode file extension to 'ttf'

Also remove unused imports

* varLib.cff: Fix merging of sparse PrivateDict items

Fixes #1651
2019-06-24 17:10:36 -07:00
Cosimo Lupo
e6b8897f18
instancer: reuse varLib.set_default_weight_width_slant function 2019-06-20 15:09:17 +01:00
Cosimo Lupo
1726a4a1fc
Merge remote-tracking branch 'origin/master' into partial-instancer 2019-06-20 15:05:34 +01:00
Cosimo Lupo
1122a2612b
varLib: add set_default_weight_width_slant
When building a variable font, varLib.build must make sure that
the OS/2.usWeightClass is equal to the wght axis default location,
that the OS/2.usWidthClass is set to the equivalent value (1-9) of
the wdth axis default location, and finally that post.italicAngle
is set to the same default value as slnt axis.

Sometimes the base master doesn't have these values correctly
set leading to discrepancies between OS/2 and post, on the one
hand, and the fvar axes' default values.
2019-06-20 12:23:33 +01:00
Cosimo Lupo
6f1d25497a
Merge remote-tracking branch 'origin/master' into partial-instancer 2019-06-18 18:45:47 +01:00
Cosimo Lupo
4e4f37aa21
varLib.merger: use dict comprehension and zip iterator 2019-06-18 16:30:24 +01:00
Cosimo Lupo
d6c2ea79b6
varLib.merger: simplify if-stmt logic a bit
isPairPos and isSinglePos are mutually exclusive and isSinglePos is only defined if isPairPos is False
so it is safe to use it in 'else' or 'elif' branches (logical expressions short-circuit)
2019-06-18 16:21:33 +01:00
Cosimo Lupo
def6310f4a
varLib.merger: when flattening singlepos, copy valuerecords
to avoid modifying original master fonts' SinglePos tables

https://github.com/fonttools/fonttools/pull/1641/files#r293302141
2019-06-18 16:10:46 +01:00
Cosimo Lupo
8c90878fcf
Merge remote-tracking branch 'origin/master' into fix-singlepos-merge 2019-06-18 15:38:10 +01:00
Cosimo Lupo
eda353c4c1
Merge pull request #1642 from fonttools/CFF2-fixes
Fixes merge bug when VF source have no blends or no marking glyphs in any charstrings.
2019-06-17 16:57:16 +01:00
Cosimo Lupo
c2ec989fcc
Merge pull request #1638 from madig/varLib-merge-kerning-correctly
varLib: Fix merging of class kerning tables
2019-06-14 16:26:07 +01:00
Cosimo Lupo
fc6ea56568
must add comma to make parentheses into a tuple 2019-06-14 16:20:48 +01:00
Cosimo Lupo
c6cf9bbb35
minor typo fix 2019-06-14 16:19:54 +01:00
Cosimo Lupo
3ab7dd143d
minor whitespace 2019-06-14 16:19:29 +01:00
Cosimo Lupo
a45af5d8db
minor: typos in comments [skip ci] 2019-06-14 16:06:04 +01:00
Cosimo Lupo
720b266e89
instancer: minor: skip add cvar delta if None or 0 2019-06-14 15:41:33 +01:00
Cosimo Lupo
952fe9b059
instancer: refactor _instantiateFeatureVariations to avoid too deep nesting
https://github.com/fonttools/fonttools/pull/1628#discussion_r292600019
2019-06-14 14:37:39 +01:00
Cosimo Lupo
29daa994f0
instancer: add docstring for 'instantiateTupleVariationStore' 2019-06-14 12:51:31 +01:00
Cosimo Lupo
1345ae8693
instancer: don't define self in terms of mutator, just say what it is 2019-06-14 11:24:33 +01:00
Cosimo Lupo
65b0609be1
remove redundant table__g_l_y_f.getCoordinates method
just use getCoordinatesAndControls
2019-06-14 11:17:37 +01:00
Cosimo Lupo
751c181f2d
instancer: remove comment about module being 'experimental' 2019-06-14 11:09:48 +01:00
Nikolaus Waxweiler
f48051af23 Fix corrupt class-based pair kerning table merging 2019-06-14 10:05:48 +01:00
ReadRoberts
cc3c928053 [varLib.cff] Fix important bug in merging FF2 PrivateDicts.
There was a bug that caused the PrivateDict of the first region to be used for all others.
2019-06-12 17:11:01 -07:00
ReadRoberts
ec54541e30 [varLib.cff] Fix merging bug when there are no blends or marking glyphs.
If the CFF2 VF has no blends, or no marking glyphs, the default variation table does not get built; this can be needed later for the PrivateDict.
2019-06-12 16:31:29 -07:00
ReadRoberts
b756bcac18 [varLib.merger] Fix merging GPOS SinglePos subtables
When a SinglePost lookup is compiled, pretty much all compilers do some compression by combining similar ValueRecords into a single subtable. This compression produces different lengths of the list of subtables between source fonts. The original code required that all SinglePos lookups have the same subtables, often doesn't work.

I fixed this in varLib.merger.py by first flattening a SinglePos lookup to a single subtable, using the same record format for all records, and then merging the source fonts. After the merge is complete, I call fontTools.otlLib.builder.buildSinglePos() to rebuild the lookup subtables.
2019-06-12 14:30:30 -07:00
Cosimo Lupo
97405ddb35
instancer: also update sidebearings+bbox of glyphs with no variations
Previously we were calling glyf.setCoordinates method only when a glyph had some
variation deltas to be applied to the default glyf coordinates.
However, some composite glyph may contain no variation delta but their base glyphs
may change, thus we still need to update the sidebearings and bounding box of the
composite glyphs.
2019-06-06 13:38:11 +01:00
Cosimo Lupo
1febf7f5a2
minor formatting 2019-05-31 12:37:31 +01:00
Cosimo Lupo
06ad903ef1
instancer: rename locals from snake_case to camelCase for consistency
the rest of the instancer module uses camelCase, no point in having both styles within the same module
2019-05-31 12:26:03 +01:00
Cosimo Lupo
de2d5382ba
instancer: add more info to module-level docstring 2019-05-31 12:26:03 +01:00
Cosimo Lupo
b878b867c0
instancer: don't break on unsupported condition formats
continue checking subsequent condition tables in case the other may
be format=1 and may reference a pinned axis; in which case, these
conditions need to be dropped from the condition set, or the whole
record needs to be dropped if the instance coordinate is outside the
condition range.
Condition tables within a condition set are associated with a AND
boolean operator, so if any one doesn't match, the whole set doesn't
apply. Even if we don't recognize one condition format, if we do
ascertain that another condition table does not match the current
partial instance location, we can drop the FeatureVariation record
since it doesn't apply.
2019-05-30 13:13:06 +01:00
Cosimo Lupo
afc194db19
featureVars: populate counts on OT tables
this is done automatically upon compiling; however it's good to do it here
as well, in case one wants to pass the updated font directly to other modules
like 'subset' which requires these fields to be present -- without having
to first compile and decompile.
2019-05-30 12:29:23 +01:00
Cosimo Lupo
36f2775d6c
instancer: always keep FeatureVariationRecords with unknown condition format
there was a logic issue in the function that checks whether a FeatureVariationRecord
has a unique set of condition (was returning False instead of True for unsupported condition).
It's safer to always keep such records with unknown condition formats as new formats
may be added in the future. A warning is already issued in these cases.
2019-05-30 11:22:01 +01:00
Cosimo Lupo
823f0fc021
instancer: fix invalid operand '-'; dict.keys() returns list in py27 2019-05-29 19:33:36 +01:00
Cosimo Lupo
5a3c3334fe
instancer: fix typo in logger name 2019-05-29 19:22:02 +01:00
Cosimo Lupo
11c662ee4d
instancer: only keep unique FeatureVariationRecords
After partial instancing, multiple FeatureVariationRecords may end up with
the same set of conditions (e.g. if one references two axes, one of which
is dropped, and a subsequent one also references the same axis that was
kept in the preceding record's condition set, and the min/max values are
the same for both records).
Therefore, we make sure only the first unique record with a given
configuration of conditions is kept. Any additional records with identical
conditions will never match the current context so they can be dropped.
2019-05-29 18:33:36 +01:00
Cosimo Lupo
60754aab8e
instancer: prune unreferenced lookups in instantiateFeatureVariations
the 'prune_lookups' method is dynamically set on the table_G_S_U_B class
only after importing the fontTools.subset module
2019-05-29 18:33:35 +01:00
Cosimo Lupo
7867c582da
instancer: remap axis indices in instantiateFeatureVariations
ConditionTable.AxisIndex needs to change when dropping axes, to
refer to the same axis in the modified fvar.axes array.

There was also another bug when a condition was not met,
and the `applies` flag (initialised to `True`) was not set to
`False`, thus substutions were incorrectly applied.
2019-05-29 18:20:11 +01:00
Cosimo Lupo
e2c0acf1c2
Merge remote-tracking branch 'origin/master' into partial-instancer 2019-05-29 18:04:54 +01:00
Cosimo Lupo
aa8a5bc616
featureVars: avoid duplicate refs to 'rvrn' feature in default langsys
the buildGSUB function creates an empty GSUB with no FeatureRecords, so the
FeatureIndex list should be empty initially; the index of the newly created
rvrn feature record will be appended later on by addFeatureVariationsRaw
function.
2019-05-29 13:40:57 +01:00
Behdad Esfahbod
2ac470b96b Ouch, fix indentation
My bad.  Really sorry.
2019-05-25 17:18:35 -04:00
Behdad Esfahbod
0442d9062a Improve allEqual 2019-05-25 16:12:24 -04:00
Cosimo Lupo
17254fe37a
varLib.merger: Class2Record.Value{1,2} may not be initialised to None
When importing from TTX, these attribute are not there.
2019-05-21 18:42:38 -04:00
Cosimo Lupo
1fdee0454a
instancer: also in GDEF 1.3 VarStore is optional and can be None 2019-05-21 18:42:13 -04:00
Cosimo Lupo
4051976f48
Merge remote-tracking branch 'origin/master' into partial-instancer 2019-05-21 14:54:42 -04:00
Cosimo Lupo
058165dc5c
instancer: mention special None and 'drop' in docstring and --help 2019-05-21 14:40:26 -04:00
Cosimo Lupo
0e9c5d9fe8
instancer: rename 'None' to 'drop'
https://github.com/fonttools/fonttools/pull/1617#issuecomment-494455729
2019-05-21 14:06:44 -04:00