1487 Commits

Author SHA1 Message Date
Sascha Brawer
317c26418a [cvar] Compile tuple variations whose deltas affect constants 2017-01-10 10:10:21 +01:00
Sascha Brawer
552b72c3d6 [gvar] Cosmetic cleanup of unit tests 2017-01-10 10:10:21 +01:00
Behdad Esfahbod
3e5335d335 When promoting a lookup to Extension type, set LookupType
Fixes https://github.com/fonttools/fonttools/issues/798
2017-01-09 19:52:32 -08:00
Sascha Brawer
689008a4f5 [gvar/cvar] Rename decompileVariationTuples to decompileVariationTupleStore
For consistency with the terminology of the OpenType 1.8 specification,
and for symetry with the compileVariationTupleStore function.
2017-01-09 19:00:39 +01:00
Sascha Brawer
5d3eae404c [cvar] Compile TupleVariationStores in common library 2017-01-09 17:34:45 +01:00
Sascha Brawer
c3d68a684e [cvar] Move compileSharedTuples() to module TupleVariation 2017-01-09 17:01:43 +01:00
Sascha Brawer
87d854e881 [cvar] Move decompilation of shared tuples to TupleVariation.py 2017-01-09 14:25:16 +01:00
Sascha Brawer
24a02fedd7 [cvar] Refactor decompilation of tuple variation stores 2017-01-09 14:05:52 +01:00
Sascha Brawer
625460836a [cvar] Pass table tag to point decompilation routine 2017-01-09 13:23:51 +01:00
Sascha Brawer
de55ab2889 [cvar] Rename numPointsInGlyph to pointCount so it works for cvar
There are no glyphs in the `cvar` table.
2017-01-09 13:21:51 +01:00
Sascha Brawer
7c082600d3 [cvar] Move decompilation for single TupleVariation out of gvar
Rename local variables to match terminology of OpenType 1.8 specification
2017-01-09 12:14:12 +01:00
Behdad Esfahbod
dc1a3bdb1d [OS/2] Don't fail if font does not have cmap table 2017-01-09 01:09:21 -08:00
Behdad Esfahbod
aeafda539b Oops! 2017-01-09 00:38:46 -08:00
Behdad Esfahbod
e4d88b5a38 Extra protection
Fixes https://github.com/fonttools/fonttools/issues/797
Although for the XML->binary case, that bug was already fixed
on master because of the XML populate-default changes.
This adds extra protection!
2017-01-08 23:47:29 -08:00
Behdad Esfahbod
80535c224e Fix XML->binary when LookupOrder is NOT specified
Fix for 495c6831e19ff9992fb801d2930e79c7d13736ae; bringing the intended
behavior documented in that commit.
2017-01-08 23:45:03 -08:00
Sascha Brawer
7f9ab7fc7f [gvar] Remove unused function 2017-01-05 17:54:38 +01:00
Sascha Brawer
f5a679661d [gvar] Use ttLib accessors for importing module and module class 2017-01-05 17:40:39 +01:00
Sascha Brawer
980ee57b0e [gvar] Rename gvar.decompileSharedCoords() to decompileSharedTuples()
The new name is consistent with the terminology of the OpenType 1.8
specification, which calls the decoded structure the `SharedTuples`
array.
2017-01-05 14:18:52 +01:00
Sascha Brawer
039cb48927 [gvar] Move gvar.computeMinMaxCoord() to TupleVariation.inferRegion()
Document what this helper function does, using terminology from
the OpenType 1.8 specification.
2017-01-05 13:35:27 +01:00
Sascha Brawer
39c4ef621c [cvar] Change warning message for out-of-range points 2017-01-05 08:55:36 +01:00
Sascha Brawer
6275668840 [cvar] Support XML input/output for TupleVariations on constant values
OpenType TupleVariations can be used in two places:

* In the `gvar` table, they modify glyph contour points by shifting
  them towards a point in 2D space.

* In the `cvar` table, they modify constant values.

Before this change, we only had code to handle the `gvar` version
which shifts points around by delta values.

After this change, the XML parsing and generation routines of
TupleVariations can handle deltas that modify constant values in the
CVT table, as used in `cvar`.

An upcoming change will add support for the binary encoding of
TupleVariations as needed for `cvar`.
2017-01-04 18:16:14 +01:00
Sascha Brawer
01f95fc190 [gvar] Rename header fields to match OpenType specification
The initial implementation had been written with Apple's TrueType
specification, before OpenType supported variations.
2017-01-04 16:24:32 +01:00
Sascha Brawer
271987a89f [gvar] Adjust comment about broken variation fonts on macOS 2017-01-04 14:31:52 +01:00
Sascha Brawer
3420bb116c [gvar] Move TupleVariation to its own source file
The TupleVariation structure is used both for `gvar` and `cvar`.
2017-01-04 14:07:38 +01:00
Sascha Brawer
1d28abdb65 [gvar] Rename GlyphVariation to TupleVariation
In the OpenType 1.8 specification, this is called TupleVariation
so let's be consistent with the spec. (The initial implementation
in fonttools pre-dates OpenType 1.8).
2017-01-04 12:41:55 +01:00
Sascha Brawer
a837a3950f [gvar] Use flag names from OpenType 1.8
FontTools has initially been implemented using the Apple TrueType
specification.  When OpenType adopted variations, some identifier
names were changed.
2017-01-03 17:09:47 +01:00
Behdad Esfahbod
45fa26b28c Set propagated counts while reading XML
Now reading XML and immediately writing it back to XML should be fully
supported and generate the same XML.

Code is a bit hacky (we don't have the reader object, so abuse font for
passing state down tree...).
2017-01-02 23:23:44 -05:00
Behdad Esfahbod
1eb8afbfa3 When reading from XML, populate all members that are computed
Not really all... Propagated counts are still not populated.
Most of mti_tests pass again.  Four failing now.

NB: In the code being removed in this commit, this line:

"setattr(self, conv.repeat, len(seq)+conv.aux)"

had the wrong sign for conv.aux.  Should have been a minus.
2017-01-02 23:23:44 -05:00
Behdad Esfahbod
36adb92f58 Remove default postRead and preWrite
The existence of those attrs now can be used for semantic purposes.
2016-12-30 19:17:56 -05:00
Behdad Esfahbod
df0b3a25ca [otBase] Remove globalState object
Was only used for keeping tableTag around; just do that.
2016-12-28 20:54:57 -05:00
Behdad Esfahbod
8633b9c0ae [otBase] Remove cachingStats machinery
It's marginally useful when touching the bowels of otBase, but even
then, looks like it was broken as no code was populating it.
2016-12-28 20:44:15 -05:00
Behdad Esfahbod
ae7705e3ec Minor 2016-12-28 20:41:07 -05:00
Behdad Esfahbod
495c6831e1 Don't ignore Lookup.LookupType
A while back I changed code such that Lookup.LookupType is written as a
comment in XML, and ignored when compiling.  The LookupType from type
of actual subtables in a lookup were used during compilation instead.
This caused the problem where an empty lookup (one with no subtables)
would lose its lookup types, among other subtle problems.

With this change we revert above behavior, but keep the benefits: if
Lookup.LookupType is different from actual lookup type of the subtables,
compilation raises an exception.  Setting LookupType on Lookup object
or in XML is optional now, but written out by default in XML (instead
of as a comment).

This changes XML output for all GSUB/GPOS tables.  I'm sorry for the
noise.  Please update your sources.

Fixes https://github.com/fonttools/fonttools/issues/789
2016-12-28 20:11:57 -05:00
Behdad Esfahbod
293ede97a3 Try to set Count variables when importing XML
This does it for the simple cases, but not propagated ones.

Also, when writing to XML, if a Count or otherwise-computed value is
not set, don't write it out.
2016-12-28 16:45:24 -05:00
Behdad Esfahbod
312203b661 [cmap] Skip gid=0 entries when decompiling cmap
gid=0 means "not mapped".  Many of the cmap formats use this to
optimize byte encoding.  When reading these tables, we don't
want to map charcodes to gid0 in the resulting struct.
2016-12-27 18:42:03 -05:00
Behdad Esfahbod
05950fcbab [cmap] Rewrite loop 2016-12-27 18:38:42 -05:00
Behdad Esfahbod
48f4e4ed04 [cmap] Factor out some common code 2016-12-27 18:36:59 -05:00
Behdad Esfahbod
2d3610bb6b Ignore class=0 when reading & writing ClassDef objects
class=0 items might be added as an optimization.  They have no semantic value.
Ignore them.

Fixes the last of mtiLib tests.
2016-12-26 17:26:14 -05:00
Behdad Esfahbod
101303ab50 [mtiLib] Fix two more tests 2016-12-26 17:14:39 -05:00
Cosimo Lupo
689d0c3fe4
set maxDiff=None attribute only once, using setUpClass method of unittest.TestCase 2016-12-21 13:57:44 +00:00
Cosimo Lupo
f112a05be2
adjust unit tests to expect a list of strings from getXML() 2016-12-21 13:57:44 +00:00
Denis Moyogo Jacquerye
d2f5c63fef STAT: test_compile_* tests (#783) 2016-12-21 10:53:32 +01:00
Denis Moyogo Jacquerye
71df2fe7d5 Add MVAR tests (#781)
* MVAR: add decompile_toXML test

* MVAR: add test_compile_fromXML

* M_V_A_R_test.py: if __name__ == '__main__'
2016-12-21 08:33:55 +01:00
Behdad Esfahbod
d9e915c925 Fix compile of MVAR and STAT tables 2016-12-19 18:21:11 -06:00
Behdad Esfahbod
b4d53811e9 Implement MVAR table 2016-12-18 21:55:45 -06:00
Sascha Brawer
fcd697a328 [STAT] Add test case for decoding version 1.1 of STAT table 2016-12-13 09:44:03 +01:00
Denis Moyogo Jacquerye
250017289b Revert "[STAT] It was decided to NOT bump minor version..."
This reverts commit 06de8ce81824f737a1e35bfb00b1f68db767037e.
2016-12-12 16:42:55 +00:00
Behdad Esfahbod
06de8ce818 [STAT] It was decided to NOT bump minor version...
...since no one implements STAT so far.  So, version stays at 1.0.
2016-12-07 18:11:50 -08:00
Behdad Esfahbod
9ca34a08ec [STAT] Update for version 1.1; hasn't made it into spec yet! 2016-12-04 21:22:47 -08:00
Sascha Brawer
0de6e8d4ff Update table list for STAT table 2016-12-02 19:14:32 -08:00