3577 Commits

Author SHA1 Message Date
Cosimo Lupo
c02ac33e35
py23_test: add test for second None argument 2016-12-02 12:15:47 +00:00
Cosimo Lupo
e7867529ad
py23: update round3 docstring to indicate that None is an allowable argument 2016-12-02 12:15:47 +00:00
Cosimo Lupo
f38cde159b
py23: in Python3 < 3.6, round3 wraps built-in round() to workaround inconsistent behaviour between floats/ints and ndigits=None 2016-12-02 12:15:47 +00: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
Cosimo Lupo
6775add8b0
Bump version: 3.2.2 → 3.2.3 2016-12-02 10:19:36 +00:00
Cosimo Lupo
eb8654dc4e
py23: move import decimal to top-level scope 2016-12-01 17:43:35 +00:00
Cosimo Lupo
7abd4d281c
py23_test: minor whitespace 2016-12-01 17:24:01 +00:00
Cosimo Lupo
2fbf371232
py23_test: add unit tests for isclose() backport 2016-12-01 17:13:09 +00:00
Cosimo Lupo
b09501fd8b
py23: only use the slow round3 implementation for half-way, even cases; add backport of py35 math.isclose() 2016-12-01 17:12:20 +00: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
Cosimo Lupo
63621b347d
py23_test: in round2/round3, drop support for ndigit with __index__ attribute; add test for when a number is already an integer 2016-11-30 13:01:20 +00:00
Cosimo Lupo
f742ea07e8
py23: in round3, avoid rounding if number is already int; return the same type when called with two args
We only define 'round3' for PY2 and 'round2' for PY3, and also make sure 'round3' is always an alias of
the built-in 'round' on Python 3; and similarly 'round2' is an alias of built-in 'round' on Python 2.

Thus, for clarity, one can do:

    from fontTools.misc.py23 import round3 as round

or

    from fontTools.misc.py23 import round2 as round

and be certain that the fast built-in implementation will be used on the
respective python major version.
2016-11-30 12:58:58 +00:00
Cosimo Lupo
16d0e5e8ad
subset: workaround for narrow py2 builds when iterating over non-BMP chars in unicode string
Fixes https://github.com/fonttools/fonttools/issues/750
2016-11-29 15:49:05 +00:00
Cosimo Lupo
99307e8991
subset_test: unit tests for subsetting non-BMP characters with --text/--text-file options 2016-11-29 15:45:07 +00:00
Cosimo Lupo
bcd4268442
subset/testdata: add a version of TestTTF-Regular.ttx containing an additional non-BMP character, U+1F6D2 2016-11-29 15:42:51 +00:00
justvanrossum
e5d2d49900 two more doctests 2016-11-29 14:42:20 +01:00
justvanrossum
8fa2ee1d95 Do the capping before calculating the normalized value to avoid ZeroDivisionError when default == lower or default == upper. Added doctests to verify. Fixes #749 2016-11-29 14:38:46 +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
Parag Nemade
167ee6041e Make inspect.py file compatible to run with python2 and python3 (#748)
Signed-off-by: Parag A Nemade <pnemade@fedoraproject.org>
2016-11-28 07:33:24 -06:00
Erik
448dd36973 Add an example on scripting with designSpaceDocument. 2016-11-26 14:45:56 +01:00
justvanrossum
f713c93340 made warning even more specific 2016-11-26 14:05:23 +01:00
justvanrossum
7eff97e08b made warning more specific 2016-11-26 14:05:23 +01:00
justvanrossum
4a5c838b5b Improve the warnings issued when 'useless' FontDict key/value pairs are provided either by an OTF, or a TTX file; It now warns reliably in both those cases. 2016-11-26 14:05:23 +01:00
justvanrossum
ce73bba3f3 use log.warning() instead of log.log(logging.WARNING, ...) 2016-11-26 14:05:23 +01:00
justvanrossum
cce31c9950 Also warn when keys are ignored upon compile. 2016-11-26 14:05:23 +01:00
justvanrossum
8d22c39d0b Output an XML comment with the keys that were ignored; Added references to the other issues involved. 2016-11-26 14:05:23 +01:00
justvanrossum
f9d265d1e6 This commit fixes #740.
Commits 3063def and 5b47971 introduced a separate fontDictOperators list for FontDict, only listing those TopDict key/value pairs that are actually used in the FontDict context. It provided a fallback that TTX files containing such "useless" key/value pairs would not be rejected.

However, the code still rejected binary fonts that contained such values, even though it didn't before, and yes, such fonts exist. Also: such fonts are not broken per spec, they just contain some fields that otherwise no one ever looks at, so it's a little harsh to reject them.

This patch removes most of the special FontDict code, and uses everything from TopDict, *except* the order attribute: it sets that to a list of the relevant keys for the FontDict. The effect of this is that "useless" key/value pairs are ignored, not just upon reading XML, but also upon decompilation and compilation of binary fonts. It improves on the previous XML reading behavior in that it no longer silently ignores key typos in the TTX input.

Ideally, we would *output* everything that is actually in the FontDict to TTX, and only ignore the values when compiling, but I didn't find a clean solution for that, so I decided to just fix the issue.
2016-11-26 14:05:23 +01:00
Cosimo Lupo
400e8e8dd0
Bump version: 3.2.1 → 3.2.2 2016-11-24 17:19:58 +00: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
Masaya Nakamura
08a0d550db Fix "Private Use (plane 15)" range
https://twitter.com/ken_lunde/status/796564061206913024
https://www.microsoft.com/typography/otspec/errata.htm
2016-11-21 11:26:57 +09: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
Denis Moyogo Jacquerye
6770d6a02f whitespace 2016-11-15 20:15:04 +00:00
Erik
2fbdd37362 Initial commit
- independent reader / writer object for designspace documents.
- imports and exports easy to subclass objects for instance, source and axis data.
- roundtrips
- intended to be compatible with use in MutatorMath, Superpolatpor and varlib.
2016-11-15 13:27:39 +01:00
Behdad Esfahbod
78d3cbea57 [subset] Fix subsetting MathVariants
Was failing on Caudex-Regular.ttf for example.
2016-11-11 10:58:02 -08:00
Behdad Esfahbod
25083502e4 [perimeterPen] Update check for cusps
If p1 coincides with p0 or p2, we still can use the lineTo()
code.
2016-11-08 16:39:38 -08:00
Behdad Esfahbod
7915a45ddf [varLib] Handle fonts without GPOS
Fixes https://github.com/fonttools/fonttools/issues/699
2016-11-08 15:44:39 -08:00
Behdad Esfahbod
a11bc5655d [merge] Ignore LangSys if None
Fixes https://github.com/fonttools/fonttools/issues/739
for now, though proper fix is more complicated.

This was hit now because the subsetter was changed a while back
to retain script systems even if empty...  I don't like that.
2016-11-08 14:06:50 -08:00
Rob McKaughan
1bebcec00d Do not emit null axes in fvar (default==min==max) 2016-11-04 14:53:43 -07:00