5114 Commits

Author SHA1 Message Date
Erik van Blokland
554aa362bd WIP Change warnings.warn to logger.info and logger.warning.
findDefault only looks for the sourceDescriptor on the default of all axes. Returns None otherwise.
Remove _axesAsDict - not needed.
Shortened logger name to "DesignSpaceLog"
2018-05-30 22:21:05 +02:00
Erik van Blokland
855a475ad2 WIP removed test for incomplete rules. Added test for stray conditions. Removed high unicode character from lib test. Read stray unwrapped conditions, put them in a conditionset. 2018-05-27 19:18:13 +02:00
Erik van Blokland
a24b00ba14 WIP Comments. 2018-05-27 12:36:57 +02:00
Erik van Blokland
6c649aa023 Remove checkAxes() 2018-05-27 12:19:16 +02:00
Erik van Blokland
8582dbdd2a WIP. Some comments. 2018-05-27 09:50:00 +02:00
Erik van Blokland
1f7f4e42ab WIP reformat some of the docstrings. 2018-05-25 15:22:00 +02:00
Erik van Blokland
b774d8c3e8 WIP remove fontTools.varLib import. 2018-05-25 11:46:44 +02:00
Erik van Blokland
16cba5ad81 WIP Remove _locationFromElement. Single method for newDefaultLocation. Split some of the tests into smaller things. Add some thoughts to normaliseLocation and why this needs a separate method from the one in varLib. 2018-05-25 11:43:58 +02:00
Erik van Blokland
46bfc1c907 WIP Rename self.axes and self.rules attributes of the reader and writer to self._axes and self._rules
Comment out self._locationFromElement - not sure why it exists, let's see if someone complains.
Only raise missing axes error if we read a location *and* we have no axes. This allows a designspace file with a lib but without sources.
Only do findDefault() if we have sources.
2018-05-24 22:47:31 +02:00
Erik van Blokland
9d91c82bbe WIP test documentLib. Add a warning if a findDefault can't find a suitable location. 2018-05-24 21:49:33 +02:00
Erik van Blokland
07fb8abac3 WIP
Add clarification about document.lib keys using reverse domain name notation.
Add test for document.lib with some nested data.
2018-05-24 21:42:21 +02:00
Cosimo Lupo
01173c4599
Merge pull request #1261 from chrissimpkins/ttx-tests
Add ttx tests
2018-05-23 20:13:22 +01:00
Erik van Blokland
3b6708940f WIP remove guessAxes 2018-05-23 16:15:14 +02:00
Erik van Blokland
086de222fa WIP axes are compulsory, so don't accomodate missing axes. Raise error if document is missing axes.
We know what the default location is before we start reading the masters and there is no guessing.
findDefault() method: default master is at all default values of all axes, or if that fails, the master with the copyInfo flag.
Warn if a location contains an axis that is not defined in the axes element. Otherwise ignore this value, no guessing.
Remove rulesToFeature() function.
2018-05-23 13:19:23 +02:00
Cosimo Lupo
299320d0b1
Snippets/layout-features.py: allow to load from ttx file 2018-05-23 11:50:40 +01:00
Chris Simpkins
90f3ddf463 [tox.ini] remove unnecessary zopfli dependency
this was added to requirements.txt to support ttx testing in the ttx_test.py module
2018-05-22 15:21:23 -04:00
Chris Simpkins
4602f75729 [requirements.txt] add zopfli dependency at version 0.1.4
zopfli at tagged release zopfli-1.0.2
2018-05-22 15:20:29 -04:00
Chris Simpkins
b52ddaddeb convert new ttx tests to py.path.local path joins and file checks 2018-05-22 15:13:51 -04:00
Chris Simpkins
f2eb328125 parametrize ttCompile timestamp tests 2018-05-22 07:50:23 -04:00
Chris Simpkins
c2fe5d25fd test formatting changes 2018-05-22 00:41:22 -04:00
Chris Simpkins
267d314233 [ttx] remove unreachable code 2018-05-21 23:50:26 -04:00
Cosimo Lupo
bbd1ba64b2
Merge pull request #1263 from mashabow/patch-1
Fix formatting of DesignSpaceDocument spec
2018-05-21 20:13:38 +01:00
Cosimo Lupo
fc6f758d20
feaLib: add __all__ to ast module
for * imports
2018-05-21 12:40:14 +01:00
Masaya Nakamura
29d3abe920
Fix formatting of DesignSpaceDocument spec 2018-05-21 16:07:09 +09:00
Chris Simpkins
bb4753acd4 ttx tests: convert to skipped tests on Win using pytest skipif fixture 2018-05-14 22:47:01 -04:00
Chris Simpkins
189e2487fe ttx tests: exclude mocked exceptions on Windows platform testing 2018-05-14 20:32:37 -04:00
Chris Simpkins
3e7b33c22f fix invalid path in ttx test 2018-05-14 17:15:28 -04:00
Chris Simpkins
1404624f3c ttx tests: add tests for Options, ttCompile, ttList, main 2018-05-14 16:39:23 -04:00
Chris Simpkins
cf5b31e9c6 add zopfli to tox testing dependencies 2018-05-14 07:51:20 -04:00
Cosimo Lupo
ceb41ec484 WIP: implement conditionSets in designspaceLib.RuleDescriptor (#1255)
* [designspaceLib] WIP: add conditionSets to RuleDescriptor...

the BaseDocReader still needs to be updated to be able to read both
legacy condition-without-conditionset and new-style conditionset
elements.

* test_rules: replace rule.conditions with conditionSets

* Tests: update test.designspace to use conditionset; replace 'with' with 'byname' in sub element

I don't like too much that now 'byname' precedes alphabetically 'name'.
We need to see if ElementTree allows to sort attribute arbitrarily

* Change versionnumber to 4.0 - would that be enough, or should there be seperate major / minor fields?
If we bump the version up to numeral 4, I'd like the check for the with / byname attributes. We can read the old `byname` and only write the new `with`.
Remove support for `initial` in axis attributes.

* WIP - formatversion, with attribute,

* WIP
anything that is not version 4.0 is version 3.0
added some local paths to the test so I can see what it's generating. I can take this out later.

* WIP
read the conditionsets properly. This makes the tests fail no longer.

* WIP
disambiguate axis tags from axis names. Test axes are now called "axisName_x", tags are called "TAGX"

* WIP forgot to push

* WIP
Raise `DesignSpaceDocumentError` when no maximum or minimum are given in a condition.
Add test for such an incomplete rule.
Remove path cruft.

* WIP improved test of raised error.

* WIP because no bot.

* WIP more spaces around percents.

* WIP - don't skip empty subs, just load whatever is there.

* WIP do not permit empty axes in a location when evaluating a rule. Fix some tests.

* WIP missed a str(tempdir), some rule tests.

* WIP proposal for changes to the designspace spec to the `rule` and `sub` elements.

* WIP edits.

* WIP. Typo.
2018-05-14 11:29:48 +02:00
ReadRoberts
4da8f43eeb
[varLib] Fix bug in varLib.build() for CFF2.
The logic should attempt to build a cvar table only if there is a glyf table. This stack dumps when the font is a CFF2 font.
2018-05-10 10:12:28 +01:00
Behdad Esfahbod
f3c06fba3f Revert "[subset] Set to None empty Coverage tables in MarkGlyphSets"
This reverts commit 02616ab9b39d2e9618baebc4e051ae0a85200751.

Make OTS happy. Phew.
https://github.com/khaledhosny/ots/issues/172
2018-05-08 16:28:17 -07:00
Behdad Esfahbod
2ab38f9ba4 [subset] Handle None coverages in MarkGlyphSets 2018-05-08 15:24:36 -07:00
Cosimo Lupo
ca92b172f5
ttFont: allow to build glyph order without post nor cmap, just maxp.numGlyphs
could be useful to read in incomplete sfnt fonts e.g. containing only GPOS or GSUB tables
and a bare maxp table with the numGlyphs
2018-05-06 15:33:18 +01:00
Jens Kutilek
ae4472860f No need to use .keys() 2018-05-04 13:37:59 +02:00
Jens Kutilek
4a16d1839d Add __len__ method to TTFont._TTGlyphSet 2018-05-04 13:12:18 +02:00
Cosimo Lupo
a2f21a2155
Bump version: 3.26.0 → 3.26.1.dev0 2018-05-03 16:10:00 +01:00
Cosimo Lupo
e7e2bb9312
Release 3.26.0 2018-05-03 16:09:59 +01:00
Cosimo Lupo
7508aab346
Update changelog 2018-05-03 16:07:37 +01:00
Cosimo Lupo
28bd06a8de
README.rst: place gitter badge at the top next to the others
[ci skip]
2018-05-03 14:23:21 +01:00
Cosimo Lupo
1a42fa9e8a
Merge pull request #1256 from gitter-badger/gitter-badge
Add a Gitter chat badge to README.rst
2018-05-03 14:21:04 +01:00
The Gitter Badger
e899eab92b Add Gitter badge 2018-05-03 13:19:14 +00:00
Cosimo Lupo
f82ef7a410
[Doc/designspaceLib] mention list of 'subs' in RuleDescriptor 2018-05-03 12:27:50 +01:00
Cosimo Lupo
23af3227b7
[Doc/designspaceLib] mark rule 'name' as optional 2018-05-03 11:51:18 +01:00
Cosimo Lupo
162ad1c842
Merge pull request #1254 from fonttools/designspacelib-conditionset-spec
designspaceLib: This adds conditionsets to the rule element.
2018-05-03 11:35:14 +01:00
Erik van Blokland
6958481eb0
Merge pull request #1253 from fonttools/designspacelib-layer-spec
Designspacelib layer spec
2018-05-03 10:32:57 +02:00
Erik van Blokland
c79a4326ac Remove old test. 2018-05-03 10:04:07 +02:00
Erik van Blokland
066a9c9061 This adds conditionsets to the rule element. 2018-04-29 12:23:19 +02:00
Erik van Blokland
1fededb376 Changed sourceDescriptor object attribute to layerName.
Changed non-standard axis name to all caps.
2018-04-28 13:01:25 +02:00
Behdad Esfahbod
0ecf5c5c94 [varLib.models] Refine modeling one last time
In a523a697164a4 I changed the model such that when computing master
supports and we hit another master, cut the box in one dimension only,
to avoid interferring with other master.  The axis to cut against was
chosen as axis that minimizes volume loss.  That was fine in a sense,
but missed a great amount of information resulting from relative
positioning of the two masters.  As such, it could not distinguish
between the following two situations:

behdad:fonttools 0 (master*)$ ./fonttools varLib.models 0,0 0,1 1,0 1,1 .5,.5 .55,.75
Sorted locations:
[{},
 {'A': 1.0},
 {'B': 1.0},
 {'A': 1.0, 'B': 1.0},
 {'A': 0.5, 'B': 0.5},
 {'A': 0.55, 'B': 0.75}]
Supports:
[{},
 {'A': (0, 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.5, 1.0), 'B': (0, 0.5, 1.0)},
 {'A': (0, 0.55, 1.0), 'B': (0.5, 0.75, 1.0)}]
behdad:fonttools 0 (02616ab...)$ ./fonttools varLib.models 0,0 0,1 1,0 1,1 .5,.5 .75,.55
Sorted locations:
[{},
 {'A': 1.0},
 {'B': 1.0},
 {'A': 1.0, 'B': 1.0},
 {'A': 0.5, 'B': 0.5},
 {'A': 0.75, 'B': 0.55}]
Supports:
[{},
 {'A': (0, 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.5, 1.0), 'B': (0, 0.5, 1.0)},
 {'A': (0, 0.75, 1.0), 'B': (0.5, 0.55, 1.0)}]

Check the last line. In both cases the box was cut against the second axis.
After this change, we get:

behdad:fonttools 0 (master)$ ./fonttools varLib.models 0,0 0,1 1,0 1,1 .5,.5 .55,.75
Sorted locations:
[{},
 {'A': 1.0},
 {'B': 1.0},
 {'A': 1.0, 'B': 1.0},
 {'A': 0.5, 'B': 0.5},
 {'A': 0.55, 'B': 0.75}]
Supports:
[{},
 {'A': (0, 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.5, 1.0), 'B': (0, 0.5, 1.0)},
 {'A': (0, 0.55, 1.0), 'B': (0.5, 0.75, 1.0)}]
behdad:fonttools 0 (master)$ ./fonttools varLib.models 0,0 0,1 1,0 1,1 .5,.5 .75,.55
Sorted locations:
[{},
 {'A': 1.0},
 {'B': 1.0},
 {'A': 1.0, 'B': 1.0},
 {'A': 0.5, 'B': 0.5},
 {'A': 0.75, 'B': 0.55}]
Supports:
[{},
 {'A': (0, 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.5, 1.0), 'B': (0, 0.5, 1.0)},
 {'A': (0.5, 0.75, 1.0), 'B': (0, 0.55, 1.0)}]

Just draw the boxes on a piece of napkin and convince yourself that this
is a good change.

If the ratios are equal, we cut against the first axis in the axisOrder:

behdad:fonttools 0 (master)$ ./fonttools varLib.models 0,0 0,1 1,0 1,1 .5,.5 .75,.75
Sorted locations:
[{},
 {'A': 1.0},
 {'B': 1.0},
 {'A': 1.0, 'B': 1.0},
 {'A': 0.5, 'B': 0.5},
 {'A': 0.75, 'B': 0.75}]
Supports:
[{},
 {'A': (0, 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.5, 1.0), 'B': (0, 0.5, 1.0)},
 {'A': (0.5, 0.75, 1.0), 'B': (0, 0.75, 1.0)}]
2018-04-27 16:50:32 -07:00