52 Commits

Author SHA1 Message Date
Erik van Blokland
1b4106981e Better logic for overwriting exisiting axes in checkAxes() 2017-03-27 15:00:07 +02:00
Erik van Blokland
36425a83f6 Add some warnings if we can't make mutators for some reason. 2017-03-20 14:21:58 +01:00
Erik van Blokland
81087f79bd Use tagForAxisName to get tag and labelnames for axes we know. 2017-02-26 11:29:50 +01:00
Erik
48a6684b34 Remove unnecessary print. 2017-02-23 22:54:08 +01:00
Erik
a089ffe4c3 Even more explicit check for the presence of axes elements in the document. 2017-02-23 11:06:22 +01:00
Erik
0acaa233eb Better check if there are no axes in a document. 2017-02-22 11:15:10 +01:00
Erik
c31da9df47 Some legacy documents do not have an <axes> element. This causes problems reading and processing the file.
If there are no defined axes, use the available names from locations in the document. New axes are tagged with "_" as first letter. There is no guarantee that the guessed axes have the same dimensions as the originals.
2017-02-21 15:47:09 +01:00
Erik
22ce159ecd Merge remote-tracking branch 'origin/relative-paths'
# Conflicts:
#	Lib/designSpaceDocument/__init__.py
2017-02-06 22:35:55 +01:00
Erik
6ba727bed3 More testcases for the relaive path processing. 2017-02-06 22:33:03 +01:00
Erik
1dd261f6e6 Add comment. 2017-02-06 14:40:20 +01:00
Erik
6e724af43b Clarified how designSpaceDocument object handles the filename and path attributes of the descriptors. 2017-02-06 14:17:56 +01:00
Erik
e102c5e992 Tests to verify the handling of filename and path attrs. 2017-02-06 10:29:59 +01:00
Erik
13abae94c5 New "filename" attribute for source and instance descriptor objects that contains the relative path to the ufo.
So we have:
descriptor.filename: the path to the UFO, relative to the documentpath
descriptor.path: the resolved, absolute path to the UFO

This means we have to be aware of  a couple of situations, described in updatePaths() and testPatgNameResolve().
Case 1: both filename and path attributes are None. Action: write the descriptor as is, without filename attr.
Case 2: filename attribute points somewhere, but the path attribute is None. So we can't actually verify if the UFO really exists, but we don't have to. Action: write the filename attribute as is. We could calculate a new path though.
Case 3: filename attribute is None, path attribute has a path. So there is no legacy value for filename that we need to look out for. Action: we can calculate a new relative path and store that in filename.
Case 4: filename and path attributes are not None, but they're in conflict, pointing to different places/ So the absolute path of the UFO and the absolute path of the document produce a different relative path than is stored in filename. One of them must be wrong.

When a new filename is set, make sure to set the path attribute to None and vice versa.
2017-02-04 18:17:20 +01:00
Erik
dc483f9c17 Not sure why this string does not compare, but it is not vital and I want the tests to be clear. 2017-02-04 15:16:00 +01:00
Erik
91d4b89cd0 filename attr to store the actual string of the relative path. path attr to store the absolute path to the file (if we can find it) 2017-02-04 10:30:03 +01:00
Erik
146bcd078d Option to only process specific glyphnames in ufoProcessor. 2017-01-29 11:56:17 +01:00
Erik
659a79fb89 Store the designspace location in the instance lib. 2017-01-16 16:17:05 +01:00
Erik
9da2297827 Forgot to check these in. 2017-01-10 14:37:48 +01:00
Erik
5ef9022a31 Adds a list for reporting problems that were small enough not to stop generating, but big enough not to ignore. 2017-01-09 11:36:36 +01:00
Erik
6d421e0871 Use the axis map when generating ufos. 2017-01-06 17:37:29 +01:00
Erik
70437f0c87 Wrap makeInstance in a try/except. Should be logged better, but at least it does not halt the process. 2016-12-19 10:25:20 +01:00
Erik
3a693b37ec Improve support for rules only a minimum or a maximum attribute.
More tests.
2016-12-18 22:15:54 +01:00
Erik
95cc8885d4 Add a test that looks at the remapping of components. 2016-12-17 12:04:46 +01:00
Erik
6f4eac1aaa Add unicode values to instance glyphs.
Fixes typo.
2016-12-17 11:46:30 +01:00
Erik
130e02f067 Fixes problem with glyphNames list.
The ufoProcessor generates without mutatorMath's reader.
2016-12-14 12:51:14 +01:00
Erik
bc785f5e0f Rename ufo.py to ufoProcessor.py 2016-12-13 21:24:31 +01:00
Erik
ef80bbf890 Adds a function for swapping glyphs if we want to express a rule in a UFO.
More tests.
2016-12-13 17:56:21 +01:00
Erik
ab450a9017 Proposal to change the condition from axis.tag" to axis.name: conditions, locations use the axis.name.
This makes it possible to evaluate a rule without having to look up the axis data.
Evaluate and apply a rule to a list of glyphnames.
More tests.
2016-12-13 08:53:49 +01:00
Erik
c17592984f Support for basic rule object.
Description of the element and the object.
2016-12-11 08:18:49 -05:00
Erik
f74eae0ef3 Add classmethods for making source and instance descriptors. 2016-12-09 08:29:39 -08:00
Erik
fcdf6c8d93 Option to overwrite existing axes, or define new ones. 2016-12-02 20:39:31 +01:00
Erik
ea8c1270a5 When a document is read that has no axis definitions, there were no axis names to compare the locations to.
- self_strictAxisNames controls whether unknown axis names are ignored when reading locations.
- if we don't have any axes in the document then we don't know the axis names, but we still need to read locations.
- after reading all locations we can then reconstruct axis objects.

- also set the copyInfo flag after choosing one.

__removeAxesFromDesignSpace(path) takes a designspace path, reads the file and deletes the <axes> element. This is to make a test file for reading a file without axes.
2016-12-02 16:53:39 +01:00
Erik
e3cd7dd48b - check if a document has a default master define, repair if necessary.
- check if a document has axes defined, repair if necessary.
2016-12-02 12:22:07 +01:00
Erik
a6325c7988 check if a glyph is available in a master before asking for it.
Note: this does not guarantee a smooth result with the glyph missing. But at least it should not crash.
2016-11-30 22:37:58 +01:00
Erik
e41b74ca42 A bit restructured:
- mutators for info, kerning and glyphs are lazily constructed. Only make them if they're asked for.
- getInfoMutator() makes / returns info mutator.
- getKerningMutator() makes / returns kerning mutator
- getGlyphMutator() makes / returns glyph mutator
- loadFonts attempts to load the master UFOs and determine the defautl font by looking for the copyInfo flag, or if that is not found, by using mutator's findBias. Will warn if there is a conflct, but the copyInfo flag is leading.
- makeInstance() returns a font object for the asked location. You can decide to save it or not elsewher.
- generateUFO() makes UFOs on disk for all defined instances.

Still largely untested. Note: this requires an updated mutatorMath.
2016-11-30 17:48:05 +01:00
Erik
3d15d68270 Set the ufoVersion 2016-11-30 16:52:51 +01:00
Erik
3604f6f2a3 Caused problem. 2016-11-30 16:47:56 +01:00
Erik
853500ecbd Keep the fontMath import compatible with its ufo2 branch. 2016-11-30 16:38:13 +01:00
Erik
bc7ef7fac5 Remove some prints
Fix copyinfo.
2016-11-30 15:50:19 +01:00
Erik
0e51f99f37 First commit for DesignSpaceProcessor is a subclass of DesignSpaceDocument.
- aims to do work the same way as mutatorMath.ufo.document
- generate all instances as UFO
- handle glyph masters, info, kerning, lib

More testing is needed.
2016-11-30 14:45:41 +01:00
Erik
a854b170b6 - normalise the glyph instance location.
- normalise the glyph masters' location.
2016-11-28 22:29:14 +01:00
Erik
d1da75d3e3 Normalise the axis.map outputValues. 2016-11-28 17:18:36 +01:00
Erik
1b6ae36bab Initial commit for a normalize() method.
- instance locations
- source locations
- axis extremes and default values.

todo:
axis.map values.
2016-11-28 17:12:46 +01:00
Erik
448dd36973 Add an example on scripting with designSpaceDocument. 2016-11-26 14:45:56 +01:00
Erik
9abd4beec1 Convenience method that returns font objects for all the existing sources in the document. Defaults to defcon font object, but you can BYO. 2016-11-22 22:47:34 +01:00
Erik
733c4ea755 Smaller check. 2016-11-20 15:48:22 +01:00
Erik
079771dd76 Merge branch 'master' of https://github.com/LettError/designSpaceDocument
# Conflicts:
#	Lib/designSpaceDocument/__init__.py
2016-11-20 10:14:25 +01:00
Erik
8a0ad4bac8 - changed axis "labelName" element name to lowercase.
- actually also read the labelnames.
- added tests for axis data roundttrip
2016-11-20 10:05:55 +01:00
Denis Moyogo Jacquerye
050f5731b2 py23: unicode_literals 2016-11-15 20:17:57 +00:00
Denis Moyogo Jacquerye
a62918cb72 py23: print function 2016-11-15 20:16:48 +00:00