75 Commits

Author SHA1 Message Date
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
f688d4bb86
[Tests/varLib] adjust STAT expected test data 2018-04-16 12:40:02 +02:00
Behdad Esfahbod
42bef176a3 [varLib] Tweak support-resolution algorithm
Improve varLib model algorithm.

This, basically means any varfont built that had an unusual master
configuration will change when rebuilt.

Here's a good test: a two-axis with 8 masters at unusual locations:

2-----------------5----------3
|                            |
|                    7       |
|                            |
|              6             |
|                            |
|                            |
|                            |
0-----------4----------------1

Previously, the reach of master 3 (Black Extended) would
have started from A=.4, ie, the A position of master 4.
It now correctly starts from 0. Same thing with masters
after it. Ie, master 5 gets a span on the A axis from
0 to 1, whereas before it was getting from .4 to 1.

Previously, the on-axis masters always cut the space. They
don't anymore. That's more consistent, and fixes the main
issue Erik showed at TYPO Labs 2017.  Same issue was also
causing the reach of master 3 to be limited, which I think
is the issue being discussed in the linked issue. Both should
be fixed.

It's hard to describe exactly what happened before / after.
Best to read the actual support values:

Before:
Sorted locations:
$ ./fonttools varLib.models 0,0 0,1 1,0 1,1 .4,0 .6,1 .5,.5 .7,.7
[{},
 {'A': 0.4},
 {'A': 1.0},
 {'B': 1.0},
 {'A': 1.0, 'B': 1.0},
 {'A': 0.6, 'B': 1.0},
 {'A': 0.5, 'B': 0.5},
 {'A': 0.7, 'B': 0.7}]
Supports:
[{},
 {'A': (0.0, 0.4, 1.0)},
 {'A': (0.4, 1.0, 1.0)},
 {'B': (0.0, 1.0, 1.0)},
 {'A': (0.4, 1.0, 1.0), 'B': (0.0, 1.0, 1.0)},
 {'A': (0.4, 0.6, 1.0), 'B': (0.0, 1.0, 1.0)},
 {'A': (0.4, 0.5, 1.0), 'B': (0.0, 0.5, 1.0)},
 {'A': (0.5, 0.7, 1.0), 'B': (0.5, 0.7, 1.0)}]

After:
$ ./fonttools varLib.models 0,0 0,1 1,0 1,1 .4,0 .6,1 .5,.5 .7,.7
Sorted locations:
[{},
 {'A': 0.4},
 {'A': 1.0},
 {'B': 1.0},
 {'A': 1.0, 'B': 1.0},
 {'A': 0.6, 'B': 1.0},
 {'A': 0.5, 'B': 0.5},
 {'A': 0.7, 'B': 0.7}]
Supports:
[{},
 {'A': (0, 0.4, 1.0)},
 {'A': (0.4, 1.0, 1.0)},
 {'B': (0, 1.0, 1.0)},
 {'A': (0, 1.0, 1.0), 'B': (0, 1.0, 1.0)},
 {'A': (0, 0.6, 1.0), 'B': (0, 1.0, 1.0)},
 {'A': (0, 0.5, 1.0), 'B': (0, 0.5, 1.0)},
 {'A': (0.5, 0.7, 1.0), 'B': (0.5, 0.7, 1.0)}]

TODO: We should add this as a test case.

There's another improvement I want to make, but that's separate.
2018-03-26 20:32:27 -07:00
Behdad Esfahbod
1adf7fd2c0 [varLib] Update tests for VarStore optimization
Also, don't emit GDEF if VarStore is empty.
2018-02-21 01:10:36 -08:00
Behdad Esfahbod
d5efd2b7ee [varLib] When optimizing NumShorts, drop zero columns
Related to https://github.com/fonttools/fonttools/issues/1184
2018-02-20 20:51:56 -08:00
Behdad Esfahbod
48125e9812 [varLib] Fix HVAR generation
We cannot tail-optimize there.
2018-02-18 22:58:47 -08:00
Behdad Esfahbod
21cbab8ce9 Fix read/write of VarIdxMap to use glyph names
Was relying on glyph IDs. Ouch.
2018-02-18 22:33:32 -08:00
Behdad Esfahbod
eb6af2da72 [varLib] Fix pruning of HVAR 2018-02-18 21:49:39 -08:00
Cosimo Lupo
f62f79eb23
otConverters: don't write XML comment if NameID value is 0 == NULL
Fixes https://github.com/fonttools/fonttools/issues/1151
2018-01-19 13:25:59 +00:00
Miguel Sousa
62df8ba108 [varLib_test] update expected results
The STAT table is now beginning to be generated after
8af430997d
2017-11-13 23:33:55 -08:00
Cosimo Lupo
26a2616286 [varLib_test] upldate expected results
We pass the fvar axis order to VariationModel after
645b7a8355
2017-10-26 11:25:06 +01:00
Behdad Esfahbod
3fbc4688eb [varLib.mutator] Drop GDEF is nothing left in it
Part of fixing https://github.com/fonttools/fonttools/pull/1079#issuecomment-338710803
2017-10-25 11:58:44 -04:00
Cosimo Lupo
5de673c424 [Tests] adjust GDEF expected data 2017-10-20 20:13:14 -04:00
Behdad Esfahbod
5fabd3eb32 [varLib] Fix build expectation after MVAR support in mutator
Looks right to me...
2017-10-20 20:13:14 -04:00
Jens Kutilek
a25a401fd2 Merging TT hinting (#1069)
Merge cvts; copy fpgm, prep, glyf programs from base master if compatible.
2017-10-12 10:40:40 +02:00
Jens Kutilek
55cda3901c Only emit a cvar tuple if any delta is not zero. 2017-10-09 17:30:27 +02:00
Jens Kutilek
f7c4995413 Set correct expected control value 2017-10-09 13:22:33 +02:00
Jens Kutilek
9209da1bc3 Add cvt table to test data 2017-10-09 13:18:59 +02:00
Jens Kutilek
5b39aa7af2 Implement building cvar tables 2017-10-09 13:08:55 +02:00
Jens Kutilek
f0d5db9975 Add cvt tables to test data 2017-10-06 11:47:20 +02:00
Jens Kutilek
80414303d0 Add interpolation of cvt/cvar table 2017-10-05 13:32:06 +02:00
Cosimo Lupo
8f5929879d [varLib_test] minor
There must be some keystroke in my text editor that triggers these
strange non-ASCII unprintable characters...

I didn't have time to investigate.
2017-08-16 19:04:13 +01:00
Cosimo Lupo
2524d76bdb [varLib/data] add UFO sources for Noto Sans subset
used to build the the interpolatable ttx files.

We can reuse it for other variation-related tests.
2017-08-16 18:46:38 +01:00
Cosimo Lupo
45c08d2858 [varLib_test] add tests for building avar table
this adds three new tests for varLib.build:

1) the input designspace contains a single 'weight' axis with <map>
   elements that modify the normalization mapping;

2) the input designspace contains two 'weight' and 'width' axes both
   with <map> elements, but the 'width' axis only contains identity
   mappings;

3) the input designspace contains two 'weight' and 'width' axes, but
   only one axis ('weight') has some <map> elements.

The master interpolatable ttx files for 'TestFamily3' are a subset of
Noto Sans containing only the letters to type the word "FontTools".
2017-08-16 18:44:18 +01:00
Cosimo Lupo
d89fcf93bc [varLib_test] add 'MVAR' to expected tables list
Note: the `expect_ttx` test is passing, but the `check_ttx_dump` which ensures the TTX dump is the same after saving and reloading the font, is currently failing, as the "ValueRecordSize" count is None

```
--- /Users/cosimolupo/Documents/Github/fonttools/Tests/varLib/data/test_results/Build.ttx
+++ /var/folders/7k/fl5q53lj51g0d8hxdkrx9_z80000gn/T/tmpoBCAua/tmp1.ttx
@@ -174,8 +174,7 @@
   <MVAR>
     <Version value="0x00010000"/>
     <Reserved value="0"/>
-    <ValueRecordSize value="8"/>
-    <!-- ValueRecordCount=2 -->
+    <ValueRecordSize value="None"/>
     <VarStore Format="1">
       <Format value="1"/>
       <VarRegionList>
```
2017-08-03 16:51:25 +01:00
Cosimo Lupo
4398e3b26b [Tests/varLib] fix up expected test data following latest IUP optimization algorithm 2017-07-27 17:06:32 +01:00
Cosimo Lupo
fd3cd6f367 Merge pull request #969 from fonttools/varlib-iup
Varlib iup
2017-05-24 11:44:59 +01:00
Behdad Esfahbod
877ac7540c Fix test after 0ed2df3f22bd4172e439b8deeb2070e3f62b26d3
interpolate_layout now accepts axis names in designspace name
format, NOT axis tags.
2017-05-23 00:31:15 -07:00
Jens Kutilek
92c8b3f754 Add test and test data for mutator with interpolated points 2017-05-18 16:40:33 -07:00
Sascha Brawer
017fa4e9c6 [fvar] Expose flags in XML
Fixes https://github.com/fonttools/fonttools/issues/932.
2017-05-02 00:51:44 +08:00
Behdad Esfahbod
f056c124e5 [misc.classifyTools] Make classification order stable
Sets don't have a welldefined comparison function, so sort them...

Not the most efficient implementation, but good enough.

Fixes https://github.com/fonttools/fonttools/issues/927
2017-04-18 15:57:14 -07:00
Miguel Sousa
6241ff77ec [varLib_test] no need for this test since axisMap parameter is no longer supported
test_varlib_build3_ttf() already covers the case of a .designspace without <axes> element
2017-04-13 00:58:23 -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
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
Cosimo Lupo
3f7e095748
[varLib_test] add MVAR table to expected BuildMain.ttx 2017-04-12 12:27:32 +01:00
Behdad Esfahbod
6881121827 Fix tests for recent changes 2017-04-05 15:50:24 +02:00
Behdad Esfahbod
a2b23811a2 Merge pull request #887 from fonttools/class-kern-merge
[varLib.merger] Fix interpolating PairPos Format 2
2017-03-16 16:03:34 -07:00
Miguel Sousa
6ba428eaf7 [varLib.interpolatable test] OTF example 2017-03-15 23:14:21 -07:00
Cosimo Lupo
af7ff9a8fd
fix "InterpolateLayoutGPOS_2_class_diff2.ttx" expected test result
6f41c2ab53 (commitcomment-21293526)
2017-03-13 17:20:28 +00:00
Miguel Sousa
6f41c2ab53 [varLib.interpolate_layout] Fix GPOS LookupType 2 class pairs test results 2017-03-13 06:51:54 -07:00
Miguel Sousa
0cc4ea85c6 [varLib.interpolate_layout] Tests for GPOS LookupType 2 class pairs 2017-03-13 06:51:54 -07:00
Cosimo Lupo
35b9efe648
[varLib.builder_test] added unit tests for buildVarData
b2825ff6b3 (commitcomment-21256990)

Note that the "Tests/varLib/__init__.py" file is necessary so that pytest can distinguish between same-named test modules (e.g. we have another "builder_test.py" file in Tests/feaLib).
2017-03-10 16:01:07 +00:00
Miguel Sousa
3caeb3dab0 [varLib.interpolate_layout] Tests for GPOS ‘size’ feature and LookupType 3, 4, 5, 6 and 8 2017-03-09 03:16:27 -08:00
Miguel Sousa
a3351b9cc4 [varLib.interpolate_layout] Tests for GPOS LookupType 1 and LookupType 2 specific pairs 2017-03-08 01:44:48 -08:00
Cosimo Lupo
dbaa7091c0
[interpolatable_test] skip unless scipy or munkres are installed 2017-03-07 11:35:22 +00:00
Miguel Sousa
8212916aa4 [varLib tests] Test for interpolatable.py 2017-03-06 03:04:45 -08:00
Miguel Sousa
77144253b6 [varLib tests] Add composite glyph ‘atilde’ to TestFamily2 2017-03-06 01:21:03 -08:00
Miguel Sousa
bbecfe38c4 [varLib tests] More tests 2017-03-06 00:59:21 -08:00
Miguel Sousa
274654d440 [varLib tests] Move test results to separate folder 2017-03-05 13:44:32 -08:00